23 : m_particle_structure(particle_structure.clone()), m_meso_form_factor(form_factor.clone())
53 std::unique_ptr<IFormFactor> tem_ff(
55 std::unique_ptr<IFormFactor> total_ff(
59 for (
auto& region : regions)
60 region.m_volume *= meso_volume;
69 return std::vector<const INode*>()
74 : m_particle_structure(particle_structure), m_meso_form_factor(form_factor)
Defines class MesoCrystal.
Defines IRotation classes.
Defines class SlicedParticle.
A crystal structure, defined by a Bravais lattice, a basis, and a position variance.
void setAbundance(double abundance)
Sets particle abundance.
Visitor interface to visit ISampleNode objects.
virtual void visit(const BasicLattice2D *)
void registerChild(INode *node)
void setName(const std::string &name)
std::vector< const INode * > getChildren() const override
Returns a vector of children.
void setPosition(kvector_t position)
Sets relative position of the particle's reference point in the coordinate system of parent.
const IRotation * rotation() const
Returns rotation object.
std::unique_ptr< IRotation > m_rotation
void setRotation(const IRotation &rotation)
Sets transformation.
void registerParticleProperties()
Registers abundance and position.
The identity rotation, which leaves everything in place.
A particle with an internal structure of smaller particles.
MesoCrystal * clone() const final
Returns a clone of this ISampleNode object.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
std::unique_ptr< Crystal > m_particle_structure
Crystal structure.
std::vector< const INode * > getChildren() const final
Returns a vector of children.
std::unique_ptr< IFormFactor > m_meso_form_factor
Outer shape of this mesocrystal.
SlicedParticle createSlicedParticle(ZLimits limits) const final
Creates a sliced form factor for this particle.
MesoCrystal(const Crystal &particle_structure, const IFormFactor &form_factor)
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
Struct that contains information on a sliced particle.
std::vector< HomogeneousRegion > m_regions
std::unique_ptr< IFormFactor > m_slicedff