28 const double wavelength(0.154);
29 const int n_slices(3);
33 complex_t getSLDFromN(
double wavelength,
double delta,
double beta)
35 complex_t result{2 * delta - delta * delta + beta * beta, 2 * beta - 2 * delta * beta};
41 return sld_l + eff_vol * (sld_p - sld_l);
51 Layer vacuum_layer(vacuum_material);
52 Layer substrate_layer(substrate_material);
56 Particle particle(particle_material, ff_cylinder);
64 multi_layer->
addLayer(substrate_layer);
71 complex_t sub_sld = getSLDFromN(wavelength, 6e-6, 2e-8);
73 complex_t par_sld = getSLDFromN(wavelength, 6e-4, 2e-8);
76 Layer vacuum_layer(vacuum_material);
77 Layer substrate_layer(substrate_material);
81 Particle particle(particle_material, ff_cylinder);
89 multi_layer->
addLayer(substrate_layer);
99 complex_t sub_sld = getSLDFromN(wavelength, 6e-6, 2e-8);
102 double eff_vol = par_surf_density *
M_PI * radius * radius;
103 complex_t par_sld = getSLDFromN(wavelength, 6e-4, 2e-8);
104 complex_t avr_sld = averageSLD(par_sld, vacuum_sld, eff_vol);
107 Layer vacuum_layer(vacuum_material);
108 Layer avr_layer(avr_material, height / n_slices);
109 Layer substrate_layer(substrate_material);
112 multi_layer->
addLayer(vacuum_layer);
113 for (
size_t i = 0; i < n_slices; ++i)
115 multi_layer->
addLayer(substrate_layer);
std::complex< double > complex_t
Defines M_PI and some more mathematical constants.
Factory functions used to create material instances.
Defines class MultiLayer.
Defines class ParticleLayout.
Defines classes for testing slicing machinery.
Defines some unit conversion factors and other constants in namespace Units.
MultiLayer * buildSample() const
A layer in a MultiLayer sample.
void setNumberOfSlices(unsigned int n_slices)
void addLayout(const ParticleLayout &decoration)
A wrapper for underlying material implementation.
Our sample model: a stack of layers one below the other.
void addLayer(const Layer &layer)
Adds layer with default (zero) roughness.
Decorator class that adds particles to ISampleNode objects.
double totalParticleSurfaceDensity() const
A particle with a form factor and refractive index.
MultiLayer * buildSample() const
MultiLayer * buildSample() const
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 nm
static constexpr double angstrom