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 |
Private Member Functions | |
std::pair< Eigen::Matrix2cd, Eigen::Matrix2cd > | computeRoughnessMatrices (const MatrixRTCoefficients_v3 &coeff_i, const MatrixRTCoefficients_v3 &coeff_i1, double sigma) const |
virtual std::pair< Eigen::Matrix2cd, Eigen::Matrix2cd > | computeBackwardsSubmatrices (const MatrixRTCoefficients_v3 &coeff_i, const MatrixRTCoefficients_v3 &coeff_i1, double sigma) const |
std::vector< MatrixRTCoefficients_v3 > | computeTR (const std::vector< Slice > &slices, const std::vector< complex_t > &kzs) const |
void | calculateUpwards (std::vector< MatrixRTCoefficients_v3 > &coeff, const std::vector< Slice > &slices) const |
Implements the magnetic Fresnel computation with Nevot-Croce roughness.
Implements the transfer matrix formalism for the calculation of wave amplitudes of the coherent wave solution in a multilayer with magnetization. For a description, see internal document "Polarized Implementation of the Transfer Matrix Method"
Definition at line 30 of file SpecularMagneticNewNCStrategy.h.
|
inherited |
Definition at line 40 of file ISpecularStrategy.h.
|
private |
Definition at line 23 of file SpecularMagneticNewNCStrategy.cpp.
References anonymous_namespace{SpecularMagneticNewNCStrategy.cpp}::checkForUnderflow(), I, MatrixRTCoefficients_v3::m_b, MatrixRTCoefficients_v3::m_lambda, and BasicVector3D< T >::x().
Referenced by computeBackwardsSubmatrices().
|
privatevirtual |
Implements SpecularMagneticNewStrategy.
Definition at line 70 of file SpecularMagneticNewNCStrategy.cpp.
References MatrixRTCoefficients_v3::computeInverseP(), MatrixRTCoefficients_v3::computeP(), and computeRoughnessMatrices().
|
virtualinherited |
Computes refraction angle reflection/transmission coefficients for given sliced multilayer and wavevector k.
Implements ISpecularStrategy.
Definition at line 35 of file SpecularMagneticNewStrategy.cpp.
References KzComputation::computeReducedKz(), and SpecularMagneticNewStrategy::Execute().
Referenced by SpecularMagneticNewStrategy::Execute().
|
virtualinherited |
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 42 of file SpecularMagneticNewStrategy.cpp.
References SpecularMagneticNewStrategy::computeTR().
|
privateinherited |
Definition at line 56 of file SpecularMagneticNewStrategy.cpp.
References SpecularMagneticNewStrategy::calculateUpwards(), anonymous_namespace{SpecularMagneticNewStrategy.cpp}::checkForUnderflow(), anonymous_namespace{SpecularMagneticNewStrategy.cpp}::eigenvalues(), anonymous_namespace{SpecularMagneticNewStrategy.cpp}::eps, and anonymous_namespace{SpecularMagneticNewStrategy.cpp}::magneticSLD().
Referenced by SpecularMagneticNewStrategy::Execute().
|
privateinherited |
Definition at line 101 of file SpecularMagneticNewStrategy.cpp.
References SpecularMagneticNewStrategy::computeBackwardsSubmatrices(), anonymous_namespace{SpecularMagneticNewStrategy.cpp}::GetBottomRoughness(), and MathFunctions::Si().
Referenced by SpecularMagneticNewStrategy::computeTR().