Graph Framework
Loading...
Searching...
No Matches
Absoption Models

A discription of the models for power absorption.

Introduction

This page documents the types of dispersion functions available. Tracing the ray is only the first step in the process. Along that, ray power is deposited into the plasma. For tracing the ray we assumed the wave number was always real. However, now we need to figure out what the imaginary component is.


Hot Plasma Disperison Function

To do this we now assume a hot plasma dispersion function.

\begin{equation}D\left(\vec{x},\vec{k},\omega\right)=i\sigma\Gamma_{0}+\Gamma_{1}+\vec{n}_{\perp}\cdot\vec{n}_{\perp}\frac{P\omega}{\omega_{ce}}\left(1+\zeta Z\left(\zeta\right)\right)\left(\Gamma_{2} + \Gamma_{5}F\right)\equiv 0 \end{equation}

Where

\begin{equation}\Gamma_{0}=\vec{n}_{\perp}\cdot\vec{n}_{\perp}\left(\vec{n}\cdot\vec{n}-2\left(1-2q\right)\right)+\left(1-P\right)\left(2\left(1-2q\right)-\left(\vec{n}\cdot\vec{n}+n_{||}^{2}\right)\right)\end{equation}

\begin{equation}\Gamma_{1}=\vec{n}_{\perp}\cdot\vec{n}_{\perp}\left(\left(1-q\right)\vec{n}\cdot\vec{n}-(1-2q)\right)+\left(1-P\right)\left(\vec{n}\cdot\vec{n}n^{2}_{||} - \left(1-q\right)\left(\vec{n}\cdot\vec{n}+n^{2}_{||}\right)+\left(1-2q\right)\right)\end{equation}

\begin{equation}\Gamma_{2}=\left(\vec{n}\cdot\vec{n}-\left(1-2q\right)\right)+\frac{P\omega}{4\omega_{ce}n^{2}_{||}}\left(\left(\vec{n}\cdot\vec{n} + n^{2}_{||}\right)-2\left(1-2q\right)\right)\end{equation}

\begin{equation}\Gamma_{5}=\vec{n}\cdot\vec{n}n^{2}_{||}-\left(1-q\right)\left(\vec{n}\cdot\vec{n}+n^{2}_{||}\right)+\left(1-2q\right)\end{equation}

\begin{equation}i\sigma=\frac{PZ\left(\zeta\right)}{2n_{||}v_{e}}\end{equation}

\begin{equation}\zeta=\frac{1-\frac{\omega_{ce}}{\omega}}{n_{||}\frac{v_{e}}{c}}\end{equation}

\begin{equation}F=\frac{v_{e}\left(1+\zeta Z\left(\zeta\right)\right)\omega}{2n_{||}\omega_{ce}}\end{equation}

\begin{equation}P=\frac{\omega^{2}_{pe}}{\omega^{2}}\end{equation}

\begin{equation}q=\frac{P}{2\left(1+\frac{\omega_{ce}}{\omega}\right)}\end{equation}

\begin{equation}v_{e}=\sqrt{2n_{e}\frac{t_{e}}{m_{e}}}\end{equation}

\begin{equation}Z\left(\zeta\right)=-\sqrt{\pi}e^{-\zeta^{s}}\left(efri\left(\zeta\right)-i\right)\end{equation}

Where \(efri\left(\zeta\right)\) is the imaginary error function.

Expansion Terms

The hot plasma dispersion function can be split to a hot plasma term and a cold plasma term.

\begin{equation}D_{c}\left(\vec{x},\vec{k},\omega\right)=-\frac{P}{2}\left(1+\frac{\omega_{ce}}{\omega}\Gamma_{0}+\left(1-\frac{\omega^{2}_{ce}}{\omega^{2}}\Gamma_{1}\right)\right)\end{equation}

Then the hot plasma term is

\begin{equation}D_{h}\left(\vec{x},\vec{k},\omega\right)=-\left(1+\frac{\omega_{ce}}{\omega}\right)n_{||}\frac{v_{e}}{c}\left(\Gamma_{1}+\Gamma_{2}+\frac{\vec{n}_{\perp}\cdot\vec{n}_{\perp}}{2n^{2}_{||}}\frac{\omega^{2}}{\omega^{2}_{ce}}\frac{v_{e}}{c}\zeta\Gamma_{5}\right)\left(\frac{1}{Z\left(\zeta\right)}+\zeta\right)\end{equation}


Root Find

One way to solve for the imaginary component is to locate the root of the hot plasma dispersion function using the cold plasma solution as an intial quess. We start by redefining \(\vec{k}=k_{amp}\hat{k}\) now we can solve for the complex value of \(k_{amp}\) using a Newton method.


Weak Damping

Using the cold and hot expansion

\begin{equation}k_{amp}=\sqrt{\vec{k}\cdot\vec{k}}-\frac{D_{h}}{\hat{k}\cdot\frac{\partial D_{c}}{\partial \vec{k}}}\end{equation}


Developing new absorption models

This section is intended for code developers and outlines how to create new absorption models. New absorption models can be created from a subclass of absorption::method or any other existing absorption class and overloading class methods.

template<jit::complex_scalar T, bool SAFE_MATH=true>
class new_absorption final : public method<T, SAFE_MATH> {
new_absorption(graph::shared_leaf<T, SAFE_MATH> kamp,
const std::string &filename="",
const size_t index=0) {
...
}
void compile() {
...
}
void run(const size_t time_index) {
...
}
};
void compile(graph::input_nodes< T > inputs, graph::output_nodes< T > outputs, graph::map_nodes< T > setters, const T expected, const T tolarance)
Compile kernal and check the result of the output.
Definition jit_test.cpp:49
std::shared_ptr< generic< T, SAFE_MATH > > shared
Convenience type alias for shared equilibria.
Definition equilibrium.hpp:472
std::shared_ptr< leaf_node< T, SAFE_MATH > > shared_leaf
Convenience type alias for shared leaf nodes.
Definition node.hpp:673