My Project
DiffusionCoefficient.h
1 
9 #ifndef DiffusionCoefficient_H
10 #define DiffusionCoefficient_H
11 
12 #include <string>
13 #include <vector>
14 #include "../Matrix/Matrix.h"
15 #include "../Grid/Grid.h"
16 
17 using namespace std;
18 
23 public:
24  Matrix3D<double> arr; // array of diffusion coefficients
25 
27  bool Dxx_initialized;
28 
29  // Parameters
30  DxxParameters_structure DxxParameters;
31 
32  // Variables
33 
35  string type;
36 
38  bool is_active;
39 
41  bool useScale;
42 
44  double Scale(double Kp);
45 
47  void Create_Dxx(DxxParameters_structure DxxParameters, Grid &grid);
48 
56  bool LoadDiffusionCoefficient(GridElement &L, GridElement &pc, GridElement &alpha, string D_filename, string filetype = "IFT_GRID");
57 
59  bool LoadDiffusionCoefficientFromFileWithGrid(GridElement &L, GridElement &pc, GridElement &alpha, string D_filename, string gridOrder = "IFT_GRID_LPA");
60 
62  bool LoadDiffusionCoefficientFromPlaneFile(GridElement &L, GridElement &pc, GridElement &alpha, string D_filename);
63 
65  void Calculate(GridElement &L, GridElement &epc, GridElement &alpha, DxxParameters_structure DxxParameters);
66 
68  void MakeDLL(double Kp);
70  void MakeDLL(GridElement &L, GridElement &pc, GridElement &alpha, double Kp, string DLLType = "DLLT_B");
72  void MakeDLL_B(GridElement &L, GridElement &pc, GridElement &alpha, double Kp);
74  void MakeDLL_FAKE(GridElement &L, GridElement &pc, GridElement &alpha, double Kp);
76  void MakeDLL_BE_res(GridElement &L, GridElement &pc, GridElement &alpha, double Kp);
78  void MakeDLL_BE(GridElement &L, GridElement &pc, GridElement &alpha, double Kp);
80  void MakeDLL100(GridElement &L, GridElement &pc, GridElement &alpha, double Kp);
81 
82 };
83 
91 private:
93  //bool DxxGroup_initialized;
94 public:
95  DiffusionCoefficient CurrentDxx;
96  // variables
97 
99  vector <DiffusionCoefficient> DxxList;
100 
105  bool ActivateAndScale(double time, double Kp);
106 
107  // constructors
109  //DxxGroup_initialized = false;
110  //*this = 0;
111  }
112 
113 };
114 
115 // Calculations...
116  double Dxx_ba(double L, double epc, double alpha, double int_Dxx_loc(double lambda, DxxParameters_structure DxxParameters), DxxParameters_structure DxxParameters); //
117  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);
118 
119  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);
120  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);
121  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);
122 
123  double int_Daa_loc(double lambda, DxxParameters_structure DxxParameters);
124  double int_Dpp_loc(double lambda, DxxParameters_structure DxxParameters);
125  double int_Dpa_loc(double lambda, DxxParameters_structure DxxParameters);
126 
127  // various functions
128 // double B(double lambda, double L);
129  double f1(double lambda);
130 
131  double Alpha_ne(double pangle, double lambda, double L);
132  double func_tmp (double x, double Alpha);
133 
134  double F_cap(double x, double y, double b, double s, double epsilon, DxxParameters_structure DxxParameters);
135  //std::vector<double> rrouts(double Omega_e_eq, double Omega_e, double yida1, double yida2, double yida3, double epsilon, double beta, double mu, double alpha_star, double a, DiffusionCoefficientParameters_structure DxxParameters_structure);
136 
138  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);
139 
140  double Df (double L, double Kp) ;
141 
142  void CreateAllDiffusionCoefficients(DiffusionCoefficient &DLL,
145  Parameters_structure &parameters, Grid &radialDiffusionGrid, Grid &localDiffusionsGrid);
146 
147 
148 #endif
149 
150 
Holds list of instances of DiffusionCoefficient class of same type (like Daa, Dpp, etc), but produced by different waves (Daa_chorus, Daa_EMIC, etc).
Definition: DiffusionCoefficient.h:95
Array of values of coordinate axes.
Definition: Grid.h:28
Holds diffusion coefficient matrix and routines to load and calculate it.
Definition: DiffusionCoefficient.h:23
General namespace.
Struct that holds various parameters to be used for Dxx.
Definition: Parameters.h:27
Main parameters structure that holds smaller structures for individual parameters.
Definition: Parameters.h:87
Computational grid composed of 3 different GridElement.
Definition: Grid.h:53