BornAgain
1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Implements the magnetic Fresnel computation without roughness. More...
Public Types | |
using | coefficient_pointer_type = std::unique_ptr< const coefficient_type > |
using | coefficient_type = MatrixRTCoefficients_v2 |
using | coeffs_t = std::vector< coefficient_pointer_type > |
Public Member Functions | |
virtual std::variant< complex_t, Eigen::Matrix2cd > | computeTopLayerR (const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const override |
ISpecularStrategy::coeffs_t | Execute (const std::vector< Slice > &slices, const kvector_t &k) const |
Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k. More... | |
ISpecularStrategy::coeffs_t | Execute (const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const |
Computes refraction angle reflection/transmission coefficients for given sliced multilayer and a set of kz projections corresponding to each slice. More... | |
Static Private Member Functions | |
static void | calculateTR (MatrixRTCoefficients_v2 &coeff) |
Computes frobenius matrices for multilayer solution. More... | |
static void | calculateZeroFieldTR (MatrixRTCoefficients_v2 &coeff) |
static std::vector< MatrixRTCoefficients_v2 > | computeTR (const std::vector< Slice > &slices, const std::vector< complex_t > &kzs) |
static std::pair< Eigen::Matrix2cd, complex_t > | findNormalizationCoefficients (const MatrixRTCoefficients_v2 &coeff) |
finds linear coefficients for normalizing transmitted wave to unity. More... | |
static void | nullifyBottomReflection (MatrixRTCoefficients_v2 &coeff) |
initializes reflectionless bottom boundary condition. More... | |
static void | propagateBackwardsForwards (std::vector< MatrixRTCoefficients_v2 > &coeff, const std::vector< Slice > &slices) |
Propagates boundary conditions from the bottom to the top of the layer stack. More... | |
static void | setNoTransmission (MatrixRTCoefficients_v2 &coeff) |
Implements the magnetic Fresnel computation without roughness.
Implements the matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. For a detailed description see internal document "Polarized Specular Reflectometry"
Definition at line 37 of file SpecularMagneticStrategy_v2.h.
using SpecularMagneticStrategy_v2::coefficient_pointer_type = std::unique_ptr<const coefficient_type> |
Definition at line 42 of file SpecularMagneticStrategy_v2.h.
Definition at line 41 of file SpecularMagneticStrategy_v2.h.
using SpecularMagneticStrategy_v2::coeffs_t = std::vector<coefficient_pointer_type> |
Definition at line 43 of file SpecularMagneticStrategy_v2.h.
|
staticprivate |
Computes frobenius matrices for multilayer solution.
Definition at line 94 of file SpecularMagneticStrategy_v2.cpp.
References calculateZeroFieldTR(), I, MatrixRTCoefficients_v2::m_b, MatrixRTCoefficients_v2::m_lambda, BasicVector3D< T >::mag(), MatrixRTCoefficients_v2::R1, MatrixRTCoefficients_v2::R2, MatrixRTCoefficients_v2::T1, MatrixRTCoefficients_v2::T2, BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().
|
staticprivate |
Definition at line 128 of file SpecularMagneticStrategy_v2.cpp.
References MatrixRTCoefficients_v2::m_lambda, MatrixRTCoefficients_v2::R1, MatrixRTCoefficients_v2::R2, MatrixRTCoefficients_v2::T1, and MatrixRTCoefficients_v2::T2.
Referenced by calculateTR().
|
overridevirtual |
Implements ISpecularStrategy.
Definition at line 52 of file SpecularMagneticStrategy_v2.cpp.
|
staticprivate |
Definition at line 59 of file SpecularMagneticStrategy_v2.cpp.
References BasicVector3D< T >::mag(), nullifyBottomReflection(), and propagateBackwardsForwards().
Referenced by Execute().
|
virtual |
Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k.
Implements ISpecularStrategy.
Definition at line 31 of file SpecularMagneticStrategy_v2.cpp.
References KzComputation::computeReducedKz().
|
virtual |
Computes refraction angle reflection/transmission coefficients for given sliced multilayer and a set of kz projections corresponding to each slice.
Implements ISpecularStrategy.
Definition at line 38 of file SpecularMagneticStrategy_v2.cpp.
References computeTR().
|
staticprivate |
finds linear coefficients for normalizing transmitted wave to unity.
The left column of the returned matrix corresponds to the coefficients for pure spin-up wave, while the right column - to the coefficients for the spin-down one.
Definition at line 252 of file SpecularMagneticStrategy_v2.cpp.
References MatrixRTCoefficients_v2::T1min(), MatrixRTCoefficients_v2::T1plus(), MatrixRTCoefficients_v2::T2min(), and MatrixRTCoefficients_v2::T2plus().
Referenced by propagateBackwardsForwards().
|
staticprivate |
initializes reflectionless bottom boundary condition.
Definition at line 160 of file SpecularMagneticStrategy_v2.cpp.
References I, MatrixRTCoefficients_v2::m_b, MatrixRTCoefficients_v2::m_lambda, MatrixRTCoefficients_v2::m_w_min, MatrixRTCoefficients_v2::m_w_plus, BasicVector3D< T >::mag(), BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().
Referenced by computeTR().
|
staticprivate |
Propagates boundary conditions from the bottom to the top of the layer stack.
Used to compute boundary conditions from the bottom one (with nullified reflection) simultaneously propagates amplitudes forward again Due to the use of temporary objects this is combined into one function now
Definition at line 187 of file SpecularMagneticStrategy_v2.cpp.
References findNormalizationCoefficients().
Referenced by computeTR().
|
staticprivate |
Definition at line 150 of file SpecularMagneticStrategy_v2.cpp.
References MatrixRTCoefficients_v2::m_w_min, MatrixRTCoefficients_v2::m_w_plus, MatrixRTCoefficients_v2::R1, MatrixRTCoefficients_v2::R2, MatrixRTCoefficients_v2::T1, and MatrixRTCoefficients_v2::T2.