22 : m_material_impl(std::move(material_impl))
30 "Material: Error! Attempt to initialize material with nullptr.");
31 m_material_impl.reset(material.m_material_impl->clone());
38 "Material: Error! Attempt to assign nullptr to material.");
39 m_material_impl.reset(other.m_material_impl->clone());
45 std::unique_ptr<BaseMaterialImpl> material_impl(m_material_impl->inverted());
46 return Material(std::move(material_impl));
51 return m_material_impl->refractiveIndex(wavelength);
56 return m_material_impl->refractiveIndex2(wavelength);
61 return m_material_impl->isScalarMaterial();
64 bool Material::isMagneticMaterial()
const
66 return m_material_impl->isMagneticMaterial();
71 return m_material_impl->getName();
76 return m_material_impl->typeID();
81 return m_material_impl->magnetization();
86 return m_material_impl->materialData();
96 return m_material_impl->scalarSubtrSLD(wavevectors);
101 return m_material_impl->polarizedSubtrSLD(wavevectors);
106 std::unique_ptr<BaseMaterialImpl> material_impl(m_material_impl->rotatedMaterial(transform));
107 return Material(std::move(material_impl));
112 m.m_material_impl->print(ostr);
131 return !(left == right);
Defines many exception classes in namespace Exceptionss.
Defines and implements class Material.
bool operator!=(const BasicVector3D< T > &a, const BasicVector3D< T > &b)
Comparison of two vectors for inequality.
bool operator==(const BasicVector3D< T > &a, const BasicVector3D< T > &b)
Comparison of two vectors for equality.
std::ostream & operator<<(std::ostream &os, const BasicVector3D< T > &a)
Output to stream.
A wrapper for underlying material implementation.
kvector_t magnetization() const
Get the magnetization (in A/m)
Material inverted() const
Constructs a material with inverted magnetization.
Eigen::Matrix2cd polarizedSubtrSLD(const WavevectorInfo &wavevectors) const
Returns ( - sld) matrix with magnetization corrections.
complex_t refractiveIndex(double wavelength) const
Returns refractive index.
complex_t scalarSubtrSLD(const WavevectorInfo &wavevectors) const
Returns ( - sld), sld (in ) being the scattering length density.
bool isScalarMaterial() const
Indicates whether the interaction with the material is scalar.
complex_t refractiveIndex2(double wavelength) const
Returns squared refractive index.
std::string getName() const
Returns the name of material.
MATERIAL_TYPES typeID() const
Returns the type of underlying material implementation.
bool isDefaultMaterial() const
Returns true if material has refractive index of (1.0, 0.0) and zero magnetization.
bool isEmpty() const
Returns true if material underlying data is nullptr.
complex_t materialData() const
Returns underlying material data.
Material(std::unique_ptr< BaseMaterialImpl > material_impl)
Creates material with particular material implementation.
Holds all wavevector information relevant for calculating form factors.