BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
HomogeneousMultilayerBuilder.cpp
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Sample/StandardSamples/HomogeneousMultilayerBuilder.cpp
6 //! @brief Implements class HomogeneousMultilayerBuilder.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************** //
14 
19 
21 {
22  const size_t number_of_layers = 10;
23  const double delta_ti = -7.36e-7;
24  const double delta_ni = 3.557e-6;
25  const double delta_si = 7.81e-7;
26  const double thick_ti = 3.0; // nm
27  const double thick_ni = 7.0; // nm
28 
29  Material vacuumaterial = HomogeneousMaterial();
30  Material substrate_material = HomogeneousMaterial("Si_substrate", delta_si, 0.0);
31  Material ni_material = HomogeneousMaterial("Ni", delta_ni, 0.0);
32  Material ti_material = HomogeneousMaterial("Ti", delta_ti, 0.0);
33 
34  Layer vacuulayer(vacuumaterial, 0);
35  Layer ni_layer(ni_material, thick_ni);
36  Layer ti_layer(ti_material, thick_ti);
37  Layer substrate_layer(substrate_material, 0);
38 
39  MultiLayer* multi_layer = new MultiLayer();
40  multi_layer->addLayer(vacuulayer);
41  for (size_t i = 0; i < number_of_layers; ++i) {
42  multi_layer->addLayer(ti_layer);
43  multi_layer->addLayer(ni_layer);
44  }
45  multi_layer->addLayer(substrate_layer);
46  return multi_layer;
47 }
Defines class HomogeneousMultilayerBuilder.
Defines class Layer.
Factory functions used to create material instances.
Defines class MultiLayer.
A layer, with thickness (in nanometer) and material.
Definition: Layer.h:28
A wrapper for underlying material implementation.
Definition: Material.h:29
Our sample model: a stack of layers one below the other.
Definition: MultiLayer.h:42
void addLayer(const Layer &layer)
Adds object to multilayer.
Definition: MultiLayer.cpp:54
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).