VERB_code_2.3
DiffusionCoefficient.h File Reference
#include <string>
#include <vector>
#include "../Matrix/Matrix.h"
#include "../Grid/Grid.h"

Go to the source code of this file.

Classes

class  DiffusionCoefficient
 Holds diffusion coefficient matrix and routines to load and calculate it. More...
 
class  DiffusionCoefficientsGroup
 Holds list of instances of DiffusionCoefficient class of same type (like Daa, Dpp, etc), but produced by different waves (Daa_chorus, Daa_EMIC, etc). More...
 

Functions

double Dxx_ba (double L, double epc, double alpha, double int_Dxx_loc(double lambda, DxxParameters_structure DxxParameters), DxxParameters_structure DxxParameters)
 
double Dxx_local (double lambda, double Dxx_root(double Omega_e, double x, double mu, double su, double y, double beta, double a, double b, double alpha_star, double s, double epsilon, double d_x, double x_m, double R, DxxParameters_structure DxxParameters), DxxParameters_structure DxxParameters)
 
double Daa_root (double Omega_e, double x, double mu, double su, double y, double beta, double a, double b, double alpha_star, double s, double epsilon, double d_x, double x_m, double R, DxxParameters_structure DxxParameters)
 
double Dpa_root (double Omega_e, double x, double mu, double su, double y, double beta, double a, double b, double alpha_star, double s, double epsilon, double d_x, double x_m, double R, DxxParameters_structure DxxParameters)
 
double Dpp_root (double Omega_e, double x, double mu, double su, double y, double beta, double a, double b, double alpha_star, double s, double epsilon, double d_x, double x_m, double R, DxxParameters_structure DxxParameters)
 
double int_Daa_loc (double lambda, DxxParameters_structure DxxParameters)
 
double int_Dpp_loc (double lambda, DxxParameters_structure DxxParameters)
 
double int_Dpa_loc (double lambda, DxxParameters_structure DxxParameters)
 
double f1 (double lambda)
 
double Alpha_ne (double pangle, double lambda, double L)
 
double func_tmp (double x, double Alpha)
 
double F_cap (double x, double y, double b, double s, double epsilon, DxxParameters_structure DxxParameters)
 
double F_cap2 (double x, double y, double a, double beta, double mu, double s, double epsilon, double Alpha_star, DxxParameters_structure DxxParameters)
 
std::vector< double > rrouts (double x_1, double x_2, double yida1, double yida2, double yida3, double epsilon, double beta, double mu, double alpha_star, double a, DxxParameters_structure DxxParameters)
 routs finding routine More...
 
double Df (double L, double Kp)
 
double Df_Ozeke (double L, double Kp)
 
double Df_Ozeke_E (double L, double Kp)
 
void CreateAllDiffusionCoefficients (DiffusionCoefficient &DLL, DiffusionCoefficientsGroup &Daa, DiffusionCoefficientsGroup &Dpcpc, DiffusionCoefficientsGroup &Dpca, DiffusionCoefficientsGroup &DaaLpp, DiffusionCoefficientsGroup &DpcpcLpp, DiffusionCoefficientsGroup &DpcaLpp, Parameters_structure &parameters, Grid &radialDiffusionGrid, Grid &localDiffusionsGrid)
 
void Output1DHeaders (ofstream &output1D, DiffusionCoefficientsGroup &Daa, DiffusionCoefficientsGroup &Dpcpc, DiffusionCoefficientsGroup &Dpca, DiffusionCoefficientsGroup &DaaLpp, DiffusionCoefficientsGroup &DpcpcLpp, DiffusionCoefficientsGroup &DpcaLpp)
 Function used in main() to print header in output file. Header needs to understand the output file. More...
 
void Output1DValues (ofstream &output1D, DiffusionCoefficientsGroup &Daa, DiffusionCoefficientsGroup &Dpcpc, DiffusionCoefficientsGroup &Dpca, DiffusionCoefficientsGroup &DaaLpp, DiffusionCoefficientsGroup &DpcpcLpp, DiffusionCoefficientsGroup &DpcaLpp, double &time, Parameters_structure &parameters, int iteration)
 Function used in main() to print values of diffusion coefficients in output file. More...
 

Detailed Description

Diffusion coefficients calculation, loading, activating, scaling etc. Header file.

Author
Developed by Yuri Shprits

Definition in file DiffusionCoefficient.h.

Function Documentation

double Alpha_ne ( double  pangle,
double  lambda,
double  L 
)

Return inverse of calculated parameters(?)

Parameters
pangle- pitch angle
lambda- lambda
L- L value
Todo:
L is not used in this function. delete it or use it.

\( \sin^{-1}( \sqrt{ f1(\lambda)} * \sin(pangle) ) \) where f1 is f1()

Definition at line 538 of file DiffusionCoefficient.cpp.

void CreateAllDiffusionCoefficients ( DiffusionCoefficient DLL,
DiffusionCoefficientsGroup Daa,
DiffusionCoefficientsGroup Dpcpc,
DiffusionCoefficientsGroup Dpca,
DiffusionCoefficientsGroup DaaLpp,
DiffusionCoefficientsGroup DpcpcLpp,
DiffusionCoefficientsGroup DpcaLpp,
Parameters_structure parameters,
Grid radialDiffusionGrid,
Grid localDiffusionsGrid 
)

Create all diffusion coefficients based on parameters

Parameters
&DLL- Diffusion coefficients DLL
&Daa- see Main.cpp for diffusion coefficient definitions
&Dpcpc
&Dpca
&DaaLpp
&DpcpcLpp
&DpcaLpp
&parameters- parameters structure
&radialDiffusionGrid- grid to copy from
&localDiffusionsGrid- grid to copy coefficients into

Definition at line 1005 of file DiffusionCoefficient.cpp.

double Daa_root ( double  Omega_e,
double  x,
double  mu,
double  su,
double  y,
double  beta,
double  a,
double  b,
double  Alpha_star,
double  s,
double  epsilon,
double  d_x,
double  x_m,
double  R,
DxxParameters_structure  DxxParameters 
)

Obtain roots for Daa coefficient

Returns
\( \frac{\pi}{2} * \frac{1}{\nu} * \Omega_e * \frac{1}{(EMeV + 1)^2} * \frac{R * (1 - \frac{x * \mu}{(y * \beta)})^2 * \left|fcap\right|} { (d_x * \left| \beta * \mu - fcap \right|} * e^{-(\frac{x - x_m}{d_x})^2} \)

where fcap = F_cap2()

Definition at line 830 of file DiffusionCoefficient.cpp.

double Df ( double  L,
double  Kp 
)

Radial Diffusion coefficient computed following [Brautigam and Albet , 2000]

Returns
\( 10^{0.506*Kp - 9.325} * L^{10} \)

Definition at line 952 of file DiffusionCoefficient.cpp.

double Df_Ozeke ( double  L,
double  Kp 
)

Radial Diffusion coefficient computed Ozeke, Ozeke et al, 2013 Analytic Expressions for ULL Wave Radiation Belt Radial Diffusion Coefficient // (before publishing) DLL_B \( days^{-1} \)

Returns
\( 6.62*10^{-13} * L^8 * 10^{L^2 * -0.0327 + L * 0.625 - Kp^2 * 0.0108 + Kp * 0.499} \)

Definition at line 963 of file DiffusionCoefficient.cpp.

double Df_Ozeke_E ( double  L,
double  Kp 
)

DLL_E

Returns
\( 2.16*10^{-8} * L^6 * 10^{0.217 * L + 0.461 * Kp} \)

Definition at line 970 of file DiffusionCoefficient.cpp.

double Dpa_root ( double  Omega_e,
double  x,
double  mu,
double  su,
double  y,
double  beta,
double  a,
double  b,
double  Alpha_star,
double  s,
double  epsilon,
double  d_x,
double  x_m,
double  R,
DxxParameters_structure  DxxParameters 
)

Obtain roots for Dpa coefficient

Returns
\( -\frac{\pi}{2} * \frac{1}{\nu} * \Omega_e * \frac{su}{\beta} * \frac{1}{(EMeV + 1)^2} * \frac{R * \frac{x}{y} * (1 - \frac{x * \mu}{y * \beta}) * \left|fcap\right|} { d_x * \left| \beta * \mu - fcap \right|} * e^{-(\frac{x - x_m}{d_x})^2} \)

where fcap = F_cap2()

Definition at line 848 of file DiffusionCoefficient.cpp.

double Dpp_root ( double  Omega_e,
double  x,
double  mu,
double  su,
double  y,
double  beta,
double  a,
double  b,
double  Alpha_star,
double  s,
double  epsilon,
double  d_x,
double  x_m,
double  R,
DxxParameters_structure  DxxParameters 
)

Obtain roots for Dpp coefficient

Returns
\( \frac{\pi}{2} * \frac{1}{\nu} * \frac{1}{\beta^2} * (1 - \mu^2) * \Omega_e * \frac{1}{(EMeV + 1)^2} * \frac{R * (\frac{x}{y})^2 * \left|fcap\right|} { d_x * \left| \beta * \mu - fcap \right|} * e^{-(\frac{x - x_m}{d_x})^2} \)

where fcap = F_cap2()

Definition at line 866 of file DiffusionCoefficient.cpp.

double Dxx_ba ( double  L1,
double  EMeV,
double  Alpha,
double   int_Dxx_locdouble lambda, DxxParameters_structure DxxParameters,
DxxParameters_structure  DxxParameters 
)

Return derivative of func_tmp

func_tmp = \( x^6+(3*\sin^4(\alpha)) * x-4*\sin^4(\alpha) \)

Todo:
L and EMeV aren't used again in this function. Do we need it?

Definition at line 623 of file DiffusionCoefficient.cpp.

double f1 ( double  lambda)

\( \sqrt{4.0 - 3.0 * \frac {\cos^2(\lambda)}{\cos^6(\lambda)}} \)

Definition at line 546 of file DiffusionCoefficient.cpp.

double F_cap ( double  x,
double  y,
double  b,
double  s,
double  epsilon,
DxxParameters_structure  DxxParameters 
)

\( y*((x-s)^2)* \frac{(x+s*\epsilon)^2}{x*g} \) where g is polynomial sequence derived from b, s, and epsilon

Todo:
Function is never called anywhere. Most likely replaced by F_cap2. Should be removed.

Definition at line 571 of file DiffusionCoefficient.cpp.

double F_cap2 ( double  x,
double  y,
double  a,
double  beta,
double  mu,
double  s,
double  epsilon,
double  Alpha_star,
DxxParameters_structure  DxxParameters 
)

returns upper to lower ratio, using eta1, eta2, and eta3 from DxxParameters

Returns
\( \frac{up}{down} \)

where up = \( \frac{2(x+a)}{\beta * \mu} \) and

where down = \( 2x - (\frac{1}{\alpha^*} * \frac{1}{x-s}) + \frac{\eta1*\epsilon}{x + s*\epsilon} + \frac{\eta2*\epsilon}{4x + s*\epsilon} + \frac{\eta3*\epsilon}{16x + s*\epsilon} + (\frac{x}{\alpha^*} * \frac{1}{(x-s)^2}) + \frac{\eta1*\epsilon}{(x+s*\epsilon)^2} + \frac{4*\epsilon*\eta2}{(4x+s*\epsilon)^2} + \frac{16*\epsilon*\eta3}{(16x+s*\epsilon)^2} \)

Definition at line 590 of file DiffusionCoefficient.cpp.

double func_tmp ( double  x,
double  Alpha 
)

\( x^6 + ((3x)\sin^4(\alpha) - 4\sin^4(\alpha)) \)

Definition at line 561 of file DiffusionCoefficient.cpp.

double int_Daa_loc ( double  lambda,
DxxParameters_structure  DxxParameters 
)

calls function Dxx_local() to get Daa

returns \( Daa * \cos(Alpha\_ne(\alpha, \lambda, L)) * \frac{\cos^7(\lambda)}{\cos^2(\alpha)} \)

where Alpha_ne is Alpha_ne()

Definition at line 646 of file DiffusionCoefficient.cpp.

double int_Dpa_loc ( double  lambda,
DxxParameters_structure  DxxParameters 
)

calls function Dxx_local() to get Dpa

returns \( Dpa * \frac{ \sin(Alpha\_ne(\alpha, \lambda, L)) * \cos^7(\lambda) }{\cos(\alpha) * \sin(\alpha)} \)

where Alpha_ne is Alpha_ne()

Definition at line 674 of file DiffusionCoefficient.cpp.

double int_Dpp_loc ( double  lambda,
DxxParameters_structure  DxxParameters 
)

calls function Dxx_local() to get Dpp

returns \( Dpp * \frac{ \cos(\lambda) * \sqrt{1 + 3*\sin^2(\lambda)} }{\cos(Alpha\_ne(\alpha, \lambda, L))} \)

where Alpha_ne is Alpha_ne()

Definition at line 660 of file DiffusionCoefficient.cpp.

void Output1DHeaders ( ofstream &  output1D,
DiffusionCoefficientsGroup Daa,
DiffusionCoefficientsGroup Dpcpc,
DiffusionCoefficientsGroup Dpca,
DiffusionCoefficientsGroup DaaLpp,
DiffusionCoefficientsGroup DpcpcLpp,
DiffusionCoefficientsGroup DpcaLpp 
)

Function used in main() to print header in output file. Header needs to understand the output file.

Writing headers for all diffusion coefficients scaling coefficients

Parameters
output1D- output stream to file
Daa- Pitch-angle D. all other parameters - is a type of diffusion coefficients (DiffusionCoefficientsGroup). To file - Dxx.DxxList[Dxx_it].arr.name
Dpcpc- Energy D
Dpca- Mix pitch-angle and energy.
DaaLpp- Pitch-angle with plasma pause
DpcpcLpp- Energy with plasma pause
DpcaLpp- Pitch-angle and energy with plasma pause

Definition at line 1126 of file DiffusionCoefficient.cpp.

void Output1DValues ( ofstream &  output1D,
DiffusionCoefficientsGroup Daa,
DiffusionCoefficientsGroup Dpcpc,
DiffusionCoefficientsGroup Dpca,
DiffusionCoefficientsGroup DaaLpp,
DiffusionCoefficientsGroup DpcpcLpp,
DiffusionCoefficientsGroup DpcaLpp,
double &  time,
Parameters_structure parameters,
int  iteration 
)

Function used in main() to print values of diffusion coefficients in output file.

Write information about 1d variables into the file with 1d variables

Parameters
output1D- output stream to file
Daa- Pitch-angle D. all other parameters - is a type of diffusion coefficients (DiffusionCoefficientsGroup). To file - Dxx.DxxList[Dxx_it].arr.name
Dpcpc- Energy D
Dpca- Mix pitch-angle and energy.
DaaLpp- Pitch-angle with plasma pause
DpcpcLpp- Energy with plasma pause
DpcaLpp- Pitch-angle and energy with plasma pause
time- current simulation time
parameters- (Parameters_structure) structure with all parameters from ini files and loaded/calcaulated parameters such as Kp and UpperBoundary?
iteration- Number of current iteration of the simulation

Definition at line 1159 of file DiffusionCoefficient.cpp.

std::vector<double> rrouts ( double  x_1,
double  x_2,
double  eta1,
double  eta2,
double  eta3,
double  epsilon,
double  beta,
double  mu,
double  Alpha_star,
double  a,
DxxParameters_structure  DxxParameters 
)

routs finding routine

rrouts implements roots() and get_quads() from rroots.cpp file to obtain real roots of polynomial

Definition at line 879 of file DiffusionCoefficient.cpp.