BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
HomogeneousMultilayerBuilder.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
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 = Vacuum();
30  Material substrate_material = RefractiveMaterial("Si_substrate", delta_si, 0.0);
31  Material ni_material = RefractiveMaterial("Ni", delta_ni, 0.0);
32  Material ti_material = RefractiveMaterial("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  auto* sample = new MultiLayer();
40  sample->addLayer(vacuulayer);
41  for (size_t i = 0; i < number_of_layers; ++i) {
42  sample->addLayer(ti_layer);
43  sample->addLayer(ni_layer);
44  }
45  sample->addLayer(substrate_layer);
46  return sample;
47 }
Defines class HomogeneousMultilayerBuilder.
Defines class Layer.
Factory functions used to create material instances.
Defines class MultiLayer.
A layer in a MultiLayer sample.
Definition: Layer.h:26
A wrapper for underlying material implementation.
Definition: Material.h:35
Our sample model: a stack of layers one below the other.
Definition: MultiLayer.h:43
Material RefractiveMaterial(const std::string &name, complex_t refractive_index, R3 magnetization)
MultiLayer * createHomogeneousMultilayer()
static const Material Vacuum