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.