BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Public Member Functions | |
virtual | ~MaterialBySLDImpl ()=default |
MaterialBySLDImpl * | clone () const override |
complex_t | refractiveIndex (double wavelength) const override |
complex_t | refractiveIndex2 (double wavelength) const override |
complex_t | materialData () const override |
MATERIAL_TYPES | typeID () const override |
complex_t | scalarSubtrSLD (const WavevectorInfo &wavevectors) const override |
void | print (std::ostream &ostr) const override |
MagneticMaterialImpl * | inverted () const override final |
bool | isScalarMaterial () const override final |
bool | isMagneticMaterial () const override final |
kvector_t | magnetization () const override final |
Eigen::Matrix2cd | polarizedSubtrSLD (const WavevectorInfo &wavevectors) const override final |
MagneticMaterialImpl * | rotatedMaterial (const Transform3D &transform) const override final |
const std::string & | getName () const |
Private Member Functions | |
MaterialBySLDImpl (const std::string &name, double sld_real, double sld_imag, kvector_t magnetization) | |
complex_t | sld () const |
void | setMagnetization (kvector_t magnetization) |
Private Attributes | |
double | m_sld_real |
double | m_sld_imag |
kvector_t | m_magnetization |
const std::string | m_name |
Friends | |
Material | MaterialBySLD (const std::string &name, double sld_real, double sld_imag, kvector_t magnetization) |
Material implementation based on wavelength-independent data (valid for a range of wavelengths)
Definition at line 24 of file MaterialBySLDImpl.h.
|
virtualdefault |
|
private |
Constructs a wavelength-independent material with a given complex-valued scattering length density (SLD).
SLD units are .
Definition at line 29 of file MaterialBySLDImpl.cpp.
Referenced by clone().
|
overridevirtual |
Returns pointer to a copy of material.
Implements MagneticMaterialImpl.
Definition at line 38 of file MaterialBySLDImpl.cpp.
References MaterialBySLDImpl().
|
overridevirtual |
Returns refractive index.
Implements BaseMaterialImpl.
Definition at line 43 of file MaterialBySLDImpl.cpp.
References refractiveIndex2(), and anonymous_namespace{SlicedCylindersBuilder.cpp}::wavelength().
|
overridevirtual |
Returns squared refractive index.
Implements BaseMaterialImpl.
Definition at line 48 of file MaterialBySLDImpl.cpp.
References anonymous_namespace{MaterialBySLDImpl.cpp}::getWlPrefactor(), sld(), and anonymous_namespace{SlicedCylindersBuilder.cpp}::wavelength().
Referenced by refractiveIndex().
|
overridevirtual |
Returns underlying material data.
Implements BaseMaterialImpl.
Definition at line 53 of file MaterialBySLDImpl.cpp.
References m_sld_imag, m_sld_real, and anonymous_namespace{MaterialBySLDImpl.cpp}::square_angstroms.
|
inlineoverridevirtual |
Returns type of material implementation.
Implements BaseMaterialImpl.
Definition at line 45 of file MaterialBySLDImpl.h.
References MaterialBySLD.
|
overridevirtual |
Returns ( - sld), sld (in ) being the scattering length density.
Implements BaseMaterialImpl.
Definition at line 58 of file MaterialBySLDImpl.cpp.
References WavevectorInfo::getWavelength(), anonymous_namespace{MaterialBySLDImpl.cpp}::getWlPrefactor(), sld(), and anonymous_namespace{SlicedCylindersBuilder.cpp}::wavelength().
|
overridevirtual |
Prints object data.
Implements BaseMaterialImpl.
Definition at line 64 of file MaterialBySLDImpl.cpp.
References BaseMaterialImpl::getName(), m_sld_imag, m_sld_real, and MagneticMaterialImpl::magnetization().
|
private |
Returns the scattering length density.
Definition at line 71 of file MaterialBySLDImpl.cpp.
References m_sld_imag, and m_sld_real.
Referenced by refractiveIndex2(), and scalarSubtrSLD().
|
finaloverridevirtualinherited |
Constructs a material with inverted magnetization.
Implements BaseMaterialImpl.
Definition at line 44 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::clone(), BaseMaterialImpl::getName(), MagneticMaterialImpl::isScalarMaterial(), MagneticMaterialImpl::magnetization(), and MagneticMaterialImpl::setMagnetization().
|
finaloverridevirtualinherited |
Indicates whether the interaction with the material is scalar.
This means that different polarization states will be diffracted equally
Implements BaseMaterialImpl.
Definition at line 52 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::m_magnetization.
Referenced by MagneticMaterialImpl::inverted(), and MagneticMaterialImpl::isMagneticMaterial().
|
finaloverridevirtualinherited |
Implements BaseMaterialImpl.
Definition at line 57 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::isScalarMaterial().
|
finaloverridevirtualinherited |
Returns the magnetization (in A/m)
Implements BaseMaterialImpl.
Definition at line 62 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::m_magnetization.
Referenced by MagneticMaterialImpl::inverted(), print(), RefractiveMaterialImpl::print(), and MagneticMaterialImpl::setMagnetization().
|
finaloverridevirtualinherited |
Returns ( - sld) matrix with magnetization corrections.
Implements BaseMaterialImpl.
Definition at line 67 of file MagneticMaterialImpl.cpp.
References WavevectorInfo::getQ(), MagneticMaterialImpl::m_magnetization, magnetization_prefactor, MaterialUtils::MagnetizationCorrection(), anonymous_namespace{MagneticMaterialImpl.cpp}::OrthogonalToBaseVector(), and BaseMaterialImpl::scalarSubtrSLD().
|
finaloverridevirtualinherited |
Implements BaseMaterialImpl.
Definition at line 74 of file MagneticMaterialImpl.cpp.
References MagneticMaterialImpl::clone(), MagneticMaterialImpl::m_magnetization, MagneticMaterialImpl::setMagnetization(), and Transform3D::transformed().
|
inlineprivateinherited |
Definition at line 57 of file MagneticMaterialImpl.h.
References MagneticMaterialImpl::m_magnetization, and MagneticMaterialImpl::magnetization().
Referenced by MagneticMaterialImpl::inverted(), and MagneticMaterialImpl::rotatedMaterial().
|
inlineinherited |
Returns name of the material.
Definition at line 78 of file BaseMaterialImpl.h.
References BaseMaterialImpl::m_name.
Referenced by MagneticMaterialImpl::inverted(), print(), and RefractiveMaterialImpl::print().
|
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 47 of file MaterialFactoryFuncs.cpp.
|
private |
complex-valued scattering length density
Definition at line 62 of file MaterialBySLDImpl.h.
Referenced by materialData(), print(), and sld().
|
private |
imaginary part of scattering length density (negative by default)
Definition at line 63 of file MaterialBySLDImpl.h.
Referenced by materialData(), print(), and sld().
|
privateinherited |
magnetization
Definition at line 59 of file MagneticMaterialImpl.h.
Referenced by MagneticMaterialImpl::isScalarMaterial(), MagneticMaterialImpl::magnetization(), MagneticMaterialImpl::polarizedSubtrSLD(), MagneticMaterialImpl::rotatedMaterial(), and MagneticMaterialImpl::setMagnetization().
|
privateinherited |
Definition at line 81 of file BaseMaterialImpl.h.
Referenced by BaseMaterialImpl::getName().