BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
MultiLayer Class Reference

Description

Our sample model: a stack of layers one below the other.

Example of system of 4 layers (3 interfaces):

vacuum      layer 0
---------   interface 0    z=0.0
Fe, 20A     layer 1
---------   interface 1    z=-20.0
Cr, 40A     layer 2
---------   interface 2    z=-60.0
substrate   layer 3
Inheritance diagram for MultiLayer:

Public Member Functions

 MultiLayer (std::string name="Unnamed")
 
 ~MultiLayer () override
 
void addLayer (const Layer &layer)
 
void addLayerWithTopRoughness (const Layer &layer, const LayerRoughness &roughness)
 
std::string className () const final
 
MultiLayer * clone () const override
 
double crossCorrLength () const
 Returns cross correlation length of roughnesses between interfaces. More...
 
R3 externalField () const
 Returns the external field applied to the sample (units: A/m) More...
 
const Layer * layer (size_t i_layer) const
 Returns layer with given index. More...
 
const LayerInterface * layerInterface (size_t i_interface) const
 Returns interface with given index. More...
 
std::vector< const INode * > nodeChildren () const override
 
size_t numberOfLayers () const
 
RoughnessModel roughnessModel () const
 
const std::string & sampleName () const
 
void setCrossCorrLength (double crossCorrLength)
 Sets cross correlation length of roughnesses between interfaces. More...
 
void setExternalField (R3 ext_field)
 Sets the external field applied to the sample (units: A/m) More...
 
void setRoughnessModel (RoughnessModel roughnessModel)
 
void setSampleName (const std::string &name)
 

Constructor & Destructor Documentation

◆ MultiLayer()

MultiLayer::MultiLayer ( std::string  name = "Unnamed")

◆ ~MultiLayer()

MultiLayer::~MultiLayer ( )
override

Member Function Documentation

◆ addLayer()

void MultiLayer::addLayer ( const Layer &  layer)

◆ addLayerWithTopRoughness()

void MultiLayer::addLayerWithTopRoughness ( const Layer &  layer,
const LayerRoughness &  roughness 
)

◆ className()

std::string MultiLayer::className ( ) const
final

◆ clone()

MultiLayer* MultiLayer::clone ( ) const
override

◆ crossCorrLength()

double MultiLayer::crossCorrLength ( ) const

Returns cross correlation length of roughnesses between interfaces.

◆ externalField()

R3 MultiLayer::externalField ( ) const

Returns the external field applied to the sample (units: A/m)

◆ layer()

const Layer* MultiLayer::layer ( size_t  i_layer) const

Returns layer with given index.

◆ layerInterface()

const LayerInterface* MultiLayer::layerInterface ( size_t  i_interface) const

Returns interface with given index.

◆ nodeChildren()

std::vector<const INode*> MultiLayer::nodeChildren ( ) const
override

◆ numberOfLayers()

size_t MultiLayer::numberOfLayers ( ) const

◆ roughnessModel()

RoughnessModel MultiLayer::roughnessModel ( ) const

◆ sampleName()

const std::string& MultiLayer::sampleName ( ) const

◆ setCrossCorrLength()

void MultiLayer::setCrossCorrLength ( double  crossCorrLength)

Sets cross correlation length of roughnesses between interfaces.

◆ setExternalField()

void MultiLayer::setExternalField ( R3  ext_field)

Sets the external field applied to the sample (units: A/m)

◆ setRoughnessModel()

void MultiLayer::setRoughnessModel ( RoughnessModel  roughnessModel)

◆ setSampleName()

void MultiLayer::setSampleName ( const std::string &  name)