19 Eigen::Vector2cd waveVector(
const Eigen::Matrix4cd& frob_matrix,
20 const Eigen::Vector4cd& boundary_cond);
23 MatrixRTCoefficients_v2::MatrixRTCoefficients_v2(
double kz_sign, Eigen::Vector2cd eigenvalues,
25 : m_kz_sign(kz_sign), m_lambda(std::move(eigenvalues)), m_b(std::move(b))
31 MatrixRTCoefficients_v2::~MatrixRTCoefficients_v2() =
default;
40 const Eigen::Vector2cd result = waveVector(T1, m_w_plus);
41 if (m_lambda(0) == 0.0 && result == Eigen::Vector2cd::Zero())
46 Eigen::Vector2cd MatrixRTCoefficients_v2::R1plus()
const
48 if (m_lambda(0) == 0.0 && waveVector(T1, m_w_plus) == Eigen::Vector2cd::Zero())
50 return waveVector(R1, m_w_plus);
53 Eigen::Vector2cd MatrixRTCoefficients_v2::T2plus()
const
55 const Eigen::Vector2cd result = waveVector(T2, m_w_plus);
56 if (m_lambda(1) == 0.0 && result == Eigen::Vector2cd::Zero())
61 Eigen::Vector2cd MatrixRTCoefficients_v2::R2plus()
const
63 if (m_lambda(1) == 0.0 && waveVector(T2, m_w_plus) == Eigen::Vector2cd::Zero())
65 return waveVector(R2, m_w_plus);
68 Eigen::Vector2cd MatrixRTCoefficients_v2::T1min()
const
70 const Eigen::Vector2cd result = waveVector(T1, m_w_min);
71 if (m_lambda(0) == 0.0 && result == Eigen::Vector2cd::Zero())
76 Eigen::Vector2cd MatrixRTCoefficients_v2::R1min()
const
78 if (m_lambda(0) == 0.0 && waveVector(T1, m_w_min) == Eigen::Vector2cd::Zero())
80 return waveVector(R1, m_w_min);
83 Eigen::Vector2cd MatrixRTCoefficients_v2::T2min()
const
85 const Eigen::Vector2cd result = waveVector(T2, m_w_min);
86 if (m_lambda(1) == 0.0 && result == Eigen::Vector2cd::Zero())
91 Eigen::Vector2cd MatrixRTCoefficients_v2::R2min()
const
93 if (m_lambda(1) == 0.0 && waveVector(T2, m_w_min) == Eigen::Vector2cd::Zero())
95 return waveVector(R2, m_w_min);
100 return -I * m_kz_sign * m_lambda;
103 Eigen::Matrix2cd MatrixRTCoefficients_v2::getReflectionMatrix()
const
106 R.col(0) = R1plus() + R2plus();
107 R.col(1) = R1min() + R2min();
114 Eigen::Vector2cd waveVector(
const Eigen::Matrix4cd& frob_matrix,
115 const Eigen::Vector4cd& boundary_cond)
117 Eigen::Matrix<complex_t, 4, 1> m = frob_matrix * boundary_cond;
Defines class MatrixRTCoefficients_v2.
Specular reflection and transmission coefficients in a layer in case of magnetic interactions between...
Eigen::Vector2cd getKz() const override
Returns z-part of the two wavevector eigenmodes.
Eigen::Vector2cd T1plus() const override
The following functions return the transmitted and reflected amplitudes for different incoming beam p...