15 #ifndef BORNAGAIN_CORE_MULTILAYER_LAYER_H
16 #define BORNAGAIN_CORE_MULTILAYER_LAYER_H
46 std::vector<const ILayout*>
layouts()
const;
48 std::vector<const INode*>
getChildren() const override final;
Defines interface class ISample.
Defines and implements class Material.
Defines and implements template class SafePointerVector.
Pure virtual interface class to equip a sample layer with scattering properties.
Visitor interface to visit ISample objects.
Pure virtual base class for sample components and properties related to scattering.
A layer, with thickness (in nanometer) and material.
const Material * material() const override final
Returns nullptr, unless overwritten to return a specific material.
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
void setNumberOfSlices(unsigned int n_slices)
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).
kvector_t m_B_field
cached value of magnetic induction
double m_thickness
layer thickness in nanometers
Layer * clone() const override final
Returns a clone of this ISample object.
size_t numberOfLayouts() const
void addLayout(const ILayout &decoration)
void setMaterial(Material material)
void setThickness(double thickness)
Sets layer thickness in nanometers.
unsigned int numberOfSlices() const
unsigned int m_n_slices
number of slices to create for graded layer approach
Material m_material
material
Layer(Material material, double thickness=0)
Constructor of a layer with thickness and material.
void registerThickness(bool make_registered=true)
std::vector< const ILayout * > layouts() const
SafePointerVector< ILayout > m_layouts
independent layouts in this layer
A wrapper for underlying material implementation.