27 const double height(5);
28 const double radius(5);
29 const double wavelength(0.154);
30 const int n_slices(3);
34 complex_t getSLDFromN(
double wavelength,
double delta,
double beta)
36 complex_t result{2 * delta - delta * delta +
beta *
beta, 2 *
beta - 2 * delta *
beta};
40 complex_t averageSLD(complex_t sld_p, complex_t sld_l,
double eff_vol)
42 return sld_l + eff_vol * (sld_p - sld_l);
53 Layer vacuum_layer(vacuum_material);
54 Layer substrate_layer(substrate_material);
56 Cylinder ff_cylinder(radius, height);
58 Particle particle(particle_material, ff_cylinder);
65 sample->addLayer(vacuum_layer);
66 sample->addLayer(substrate_layer);
73 complex_t sub_sld = getSLDFromN(wavelength, 6e-6, 2e-8);
75 complex_t par_sld = getSLDFromN(wavelength, 6e-4, 2e-8);
78 Layer vacuum_layer(vacuum_material);
79 Layer substrate_layer(substrate_material);
81 Cylinder ff_cylinder(radius, height);
83 Particle particle(particle_material, ff_cylinder);
90 sample->addLayer(vacuum_layer);
91 sample->addLayer(substrate_layer);
99 complex_t vacuum_sld{0.0, 0.0};
101 complex_t sub_sld = getSLDFromN(wavelength, 6e-6, 2e-8);
104 double eff_vol = par_surf_density *
M_PI * radius * radius;
105 complex_t par_sld = getSLDFromN(wavelength, 6e-4, 2e-8);
106 complex_t avr_sld = averageSLD(par_sld, vacuum_sld, eff_vol);
109 Layer vacuum_layer(vacuum_material);
110 Layer avr_layer(avr_material, height / n_slices);
111 Layer substrate_layer(substrate_material);
114 sample->addLayer(vacuum_layer);
115 for (
size_t i = 0; i < n_slices; ++i)
116 sample->addLayer(avr_layer);
117 sample->addLayer(substrate_layer);
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.
A layer in a MultiLayer sample.
void setNumberOfSlices(unsigned int n_slices)
void addLayout(const ParticleLayout &layout)
A wrapper for underlying material implementation.
Our sample model: a stack of layers one below the other.
Decorator class that adds particles to ISampleNode objects.
double totalParticleSurfaceDensity() const
A particle with a form factor and refractive index.
Material RefractiveMaterial(const std::string &name, complex_t refractive_index, R3 magnetization)
MultiLayer * createAveragedSlicedCylinders()
MultiLayer * createSLDSlicedCylinders()
MultiLayer * createSlicedCylinders()
double beta(double z, double w)
static constexpr double angstrom