Wave Equation
The tensor coefficient matrix in electromagnetic wave equation
\[\mathit{k}\times(\mathit{k}\times \tilde{\mathit{E}}) + k_0^2 \mathbf{\kappa}\cdot \tilde{\mathit{E}}=\mathit{0}\]
\[\begin{split}\left(\begin{bmatrix}
-k_z^2 & & k_x k_z \\
& -k_x^2-k_z^2 & \\
k_x k_z & & -k_x^2
\end{bmatrix} + k_0^2
\begin{bmatrix}
\kappa_\perp & -j \kappa_\times & \\
j\kappa_\times & \kappa_\perp & \\
& & \kappa_\parallel
\end{bmatrix}\right)\cdot
\begin{bmatrix}
\tilde{E}_x\\
\tilde{E}_y\\
\tilde{E}_z
\end{bmatrix} =
\begin{bmatrix}
0\\
0\\
0
\end{bmatrix}\end{split}\]
\[\begin{split}\mathbf{T}\cdot
\begin{bmatrix}
\tilde{E}_x\\
\tilde{E}_y\\
\tilde{E}_z
\end{bmatrix} =
\begin{bmatrix}
0\\
0\\
0
\end{bmatrix}\end{split}\]
You can acquire the sympy.Array representation of the above (tensor) matrix coefficients by the WaveEq class’ coeff_matrix() method. For the relevant variable, you can get them by attribute e.g., wave_eq.wave.k[1] means the wave’s \(k_y\) component of \(\vec{k}\) vector.
$\displaystyle \left[\begin{matrix}- k_{y }^{2} - k_{z }^{2} + \frac{\kappa_{\perp} \omega_{}^{2}}{c^{2}} & - \frac{i \kappa_{\times} \omega_{}^{2}}{c^{2}} + k_{x } k_{y } & k_{x } k_{z }\\\frac{i \kappa_{\times} \omega_{}^{2}}{c^{2}} + k_{x } k_{y } & - k_{x }^{2} - k_{z }^{2} + \frac{\kappa_{\perp} \omega_{}^{2}}{c^{2}} & k_{y } k_{z }\\k_{x } k_{z } & k_{y } k_{z } & - k_{x }^{2} - k_{y }^{2} + \frac{\kappa_{\parallel} \omega_{}^{2}}{c^{2}}\end{matrix}\right]$
$\displaystyle \left[\begin{matrix}k_{y } \left(- E_{x } k_{y } + E_{y } k_{x }\right) - k_{z } \left(E_{x } k_{z } - E_{z } k_{x }\right) & - k_{x } \left(- E_{x } k_{y } + E_{y } k_{x }\right) + k_{z } \left(- E_{y } k_{z } + E_{z } k_{y }\right) & k_{x } \left(E_{x } k_{z } - E_{z } k_{x }\right) - k_{y } \left(- E_{y } k_{z } + E_{z } k_{y }\right)\end{matrix}\right] = \left[\begin{matrix}- \frac{\omega_{}^{2} \left(E_{x } \kappa_{\perp} - i E_{y } \kappa_{\times}\right)}{c^{2}} & - \frac{\omega_{}^{2} \left(i E_{x } \kappa_{\times} + E_{y } \kappa_{\perp}\right)}{c^{2}} & - \frac{E_{z } \kappa_{\parallel} \omega_{}^{2}}{c^{2}}\end{matrix}\right]$
The function sinupy.waves.EM.solve_N2(WaveEq) returns the solutions of \(N^2(\omega, \theta)\), which is usually tedious for hand-deduction.
$\displaystyle \left[ \frac{- \kappa_{\times}^{2} \sin^{2}{\left(\theta \right)} - \kappa_{\parallel} \kappa_{\perp} \sin^{2}{\left(\theta \right)} + 2 \kappa_{\parallel} \kappa_{\perp} + \kappa_{\perp}^{2} \sin^{2}{\left(\theta \right)} + \sqrt{\kappa_{\times}^{4} \sin^{4}{\left(\theta \right)} - 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} \sin^{2}{\left(\theta \right)} + 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} + 2 \kappa_{\times}^{2} \kappa_{\parallel} \kappa_{\perp} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\times}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} + \kappa_{\parallel}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\parallel} \kappa_{\perp}^{3} \sin^{4}{\left(\theta \right)} + \kappa_{\perp}^{4} \sin^{4}{\left(\theta \right)}}}{2 \left(- \kappa_{\parallel} \sin^{2}{\left(\theta \right)} + \kappa_{\parallel} + \kappa_{\perp} \sin^{2}{\left(\theta \right)}\right)}, \ \frac{\kappa_{\times}^{2} \sin^{2}{\left(\theta \right)} + \kappa_{\parallel} \kappa_{\perp} \sin^{2}{\left(\theta \right)} - 2 \kappa_{\parallel} \kappa_{\perp} - \kappa_{\perp}^{2} \sin^{2}{\left(\theta \right)} + \sqrt{\kappa_{\times}^{4} \sin^{4}{\left(\theta \right)} - 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} \sin^{2}{\left(\theta \right)} + 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} + 2 \kappa_{\times}^{2} \kappa_{\parallel} \kappa_{\perp} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\times}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} + \kappa_{\parallel}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\parallel} \kappa_{\perp}^{3} \sin^{4}{\left(\theta \right)} + \kappa_{\perp}^{4} \sin^{4}{\left(\theta \right)}}}{2 \left(\kappa_{\parallel} \sin^{2}{\left(\theta \right)} - \kappa_{\parallel} - \kappa_{\perp} \sin^{2}{\left(\theta \right)}\right)}\right]$
R,L / X,O Waves
For specific \(\theta\), you can observe the characteristic R,L / X,O waves. The sinupy.waves.EM.solve_N2 function supports solving \(N^2(\omega, \theta=const.)\) with given \(\theta\) and it would be faster than unknown \(\theta\).
$\displaystyle \left[ \kappa_{\times} + \kappa_{\perp}, \ - \kappa_{\times} + \kappa_{\perp}\right]$
$\displaystyle \left[ \kappa_{\parallel}, \ - \frac{\kappa_{\times}^{2}}{\kappa_{\perp}} + \kappa_{\perp}\right]$