15 #ifndef BORNAGAIN_CORE_MULTILAYER_MULTILAYER_H
16 #define BORNAGAIN_CORE_MULTILAYER_MULTILAYER_H
53 size_t numberOfLayers()
const {
return m_layers.size(); }
79 std::vector<const INode*>
getChildren() const final override;
81 void setRoughnessModel(RoughnessModel roughnessModel);
83 RoughnessModel roughnessModel()
const {
return m_roughness_model; }
87 void addAndRegisterLayer(
Layer* child);
93 void handleLayerThicknessRegistration();
96 size_t check_layer_index(
size_t i_layer)
const;
99 size_t check_interface_index(
size_t i_interface)
const;
106 double m_crossCorrLength;
110 RoughnessModel m_roughness_model{RoughnessModel::DEFAULT};
Defines interface class ISample.
Define RoughnessModels enumerator and Python wrapper.
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.
Interface between two layers, possibly with roughness.
A roughness of interface between two layers.
A layer, with thickness (in nanometer) and material.
Our sample model: a stack of layers one below the other.
const LayerInterface * layerInterface(size_t i_interface) const
Returns interface with given index.
const Layer * layer(size_t i_layer) const
Returns layer with given index.
MultiLayer * clone() const final override
Returns a clone of multilayer with clones of all layers and interfaces between layers.
kvector_t externalField() const
Returns the external field applied to the multilayer (units: A/m)
std::vector< const INode * > getChildren() const final override
Returns a vector of children (const).
void setExternalField(kvector_t ext_field)
Sets the external field applied to the multilayer (units: A/m)
void setCrossCorrLength(double crossCorrLength)
Sets cross correlation length of roughnesses between interfaces.
void accept(INodeVisitor *visitor) const final override
Calls the INodeVisitor's visit method.
void addLayer(const Layer &layer)
Adds object to multilayer.
void addLayerWithTopRoughness(const Layer &layer, const LayerRoughness &roughness)
Adds layer with top roughness.
double crossCorrLength() const
Returns cross correlation length of roughnesses between interfaces.