00001
00008 #ifndef Grid_H
00009 #define Grid_H
00010
00011 #include <string>
00012 #include "../Matrix/Matrix.h"
00013 #include "../Parameters/Parameters.h"
00014 #include "../VariousFunctions/variousFunctions.h"
00015 #include "Grid.h"
00016 #include "BoundaryConditions.h"
00017
00018 using namespace std;
00019
00020
00028 class GridElement : public Matrix3D<double> {
00029
00030 bool initialized;
00031 public:
00032
00033 ParamStructure::GridElement GridElement_parameters;
00034
00035
00036 int size;
00037
00038
00039 GridElement() {}
00040
00041 GridElement(ParamStructure::GridElement parameters);
00042 GridElement(ParamStructure::GridElement parameters, int L_size, int pc_size, int alpha_size);
00043
00044
00045
00046 void Initialize(ParamStructure::GridElement parameters);
00047 void AllocateMemory(int L_size, int pc_size, int alpha_size);
00048 void Initialize(ParamStructure::GridElement parameters, int L_size, int pc_size, int alpha_size);
00049
00050
00051 GridElement& operator= (const Matrix3D<double> &M);
00052 GridElement& operator= (double val);
00053
00054
00055 GridElement Kfunc();
00056 void Kfunc(GridElement arg);
00057 void SetRegularGridValue(int il, int im, int ia, int gridElementDirection);
00058 };
00059
00060
00065 class Grid {
00066 private:
00067 bool initialized;
00068 public:
00069
00070 GridElement L, pc, alpha, epc;
00071 string type;
00072 int LSize, pcSize, alphaSize, epcSize;
00073
00074
00075 Grid() { initialized = false; }
00076 Grid(ParamStructure::GridElement parameters_L,
00077 ParamStructure::GridElement parameters_pc,
00078 ParamStructure::GridElement parameters_alpha,
00079 ParamStructure::GridElement parameters_epc,
00080 string grid_filename,
00081 string grid_type,
00082 Grid SecondGrid = Grid());
00083
00084
00085 void Initialize(ParamStructure::GridElement parameters_L,
00086 ParamStructure::GridElement parameters_pc,
00087 ParamStructure::GridElement parameters_alpha,
00088 ParamStructure::GridElement parameters_epc,
00089 string grid_type);
00090 void MakeGrid(string grid_type, Grid SecondGrid = Grid());
00091
00092 bool IsInitialized() { return initialized; };
00093 void Output(string filename);
00094
00101 Matrix3D<double> Jacobian;
00102
00103 };
00104
00107 double find_alpha(double RHS, double alpha_min, double alhpa_max, double ERR = 1e-12, int max_it = 100, int it = 0);
00108
00109 #endif