44 Layer vacuum_layer(vacuum_material);
45 Layer substrate_layer(substrate_material);
67 Particle particle(particle_material, ff_sphere);
68 particle_layout.
addParticle(particle, 1.0, position);
70 Layer vacuum_layer(vacuum_material);
71 Layer substrate_layer(substrate_material);
72 substrate_layer.
addLayout(particle_layout);
76 multi_layer->
addLayer(substrate_layer);
89 Layer vacuum_layer(vacuum_material);
90 Layer intermediate_layer(layer_material, 10.0);
91 Layer substrate_layer(substrate_material);
94 multi_layer->
addLayer(intermediate_layer);
95 multi_layer->
addLayer(substrate_layer);
112 Particle particle(particle_material, ff_sphere);
115 Layer vacuum_layer(vacuum_material);
116 Layer intermediate_layer(layer_material);
117 intermediate_layer.
addLayout(particle_layout);
118 Layer substrate_layer(substrate_material);
120 multi_layer->
addLayer(vacuum_layer);
121 multi_layer->
addLayer(intermediate_layer);
122 multi_layer->
addLayer(substrate_layer);
169 Particle particle(particle_material, ff_sphere);
171 particle_layout.
addParticle(particle, 1.0, position, rot_z);
173 Layer vacuum_layer(vacuum_material);
174 Layer substrate_layer(substrate_material);
175 substrate_layer.
addLayout(particle_layout);
177 multi_layer->
addLayer(vacuum_layer);
178 multi_layer->
addLayer(substrate_layer);
Defines the macro ASSERT.
#define ASSERT(condition)
Defines class LayerRoughness.
Defines class to build samples with magnetic layers.
Factory functions used to create material instances.
Defines class MultiLayer.
Defines class ParticleLayout.
Defines some unit conversion factors and other constants in namespace Units.
BasicVector3D< double > kvector_t
void setName(const std::string &name)
A roughness of interface between two layers.
A layer, with thickness (in nanometer) and material.
void addLayout(const ILayout &decoration)
MultiLayer * buildSample() const
MultiLayer * buildSample() const
MultiLayer * buildSample() const
A wrapper for underlying material implementation.
Our sample model: a stack of layers one below the other.
void setRoughnessModel(RoughnessModel roughnessModel)
void addLayer(const Layer &layer)
Adds object to multilayer.
void addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
Adds layer with top roughness.
Decorator class that adds particles to ISample objects.
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.
A particle with a form factor and refractive index.
A rotation about the z axis.
MultiLayer * buildSample() const
MultiLayer * buildSample() const override
MultiLayer * createSampleByIndex(size_t index) override
Material HomogeneousMaterial(const std::string &name, complex_t refractive_index, kvector_t magnetization)
Constructs a material with name, refractive_index and magnetization (in A/m).
static constexpr double deg
static constexpr double angstrom
static constexpr double nanometer
MultiLayer * parametricBuild(double sigmaRoughness, RoughnessModel roughnessModel)
const double sphere_radius