VERB_code_2.3
PSD.h
Go to the documentation of this file.
1 
13 #ifndef PhaseSpaceDensity_H
14 #define PhaseSpaceDensity_H
17 
18 // General C++ headers
19 #include <fstream>
20 #include <string>
21 // Type of data (it could be deprecated)
22 //#include <map>
23 
24 // Operations with Grid array
25 #include "../Grid/Grid.h"
26 // Operations with matrixes
27 #include "../Matrix/Matrix.h"
28 // Operations with coefficients
29 #include "../DiffusionCoefficient/DiffusionCoefficient.h"
30 // Pfrfmeters from ini file
31 #include "../Parameters/Parameters.h"
32 // Equation solver (main algoritm)
33 #include "MatrixSolver.h"
34 
35 // class to operate by sources and losses processes
36 #include "../Grid/AdditionalSourcesAndLosses.h"
37 
38 
39 using namespace std;
40 
41 
48 class PSD {
49 public:
50 
51 
54 
57 
65  void Create_Initial_PSD(Parameters_structure::PSD parameters, Grid &grid, BoundaryCondition L_UpperBoundaryCondition);
66 
77  void Interpolate(PSD &otherPSD, Parameters_structure::Interpolation interpolationParameters, Grid &oldGrid, Grid &newGrid, Matrix2D<double> newGrid_pc_lowerBoundaryCondition, Matrix2D<double> newGrid_pc_upperBoundaryCondition);
78 
79 
80  void Load_initial_f(GridElement &L, GridElement &pc, GridElement &alpha, double tau, double Kp, double min_f = 1.e-99, string J_L7_function = "J_L7", double fb_out = 1, double fb_in = 0, bool using_ip_90 = true);
81 
82 
83  void Load_initial_f_two_zone(GridElement &L, GridElement &pc, GridElement &alpha, double tau, double tauLpp, double Kp, double min_psd = 1.e-99, string J_L7_function = "J_L7", double fb_out = 1, double fb_in = 0);
84 
85 
86  void Load_initial_f_from_outer_L(GridElement &L, GridElement &pc, GridElement &alpha, double tau, double Kp, Matrix2D<double> L_UpperBoundaryCondition, double min_psd = 1.e-99, double fb_out = 1, double fb_in = 0);
87 
88 
89  void Load_initial_f_2d(GridElement &L, GridElement &pc, GridElement &alpha, const char *filename);
90 
91 
92  void Load_initial_f_file(GridElement &L, GridElement &pc, GridElement &alpha, const char *filename, bool with_grid);
93 
94 
95  void Load_initial_f_maxwell(GridElement &L, GridElement &pc, GridElement &alpha);
96 
97  // Explicit mixed terms
98  void DiffusionMixTermExplicit(double dt, double Lpp,
100  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
101  Matrix2D<double> pc_lowerBoundaryCondition,
102  Matrix2D<double> pc_upperBoundaryCondition,
103  Matrix2D<double> alpha_lowerBoundaryCondition,
104  Matrix2D<double> alpha_upperBoundaryCondition,
105  string pc_lowerBoundaryCondition_calculationType,
106  string pc_upperBoundaryCondition_calculationType,
107  string alpha_lowerBoundaryCondition_calculationType,
108  string alpha_upperBoundaryCondition_calculationType);
109 
110 
111  void Diffusion_alpha(double dt, double Lpp,
113  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
114  Matrix2D<double> alpha_lowerBoundaryCondition,
115  Matrix2D<double> alpha_upperBoundaryCondition,
116  string alpha_lowerBoundaryCondition_calculationType,
117  string alpha_upperBoundaryCondition_calculationType);
118 
119  void Diffusion_pc(double dt, double Lpp,
120  DiffusionCoefficient &Dpcpc, DiffusionCoefficient &DpcpcLpp,
121  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
122  Matrix2D<double> pc_lowerBoundaryCondition,
123  Matrix2D<double> pc_upperBoundaryCondition,
124  string pc_lowerBoundaryCondition_calculationType,
125  string pc_upperBoundaryCondition_calculationType);
126 
127  void Diffusion_L(double dt, double Lpp,
129  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
130  Matrix2D<double> lowerBoundaryCondition,
131  Matrix2D<double> upperBoundaryCondition,
132  string lowerBoundaryCondition_calculationType,
133  string upperBoundaryCondition_calculationType,
134  double tau, double tauLpp);
135 
136 
137  void Diffusion_pc_alpha(double dt, double Lpp,
138  DiffusionCoefficient &Dpcpc, DiffusionCoefficient &DpcpcLpp,
141  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
142  Matrix2D<double> pc_lowerBoundaryCondition,
143  Matrix2D<double> pc_upperBoundaryCondition,
144  Matrix2D<double> alpha_lowerBoundaryCondition,
145  Matrix2D<double> alpha_upperBoundaryCondition,
146  string pc_lowerBoundaryCondition_calculationType,
147  string pc_upperBoundaryCondition_calculationType,
148  string alpha_lowerBoundaryCondition_calculationType,
149  string alpha_upperBoundaryCondition_calculationType);
150 
151  void Diffusion_pc_alpha_KC(double dt, double Lpp,
152  DiffusionCoefficient &Dpcpc, DiffusionCoefficient &DpcpcLpp,
155  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
156  Matrix2D<double> pc_lowerBoundaryCondition,
157  Matrix2D<double> pc_upperBoundaryCondition,
158  Matrix2D<double> alpha_lowerBoundaryCondition,
159  Matrix2D<double> alpha_upperBoundaryCondition,
160  string pc_lowerBoundaryCondition_calculationType,
161  string pc_upperBoundaryCondition_calculationType,
162  string alpha_lowerBoundaryCondition_calculationType,
163  string alpha_upperBoundaryCondition_calculationType);
164 
166  CalculationMatrix matr_A, matr_B, matr_C;
169 
170 
172  //void ScaleBoundaryFlux(Parameters_structure::PSD parameters, GridElement &L, GridElement &pc, GridElement &alpha);
174 
175  void SourcesAndLosses(
177  GridElement &L, GridElement &pc, GridElement &alpha,
179  double dt,
180  double Lpp, double tau, double tauLpp, double Kp);
181 
182  // output functions
183  void Output_without_grid(double time);
185 
186 };
187 
190 void steady_state(Matrix1D<double> &f, double tau, double Kp, int nx, Matrix1D<double> &CL, double f_bnd_out = 1, double f_bnd_in = 0);
191 // kckim
192 void steady_state_two_zone(Matrix1D<double> &f, Matrix1D<double> &tau, double Kp, double alpha, Matrix1D<double> &Ke, int nx, Matrix1D<double> &CL, double f_bnd_out = 1, double f_bnd_in = 0);
193 //
194 
195 #endif
196 
void steady_state(Matrix1D< double > &f, double tau, double Kp, int nx, Matrix1D< double > &CL, double f_bnd_out=1, double f_bnd_in=0)
Definition: PSD.cpp:2367
Interpolation parameters structure
Definition: Parameters.h:253
Array of values of coordinate axes.
Definition: Grid.h:28
Calculates any additional sources and losses due to magnetopause.
Holds diffusion coefficient matrix and routines to load and calculate it.
ofstream output_without_grid_file
output stream for PSD
Definition: PSD.h:184
void steady_state_two_zone(Matrix1D< double > &f, Matrix1D< double > &tau, double Kp, double alpha, Matrix1D< double > &Ke, int nx, Matrix1D< double > &CL, double f_bnd_out=1, double f_bnd_in=0)
Definition: PSD.cpp:2099
This matrix calculates the diagonal values and index given parameters for x, y, and z...
Definition: Matrix.h:327
Main parameters structure that holds smaller structures for individual parameters.
Definition: Parameters.h:94
Parameters_structure::PSD PSD_parameters
Parameters from ini file.
Definition: PSD.h:56
Matrix3D< double > arr
array of PSD values
Definition: PSD.h:53
Phase Space Density class.
Definition: PSD.h:48
Holds upper and lower boundary conditions.
Parameters_structure parameters
Parameters structure, with all parameters from the parameters.ini file. The default parameters define...
Definition: Main.cpp:187
Computational grid composed of 3 different GridElement.
Definition: Grid.h:53
PSD parameters structure.
Definition: Parameters.h:190