BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
anonymous_namespace{MagneticLayersBuilder.cpp} Namespace Reference

Functions

MultiLayerparametricBuild (double sigmaRoughness, RoughnessModel roughnessModel)
 

Variables

const double sphere_radius = 5 * Units::nanometer
 

Function Documentation

◆ parametricBuild()

MultiLayer* anonymous_namespace{MagneticLayersBuilder.cpp}::parametricBuild ( double  sigmaRoughness,
RoughnessModel  roughnessModel 
)

Definition at line 31 of file MagneticLayersBuilder.cpp.

32 {
33  MultiLayer* multi_layer = new MultiLayer();
34 
35  kvector_t substr_field = kvector_t(0.0, 1e6, 0.0);
36  kvector_t layer_field = kvector_t(1e6, 1e6, 0.0);
37  Material vacuum_material = HomogeneousMaterial("Vacuum", 0.0, 0.0);
38  Material substrate_material = HomogeneousMaterial("Substrate", 7e-6, 2e-8, substr_field);
39  Material layer_material = HomogeneousMaterial("MagLayer", 6e-4, 2e-8, layer_field);
40 
41  auto roughness = LayerRoughness();
42  roughness.setSigma(sigmaRoughness * Units::angstrom);
43 
44  Layer vacuum_layer(vacuum_material);
45  Layer substrate_layer(substrate_material);
46  Layer layer(layer_material, 200 * Units::angstrom);
47  multi_layer->addLayer(vacuum_layer);
48  multi_layer->addLayerWithTopRoughness(layer, roughness);
49  multi_layer->addLayerWithTopRoughness(substrate_layer, roughness);
50  multi_layer->setRoughnessModel(roughnessModel);
51  return multi_layer;
52 }
BasicVector3D< double > kvector_t
Definition: Vectors3D.h:21
A roughness of interface between two layers.
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 setRoughnessModel(RoughnessModel roughnessModel)
Definition: MultiLayer.cpp:110
void addLayer(const Layer &layer)
Adds object to multilayer.
Definition: MultiLayer.cpp:54
void addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
Adds layer with top roughness.
Definition: MultiLayer.cpp:61
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 angstrom
Definition: Units.h:25

References MultiLayer::addLayer(), MultiLayer::addLayerWithTopRoughness(), Units::angstrom, HomogeneousMaterial(), and MultiLayer::setRoughnessModel().

Referenced by SimpleMagneticRotationBuilder::buildSample(), and SimpleMagneticRotationBuilder::createSampleByIndex().

Here is the call graph for this function:

Variable Documentation

◆ sphere_radius

const double anonymous_namespace{MagneticLayersBuilder.cpp}::sphere_radius = 5 * Units::nanometer