Graph Framework
Loading...
Searching...
No Matches
dispersion::dispersion_interface< DISPERSION_FUNCTION > Class Template Reference

Class interface to build dispersion relation functions. More...

#include <dispersion.hpp>

Public Member Functions

 dispersion_interface (graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > w, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > kx, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > ky, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > kz, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > x, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > y, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > z, graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > t, equilibrium::shared< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > &eq)
 Construct a new dispersion_interface.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > solve (graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > x, graph::input_nodes< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > inputs, const size_t index=0, const typename DISPERSION_FUNCTION::base tolarance=1.0E-30, const size_t max_iterations=1000)
 Solve the dispersion relation for x.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_residule ()
 Get the disperison residule.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_d ()
 Get the disperison function.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dsdt ()
 Provide right hand side for s update.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dxdt ()
 Provide right hand side for x update.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dydt ()
 Provide right hand side for y update.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dzdt ()
 Provide right hand side for z update.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dkxdt ()
 Provide right hand side for z update.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dkydt ()
 Provide right hand side for z update.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > get_dkzdt ()
 Provide right hand side for z update.
 
void print_dispersion ()
 Print out the latex expression for the dispersion relation.
 
void print_dkxdt ()
 Print out the latex expression for the dkxdt.
 
void print_dkydt ()
 Print out the latex expression for the dkydt.
 
void print_dkzdt ()
 Print out the latex expression for the dkzdt.
 
void print_dxdt ()
 Print out the latex expression for the dxdt.
 
void print_dydt ()
 Print out the latex expression for the dydt.
 
void print_dzdt ()
 Print out the latex expression for the dzdt.
 

Protected Attributes

graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > D
 Disperison function.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dxdt
 Derivative with respect to kx.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dydt
 Derivative with respect to ky.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dzdt
 Derivative with respect to kz.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dkxdt
 Derivative with respect to kx.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dkydt
 Derivative with respect to ky.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dkzdt
 Derivative with respect to kz.
 
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dsdt
 Derivative with respect to omega.
 

Detailed Description

template<function DISPERSION_FUNCTION>
class dispersion::dispersion_interface< DISPERSION_FUNCTION >

Class interface to build dispersion relation functions.

Template Parameters
DISPERSION_FUNCTIONClass of dispersion function to use.

Constructor & Destructor Documentation

◆ dispersion_interface()

template<function DISPERSION_FUNCTION>
dispersion::dispersion_interface< DISPERSION_FUNCTION >::dispersion_interface ( graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  w,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  kx,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  ky,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  kz,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  x,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  y,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  z,
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  t,
equilibrium::shared< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > &  eq 
)
inline

Construct a new dispersion_interface.

Parameters
[in]wWave frequency.
[in]kxWave number in x.
[in]kyWave number in y.
[in]kzWave number in z.
[in]xPosition in x.
[in]yPosition in y.
[in]zPosition in z.
[in]tCurrent time.
[in]eqThe plasma equilibrium.

Member Function Documentation

◆ get_d()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_d ( )
inline

Get the disperison function.

Returns
D(x,y,z,kx,ky,kz,w)

◆ get_dkxdt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dkxdt ( )
inline

Provide right hand side for z update.

Returns
dkx/dt

◆ get_dkydt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dkydt ( )
inline

Provide right hand side for z update.

Returns
dky/dt

◆ get_dkzdt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dkzdt ( )
inline

Provide right hand side for z update.

Returns
dkz/dt

◆ get_dsdt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dsdt ( )
inline

Provide right hand side for s update.

Returns
dx/dt

◆ get_dxdt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dxdt ( )
inline

Provide right hand side for x update.

Returns
dx/dt

◆ get_dydt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dydt ( )
inline

Provide right hand side for y update.

Returns
dy/dt

◆ get_dzdt()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_dzdt ( )
inline

Provide right hand side for z update.

Returns
dz/dt

◆ get_residule()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::get_residule ( )
inline

Get the disperison residule.

Returns
D*D

◆ solve()

template<function DISPERSION_FUNCTION>
graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math > dispersion::dispersion_interface< DISPERSION_FUNCTION >::solve ( graph::shared_leaf< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  x,
graph::input_nodes< typename DISPERSION_FUNCTION::base, DISPERSION_FUNCTION::safe_math >  inputs,
const size_t  index = 0,
const typename DISPERSION_FUNCTION::base  tolarance = 1.0E-30,
const size_t  max_iterations = 1000 
)
inline

Solve the dispersion relation for x.

This uses newtons methods to solver for D(x) = 0.

Parameters
[in,out]xThe unknown to solver for.
[in]inputsInputs for jit compile.
[in]indexConcurrent index.
[in]tolaranceTolarance to solve the dispersion function to.
[in]max_iterationsMaximum number of iterations before giving up.
Returns
The residule graph.

The documentation for this class was generated from the following file: