BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
PercusYevickBuilder.cpp
Go to the documentation of this file.
1
// ************************************************************************** //
2
//
3
// BornAgain: simulate and fit scattering at grazing incidence
4
//
5
//! @file Sample/StandardSamples/PercusYevickBuilder.cpp
6
//! @brief Implements class PercusYevickBuilder.
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
15
#include "
Sample/StandardSamples/PercusYevickBuilder.h
"
16
#include "
Base/Const/Units.h
"
17
#include "
Sample/Aggregate/InterferenceFunctionHardDisk.h
"
18
#include "
Sample/Aggregate/ParticleLayout.h
"
19
#include "
Sample/HardParticle/FormFactorCylinder.h
"
20
#include "
Sample/Multilayer/Layer.h
"
21
#include "
Sample/Multilayer/MultiLayer.h
"
22
#include "
Sample/Particle/Particle.h
"
23
#include "
Sample/StandardSamples/ReferenceMaterials.h
"
24
25
MultiLayer
*
HardDiskBuilder::buildSample
()
const
26
{
27
const
double
m_cylinder_height(5 *
Units::nanometer
);
28
const
double
m_cylinder_radius(5 *
Units::nanometer
);
29
const
double
m_disk_radius(5 *
Units::nanometer
);
30
const
double
m_density(0.006);
31
32
Layer
vacuum_layer(
refMat::Vacuum
);
33
Layer
substrate_layer(
refMat::Substrate
);
34
35
FormFactorCylinder
ff_cylinder(m_cylinder_radius, m_cylinder_height);
36
Particle
particle(
refMat::Particle
, ff_cylinder);
37
ParticleLayout
particle_layout(particle);
38
39
InterferenceFunctionHardDisk
interference_function(m_disk_radius, m_density);
40
particle_layout.
setInterferenceFunction
(interference_function);
41
42
vacuum_layer.
addLayout
(particle_layout);
43
44
MultiLayer
* multi_layer =
new
MultiLayer
();
45
multi_layer->
addLayer
(vacuum_layer);
46
multi_layer->
addLayer
(substrate_layer);
47
return
multi_layer;
48
}
FormFactorCylinder.h
Defines class FormFactorCylinder.
InterferenceFunctionHardDisk.h
Defines class InterferenceFunctionHardDisk.
Layer.h
Defines class Layer.
MultiLayer.h
Defines class MultiLayer.
ParticleLayout.h
Defines class ParticleLayout.
Particle.h
Defines class Particle.
PercusYevickBuilder.h
Defines classes of PercusYevickBuilder family.
ReferenceMaterials.h
Defines materials in namespace refMat.
Units.h
Defines some unit conversion factors and other constants in namespace Units.
FormFactorCylinder
A circular cylinder.
Definition:
FormFactorCylinder.h:24
HardDiskBuilder::buildSample
MultiLayer * buildSample() const
Definition:
PercusYevickBuilder.cpp:25
InterferenceFunctionHardDisk
Percus-Yevick hard disk interference function.
Definition:
InterferenceFunctionHardDisk.h:28
Layer
A layer, with thickness (in nanometer) and material.
Definition:
Layer.h:28
Layer::addLayout
void addLayout(const ILayout &decoration)
Definition:
Layer.cpp:57
MultiLayer
Our sample model: a stack of layers one below the other.
Definition:
MultiLayer.h:42
MultiLayer::addLayer
void addLayer(const Layer &layer)
Adds object to multilayer.
Definition:
MultiLayer.cpp:54
ParticleLayout
Decorator class that adds particles to ISample objects.
Definition:
ParticleLayout.h:30
ParticleLayout::setInterferenceFunction
void setInterferenceFunction(const IInterferenceFunction &interference_function)
Adds interference functions.
Definition:
ParticleLayout.cpp:121
Particle
A particle with a form factor and refractive index.
Definition:
Particle.h:26
Units::nanometer
static constexpr double nanometer
Definition:
Units.h:24
refMat::Vacuum
static const Material Vacuum
Definition:
ReferenceMaterials.h:25
refMat::Particle
static const Material Particle
Definition:
ReferenceMaterials.h:27
refMat::Substrate
static const Material Substrate
Definition:
ReferenceMaterials.h:26
Sample
StandardSamples
PercusYevickBuilder.cpp
Generated by
1.9.1