15 #ifndef BORNAGAIN_SAMPLE_MATERIAL_MATERIAL_H
16 #define BORNAGAIN_SAMPLE_MATERIAL_MATERIAL_H
18 #include <heinz/Complex.h>
19 #include <heinz/Vectors3D.h>
39 Material(std::unique_ptr<BaseMaterialImpl>&& material_impl);
Defines basic material implementation interface.
bool operator!=(const Material &left, const Material &right)
Comparison operator for material wrapper (inequality check)
bool operator==(const Material &left, const Material &right)
Comparison operator for material wrapper (equality check)
A wrapper for underlying material implementation.
Material inverted() const
Constructs a material with inverted magnetization.
R3 magnetization() const
Get the magnetization (in A/m)
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. This means that different polarization...
bool isMagneticMaterial() const
std::string materialName() const
Returns the name of material.
complex_t refractiveIndex2(double wavelength) const
Returns squared refractive index.
Material(Material &&material)=default
Material & operator=(Material &&other)=default
Material(std::unique_ptr< BaseMaterialImpl > &&material_impl)
Creates material with particular material implementation.
std::unique_ptr< BaseMaterialImpl > m_material_impl
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.
Material rotatedMaterial(const RotMatrix &transform) const
SpinMatrix polarizedSubtrSLD(const WavevectorInfo &wavevectors) const
Returns ( - sld) matrix with magnetization corrections.
complex_t materialData() const
Returns delta + i beta.
friend std::ostream & operator<<(std::ostream &ostr, const Material &mat)
Material & operator=(const Material &other)
Rotation matrix in three dimensions. Represents group SO(3). Internal parameterization based on quate...
Holds all wavevector information relevant for calculating form factors.