30 return iff.
getName() ==
"Interference2DLattice" || iff.
getName() ==
"Interference2DParaCrystal"
31 || iff.
getName() ==
"Interference2DSuperLattice"
32 || iff.
getName() ==
"InterferenceFinite2DLattice"
33 || iff.
getName() ==
"InterferenceHardDisk";
45 : mP_interference_function{nullptr}, m_total_particle_density{0.01}
83 particle_clone->
rotate(rotation);
97 for (
const IParticle* particle : generated_particles)
98 particle_vector.
push_back(particle->clone());
99 }
else if (
const auto* p_iparticle =
dynamic_cast<const IParticle*
>(particle)) {
100 particle_vector.
push_back(p_iparticle->clone());
103 return particle_vector;
115 result += p_particle->abundance();
142 std::vector<const INode*> result;
144 result.push_back(particle);
170 if (make_registered) {
Defines many exception classes in namespace Exceptionss.
Defines class InterferenceFunctionNone.
Defines class ParameterPool.
Defines class ParticleDistribution.
Defines class ParticleLayout.
Defines class RealParameter.
BasicVector3D< double > kvector_t
Interface for a generic particle.
void setAbundance(double abundance)
Sets particle abundance.
virtual IAbstractParticle * clone() const =0
Returns a clone of this ISample object.
virtual void translate(kvector_t translation)=0
Translates the particle with the given vector.
virtual void rotate(const IRotation &rotation)=0
Applies the given rotation to the particle.
Pure virtual base class of interference functions.
virtual IInterferenceFunction * clone() const =0
Returns a clone of this ISample object.
void setWeight(double weight)
Sets the relative weight of this layout.
double weight() const
Returns the relative weight of this layout.
void registerChild(INode *node)
RealParameter & registerParameter(const std::string &name, double *parpointer)
RealParameter * parameter(const std::string &name) const
Returns parameter with given 'name'.
void removeParameter(const std::string &name)
const std::string & getName() const
void setName(const std::string &name)
Pure virtual base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal.
Pure virtual interface for rotations.
virtual bool isIdentity() const
Returns true if rotation matrix is identity matrix (no rotations)
A particle type that is a parametric distribution of IParticle's.
Decorator class that adds particles to ISample objects.
SafePointerVector< IAbstractParticle > m_particles
Vector of particle types.
std::unique_ptr< IInterferenceFunction > mP_interference_function
void registerParticleDensity(bool make_registered=true)
double getTotalAbundance() const final override
Get total abundance of all particles.
SafePointerVector< IParticle > particles() const final override
Returns information on all particles (type and abundance) and generates new particles if an IAbstract...
~ParticleLayout() override
std::vector< const INode * > getChildren() const final override
Returns a vector of children (const).
void setInterferenceFunction(const IInterferenceFunction &interference_function)
Adds interference functions.
double totalParticleSurfaceDensity() const final override
Returns surface density of all particles.
void setTotalParticleSurfaceDensity(double particle_density) final override
Sets total particle surface density.
const IInterferenceFunction * interferenceFunction() const final override
Returns the interference function.
void setAndRegisterInterferenceFunction(IInterferenceFunction *child)
Sets interference function with simultaneous registration in parent class.
double m_total_particle_density
void addAndRegisterAbstractParticle(IAbstractParticle *child)
Adds particle information with simultaneous registration in parent class.
void addParticle(const IAbstractParticle &particle, double abundance=-1.0, const kvector_t position={}, const IRotation &rotation=IdentityRotation())
Adds particle to the layout with abundance, position and the rotation defined.
ParticleLayout * clone() const final override
Returns a clone of this ISample object.
A vector of pointers, owned by *this, with methods to handle them safely.
void push_back(T *pointer)
bool particleDensityIsProvidedByInterference(const IInterferenceFunction &iff)
Returns true if interference function is able to calculate particle density automatically,...