BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
A frustum with equilateral trigonal base.
Definition at line 23 of file PlatonicTetrahedron.h.
Public Member Functions | |
PlatonicTetrahedron (double edge) | |
PlatonicTetrahedron (std::vector< double > P) | |
void | assert_platonic () const |
Assertions for Platonic solid. More... | |
double | bottomZ (const IRotation *rotation) const override |
virtual bool | canSliceAnalytically (const IRotation *rot) const |
Default implementation only allows rotations along z-axis. More... | |
void | checkNodeArgs () const |
Raises exception if a parameter value is invalid. More... | |
std::string | className () const final |
Returns the class name, to be hard-coded in each leaf class that inherits from INode. More... | |
PlatonicTetrahedron * | clone () const override |
Returns a clone of this ISampleNode object. More... | |
std::vector< const Material * > | containedMaterials () const |
Returns set of unique materials contained in this ISampleNode. More... | |
double | edge () const |
complex_t | formfactor_at_bottom (C3 q) const override |
virtual SpinMatrix | formfactor_pol (C3 q) const |
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactions. Default implementation calls formfactor_at_bottom(q) and multiplies with the unit matrix. More... | |
double | height () const |
bool | isMagnetic () const |
Returns true if there is any magnetic material in this ISampleNode. More... | |
virtual const Material * | material () const |
Returns nullptr, unless overwritten to return a specific material. More... | |
virtual std::vector< const INode * > | nodeChildren () const |
Returns all children. More... | |
std::vector< const INode * > | nodeOffspring () const |
Returns all descendants. More... | |
std::vector< ParaMeta > | parDefs () const final |
Returns the parameter definitions, to be hard-coded in each leaf class. More... | |
virtual std::string | pythonConstructor () const |
Creates the Python constructor of this class (or derived classes) More... | |
double | radialExtension () const override |
Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations. More... | |
std::string | shapeName () const |
virtual complex_t | theFF (const WavevectorInfo &wavevectors) const |
virtual SpinMatrix | thePolFF (const WavevectorInfo &wavevectors) const |
double | topZ (const IRotation *rotation) const override |
virtual void | transferToCPP () |
Used for Python overriding of clone (see swig/tweaks.py) More... | |
double | volume () const override |
Protected Member Functions | |
void | setPolyhedron (const ff::PolyhedralTopology &topology, double z_bottom, const std::vector< R3 > &vertices) |
Called by child classes to set faces and other internal variables. More... | |
Protected Attributes | |
std::vector< double > | m_P |
std::unique_ptr< IShape3D > | m_shape3D |
IShape3D object, used to retrieve vertices (which may be approximate in the case of round shapes). For soft particles, this will be a hard mean shape. More... | |
Private Attributes | |
const double & | m_edge |
std::vector< R3 > | m_vertices |
double | m_z_bottom |
for topZ, bottomZ computation only More... | |
std::unique_ptr< ff::Polyhedron > | pimpl |
Static Private Attributes | |
static const ff::PolyhedralTopology | topology |
PlatonicTetrahedron::PlatonicTetrahedron | ( | double | edge | ) |
Definition at line 30 of file PlatonicTetrahedron.cpp.
References edge().
Referenced by clone().
PlatonicTetrahedron::PlatonicTetrahedron | ( | std::vector< double > | P | ) |
Definition at line 20 of file PlatonicTetrahedron.cpp.
References IFormFactorPolyhedron::assert_platonic(), INode::checkNodeArgs(), height(), m_edge, and IFormFactorPolyhedron::setPolyhedron().
|
inherited |
Assertions for Platonic solid.
Definition at line 79 of file IFormFactorPolyhedron.cpp.
References IFormFactorPolyhedron::pimpl.
Referenced by Dodecahedron::Dodecahedron(), Icosahedron::Icosahedron(), PlatonicOctahedron::PlatonicOctahedron(), and PlatonicTetrahedron().
|
overridevirtualinherited |
Reimplemented from IFormFactor.
Definition at line 53 of file IFormFactorPolyhedron.cpp.
References PolyhedralUtil::BottomZ(), and IFormFactorPolyhedron::m_vertices.
|
virtualinherited |
Default implementation only allows rotations along z-axis.
Reimplemented in Sphere.
Definition at line 64 of file IFormFactor.cpp.
References IRotation::zInvariant().
|
inherited |
Raises exception if a parameter value is invalid.
Definition at line 27 of file INode.cpp.
References ASSERT, RealLimits::check(), INode::className(), INF, RealLimits::limited(), RealLimits::limitless(), INode::m_P, ParaMeta::name, RealLimits::nonnegative(), INode::parDefs(), ParaMeta::vMax, and ParaMeta::vMin.
Referenced by BarGauss::BarGauss(), BarLorentz::BarLorentz(), Bipyramid4::Bipyramid4(), Box::Box(), CantellatedCube::CantellatedCube(), Cone::Cone(), ConstantBackground::ConstantBackground(), CosineRippleBox::CosineRippleBox(), CosineRippleGauss::CosineRippleGauss(), CosineRippleLorentz::CosineRippleLorentz(), Cylinder::Cylinder(), DistributionCosine::DistributionCosine(), DistributionGate::DistributionGate(), DistributionGaussian::DistributionGaussian(), DistributionLogNormal::DistributionLogNormal(), DistributionLorentz::DistributionLorentz(), DistributionTrapezoid::DistributionTrapezoid(), Dodecahedron::Dodecahedron(), EllipsoidalCylinder::EllipsoidalCylinder(), FootprintGauss::FootprintGauss(), FootprintSquare::FootprintSquare(), FuzzySphere::FuzzySphere(), GaussSphere::GaussSphere(), HemiEllipsoid::HemiEllipsoid(), HollowSphere::HollowSphere(), HorizontalCylinder::HorizontalCylinder(), Icosahedron::Icosahedron(), LongBoxGauss::LongBoxGauss(), LongBoxLorentz::LongBoxLorentz(), PlatonicOctahedron::PlatonicOctahedron(), PlatonicTetrahedron(), Prism3::Prism3(), Prism6::Prism6(), Profile1DCauchy::Profile1DCauchy(), Profile1DCosine::Profile1DCosine(), Profile1DGate::Profile1DGate(), Profile1DGauss::Profile1DGauss(), Profile1DTriangle::Profile1DTriangle(), Profile1DVoigt::Profile1DVoigt(), Profile2DCauchy::Profile2DCauchy(), Profile2DCone::Profile2DCone(), Profile2DGate::Profile2DGate(), Profile2DGauss::Profile2DGauss(), Profile2DVoigt::Profile2DVoigt(), Pyramid2::Pyramid2(), Pyramid3::Pyramid3(), Pyramid4::Pyramid4(), Pyramid6::Pyramid6(), RotationEuler::RotationEuler(), RotationX::RotationX(), RotationY::RotationY(), RotationZ::RotationZ(), SawtoothRippleBox::SawtoothRippleBox(), SawtoothRippleGauss::SawtoothRippleGauss(), SawtoothRippleLorentz::SawtoothRippleLorentz(), Sphere::Sphere(), Spheroid::Spheroid(), TruncatedCube::TruncatedCube(), TruncatedSphere::TruncatedSphere(), and TruncatedSpheroid::TruncatedSpheroid().
|
inlinefinalvirtual |
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Implements INode.
Definition at line 30 of file PlatonicTetrahedron.h.
|
inlineoverridevirtual |
Returns a clone of this ISampleNode object.
Implements IFormFactor.
Definition at line 29 of file PlatonicTetrahedron.h.
References PlatonicTetrahedron(), and m_edge.
|
inherited |
Returns set of unique materials contained in this ISampleNode.
Definition at line 25 of file ISampleNode.cpp.
References ISampleNode::material(), and INode::nodeChildren().
Referenced by SampleUtils::Multilayer::ContainsCompatibleMaterials(), SampleToPython::initLabels(), and ISampleNode::isMagnetic().
|
inline |
Definition at line 37 of file PlatonicTetrahedron.h.
References m_edge.
Referenced by PlatonicTetrahedron().
|
overridevirtualinherited |
Implements IFormFactor.
Definition at line 63 of file IFormFactorPolyhedron.cpp.
References IFormFactorPolyhedron::m_z_bottom, and IFormFactorPolyhedron::pimpl.
|
virtualinherited |
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactions. Default implementation calls formfactor_at_bottom(q) and multiplies with the unit matrix.
Definition at line 78 of file IFormFactor.cpp.
References IFormFactor::formfactor_at_bottom(), and SpinMatrix::One().
Referenced by IFormFactor::thePolFF().
|
inline |
Definition at line 38 of file PlatonicTetrahedron.h.
References m_edge.
Referenced by PlatonicTetrahedron().
|
inherited |
Returns true if there is any magnetic material in this ISampleNode.
Definition at line 39 of file ISampleNode.cpp.
References ISampleNode::containedMaterials().
Referenced by reSample::make().
|
inlinevirtualinherited |
Returns nullptr, unless overwritten to return a specific material.
Reimplemented in Particle, and Layer.
Definition at line 36 of file ISampleNode.h.
Referenced by ISampleNode::containedMaterials().
|
virtualinherited |
Returns all children.
Reimplemented in ISimulation2D, ISimulation, ParticleCoreShell, ParticleComposition, Particle, MesoCrystal, IParticle, Crystal, MultiLayer, Layer, LayerInterface, ParticleLayout, InterferenceRadialParaCrystal, InterferenceFinite3DLattice, InterferenceFinite2DLattice, Interference3DLattice, Interference2DSuperLattice, Interference2DParaCrystal, Interference2DLattice, Interference1DLattice, ConvolutionDetectorResolution, IDetector, and Beam.
Definition at line 56 of file INode.cpp.
Referenced by NodeUtils::AllDescendantsOfType(), NodeUtils::ChildNodesOfType(), ISampleNode::containedMaterials(), and INode::nodeOffspring().
|
inherited |
Returns all descendants.
Definition at line 61 of file INode.cpp.
References INode::nodeChildren().
|
inlinefinalvirtual |
Returns the parameter definitions, to be hard-coded in each leaf class.
Reimplemented from INode.
Definition at line 32 of file PlatonicTetrahedron.h.
References INF.
|
virtualinherited |
Creates the Python constructor of this class (or derived classes)
Definition at line 69 of file IFormFactor.cpp.
References INode::className(), INode::m_P, INode::parDefs(), and Py::Fmt::printFunction().
|
overridevirtualinherited |
Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations.
Implements IFormFactor.
Definition at line 72 of file IFormFactorPolyhedron.cpp.
References IFormFactorPolyhedron::pimpl.
|
protectedinherited |
Called by child classes to set faces and other internal variables.
Definition at line 41 of file IFormFactorPolyhedron.cpp.
References IFormFactorPolyhedron::m_vertices, IFormFactorPolyhedron::m_z_bottom, and IFormFactorPolyhedron::pimpl.
Referenced by Bipyramid4::Bipyramid4(), CantellatedCube::CantellatedCube(), Dodecahedron::Dodecahedron(), Icosahedron::Icosahedron(), PlatonicOctahedron::PlatonicOctahedron(), PlatonicTetrahedron(), Pyramid2::Pyramid2(), Pyramid3::Pyramid3(), Pyramid4::Pyramid4(), Pyramid6::Pyramid6(), and TruncatedCube::TruncatedCube().
|
inherited |
Definition at line 33 of file IFormFactor.cpp.
References INode::className().
|
virtualinherited |
Definition at line 40 of file IFormFactor.cpp.
References IFormFactor::formfactor_at_bottom(), and WavevectorInfo::getQ().
|
virtualinherited |
Definition at line 45 of file IFormFactor.cpp.
References IFormFactor::formfactor_pol(), and WavevectorInfo::getQ().
|
overridevirtualinherited |
Reimplemented from IFormFactor.
Definition at line 58 of file IFormFactorPolyhedron.cpp.
References IFormFactorPolyhedron::m_vertices, and PolyhedralUtil::TopZ().
|
inlinevirtualinherited |
Used for Python overriding of clone (see swig/tweaks.py)
Definition at line 32 of file ICloneable.h.
|
overridevirtualinherited |
Reimplemented from IFormFactor.
Definition at line 68 of file IFormFactorPolyhedron.cpp.
References IFormFactorPolyhedron::pimpl.
|
private |
Definition at line 42 of file PlatonicTetrahedron.h.
Referenced by PlatonicTetrahedron(), clone(), edge(), and height().
|
protectedinherited |
Definition at line 63 of file INode.h.
Referenced by IFootprintFactor::IFootprintFactor(), INode::checkNodeArgs(), IProfile1D::pythonConstructor(), IProfile2D::pythonConstructor(), IFormFactor::pythonConstructor(), Profile1DVoigt::pythonConstructor(), and Profile2DVoigt::pythonConstructor().
|
protectedinherited |
IShape3D object, used to retrieve vertices (which may be approximate in the case of round shapes). For soft particles, this will be a hard mean shape.
Definition at line 74 of file IFormFactor.h.
Referenced by Cone::Cone(), Cylinder::Cylinder(), EllipsoidalCylinder::EllipsoidalCylinder(), FuzzySphere::FuzzySphere(), HemiEllipsoid::HemiEllipsoid(), HollowSphere::HollowSphere(), HorizontalCylinder::HorizontalCylinder(), ICosineRipple::ICosineRipple(), IProfileRectangularRipple::IProfileRectangularRipple(), ISawtoothRipple::ISawtoothRipple(), LongBoxGauss::LongBoxGauss(), LongBoxLorentz::LongBoxLorentz(), Spheroid::Spheroid(), TruncatedSphere::TruncatedSphere(), TruncatedSpheroid::TruncatedSpheroid(), IFormFactor::bottomZ(), and IFormFactor::topZ().
|
privateinherited |
Definition at line 54 of file IFormFactorPolyhedron.h.
Referenced by IFormFactorPolyhedron::bottomZ(), IFormFactorPolyhedron::setPolyhedron(), and IFormFactorPolyhedron::topZ().
|
privateinherited |
for topZ, bottomZ computation only
Definition at line 55 of file IFormFactorPolyhedron.h.
Referenced by IFormFactorPolyhedron::formfactor_at_bottom(), and IFormFactorPolyhedron::setPolyhedron().
|
privateinherited |
Definition at line 53 of file IFormFactorPolyhedron.h.
Referenced by IFormFactorPolyhedron::assert_platonic(), IFormFactorPolyhedron::formfactor_at_bottom(), IFormFactorPolyhedron::radialExtension(), IFormFactorPolyhedron::setPolyhedron(), and IFormFactorPolyhedron::volume().
|
staticprivate |
Definition at line 41 of file PlatonicTetrahedron.h.