BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
A roughness of interface between two layers.
Based on the article "X-ray reflection and transmission by rough surfaces" by D. K. G. de Boer, Physical Review B 51, 5297 (1995)
Definition at line 29 of file LayerRoughness.h.
Public Member Functions | |
LayerRoughness () | |
LayerRoughness (double sigma, double hurstParameter=0, double lateralCorrLength=0) | |
Constructor of layer roughness. More... | |
void | checkNodeArgs () const |
Raises exception if a parameter value is invalid. More... | |
std::string | className () const final |
Returns the class name, to be hard-coded in each leaf class that inherits from INode. More... | |
LayerRoughness * | clone () const override |
Returns a clone of this ISampleNode object. More... | |
std::vector< const Material * > | containedMaterials () const |
Returns set of unique materials contained in this ISampleNode. More... | |
double | corrFunction (R3 k) const |
Correlation function of the roughness profile. More... | |
double | hurst () const |
Returns hurst parameter. More... | |
bool | isMagnetic () const |
Returns true if there is any magnetic material in this ISampleNode. More... | |
double | lateralCorrLength () const |
Returns lateral correlation length. More... | |
virtual const Material * | material () const |
Returns nullptr, unless overwritten to return a specific material. More... | |
virtual std::vector< const INode * > | nodeChildren () const |
Returns all children. More... | |
std::vector< const INode * > | nodeOffspring () const |
Returns all descendants. More... | |
std::vector< ParaMeta > | parDefs () const final |
Returns the parameter definitions, to be hard-coded in each leaf class. More... | |
std::string | pythonConstructor () const |
Creates the Python constructor of this class. More... | |
void | setHurstParameter (double hurstParameter) |
Sets hurst parameter. It describes how jagged the surface is. More... | |
void | setLatteralCorrLength (double lateralCorrLength) |
Sets lateral correlation length. More... | |
void | setSigma (double sigma) |
Sets rms of roughness. More... | |
double | sigma () const |
Returns rms of roughness. More... | |
double | spectralFunction (R3 kvec) const |
Returns power spectral density of the surface roughness. More... | |
virtual void | transferToCPP () |
Used for Python overriding of clone (see swig/tweaks.py) More... | |
Protected Attributes | |
std::vector< double > | m_P |
Private Attributes | |
double | m_hurstParameter |
Hurst parameter which describes how jagged the interface, 0<H<=1. More... | |
double | m_lateralCorrLength |
lateral correlation length of the roughness More... | |
double | m_sigma |
rms of roughness More... | |
LayerRoughness::LayerRoughness | ( | double | sigma, |
double | hurstParameter = 0 , |
||
double | lateralCorrLength = 0 |
||
) |
Constructor of layer roughness.
sigma | rms of the roughness in nanometers |
hurstParameter | hurst parameter which describes how jagged the interface, dimensionless [0.0, 1.0], where 0.0 gives more spikes, 1.0 more smoothness |
lateralCorrLength | lateral correlation length of the roughness in nanometers |
Definition at line 25 of file LayerRoughness.cpp.
References RealLimits::check(), m_lateralCorrLength, and RealLimits::nonnegative().
LayerRoughness::LayerRoughness | ( | ) |
|
inherited |
Raises exception if a parameter value is invalid.
Definition at line 27 of file INode.cpp.
References ASSERT, RealLimits::check(), INode::className(), INF, RealLimits::limited(), RealLimits::limitless(), INode::m_P, ParaMeta::name, RealLimits::nonnegative(), INode::parDefs(), ParaMeta::vMax, and ParaMeta::vMin.
Referenced by BarGauss::BarGauss(), BarLorentz::BarLorentz(), Bipyramid4::Bipyramid4(), Box::Box(), CantellatedCube::CantellatedCube(), Cone::Cone(), ConstantBackground::ConstantBackground(), CosineRippleBox::CosineRippleBox(), CosineRippleGauss::CosineRippleGauss(), CosineRippleLorentz::CosineRippleLorentz(), Cylinder::Cylinder(), DistributionCosine::DistributionCosine(), DistributionGate::DistributionGate(), DistributionGaussian::DistributionGaussian(), DistributionLogNormal::DistributionLogNormal(), DistributionLorentz::DistributionLorentz(), DistributionTrapezoid::DistributionTrapezoid(), Dodecahedron::Dodecahedron(), EllipsoidalCylinder::EllipsoidalCylinder(), FootprintGauss::FootprintGauss(), FootprintSquare::FootprintSquare(), FuzzySphere::FuzzySphere(), GaussSphere::GaussSphere(), HemiEllipsoid::HemiEllipsoid(), HollowSphere::HollowSphere(), HorizontalCylinder::HorizontalCylinder(), Icosahedron::Icosahedron(), LongBoxGauss::LongBoxGauss(), LongBoxLorentz::LongBoxLorentz(), PlatonicOctahedron::PlatonicOctahedron(), PlatonicTetrahedron::PlatonicTetrahedron(), Prism3::Prism3(), Prism6::Prism6(), Profile1DCauchy::Profile1DCauchy(), Profile1DCosine::Profile1DCosine(), Profile1DGate::Profile1DGate(), Profile1DGauss::Profile1DGauss(), Profile1DTriangle::Profile1DTriangle(), Profile1DVoigt::Profile1DVoigt(), Profile2DCauchy::Profile2DCauchy(), Profile2DCone::Profile2DCone(), Profile2DGate::Profile2DGate(), Profile2DGauss::Profile2DGauss(), Profile2DVoigt::Profile2DVoigt(), Pyramid2::Pyramid2(), Pyramid3::Pyramid3(), Pyramid4::Pyramid4(), Pyramid6::Pyramid6(), RotationEuler::RotationEuler(), RotationX::RotationX(), RotationY::RotationY(), RotationZ::RotationZ(), SawtoothRippleBox::SawtoothRippleBox(), SawtoothRippleGauss::SawtoothRippleGauss(), SawtoothRippleLorentz::SawtoothRippleLorentz(), Sphere::Sphere(), Spheroid::Spheroid(), TruncatedCube::TruncatedCube(), TruncatedSphere::TruncatedSphere(), and TruncatedSpheroid::TruncatedSpheroid().
|
inlinefinalvirtual |
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Implements INode.
Definition at line 38 of file LayerRoughness.h.
|
inlineoverridevirtual |
Returns a clone of this ISampleNode object.
Implements ISampleNode.
Definition at line 34 of file LayerRoughness.h.
References LayerRoughness(), m_hurstParameter, m_lateralCorrLength, and m_sigma.
Referenced by LayerInterface::setRoughness().
|
inherited |
Returns set of unique materials contained in this ISampleNode.
Definition at line 25 of file ISampleNode.cpp.
References ISampleNode::material(), and INode::nodeChildren().
Referenced by SampleUtils::Multilayer::ContainsCompatibleMaterials(), SampleToPython::initLabels(), and ISampleNode::isMagnetic().
double LayerRoughness::corrFunction | ( | R3 | k | ) | const |
Correlation function of the roughness profile.
Definition at line 57 of file LayerRoughness.cpp.
References TMath::H(), m_hurstParameter, m_lateralCorrLength, m_sigma, and TMath::R().
|
inline |
Returns hurst parameter.
Definition at line 59 of file LayerRoughness.h.
References m_hurstParameter.
|
inherited |
Returns true if there is any magnetic material in this ISampleNode.
Definition at line 39 of file ISampleNode.cpp.
References ISampleNode::containedMaterials().
Referenced by reSample::make().
|
inline |
Returns lateral correlation length.
Definition at line 67 of file LayerRoughness.h.
References m_lateralCorrLength.
Referenced by setLatteralCorrLength().
|
inlinevirtualinherited |
Returns nullptr, unless overwritten to return a specific material.
Reimplemented in Particle, and Layer.
Definition at line 36 of file ISampleNode.h.
Referenced by ISampleNode::containedMaterials().
|
virtualinherited |
Returns all children.
Reimplemented in ISimulation2D, ISimulation, ParticleCoreShell, ParticleComposition, Particle, MesoCrystal, IParticle, Crystal, MultiLayer, Layer, LayerInterface, ParticleLayout, InterferenceRadialParaCrystal, InterferenceFinite3DLattice, InterferenceFinite2DLattice, Interference3DLattice, Interference2DSuperLattice, Interference2DParaCrystal, Interference2DLattice, Interference1DLattice, ConvolutionDetectorResolution, IDetector, and Beam.
Definition at line 56 of file INode.cpp.
Referenced by NodeUtils::AllDescendantsOfType(), NodeUtils::ChildNodesOfType(), ISampleNode::containedMaterials(), and INode::nodeOffspring().
|
inherited |
Returns all descendants.
Definition at line 61 of file INode.cpp.
References INode::nodeChildren().
|
inlinefinalvirtual |
Returns the parameter definitions, to be hard-coded in each leaf class.
Reimplemented from INode.
Definition at line 39 of file LayerRoughness.h.
References INF.
std::string LayerRoughness::pythonConstructor | ( | ) | const |
Creates the Python constructor of this class.
Definition at line 65 of file LayerRoughness.cpp.
References m_hurstParameter, m_lateralCorrLength, m_sigma, and Py::Fmt::printFunction().
|
inline |
Sets hurst parameter. It describes how jagged the surface is.
Definition at line 57 of file LayerRoughness.h.
References m_hurstParameter.
|
inline |
Sets lateral correlation length.
Definition at line 62 of file LayerRoughness.h.
References lateralCorrLength(), and m_lateralCorrLength.
|
inline |
|
inline |
Returns rms of roughness.
Definition at line 54 of file LayerRoughness.h.
References m_sigma.
Referenced by MultiLayer::addLayerWithTopRoughness(), ProfileHelper::calculateProfile(), reSample::crossCorrSpectralFun(), ProfileHelper::defaultLimits(), RoughMultiLayerContribution::get_sum8terms(), and setSigma().
double LayerRoughness::spectralFunction | ( | R3 | kvec | ) | const |
Returns power spectral density of the surface roughness.
Power spectral density of the surface roughness is a result of two-dimensional Fourier transform of the correlation function of the roughness profile.
Based on the article D.K.G. de Boer, Physical review B, Volume 51, Number 8, 15 February 1995 "X-ray reflection and transmission by rough surfaces"
Definition at line 46 of file LayerRoughness.cpp.
References TMath::H(), m_hurstParameter, m_lateralCorrLength, M_PI, and m_sigma.
Referenced by RoughMultiLayerContribution::compute(), and reSample::crossCorrSpectralFun().
|
inlinevirtualinherited |
Used for Python overriding of clone (see swig/tweaks.py)
Definition at line 32 of file ICloneable.h.
|
private |
Hurst parameter which describes how jagged the interface, 0<H<=1.
Definition at line 76 of file LayerRoughness.h.
Referenced by clone(), corrFunction(), hurst(), pythonConstructor(), setHurstParameter(), and spectralFunction().
|
private |
lateral correlation length of the roughness
Definition at line 77 of file LayerRoughness.h.
Referenced by LayerRoughness(), clone(), corrFunction(), lateralCorrLength(), pythonConstructor(), setLatteralCorrLength(), and spectralFunction().
|
protectedinherited |
Definition at line 63 of file INode.h.
Referenced by IFootprintFactor::IFootprintFactor(), INode::checkNodeArgs(), IProfile1D::pythonConstructor(), IProfile2D::pythonConstructor(), IFormFactor::pythonConstructor(), Profile1DVoigt::pythonConstructor(), and Profile2DVoigt::pythonConstructor().
|
private |
rms of roughness
Definition at line 75 of file LayerRoughness.h.
Referenced by clone(), corrFunction(), pythonConstructor(), setSigma(), sigma(), and spectralFunction().