BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FormFactorCantellatedCube Class Reference

A cube, with truncation of all edges and corners, as in Croset (2017) Fig 7. More...

Inheritance diagram for FormFactorCantellatedCube:
[legend]
Collaboration diagram for FormFactorCantellatedCube:
[legend]

Public Member Functions

 FormFactorCantellatedCube (const std::vector< double > P)
 
 FormFactorCantellatedCube (double length, double removed_length)
 
void accept (INodeVisitor *visitor) const final
 Calls the INodeVisitor's visit method. More...
 
void assert_platonic () const
 Assertions for Platonic solid. More...
 
double bottomZ (const IRotation &rotation) const final
 Returns the z-coordinate of the lowest point in this shape after a given rotation. More...
 
FormFactorCantellatedCubeclone () const final
 Returns a clone of this ISampleNode object. More...
 
std::vector< const Material * > containedMaterials () const
 Returns set of unique materials contained in this ISampleNode. More...
 
int copyNumber (const INode *node) const
 Returns copyNumber of child, which takes into account existence of children with same name. More...
 
ParameterPoolcreateParameterTree () const
 Creates new parameter pool, with all local parameters and those of its children. More...
 
IFormFactorcreateSlicedFormFactor (ZLimits limits, const IRotation &rot, kvector_t translation) const
 Creates a (possibly sliced) form factor with the given rotation and translation. More...
 
std::string displayName () const
 Returns display name, composed from the name of node and it's copy number. More...
 
complex_t evaluate (const WavevectorInfo &wavevectors) const override
 Returns scattering amplitude for complex wavevectors ki, kf. More...
 
complex_t evaluate_centered (cvector_t q) const
 
complex_t evaluate_for_q (cvector_t q) const final
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. More...
 
Eigen::Matrix2cd evaluatePol (const WavevectorInfo &wavevectors) const override
 Returns scattering amplitude for matrix interactions. More...
 
virtual std::vector< const INode * > getChildren () const
 Returns a vector of children. More...
 
double getLength () const
 
const std::string & getName () const
 
double getRemovedLength () const
 
bool isMagnetic () const
 Returns true if there is any magnetic material in this ISampleNode. More...
 
virtual const Materialmaterial () const
 Returns nullptr, unless overwritten to return a specific material. More...
 
RealParameterparameter (const std::string &name) const
 Returns parameter with given 'name'. More...
 
ParameterPoolparameterPool () const
 Returns pointer to the parameter pool. More...
 
std::string parametersToString () const
 Returns multiline string representing available parameters. More...
 
INodeparent ()
 
const INodeparent () const
 
std::vector< const INode * > progeny () const
 Returns a vector of all descendants. More...
 
double radialExtension () const final
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. More...
 
void registerChild (INode *node)
 
RealParameterregisterParameter (const std::string &name, double *parpointer)
 
void registerVector (const std::string &base_name, kvector_t *p_vec, const std::string &units="nm")
 
void removeParameter (const std::string &name)
 
void removeVector (const std::string &base_name)
 
void setAmbientMaterial (const Material &) override
 Passes the material in which this particle is embedded. More...
 
void setName (const std::string &name)
 
void setParameterValue (const std::string &name, double value)
 
virtual void setParent (const INode *newParent)
 
virtual void setSpecularInfo (std::unique_ptr< const ILayerRTCoefficients >, std::unique_ptr< const ILayerRTCoefficients >)
 Sets reflection/transmission info. More...
 
void setVectorValue (const std::string &base_name, kvector_t value)
 
double topZ (const IRotation &rotation) const final
 Returns the z-coordinate of the lowest point in this shape after a given rotation. More...
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py) More...
 
virtual std::string treeToString () const
 Returns multiline string representing tree structure below the node. More...
 
double volume () const final
 Returns the total volume of the particle of this form factor's shape. More...
 

Static Public Member Functions

static std::string XComponentName (const std::string &base_name)
 
static std::string YComponentName (const std::string &base_name)
 
static std::string ZComponentName (const std::string &base_name)
 

Protected Member Functions

bool canSliceAnalytically (const IRotation &rot) const override
 Default implementation only allows rotations along z-axis. More...
 
virtual Eigen::Matrix2cd evaluate_for_q_pol (cvector_t q) const
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactions. More...
 
void onChange () final
 Action to be taken in inherited class when a parameter has changed. More...
 
void setPolyhedron (const PolyhedralTopology &topology, double z_bottom, const std::vector< kvector_t > &vertices)
 Called by child classes to set faces and other internal variables. More...
 
virtual IFormFactorsliceFormFactor (ZLimits limits, const IRotation &rot, kvector_t translation) const
 Actually slices the form factor or throws an exception. More...
 

Static Protected Member Functions

static double BottomZ (const std::vector< kvector_t > &vertices, const IRotation &rotation)
 Calculates the z-coordinate of the lowest vertex after rotation. More...
 
static SlicingEffects computeSlicingEffects (ZLimits limits, const kvector_t &position, double height)
 Helper method for slicing. More...
 
static IFormFactorcreateTransformedFormFactor (const IFormFactor &formfactor, const IRotation &rot, kvector_t translation)
 
static double TopZ (const std::vector< kvector_t > &vertices, const IRotation &rotation)
 Calculates the z-coordinate of the highest vertex after rotation. More...
 

Protected Attributes

const size_t m_NP
 
std::vector< double > m_P
 
std::unique_ptr< IShape3Dm_shape3D
 IShape3D object, used to retrieve vertices (which may be approximate in the case of round shapes). More...
 

Private Attributes

const double & m_length
 
std::string m_name
 
const INodem_parent {nullptr}
 
std::unique_ptr< ParameterPoolm_pool
 parameter pool (kind of pointer-to-implementation) More...
 
const double & m_removed_length
 
std::unique_ptr< Polyhedronpimpl
 

Static Private Attributes

static const PolyhedralTopology topology
 

Detailed Description

A cube, with truncation of all edges and corners, as in Croset (2017) Fig 7.

Definition at line 23 of file FormFactorCantellatedCube.h.

Constructor & Destructor Documentation

◆ FormFactorCantellatedCube() [1/2]

FormFactorCantellatedCube::FormFactorCantellatedCube ( const std::vector< double >  P)

Definition at line 48 of file FormFactorCantellatedCube.cpp.

50  {"CantellatedCube",
51  "a cube with truncated edges and vertices",
52  {{"Length", "nm", "length of untruncated edge", 0, +INF, 0},
53  {"RemovedLength", "nm",
54  "side length of the trirectangular tetrahedron removed one corner", 0, +INF, 0}}},
55  P)
56  , m_length(m_P[0])
57  , m_removed_length(m_P[1])
58 {
59  onChange();
60 }
const double INF
Definition: INode.h:25
void onChange() final
Action to be taken in inherited class when a parameter has changed.
IFormFactorPolyhedron()=delete
std::vector< double > m_P
Definition: INode.h:89

References INF.

Referenced by clone().

◆ FormFactorCantellatedCube() [2/2]

FormFactorCantellatedCube::FormFactorCantellatedCube ( double  length,
double  removed_length 
)

Definition at line 62 of file FormFactorCantellatedCube.cpp.

63  : FormFactorCantellatedCube(std::vector<double>{length, removed_length})
64 {
65 }
FormFactorCantellatedCube(const std::vector< double > P)

Member Function Documentation

◆ accept()

void FormFactorCantellatedCube::accept ( INodeVisitor visitor) const
inlinefinalvirtual

Calls the INodeVisitor's visit method.

Implements INode.

Definition at line 32 of file FormFactorCantellatedCube.h.

32 { visitor->visit(this); }
virtual void visit(const BasicLattice2D *)
Definition: INodeVisitor.h:151

◆ assert_platonic()

void IFormFactorPolyhedron::assert_platonic ( ) const
inherited

Assertions for Platonic solid.

Definition at line 77 of file IFormFactorPolyhedron.cpp.

78 {
79  pimpl->assert_platonic();
80 }
std::unique_ptr< Polyhedron > pimpl

References IFormFactorPolyhedron::pimpl.

Referenced by FormFactorDodecahedron::onChange(), and FormFactorIcosahedron::onChange().

◆ bottomZ()

double IFormFactorPolyhedron::bottomZ ( const IRotation rotation) const
finalvirtualinherited

Returns the z-coordinate of the lowest point in this shape after a given rotation.

Reimplemented from IBornFF.

Definition at line 46 of file IFormFactorPolyhedron.cpp.

47 {
48  return BottomZ(pimpl->vertices(), rotation);
49 }
static double BottomZ(const std::vector< kvector_t > &vertices, const IRotation &rotation)
Calculates the z-coordinate of the lowest vertex after rotation.
Definition: IBornFF.cpp:90

References IBornFF::BottomZ(), and IFormFactorPolyhedron::pimpl.

Here is the call graph for this function:

◆ BottomZ()

double IBornFF::BottomZ ( const std::vector< kvector_t > &  vertices,
const IRotation rotation 
)
staticprotectedinherited

Calculates the z-coordinate of the lowest vertex after rotation.

Definition at line 90 of file IBornFF.cpp.

91 {
92  ASSERT(vertices.size());
93  return algo::min_value(
94  vertices.begin(), vertices.end(),
95  [&](const kvector_t& vertex) -> double { return rotation.transformed(vertex).z(); });
96 }
#define ASSERT(condition)
Definition: Assert.h:31
double min_value(const Iterator &begin, const Iterator &end, const Evaluator &evaluate)
Returns the minimum value of function evaluate as applied to the elements of an iterator range.
Definition: Algorithms.h:58

References ASSERT, and algo::min_value().

Referenced by IFormFactorPolyhedron::bottomZ(), IFormFactorPrism::bottomZ(), and IBornFF::bottomZ().

Here is the call graph for this function:

◆ canSliceAnalytically()

bool IBornFF::canSliceAnalytically ( const IRotation rot) const
overrideprotectedvirtualinherited

Default implementation only allows rotations along z-axis.

Reimplemented from IFormFactor.

Definition at line 54 of file IBornFF.cpp.

55 {
56  if (rot.zInvariant())
57  return true;
58  return false;
59 }
bool zInvariant() const
Definition: Rotations.cpp:63

References IRotation::zInvariant().

Here is the call graph for this function:

◆ clone()

FormFactorCantellatedCube* FormFactorCantellatedCube::clone ( ) const
inlinefinalvirtual

Returns a clone of this ISampleNode object.

Implements IBornFF.

Definition at line 28 of file FormFactorCantellatedCube.h.

29  {
31  }

References FormFactorCantellatedCube(), m_length, and m_removed_length.

Here is the call graph for this function:

◆ computeSlicingEffects()

SlicingEffects IBornFF::computeSlicingEffects ( ZLimits  limits,
const kvector_t position,
double  height 
)
staticprotectedinherited

Helper method for slicing.

Definition at line 66 of file IBornFF.cpp.

68 {
69  kvector_t new_position(position);
70  double z_bottom = position.z();
71  double z_top = position.z() + height;
72  OneSidedLimit lower_limit = limits.lowerLimit();
73  OneSidedLimit upper_limit = limits.upperLimit();
74  ASSERT(upper_limit.m_limitless || lower_limit.m_limitless
75  || lower_limit.m_value <= upper_limit.m_value);
76  double dz_top = upper_limit.m_limitless ? -1 : z_top - upper_limit.m_value;
77  double dz_bottom = lower_limit.m_limitless ? -1 : lower_limit.m_value - z_bottom;
78  ASSERT(dz_top >= 0 || dz_bottom >= 0);
79  ASSERT(dz_bottom <= height);
80  ASSERT(dz_top <= height);
81  if (dz_bottom < 0)
82  dz_bottom = 0;
83  if (dz_top < 0)
84  dz_top = 0;
85  if (dz_bottom > 0)
86  new_position.setZ(lower_limit.m_value);
87  return {new_position, dz_bottom, dz_top};
88 }
T z() const
Returns z-component in cartesian coordinate system.
Definition: BasicVector3D.h:67
OneSidedLimit lowerLimit() const
Definition: ZLimits.cpp:39
OneSidedLimit upperLimit() const
Definition: ZLimits.cpp:44
Helper class that represents a onesided limit.
Definition: ZLimits.h:35
double m_value
Definition: ZLimits.h:37
bool m_limitless
Definition: ZLimits.h:36

References ASSERT, ZLimits::lowerLimit(), OneSidedLimit::m_limitless, OneSidedLimit::m_value, BasicVector3D< T >::setZ(), ZLimits::upperLimit(), and BasicVector3D< T >::z().

Referenced by FormFactorAnisoPyramid::sliceFormFactor(), FormFactorBox::sliceFormFactor(), FormFactorCone::sliceFormFactor(), FormFactorCone6::sliceFormFactor(), FormFactorCuboctahedron::sliceFormFactor(), FormFactorCylinder::sliceFormFactor(), FormFactorEllipsoidalCylinder::sliceFormFactor(), FormFactorFullSphere::sliceFormFactor(), FormFactorFullSpheroid::sliceFormFactor(), FormFactorLongBoxGauss::sliceFormFactor(), FormFactorLongBoxLorentz::sliceFormFactor(), FormFactorPrism3::sliceFormFactor(), FormFactorPrism6::sliceFormFactor(), FormFactorPyramid::sliceFormFactor(), FormFactorTetrahedron::sliceFormFactor(), FormFactorTruncatedSphere::sliceFormFactor(), and FormFactorTruncatedSpheroid::sliceFormFactor().

Here is the call graph for this function:

◆ containedMaterials()

std::vector< const Material * > ISampleNode::containedMaterials ( ) const
inherited

Returns set of unique materials contained in this ISampleNode.

Definition at line 26 of file ISampleNode.cpp.

27 {
28  std::vector<const Material*> result;
29  if (const Material* p_material = material())
30  result.push_back(p_material);
31  for (const auto* child : getChildren()) {
32  if (const ISampleNode* sample = dynamic_cast<const ISampleNode*>(child)) {
33  for (const Material* p_material : sample->containedMaterials())
34  result.push_back(p_material);
35  }
36  }
37  return result;
38 }
virtual std::vector< const INode * > getChildren() const
Returns a vector of children.
Definition: INode.cpp:63
Abstract base class for sample components and properties related to scattering.
Definition: ISampleNode.h:28
virtual const Material * material() const
Returns nullptr, unless overwritten to return a specific material.
Definition: ISampleNode.h:37
A wrapper for underlying material implementation.
Definition: Material.h:29

References INode::getChildren(), and ISampleNode::material().

Referenced by MultiLayerUtils::ContainsCompatibleMaterials(), SampleToPython::initLabels(), and ISampleNode::isMagnetic().

Here is the call graph for this function:

◆ copyNumber()

int INode::copyNumber ( const INode node) const
inherited

Returns copyNumber of child, which takes into account existence of children with same name.

Definition at line 94 of file INode.cpp.

95 {
96  if (node->parent() != this)
97  return -1;
98 
99  int result(-1), count(0);
100  for (auto child : getChildren()) {
101 
102  if (child == nullptr)
103  throw std::runtime_error("INode::copyNumber() -> Error. Nullptr as child.");
104 
105  if (child == node)
106  result = count;
107 
108  if (child->getName() == node->getName())
109  ++count;
110  }
111 
112  return count > 1 ? result : -1;
113 }
const INode * parent() const
Definition: INode.cpp:84
const std::string & getName() const

References INode::getChildren(), IParametricComponent::getName(), and INode::parent().

Referenced by INode::displayName().

Here is the call graph for this function:

◆ createParameterTree()

ParameterPool * INode::createParameterTree ( ) const
virtualinherited

Creates new parameter pool, with all local parameters and those of its children.

Reimplemented from IParametricComponent.

Definition at line 126 of file INode.cpp.

127 {
128  std::unique_ptr<ParameterPool> result(new ParameterPool);
129 
130  for (const INode* child : progeny()) {
131  const std::string path = NodeUtils::nodePath(child, parent()) + "/";
132  child->parameterPool()->copyToExternalPool(path, result.get());
133  }
134 
135  return result.release();
136 }
Base class for tree-like structures containing parameterized objects.
Definition: INode.h:49
std::vector< const INode * > progeny() const
Returns a vector of all descendants.
Definition: INode.cpp:68
Container with parameters for IParametricComponent object.
Definition: ParameterPool.h:29
std::string nodePath(const INode *node, const INode *root=nullptr)
Returns path composed of node's displayName, with respect to root node.
Definition: NodeUtils.cpp:89

References NodeUtils::nodePath(), INode::parent(), and INode::progeny().

Referenced by ISimulation::runSimulation(), DepthProbeSimulation::validateParametrization(), OffSpecularSimulation::validateParametrization(), and SpecularSimulation::validateParametrization().

Here is the call graph for this function:

◆ createSlicedFormFactor()

IFormFactor * IFormFactor::createSlicedFormFactor ( ZLimits  limits,
const IRotation rot,
kvector_t  translation 
) const
inherited

Creates a (possibly sliced) form factor with the given rotation and translation.

Definition at line 58 of file IFormFactor.cpp.

60 {
61  if (shapeIsContainedInLimits(*this, limits, rot, translation))
62  return createTransformedFormFactor(*this, rot, translation);
63  if (shapeOutsideLimits(*this, limits, rot, translation))
64  return nullptr;
65  if (canSliceAnalytically(rot))
66  return sliceFormFactor(limits, rot, translation);
67  throw std::runtime_error(getName()
68  + "::createSlicedFormFactor error: not supported for "
69  "the given rotation!");
70 }
virtual IFormFactor * sliceFormFactor(ZLimits limits, const IRotation &rot, kvector_t translation) const
Actually slices the form factor or throws an exception.
Definition: IFormFactor.cpp:94
virtual bool canSliceAnalytically(const IRotation &rot) const
Checks if slicing has a fast analytical solution.
Definition: IFormFactor.cpp:89
static IFormFactor * createTransformedFormFactor(const IFormFactor &formfactor, const IRotation &rot, kvector_t translation)
Definition: IFormFactor.cpp:99

References IFormFactor::canSliceAnalytically(), IFormFactor::createTransformedFormFactor(), IParametricComponent::getName(), and IFormFactor::sliceFormFactor().

Here is the call graph for this function:

◆ createTransformedFormFactor()

IFormFactor * IFormFactor::createTransformedFormFactor ( const IFormFactor formfactor,
const IRotation rot,
kvector_t  translation 
)
staticprotectedinherited

Definition at line 99 of file IFormFactor.cpp.

101 {
102  std::unique_ptr<IFormFactor> P_fftemp, P_result;
103  if (!rot.isIdentity())
104  P_fftemp = std::make_unique<FormFactorDecoratorRotation>(formfactor, rot);
105  else
106  P_fftemp.reset(formfactor.clone());
107  if (translation != kvector_t())
108  P_result = std::make_unique<FormFactorDecoratorPositionFactor>(*P_fftemp, translation);
109  else
110  std::swap(P_fftemp, P_result);
111  return P_result.release();
112 }
void swap(OutputDataIterator< TValue, TContainer > &left, OutputDataIterator< TValue, TContainer > &right)
make Swappable
BasicVector3D< double > kvector_t
Definition: Vectors3D.h:21
IFormFactor * clone() const override=0
Returns a clone of this ISampleNode object.
virtual bool isIdentity() const
Returns true if rotation matrix is identity matrix (no rotations)
Definition: Rotations.cpp:58

References IFormFactor::clone(), IRotation::isIdentity(), and swap().

Referenced by IFormFactor::createSlicedFormFactor(), FormFactorAnisoPyramid::sliceFormFactor(), FormFactorBox::sliceFormFactor(), FormFactorCone::sliceFormFactor(), FormFactorCone6::sliceFormFactor(), FormFactorCuboctahedron::sliceFormFactor(), FormFactorCylinder::sliceFormFactor(), FormFactorEllipsoidalCylinder::sliceFormFactor(), FormFactorFullSphere::sliceFormFactor(), FormFactorFullSpheroid::sliceFormFactor(), FormFactorLongBoxGauss::sliceFormFactor(), FormFactorLongBoxLorentz::sliceFormFactor(), FormFactorPrism3::sliceFormFactor(), FormFactorPrism6::sliceFormFactor(), FormFactorPyramid::sliceFormFactor(), FormFactorTetrahedron::sliceFormFactor(), FormFactorTruncatedSphere::sliceFormFactor(), and FormFactorTruncatedSpheroid::sliceFormFactor().

Here is the call graph for this function:

◆ displayName()

std::string INode::displayName ( ) const
inherited

Returns display name, composed from the name of node and it's copy number.

Definition at line 115 of file INode.cpp.

116 {
117  std::string result = getName();
118  if (m_parent) {
119  int index = m_parent->copyNumber(this);
120  if (index >= 0)
121  result = result + std::to_string(index);
122  }
123  return result;
124 }
const INode * m_parent
Definition: INode.h:83
int copyNumber(const INode *node) const
Returns copyNumber of child, which takes into account existence of children with same name.
Definition: INode.cpp:94

References INode::copyNumber(), IParametricComponent::getName(), and INode::m_parent.

Referenced by NodeUtils::nodePath().

Here is the call graph for this function:

◆ evaluate()

complex_t IBornFF::evaluate ( const WavevectorInfo wavevectors) const
overridevirtualinherited

Returns scattering amplitude for complex wavevectors ki, kf.

Implements IFormFactor.

Definition at line 30 of file IBornFF.cpp.

31 {
32  return evaluate_for_q(wavevectors.getQ());
33 }
virtual complex_t evaluate_for_q(cvector_t q) const =0
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f.
cvector_t getQ() const

References IBornFF::evaluate_for_q(), and WavevectorInfo::getQ().

Here is the call graph for this function:

◆ evaluate_centered()

complex_t IFormFactorPolyhedron::evaluate_centered ( cvector_t  q) const
inherited

Definition at line 61 of file IFormFactorPolyhedron.cpp.

62 {
63  return pimpl->evaluate_centered(q);
64 }

References IFormFactorPolyhedron::pimpl.

◆ evaluate_for_q()

complex_t IFormFactorPolyhedron::evaluate_for_q ( cvector_t  q) const
finalvirtualinherited

Returns scattering amplitude for complex scattering wavevector q=k_i-k_f.

This method is public only for convenience of plotting form factors in Python.

Implements IBornFF.

Definition at line 56 of file IFormFactorPolyhedron.cpp.

57 {
58  return pimpl->evaluate_for_q(q);
59 }

References IFormFactorPolyhedron::pimpl.

◆ evaluate_for_q_pol()

Eigen::Matrix2cd IBornFF::evaluate_for_q_pol ( cvector_t  q) const
protectedvirtualinherited

Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactions.

Default implementation calls evaluate_for_q(q) and multiplies with the unit matrix.

Definition at line 61 of file IBornFF.cpp.

62 {
63  return evaluate_for_q(q) * Eigen::Matrix2cd::Identity();
64 }

References IBornFF::evaluate_for_q().

Referenced by IBornFF::evaluatePol().

Here is the call graph for this function:

◆ evaluatePol()

Eigen::Matrix2cd IBornFF::evaluatePol ( const WavevectorInfo wavevectors) const
overridevirtualinherited

Returns scattering amplitude for matrix interactions.

Reimplemented from IFormFactor.

Definition at line 35 of file IBornFF.cpp.

36 {
37  return evaluate_for_q_pol(wavevectors.getQ());
38 }
virtual Eigen::Matrix2cd evaluate_for_q_pol(cvector_t q) const
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactio...
Definition: IBornFF.cpp:61

References IBornFF::evaluate_for_q_pol(), and WavevectorInfo::getQ().

Here is the call graph for this function:

◆ getChildren()

◆ getLength()

double FormFactorCantellatedCube::getLength ( ) const
inline

Definition at line 34 of file FormFactorCantellatedCube.h.

34 { return m_length; }

References m_length.

◆ getName()

◆ getRemovedLength()

double FormFactorCantellatedCube::getRemovedLength ( ) const
inline

Definition at line 35 of file FormFactorCantellatedCube.h.

35 { return m_removed_length; }

References m_removed_length.

◆ isMagnetic()

bool ISampleNode::isMagnetic ( ) const
inherited

Returns true if there is any magnetic material in this ISampleNode.

Definition at line 40 of file ISampleNode.cpp.

41 {
42  const auto materials = containedMaterials();
43  return std::any_of(materials.cbegin(), materials.cend(),
44  [](const Material* mat) { return mat->isMagneticMaterial(); });
45 }
std::vector< const Material * > containedMaterials() const
Returns set of unique materials contained in this ISampleNode.
Definition: ISampleNode.cpp:26

References ISampleNode::containedMaterials().

Referenced by ProcessedSample::initLayouts().

Here is the call graph for this function:

◆ material()

virtual const Material* ISampleNode::material ( ) const
inlinevirtualinherited

◆ onChange()

void FormFactorCantellatedCube::onChange ( )
finalprotectedvirtual

Action to be taken in inherited class when a parameter has changed.

Reimplemented from IParametricComponent.

Definition at line 67 of file FormFactorCantellatedCube.cpp.

68 {
69  if (m_removed_length > 0.5 * m_length) {
70  std::ostringstream ostr;
71  ostr << "::FormFactorCantellatedCube() -> Error in class initialization ";
72  ostr << "with parameters 'length':" << m_length;
73  ostr << " 'removed_length':" << m_removed_length << "\n\n";
74  ostr << "Check for removed_length <= 0.5*length failed.";
75  throw std::runtime_error(ostr.str());
76  }
77  double a = m_length / 2;
78  double c = a - m_removed_length;
79 
80  setPolyhedron(topology, -a, {{-c, -c, +a}, // point 0
81  {+c, -c, +a}, {+c, +c, +a}, {-c, +c, +a}, {-a, -c, +c}, // point 4
82  {+c, -a, +c}, {+a, +c, +c}, {-c, +a, +c}, {-c, -a, +c}, // point 8
83  {+a, -c, +c}, {+c, +a, +c}, {-a, +c, +c}, {-a, -c, -c}, // point 12
84  {+c, -a, -c}, {+a, +c, -c}, {-c, +a, -c}, {-c, -a, -c}, // point 16
85  {+a, -c, -c}, {+c, +a, -c}, {-a, +c, -c}, {-c, -c, -a}, // point 20
86  {+c, -c, -a}, {+c, +c, -a}, {-c, +c, -a}});
87 }
static const PolyhedralTopology topology
void setPolyhedron(const PolyhedralTopology &topology, double z_bottom, const std::vector< kvector_t > &vertices)
Called by child classes to set faces and other internal variables.

References m_length, m_removed_length, IFormFactorPolyhedron::setPolyhedron(), and topology.

Here is the call graph for this function:

◆ parameter()

RealParameter * IParametricComponent::parameter ( const std::string &  name) const
inherited

Returns parameter with given 'name'.

Definition at line 86 of file IParametricComponent.cpp.

87 {
88  return m_pool->parameter(name);
89 }
std::unique_ptr< ParameterPool > m_pool
parameter pool (kind of pointer-to-implementation)
QString const & name(EShape k)
Definition: particles.cpp:21

References IParametricComponent::m_pool, and RealSpace::Particles::name().

Referenced by DepthProbeSimulation::initialize(), SpecularSimulation::initialize(), Lattice3D::initialize(), IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), IParticle::registerPosition(), Layer::registerThickness(), Lattice2D::setRotationEnabled(), and DistributionLogNormal::setUnits().

Here is the call graph for this function:

◆ parameterPool()

ParameterPool* IParametricComponent::parameterPool ( ) const
inlineinherited

Returns pointer to the parameter pool.

Definition at line 39 of file IParametricComponent.h.

39 { return m_pool.get(); } // has non-const usages!

References IParametricComponent::m_pool.

Referenced by INode::INode(), IParametricComponent::IParametricComponent(), pyfmt2::argumentList(), SampleBuilderNode::borrow_builder_parameters(), SampleBuilderNode::reset(), and IDistribution1D::setUnits().

◆ parametersToString()

std::string IParametricComponent::parametersToString ( ) const
inherited

Returns multiline string representing available parameters.

Definition at line 43 of file IParametricComponent.cpp.

44 {
45  std::ostringstream result;
46  std::unique_ptr<ParameterPool> P_pool(createParameterTree());
47  result << *P_pool << "\n";
48  return result.str();
49 }
virtual ParameterPool * createParameterTree() const
Creates new parameter pool, with all local parameters and those of its children.

References IParametricComponent::createParameterTree().

Here is the call graph for this function:

◆ parent() [1/2]

INode * INode::parent ( )
inherited

Definition at line 89 of file INode.cpp.

90 {
91  return const_cast<INode*>(m_parent);
92 }

References INode::m_parent.

◆ parent() [2/2]

◆ progeny()

std::vector< const INode * > INode::progeny ( ) const
inherited

Returns a vector of all descendants.

Definition at line 68 of file INode.cpp.

69 {
70  std::vector<const INode*> result;
71  result.push_back(this);
72  for (const auto* child : getChildren()) {
73  for (const auto* p : child->progeny())
74  result.push_back(p);
75  }
76  return result;
77 }

References INode::getChildren().

Referenced by INode::createParameterTree(), and ParticleDistribution::generateParticles().

Here is the call graph for this function:

◆ radialExtension()

double IFormFactorPolyhedron::radialExtension ( ) const
finalvirtualinherited

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 70 of file IFormFactorPolyhedron.cpp.

71 {
72  return pimpl->radius();
73 }

References IFormFactorPolyhedron::pimpl.

◆ registerChild()

void INode::registerChild ( INode node)
inherited

Definition at line 57 of file INode.cpp.

58 {
59  ASSERT(node);
60  node->setParent(this);
61 }
virtual void setParent(const INode *newParent)
Definition: INode.cpp:79

References ASSERT, and INode::setParent().

Referenced by Beam::Beam(), Crystal::Crystal(), IDetector::IDetector(), Instrument::Instrument(), InterferenceFunction2DLattice::InterferenceFunction2DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(), InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(), Particle::Particle(), ParticleDistribution::ParticleDistribution(), ParticleLayout::addAndRegisterAbstractParticle(), ParticleCoreShell::addAndRegisterCore(), MultiLayer::addAndRegisterInterface(), MultiLayer::addAndRegisterLayer(), ParticleCoreShell::addAndRegisterShell(), Layer::addLayout(), ParticleComposition::addParticlePointer(), ISimulation::initialize(), MesoCrystal::initialize(), Beam::operator=(), Instrument::operator=(), IParticle::rotate(), ParticleLayout::setAndRegisterInterferenceFunction(), ISimulation::setBackground(), InterferenceFunction1DLattice::setDecayFunction(), InterferenceFunction2DLattice::setDecayFunction(), Instrument::setDetector(), IDetector::setDetectorResolution(), Beam::setFootprintFactor(), Particle::setFormFactor(), InterferenceFunctionFinite3DLattice::setLattice(), InterferenceFunctionRadialParaCrystal::setProbabilityDistribution(), InterferenceFunction2DParaCrystal::setProbabilityDistributions(), ConvolutionDetectorResolution::setResolutionFunction(), IParticle::setRotation(), LayerInterface::setRoughness(), and InterferenceFunction2DSuperLattice::setSubstructureIFF().

Here is the call graph for this function:

◆ registerParameter()

RealParameter & IParametricComponent::registerParameter ( const std::string &  name,
double *  parpointer 
)
inherited

Definition at line 51 of file IParametricComponent.cpp.

52 {
53  return m_pool->addParameter(
54  new RealParameter(name, data, getName(), [&]() -> void { onChange(); }));
55 }
virtual void onChange()
Action to be taken in inherited class when a parameter has changed.
Wraps a parameter of type double.
Definition: RealParameter.h:31

References IParametricComponent::getName(), IParametricComponent::m_pool, RealSpace::Particles::name(), and IParametricComponent::onChange().

Referenced by BasicLattice2D::BasicLattice2D(), Beam::Beam(), CylindersInBABuilder::CylindersInBABuilder(), DetectionProperties::DetectionProperties(), HexagonalLattice2D::HexagonalLattice2D(), IInterferenceFunction::IInterferenceFunction(), INode::INode(), InterferenceFunction1DLattice::InterferenceFunction1DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(), InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(), InterferenceFunctionTwin::InterferenceFunctionTwin(), Lattice2D::Lattice2D(), LayerRoughness::LayerRoughness(), MultiLayer::MultiLayer(), ParticleDistribution::ParticleDistribution(), PlainMultiLayerBySLDBuilder::PlainMultiLayerBySLDBuilder(), ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(), ResonatorBuilder::ResonatorBuilder(), SquareLattice2D::SquareLattice2D(), TriangularRippleBuilder::TriangularRippleBuilder(), IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), Layer::registerThickness(), IParametricComponent::registerVector(), ParticleLayout::registerWeight(), and Lattice2D::setRotationEnabled().

Here is the call graph for this function:

◆ registerVector()

void IParametricComponent::registerVector ( const std::string &  base_name,
kvector_t p_vec,
const std::string &  units = "nm" 
)
inherited

Definition at line 57 of file IParametricComponent.cpp.

59 {
60  registerParameter(XComponentName(base_name), &((*p_vec)[0])).setUnit(units);
61  registerParameter(YComponentName(base_name), &((*p_vec)[1])).setUnit(units);
62  registerParameter(ZComponentName(base_name), &((*p_vec)[2])).setUnit(units);
63 }
static std::string XComponentName(const std::string &base_name)
static std::string ZComponentName(const std::string &base_name)
RealParameter & registerParameter(const std::string &name, double *parpointer)
static std::string YComponentName(const std::string &base_name)
RealParameter & setUnit(const std::string &name)
MVVM_MODEL_EXPORT std::string base_name(const std::string &path)
Provide the filename of a file path.
Definition: fileutils.cpp:78

References ModelView::Utils::base_name(), IParametricComponent::registerParameter(), RealParameter::setUnit(), IParametricComponent::XComponentName(), IParametricComponent::YComponentName(), and IParametricComponent::ZComponentName().

Referenced by Beam::Beam(), DetectionProperties::DetectionProperties(), InterferenceFunctionTwin::InterferenceFunctionTwin(), MultiLayer::MultiLayer(), Lattice3D::initialize(), and IParticle::registerPosition().

Here is the call graph for this function:

◆ removeParameter()

void IParametricComponent::removeParameter ( const std::string &  name)
inherited

Definition at line 91 of file IParametricComponent.cpp.

92 {
93  m_pool->removeParameter(name);
94 }

References IParametricComponent::m_pool, and RealSpace::Particles::name().

Referenced by IParticle::registerAbundance(), ParticleLayout::registerParticleDensity(), Layer::registerThickness(), IParametricComponent::removeVector(), and Lattice2D::setRotationEnabled().

Here is the call graph for this function:

◆ removeVector()

void IParametricComponent::removeVector ( const std::string &  base_name)
inherited

Definition at line 96 of file IParametricComponent.cpp.

References ModelView::Utils::base_name(), IParametricComponent::removeParameter(), IParametricComponent::XComponentName(), IParametricComponent::YComponentName(), and IParametricComponent::ZComponentName().

Referenced by IParticle::registerPosition().

Here is the call graph for this function:

◆ setAmbientMaterial()

void IBornFF::setAmbientMaterial ( const Material )
inlineoverridevirtualinherited

Passes the material in which this particle is embedded.

Implements IFormFactor.

Definition at line 49 of file IBornFF.h.

49 {}

◆ setName()

void IParametricComponent::setName ( const std::string &  name)
inlineinherited

Definition at line 69 of file IParametricComponent.h.

69 { m_name = name; }

References IParametricComponent::m_name, and RealSpace::Particles::name().

Referenced by BasicLattice2D::BasicLattice2D(), Beam::Beam(), ConvolutionDetectorResolution::ConvolutionDetectorResolution(), Crystal::Crystal(), DetectionProperties::DetectionProperties(), DistributionHandler::DistributionHandler(), FormFactorCoreShell::FormFactorCoreShell(), FormFactorCrystal::FormFactorCrystal(), FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(), FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(), FormFactorDecoratorRotation::FormFactorDecoratorRotation(), FormFactorWeighted::FormFactorWeighted(), HexagonalLattice2D::HexagonalLattice2D(), IDetector::IDetector(), INode::INode(), Instrument::Instrument(), InterferenceFunction1DLattice::InterferenceFunction1DLattice(), InterferenceFunction2DLattice::InterferenceFunction2DLattice(), InterferenceFunction2DParaCrystal::InterferenceFunction2DParaCrystal(), InterferenceFunction2DSuperLattice::InterferenceFunction2DSuperLattice(), InterferenceFunction3DLattice::InterferenceFunction3DLattice(), InterferenceFunctionFinite2DLattice::InterferenceFunctionFinite2DLattice(), InterferenceFunctionFinite3DLattice::InterferenceFunctionFinite3DLattice(), InterferenceFunctionHardDisk::InterferenceFunctionHardDisk(), InterferenceFunctionNone::InterferenceFunctionNone(), InterferenceFunctionRadialParaCrystal::InterferenceFunctionRadialParaCrystal(), InterferenceFunctionTwin::InterferenceFunctionTwin(), ISampleBuilder::ISampleBuilder(), IsGISAXSDetector::IsGISAXSDetector(), Lattice3D::Lattice3D(), Layer::Layer(), LayerInterface::LayerInterface(), LayerRoughness::LayerRoughness(), MultiLayer::MultiLayer(), ParticleCoreShell::ParticleCoreShell(), ParticleDistribution::ParticleDistribution(), ParticleLayout::ParticleLayout(), RectangularDetector::RectangularDetector(), ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(), SampleBuilderNode::SampleBuilderNode(), SphericalDetector::SphericalDetector(), SquareLattice2D::SquareLattice2D(), Layer::clone(), LayersWithAbsorptionBuilder::createSampleByIndex(), Basic2DParaCrystalBuilder::createSampleByIndex(), ParticleInVacuumBuilder::createSampleByIndex(), SimpleMagneticRotationBuilder::createSampleByIndex(), DepthProbeSimulation::initialize(), GISASSimulation::initialize(), OffSpecularSimulation::initialize(), SpecularSimulation::initialize(), SpecularDetector1D::initialize(), MesoCrystal::initialize(), Particle::initialize(), ParticleComposition::initialize(), Beam::operator=(), SampleBuilderNode::operator=(), SampleBuilderNode::reset(), and SampleBuilderNode::setSBN().

Here is the call graph for this function:

◆ setParameterValue()

void IParametricComponent::setParameterValue ( const std::string &  name,
double  value 
)
inherited

Definition at line 65 of file IParametricComponent.cpp.

66 {
67  if (name.find('*') == std::string::npos && name.find('/') == std::string::npos) {
68  m_pool->setParameterValue(name, value);
69  } else {
70  std::unique_ptr<ParameterPool> P_pool{createParameterTree()};
71  if (name.find('*') != std::string::npos)
72  P_pool->setMatchedParametersValue(name, value);
73  else
74  P_pool->setParameterValue(name, value);
75  }
76 }
int setMatchedParametersValue(const std::string &wildcards, double value)
Sets value of the nonzero parameters that match pattern ('*' allowed), or throws.

References IParametricComponent::createParameterTree(), IParametricComponent::m_pool, RealSpace::Particles::name(), and ParameterPool::setMatchedParametersValue().

Referenced by AsymRippleBuilder::buildSample(), and IParametricComponent::setVectorValue().

Here is the call graph for this function:

◆ setParent()

void INode::setParent ( const INode newParent)
virtualinherited

Reimplemented in SampleProvider.

Definition at line 79 of file INode.cpp.

80 {
81  m_parent = newParent;
82 }

References INode::m_parent.

Referenced by INode::registerChild(), SampleProvider::setBuilder(), and SampleProvider::setParent().

◆ setPolyhedron()

void IFormFactorPolyhedron::setPolyhedron ( const PolyhedralTopology topology,
double  z_bottom,
const std::vector< kvector_t > &  vertices 
)
protectedinherited

Called by child classes to set faces and other internal variables.

Definition at line 40 of file IFormFactorPolyhedron.cpp.

42 {
43  pimpl = std::make_unique<Polyhedron>(topology, z_bottom, vertices);
44 }

References IFormFactorPolyhedron::pimpl.

Referenced by FormFactorAnisoPyramid::onChange(), onChange(), FormFactorCone6::onChange(), FormFactorCuboctahedron::onChange(), FormFactorDodecahedron::onChange(), FormFactorIcosahedron::onChange(), FormFactorPyramid::onChange(), FormFactorTetrahedron::onChange(), and FormFactorTruncatedCube::onChange().

◆ setSpecularInfo()

void IFormFactor::setSpecularInfo ( std::unique_ptr< const ILayerRTCoefficients ,
std::unique_ptr< const ILayerRTCoefficients  
)
virtualinherited

Sets reflection/transmission info.

Definition at line 84 of file IFormFactor.cpp.

86 {
87 }

◆ setVectorValue()

void IParametricComponent::setVectorValue ( const std::string &  base_name,
kvector_t  value 
)
inherited

Definition at line 78 of file IParametricComponent.cpp.

79 {
83 }
T y() const
Returns y-component in cartesian coordinate system.
Definition: BasicVector3D.h:65
T x() const
Returns x-component in cartesian coordinate system.
Definition: BasicVector3D.h:63
void setParameterValue(const std::string &name, double value)

References ModelView::Utils::base_name(), IParametricComponent::setParameterValue(), BasicVector3D< T >::x(), IParametricComponent::XComponentName(), BasicVector3D< T >::y(), IParametricComponent::YComponentName(), BasicVector3D< T >::z(), and IParametricComponent::ZComponentName().

Here is the call graph for this function:

◆ sliceFormFactor()

IFormFactor * IFormFactor::sliceFormFactor ( ZLimits  limits,
const IRotation rot,
kvector_t  translation 
) const
protectedvirtualinherited

Actually slices the form factor or throws an exception.

Reimplemented in FormFactorTruncatedSpheroid, FormFactorTruncatedSphere, FormFactorTetrahedron, FormFactorPyramid, FormFactorPrism6, FormFactorPrism3, FormFactorLongBoxLorentz, FormFactorLongBoxGauss, FormFactorFullSpheroid, FormFactorFullSphere, FormFactorEllipsoidalCylinder, FormFactorCylinder, FormFactorCuboctahedron, FormFactorCone6, FormFactorCone, FormFactorBox, and FormFactorAnisoPyramid.

Definition at line 94 of file IFormFactor.cpp.

95 {
96  throw std::runtime_error(getName() + "::sliceFormFactor error: not implemented!");
97 }

References IParametricComponent::getName().

Referenced by IFormFactor::createSlicedFormFactor().

Here is the call graph for this function:

◆ topZ()

double IFormFactorPolyhedron::topZ ( const IRotation rotation) const
finalvirtualinherited

Returns the z-coordinate of the lowest point in this shape after a given rotation.

Reimplemented from IBornFF.

Definition at line 51 of file IFormFactorPolyhedron.cpp.

52 {
53  return TopZ(pimpl->vertices(), rotation);
54 }
static double TopZ(const std::vector< kvector_t > &vertices, const IRotation &rotation)
Calculates the z-coordinate of the highest vertex after rotation.
Definition: IBornFF.cpp:98

References IFormFactorPolyhedron::pimpl, and IBornFF::TopZ().

Here is the call graph for this function:

◆ TopZ()

double IBornFF::TopZ ( const std::vector< kvector_t > &  vertices,
const IRotation rotation 
)
staticprotectedinherited

Calculates the z-coordinate of the highest vertex after rotation.

Definition at line 98 of file IBornFF.cpp.

99 {
100  ASSERT(vertices.size());
101  return algo::max_value(
102  vertices.begin(), vertices.end(),
103  [&](const kvector_t& vertex) -> double { return rotation.transformed(vertex).z(); });
104 }
double max_value(const Iterator &begin, const Iterator &end, const Evaluator &evaluate)
Returns the maximum value of function evaluate as applied to the elements of an iterator range.
Definition: Algorithms.h:69

References ASSERT, and algo::max_value().

Referenced by IFormFactorPolyhedron::topZ(), IFormFactorPrism::topZ(), and IBornFF::topZ().

Here is the call graph for this function:

◆ transferToCPP()

virtual void ICloneable::transferToCPP ( )
inlinevirtualinherited

Used for Python overriding of clone (see swig/tweaks.py)

Definition at line 34 of file ICloneable.h.

◆ treeToString()

std::string INode::treeToString ( ) const
virtualinherited

Returns multiline string representing tree structure below the node.

Definition at line 52 of file INode.cpp.

53 {
54  return NodeUtils::nodeToString(this);
55 }
std::string nodeToString(const INode *node)
Returns multiline string representing tree structure starting from given node.
Definition: NodeUtils.cpp:81

References NodeUtils::nodeToString().

Here is the call graph for this function:

◆ volume()

double IFormFactorPolyhedron::volume ( ) const
finalvirtualinherited

Returns the total volume of the particle of this form factor's shape.

Reimplemented from IFormFactor.

Definition at line 66 of file IFormFactorPolyhedron.cpp.

67 {
68  return pimpl->volume();
69 }

References IFormFactorPolyhedron::pimpl.

◆ XComponentName()

std::string IParametricComponent::XComponentName ( const std::string &  base_name)
staticinherited

Definition at line 103 of file IParametricComponent.cpp.

104 {
105  return base_name + "X";
106 }

References ModelView::Utils::base_name().

Referenced by Lattice3D::initialize(), IParticle::registerPosition(), IParametricComponent::registerVector(), IParametricComponent::removeVector(), IParametricComponent::setVectorValue(), and VectorParameterTranslator::translate().

Here is the call graph for this function:

◆ YComponentName()

std::string IParametricComponent::YComponentName ( const std::string &  base_name)
staticinherited

Definition at line 108 of file IParametricComponent.cpp.

109 {
110  return base_name + "Y";
111 }

References ModelView::Utils::base_name().

Referenced by IParametricComponent::registerVector(), IParametricComponent::removeVector(), IParametricComponent::setVectorValue(), and VectorParameterTranslator::translate().

Here is the call graph for this function:

◆ ZComponentName()

std::string IParametricComponent::ZComponentName ( const std::string &  base_name)
staticinherited

Definition at line 113 of file IParametricComponent.cpp.

114 {
115  return base_name + "Z";
116 }

References ModelView::Utils::base_name().

Referenced by IParametricComponent::registerVector(), IParametricComponent::removeVector(), IParametricComponent::setVectorValue(), and VectorParameterTranslator::translate().

Here is the call graph for this function:

Member Data Documentation

◆ m_length

const double& FormFactorCantellatedCube::m_length
private

Definition at line 42 of file FormFactorCantellatedCube.h.

Referenced by clone(), getLength(), and onChange().

◆ m_name

std::string IParametricComponent::m_name
privateinherited

◆ m_NP

const size_t INode::m_NP
protectedinherited

Definition at line 88 of file INode.h.

Referenced by INode::INode().

◆ m_P

std::vector<double> INode::m_P
protectedinherited

Definition at line 89 of file INode.h.

Referenced by INode::INode(), and IFootprintFactor::setWidthRatio().

◆ m_parent

const INode* INode::m_parent {nullptr}
privateinherited

Definition at line 83 of file INode.h.

Referenced by INode::displayName(), INode::parent(), and INode::setParent().

◆ m_pool

◆ m_removed_length

const double& FormFactorCantellatedCube::m_removed_length
private

Definition at line 43 of file FormFactorCantellatedCube.h.

Referenced by clone(), getRemovedLength(), and onChange().

◆ m_shape3D

◆ pimpl

◆ topology

const PolyhedralTopology FormFactorCantellatedCube::topology
staticprivate
Initial value:
= {
{
{{0, 1, 2, 3}, true},
{{0, 8, 5, 1}, true},
{{1, 9, 6, 2}, true},
{{2, 10, 7, 3}, true},
{{3, 11, 4, 0}, true},
{{0, 4, 8}, false},
{{1, 5, 9}, false},
{{2, 6, 10}, false},
{{3, 7, 11}, false},
{{4, 12, 16, 8}, true},
{{5, 13, 17, 9}, true},
{{4, 11, 19, 12}, true},
{{5, 8, 16, 13}, true},
{{7, 10, 18, 15}, true},
{{6, 9, 17, 14}, true},
{{7, 15, 19, 11}, true},
{{6, 14, 18, 10}, true},
{{13, 21, 17}, false},
{{12, 20, 16}, false},
{{15, 23, 19}, false},
{{14, 22, 18}, false},
{{14, 17, 21, 22}, true},
{{13, 16, 20, 21}, true},
{{12, 19, 23, 20}, true},
{{15, 18, 22, 23}, true},
{{20, 23, 22, 21}, true},
},
true}

Definition at line 41 of file FormFactorCantellatedCube.h.

Referenced by onChange().


The documentation for this class was generated from the following files: