BornAgain
1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Public Types | |
using | coeffs_t = std::vector< std::unique_ptr< const ILayerRTCoefficients > > |
Public Member Functions | |
ISpecularStrategy::coeffs_t | Execute (const std::vector< Slice > &slices, const kvector_t &k) const |
ISpecularStrategy::coeffs_t | Execute (const std::vector< Slice > &slices, const std::vector< complex_t > &kz) const |
Static Private Member Functions | |
static std::vector< MatrixRTCoefficients_v2 > | computeTR (const std::vector< Slice > &slices, const std::vector< complex_t > &kzs) |
static void | calculateTR (MatrixRTCoefficients_v2 &coeff) |
static void | calculateZeroFieldTR (MatrixRTCoefficients_v2 &coeff) |
static void | setNoTransmission (MatrixRTCoefficients_v2 &coeff) |
static void | nullifyBottomReflection (MatrixRTCoefficients_v2 &coeff) |
static void | propagateBackwardsForwards (std::vector< MatrixRTCoefficients_v2 > &coeff, const std::vector< Slice > &slices) |
static std::pair< Eigen::Matrix2cd, complex_t > | findNormalizationCoefficients (const 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 32 of file SpecularMagneticStrategy.h.
|
inherited |
Definition at line 40 of file ISpecularStrategy.h.
|
virtual |
Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k.
Implements ISpecularStrategy.
Definition at line 32 of file SpecularMagneticStrategy.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 39 of file SpecularMagneticStrategy.cpp.
References computeTR().
|
staticprivate |
Definition at line 53 of file SpecularMagneticStrategy.cpp.
References anonymous_namespace{SpecularMagneticStrategy.cpp}::checkForUnderflow(), anonymous_namespace{SpecularMagneticStrategy.cpp}::eigenvalues(), BasicVector3D< T >::mag(), anonymous_namespace{SpecularMagneticStrategy.cpp}::magneticImpact(), nullifyBottomReflection(), and propagateBackwardsForwards().
Referenced by Execute().
|
staticprivate |
Computes frobenius matrices for multilayer solution.
Definition at line 88 of file SpecularMagneticStrategy.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 122 of file SpecularMagneticStrategy.cpp.
References MatrixRTCoefficients_v2::m_lambda, MatrixRTCoefficients_v2::R1, MatrixRTCoefficients_v2::R2, MatrixRTCoefficients_v2::T1, and MatrixRTCoefficients_v2::T2.
Referenced by calculateTR().
|
staticprivate |
Definition at line 144 of file SpecularMagneticStrategy.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.
|
staticprivate |
initializes reflectionless bottom boundary condition.
Definition at line 154 of file SpecularMagneticStrategy.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 181 of file SpecularMagneticStrategy.cpp.
References findNormalizationCoefficients(), and anonymous_namespace{SpecularMagneticStrategy.cpp}::GetImExponential().
Referenced by 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 246 of file SpecularMagneticStrategy.cpp.
References MatrixRTCoefficients_v2::T1min(), MatrixRTCoefficients_v2::T1plus(), MatrixRTCoefficients_v2::T2min(), and MatrixRTCoefficients_v2::T2plus().
Referenced by propagateBackwardsForwards().