29 const double sphere_radius = 5 * Units::nanometer;
 
   31 MultiLayer* parametricBuild(
double sigmaRoughness, RoughnessModel roughnessModel)
 
   42     roughness.setSigma(sigmaRoughness * Units::angstrom);
 
   44     Layer vacuum_layer(vacuum_material);
 
   45     Layer substrate_layer(substrate_material);
 
   46     Layer layer(layer_material, 200 * Units::angstrom);
 
   50     multi_layer->setRoughnessModel(roughnessModel);
 
   56 MultiLayer* MagneticSubstrateZeroFieldBuilder::buildSample()
 const 
   65     kvector_t position(0.0, 0.0, -10.0 * Units::nanometer);
 
   67     Particle particle(particle_material, ff_sphere);
 
   68     particle_layout.
addParticle(particle, 1.0, position);
 
   70     Layer vacuum_layer(vacuum_material);
 
   71     Layer substrate_layer(substrate_material);
 
   72     substrate_layer.addLayout(particle_layout);
 
   76     multi_layer->
addLayer(substrate_layer);
 
   80 MultiLayer* SimpleMagneticLayerBuilder::buildSample()
 const 
   85     Material vacuum_material = MaterialBySLD(
"Vacuum", 0.0, 0.0);
 
   86     Material layer_material = MaterialBySLD(
"MagLayer", 1e-4, 1e-8, layer_field);
 
   87     Material substrate_material = MaterialBySLD(
"Substrate", 7e-5, 2e-6);
 
   89     Layer vacuum_layer(vacuum_material);
 
   90     Layer intermediate_layer(layer_material, 10.0); 
 
   91     Layer substrate_layer(substrate_material);
 
   94     multi_layer->
addLayer(intermediate_layer);
 
   95     multi_layer->
addLayer(substrate_layer);
 
   99 MultiLayer* MagneticLayerBuilder::buildSample()
 const 
  112     Particle particle(particle_material, ff_sphere);
 
  115     Layer vacuum_layer(vacuum_material);
 
  116     Layer intermediate_layer(layer_material);
 
  117     intermediate_layer.addLayout(particle_layout);
 
  118     Layer substrate_layer(substrate_material);
 
  120     multi_layer->
addLayer(vacuum_layer);
 
  121     multi_layer->
addLayer(intermediate_layer);
 
  122     multi_layer->
addLayer(substrate_layer);
 
  126 MultiLayer* SimpleMagneticRotationBuilder::buildSample()
 const 
  128     return parametricBuild(0., RoughnessModel::TANH);
 
  131 size_t SimpleMagneticRotationBuilder::size()
 
  136 MultiLayer* SimpleMagneticRotationBuilder::createSampleByIndex(
size_t index)
 
  141         return parametricBuild(0., RoughnessModel::TANH);
 
  145         return parametricBuild(2., RoughnessModel::TANH);
 
  149         return parametricBuild(2., RoughnessModel::NEVOT_CROCE);
 
  156 MultiLayer* MagneticRotationBuilder::buildSample()
 const 
  167     kvector_t position(0.0, 0.0, -10.0 * Units::nanometer);
 
  169     Particle particle(particle_material, ff_sphere);
 
  171     particle_layout.
addParticle(particle, 1.0, position, rot_z);
 
  173     Layer vacuum_layer(vacuum_material);
 
  174     Layer substrate_layer(substrate_material);
 
  175     substrate_layer.addLayout(particle_layout);
 
  177     multi_layer->
addLayer(vacuum_layer);
 
  178     multi_layer->
addLayer(substrate_layer);
 
Defines the macro ASSERT.
 
Defines class LayerRoughness.
 
Defines class to build samples with magnetic layers.
 
Factory functions used to create material instances.
 
Defines class MultiLayer.
 
Defines class ParticleLayout.
 
Defines some unit conversion factors and other constants in namespace Units.
 
A roughness of interface between two layers.
 
A layer, with thickness (in nanometer) and material.
 
A wrapper for underlying material implementation.
 
Our sample model: a stack of layers one below the other.
 
void addLayer(const Layer &layer)
Adds object to multilayer.
 
void addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
Adds layer with top roughness.
 
Decorator class that adds particles to ISample objects.
 
void addParticle(const IAbstractParticle &particle, double abundance=-1.0, const kvector_t position={}, const IRotation &rotation=IdentityRotation())
Adds particle to the layout with abundance, position and the rotation defined.
 
A particle with a form factor and refractive index.
 
A rotation about the z axis.
 
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).