20 FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(
const IFormFactor& form_factor)
24 setName(
"FormFactorDecoratorMaterial");
27 FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial() =
default;
32 result->setMaterial(m_material);
33 result->setAmbientMaterial(m_ambient_material);
49 return getRefractiveIndexFactor(wavevectors) * mp_form_factor->
evaluate(wavevectors);
56 Eigen::Matrix2cd time_reverse_conj = Eigen::Matrix2cd::Zero();
57 time_reverse_conj(0, 1) = 1.0;
58 time_reverse_conj(1, 0) = -1.0;
60 Eigen::Matrix2cd V_eff = time_reverse_conj
63 return mp_form_factor->
evaluate(wavevectors) * V_eff;
67 FormFactorDecoratorMaterial::getRefractiveIndexFactor(
const WavevectorInfo& wavevectors)
const
Factory functions used to create material instances.
Defines M_PI and some more mathematical constants.
virtual const Material * material() const
Returns nullptr, unless overwritten to return a specific material.
A wrapper for underlying material implementation.
Eigen::Matrix2cd polarizedSubtrSLD(const WavevectorInfo &wavevectors) const
Returns ( - sld) matrix with magnetization corrections.
complex_t scalarSubtrSLD(const WavevectorInfo &wavevectors) const
Returns ( - sld), sld (in ) being the scattering length density.
Holds all wavevector information relevant for calculating form factors.
Material HomogeneousMaterial(const std::string &name, complex_t refractive_index, kvector_t magnetization)
Constructs a material with name, refractive_index and magnetization (in A/m).