15 #ifndef BORNAGAIN_CORE_MULTILAYER_LAYERINTERFACE_H
16 #define BORNAGAIN_CORE_MULTILAYER_LAYERINTERFACE_H
Defines interface class ISample.
Visitor interface to visit ISample objects.
virtual void visit(const BasicLattice *)
Pure virtual base class for sample components and properties related to scattering.
Interface between two layers, possibly with roughness.
static LayerInterface * createRoughInterface(const Layer *top_layer, const Layer *bottom_layer, const LayerRoughness &roughness)
Creates rough interface between two layers.
LayerInterface * clone() const
Returns a clone of this ISample object.
const Layer * topLayer() const
virtual void accept(INodeVisitor *visitor) const
Calls the INodeVisitor's visit method.
static LayerInterface * createSmoothInterface(const Layer *top_layer, const Layer *bottom_layer)
Creates smooth interface between two layers.
virtual ~LayerInterface()
const LayerRoughness * getRoughness() const
Returns roughness of the interface.
void setLayersTopBottom(const Layer *top_layer, const Layer *bottom_layer)
Sets links to the layers above and below the interface.
std::vector< const INode * > getChildren() const
Returns a vector of children (const).
std::unique_ptr< LayerRoughness > m_roughness
roughness of the interface
const Layer * m_bottomLayer
pointer to the layer below interface
void setRoughness(const LayerRoughness &roughness)
Sets roughness of the interface.
const Layer * m_topLayer
pointer to the layer above interface
const Layer * bottomLayer() const
A roughness of interface between two layers.
A layer, with thickness (in nanometer) and material.