28 const double sphere_radius = 5 *
Units::nm;
43 Layer vacuum_layer(vacuum_material);
44 Layer substrate_layer(substrate_material);
66 Particle particle(particle_material, ff_sphere);
67 particle_layout.
addParticle(particle, 1.0, position);
69 Layer vacuum_layer(vacuum_material);
70 Layer substrate_layer(substrate_material);
71 substrate_layer.
addLayout(particle_layout);
75 multi_layer->
addLayer(substrate_layer);
88 Layer vacuum_layer(vacuum_material);
89 Layer intermediate_layer(layer_material, 10.0);
90 Layer substrate_layer(substrate_material);
93 multi_layer->
addLayer(intermediate_layer);
94 multi_layer->
addLayer(substrate_layer);
111 Particle particle(particle_material, ff_sphere);
114 Layer vacuum_layer(vacuum_material);
115 Layer intermediate_layer(layer_material);
116 intermediate_layer.
addLayout(particle_layout);
117 Layer substrate_layer(substrate_material);
119 multi_layer->
addLayer(vacuum_layer);
120 multi_layer->
addLayer(intermediate_layer);
121 multi_layer->
addLayer(substrate_layer);
127 return parametricBuild(0., RoughnessModel::TANH);
140 return parametricBuild(0., RoughnessModel::TANH);
144 return parametricBuild(2., RoughnessModel::TANH);
148 return parametricBuild(2., RoughnessModel::NEVOT_CROCE);
168 Particle particle(particle_material, ff_sphere);
170 particle_layout.
addParticle(particle, 1.0, position, rot_z);
172 Layer vacuum_layer(vacuum_material);
173 Layer substrate_layer(substrate_material);
174 substrate_layer.
addLayout(particle_layout);
176 multi_layer->
addLayer(vacuum_layer);
177 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 in a MultiLayer sample.
void addLayout(const ParticleLayout &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 layer with default (zero) roughness.
void addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
Adds layer with top roughness.
Decorator class that adds particles to ISampleNode 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 nm
static constexpr double angstrom