My Project
PSD.h
1 
11 #ifndef PhaseSpaceDensity_H
12 #define PhaseSpaceDensity_H
13 
14 #include <fstream>
15 #include <string>
16 #include <map>
17 #include "../Grid/Grid.h"
18 #include "../Matrix/Matrix.h"
19 #include "../DiffusionCoefficient/DiffusionCoefficient.h"
20 #include "../Parameters/Parameters.h"
21 #include "MatrixSolver.h"
22 
23 
24 using namespace std;
25 
26 
33 class PSD {
34 public:
35  Matrix3D<double> arr; // array of PSD values
36 
37  // Parameters
38  Parameters_structure::PSD PSD_parameters;
39 
40  void Create_Initial_PSD(Parameters_structure::PSD parameters, Grid &grid, BoundaryCondition L_UpperBoundaryCondition);
41 
42  // other functions
43  void Interpolate(PSD &otherPSD, Parameters_structure::Interpolation interpolationParameters, Grid &oldGrid, Grid &newGrid, Matrix2D<double> newGrid_pc_lowerBoundaryCondition, Matrix2D<double> newGrid_pc_upperBoundaryCondition);
44 
45  // input functions
46  void Load_initial_f(GridElement &L, GridElement &pc, GridElement &alpha, double tau, double Kp, double min_psd = 1.e-99, string J_L7_function = "J_L7", double fb_out = 1, double fb_in = 0);
47  // two zone initial profile (kckim)
48  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);
49  //
50  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);
51  void Load_initial_f_2d(GridElement &L, GridElement &pc, GridElement &alpha, const char *filename);
52  void Load_initial_f_file(GridElement &L, GridElement &pc, GridElement &alpha, const char *filename, bool with_grid);
53  void Load_initial_f_maxwell(GridElement &L, GridElement &pc, GridElement &alpha);
54 
55  // Explicit mixed terms
56  void DiffusionMixTermExplicit(double dt, double Lpp,
58  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
59  Matrix2D<double> pc_lowerBoundaryCondition,
60  Matrix2D<double> pc_upperBoundaryCondition,
61  Matrix2D<double> alpha_lowerBoundaryCondition,
62  Matrix2D<double> alpha_upperBoundaryCondition,
63  string pc_lowerBoundaryCondition_calculationType,
64  string pc_upperBoundaryCondition_calculationType,
65  string alpha_lowerBoundaryCondition_calculationType,
66  string alpha_upperBoundaryCondition_calculationType);
67 
68 
69  void Diffusion_alpha(double dt, double Lpp,
71  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
72  Matrix2D<double> alpha_lowerBoundaryCondition,
73  Matrix2D<double> alpha_upperBoundaryCondition,
74  string alpha_lowerBoundaryCondition_calculationType,
75  string alpha_upperBoundaryCondition_calculationType);
76 
77  void Diffusion_pc(double dt, double Lpp,
79  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
80  Matrix2D<double> pc_lowerBoundaryCondition,
81  Matrix2D<double> pc_upperBoundaryCondition,
82  string pc_lowerBoundaryCondition_calculationType,
83  string pc_upperBoundaryCondition_calculationType);
84 
85  void Diffusion_L(double dt, double Lpp,
87  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
88  Matrix2D<double> lowerBoundaryCondition,
89  Matrix2D<double> upperBoundaryCondition,
90  string lowerBoundaryCondition_calculationType,
91  string upperBoundaryCondition_calculationType,
92  double tau, double tauLpp);
93 
94 
95  void Diffusion_pc_alpha(double dt, double Lpp,
99  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
100  Matrix2D<double> pc_lowerBoundaryCondition,
101  Matrix2D<double> pc_upperBoundaryCondition,
102  Matrix2D<double> alpha_lowerBoundaryCondition,
103  Matrix2D<double> alpha_upperBoundaryCondition,
104  string pc_lowerBoundaryCondition_calculationType,
105  string pc_upperBoundaryCondition_calculationType,
106  string alpha_lowerBoundaryCondition_calculationType,
107  string alpha_upperBoundaryCondition_calculationType);
108 
109  void Diffusion_pc_alpha_KC(double dt, double Lpp,
110  DiffusionCoefficient &Dpcpc, DiffusionCoefficient &DpcpcLpp,
113  GridElement &L, GridElement &pc, GridElement &alpha, Matrix3D<double> Jacobian,
114  Matrix2D<double> pc_lowerBoundaryCondition,
115  Matrix2D<double> pc_upperBoundaryCondition,
116  Matrix2D<double> alpha_lowerBoundaryCondition,
117  Matrix2D<double> alpha_upperBoundaryCondition,
118  string pc_lowerBoundaryCondition_calculationType,
119  string pc_upperBoundaryCondition_calculationType,
120  string alpha_lowerBoundaryCondition_calculationType,
121  string alpha_upperBoundaryCondition_calculationType);
122 
123  CalculationMatrix matr_A, matr_B, matr_C;
124 
125 
127  //void ScaleBoundaryFlux(Parameters_structure::PSD parameters, GridElement &L, GridElement &pc, GridElement &alpha);
129 
130  void SourcesAndLosses(
131  Parameters_structure parameters,
132  GridElement &L, GridElement &pc, GridElement &alpha,
133  Matrix3D<double> &SL,
134  double dt,
135  double Lpp, double tau, double tauLpp, double Kp);
136 
137  // output functions
138  void Output_without_grid(double time);
139  ofstream output_without_grid_file;
140 
141 };
142 
145 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);
146 // kckim
147 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);
148 //
149 
150 #endif
151 
Interpolation parameters structure
Definition: Parameters.h:238
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.
This matrix calculates the diagonal values and index given parameters for x, y, and z...
Definition: Matrix.h:310
Main parameters structure that holds smaller structures for individual parameters.
Definition: Parameters.h:87
Phase Space Density class.
Definition: PSD.h:48
Holds upper and lower boundary conditions.
Definition: BoundaryConditions.h:26
Computational grid composed of 3 different GridElement.
Definition: Grid.h:53
PSD parameters structure.
Definition: Parameters.h:178