BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
Material implementation based on wavelength-independent data (valid for a range of wavelengths)
Definition at line 29 of file MaterialBySLDImpl.h.
Public Member Functions | |
~MaterialBySLDImpl () override=default | |
MaterialBySLDImpl * | clone () const override |
Returns pointer to a copy of material. More... | |
MagneticMaterialImpl * | inverted () const override |
Constructs a material with inverted magnetization. More... | |
bool | isMagneticMaterial () const override |
bool | isScalarMaterial () const override |
Indicates whether the interaction with the material is scalar. This means that different polarization states will be diffracted equally. More... | |
R3 | magnetization () const override |
Returns the magnetization (in A/m) More... | |
complex_t | materialData () const override |
Returns underlying material data. More... | |
const std::string & | matName () const |
Returns name of the material. More... | |
SpinMatrix | polarizedSubtrSLD (const WavevectorInfo &wavevectors) const override |
Returns ( ![]() | |
std::string | print () const override |
Prints object data. More... | |
complex_t | refractiveIndex (double wavelength) const override |
Returns refractive index. More... | |
complex_t | refractiveIndex2 (double wavelength) const override |
Returns squared refractive index. More... | |
MagneticMaterialImpl * | rotatedMaterial (const RotMatrix &transform) const override |
complex_t | scalarSubtrSLD (double lambda0) const override |
Returns ( ![]() ![]() | |
MATERIAL_TYPES | typeID () const override |
Returns type of material implementation. More... | |
Private Member Functions | |
MaterialBySLDImpl (const std::string &name, double sld_real, double sld_imag, R3 magnetization) | |
Constructs a wavelength-independent material with a given complex-valued scattering length density (SLD). SLD units are ![]() | |
void | setMagnetization (R3 magnetization) |
complex_t | sld () const |
Returns the scattering length density. More... | |
Private Attributes | |
R3 | m_magnetization |
magnetization More... | |
const std::string | m_name |
const double | m_sld_imag |
imaginary part of scattering length density (negative by default) More... | |
const double | m_sld_real |
complex-valued scattering length density More... | |
Friends | |
Material | MaterialBySLD (const std::string &name, double sld_real, double sld_imag, R3 magnetization) |
|
overridedefault |
|
private |
Constructs a wavelength-independent material with a given complex-valued scattering length density (SLD). SLD units are .
Definition at line 31 of file MaterialBySLDImpl.cpp.
Referenced by clone().
|
overridevirtual |
Returns pointer to a copy of material.
Implements MagneticMaterialImpl.
Definition at line 41 of file MaterialBySLDImpl.cpp.
References MaterialBySLDImpl().
|
overridevirtualinherited |
Constructs a material with inverted magnetization.
Implements BaseMaterialImpl.
Definition at line 48 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::clone(), MagneticMaterialImpl::isScalarMaterial(), MagneticMaterialImpl::magnetization(), BaseMaterialImpl::matName(), and MagneticMaterialImpl::setMagnetization().
|
overridevirtualinherited |
Implements BaseMaterialImpl.
Definition at line 61 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::isScalarMaterial().
|
overridevirtualinherited |
Indicates whether the interaction with the material is scalar. This means that different polarization states will be diffracted equally.
Implements BaseMaterialImpl.
Definition at line 56 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::m_magnetization.
Referenced by MagneticMaterialImpl::inverted(), and MagneticMaterialImpl::isMagneticMaterial().
|
overridevirtualinherited |
Returns the magnetization (in A/m)
Implements BaseMaterialImpl.
Definition at line 66 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::m_magnetization.
Referenced by MagneticMaterialImpl::inverted(), print(), RefractiveMaterialImpl::print(), and MagneticMaterialImpl::setMagnetization().
|
overridevirtual |
Returns underlying material data.
Implements BaseMaterialImpl.
Definition at line 56 of file MaterialBySLDImpl.cpp.
References m_sld_imag, and m_sld_real.
|
inlineinherited |
Returns name of the material.
Definition at line 85 of file BaseMaterialImpl.h.
References BaseMaterialImpl::m_name.
Referenced by MagneticMaterialImpl::inverted(), print(), and RefractiveMaterialImpl::print().
|
overridevirtualinherited |
Returns ( - sld) matrix with magnetization corrections.
Implements BaseMaterialImpl.
Definition at line 71 of file MagneticMaterialImpl.cpp.
References WavevectorInfo::getQ(), MagneticMaterialImpl::m_magnetization, MaterialUtils::MagnetizationCorrection(), BaseMaterialImpl::scalarSubtrSLD(), and WavevectorInfo::vacuumLambda().
|
overridevirtual |
Prints object data.
Implements BaseMaterialImpl.
Definition at line 66 of file MaterialBySLDImpl.cpp.
References m_sld_imag, m_sld_real, MagneticMaterialImpl::magnetization(), and BaseMaterialImpl::matName().
|
overridevirtual |
Returns refractive index.
Implements BaseMaterialImpl.
Definition at line 46 of file MaterialBySLDImpl.cpp.
References refractiveIndex2().
|
overridevirtual |
Returns squared refractive index.
Implements BaseMaterialImpl.
Definition at line 51 of file MaterialBySLDImpl.cpp.
References sld().
Referenced by refractiveIndex().
|
overridevirtualinherited |
Implements BaseMaterialImpl.
Definition at line 78 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::clone(), MagneticMaterialImpl::m_magnetization, MagneticMaterialImpl::setMagnetization(), and RotMatrix::transformed().
|
overridevirtual |
Returns ( - sld), sld (in
) being the scattering length density.
Implements BaseMaterialImpl.
Definition at line 61 of file MaterialBySLDImpl.cpp.
References sld().
|
inlineprivateinherited |
Definition at line 61 of file MagneticMaterialImpl.h.
References MagneticMaterialImpl::m_magnetization, and MagneticMaterialImpl::magnetization().
Referenced by MagneticMaterialImpl::inverted(), and MagneticMaterialImpl::rotatedMaterial().
|
private |
Returns the scattering length density.
Definition at line 75 of file MaterialBySLDImpl.cpp.
References m_sld_imag, and m_sld_real.
Referenced by refractiveIndex2(), and scalarSubtrSLD().
|
inlineoverridevirtual |
Returns type of material implementation.
Implements BaseMaterialImpl.
Definition at line 49 of file MaterialBySLDImpl.h.
References MaterialBySLD.
|
friend |
Constructs a wavelength-independent material with a given complex-valued scattering length density (SLD). SLD values for a wide variety of materials can be found on https://sld-calculator.appspot.com/ and https://www.ncnr.nist.gov/resources/activation/ By convention, SLD imaginary part is treated as negative by default, which corresponds to attenuation of the signal. With no parameters given, MaterialBySLD constructs default (vacuum) material with zero sld and zero magnetization.
name | material name |
sld_real | real part of the scattering length density, inverse square angstroms |
sld_imag | imaginary part of the scattering length density, inverse square angstroms |
magnetization | magnetization (in A/m) |
Definition at line 45 of file MaterialFactoryFuncs.cpp.
|
privateinherited |
magnetization
Definition at line 63 of file MagneticMaterialImpl.h.
Referenced by MagneticMaterialImpl::isScalarMaterial(), MagneticMaterialImpl::magnetization(), MagneticMaterialImpl::polarizedSubtrSLD(), MagneticMaterialImpl::rotatedMaterial(), and MagneticMaterialImpl::setMagnetization().
|
privateinherited |
Definition at line 88 of file BaseMaterialImpl.h.
Referenced by BaseMaterialImpl::matName().
|
private |
imaginary part of scattering length density (negative by default)
Definition at line 66 of file MaterialBySLDImpl.h.
Referenced by materialData(), print(), and sld().
|
private |
complex-valued scattering length density
Definition at line 65 of file MaterialBySLDImpl.h.
Referenced by materialData(), print(), and sld().