PLUTO  4.0
 All Data Structures Files Functions Variables Enumerations Macros Pages
ct.h
Go to the documentation of this file.
1 /* ///////////////////////////////////////////////////////////////////// */
13 /* ///////////////////////////////////////////////////////////////////// */
14 
15 #define STAGGERED_MHD
16 
17 /* ---- set labels for CT_EMF_AVERAGE ---- */
18 
19 #define ARITHMETIC 1
20 #define UCT0 2
21 #define UCT_CONTACT 3
22 #define UCT_HLL 4
23 #define RIEMANN_2D 5
24 
25 /* ---- staggered component labels ---- */
26 
27 #define BX1s 0
28 #define BX2s 1
29 #define BX3s 2
30 
31 /* ---- backward compatibility ---- */
32 
33 #define BXs BX1s
34 #define BYs BX2s
35 #define BZs BX3s
36 
37 
38 #define FACE_EMF 11
39 #define EDGE_EMF 12
40 
41 /* Now define more convenient and user-friendly
42  pointer labels for geometry setting */
43 
44 #if GEOMETRY == CYLINDRICAL
45  #define iBRs BX1s
46  #define iBZs BX2s
47  #define iBPHIs BX3s
48 #endif
49 
50 #if GEOMETRY == POLAR
51  #define iBRs BX1s
52  #define iBPHIs BX2s
53  #define iBZs BX3s
54 #endif
55 
56 #if GEOMETRY == SPHERICAL
57  #define iBRs BX1s
58  #define iBTHs BX2s
59  #define iBPHIs BX3s
60 #endif
61 
62 
63 /* ********************************************************************* */
68 typedef struct ElectroMotiveForce{
69 
75  double ***exj;
76  double ***exk;
77  double ***eyi;
78  double ***eyk;
79  double ***ezi;
80  double ***ezj;
83  signed char ***svx, ***svy, ***svz;
84 
87  int ibeg, jbeg, kbeg;
88  int iend, jend, kend;
93  double ***SxL;
94  double ***SxR;
95  double ***SyL;
96  double ***SyR;
97  double ***SzL;
98  double ***SzR;
103  double ***ex;
104  double ***ey;
105  double ***ez;
110  double ***dbx_dy, ***dbx_dz;
111  double ***dby_dx, ***dby_dz;
112  double ***dbz_dx, ***dbz_dy;
113 
114  double ***dvx_dx, ***dvy_dx, ***dvz_dx;
115  double ***dvx_dy, ***dvy_dy, ***dvz_dy;
116  double ***dvx_dz, ***dvy_dz, ***dvz_dz;
119 } EMF;
120 
121 void CT_EMF_ArithmeticAverage (const EMF *, const double);
122 void CT_EMF_IntegrateToCorner (const Data *, const EMF *, Grid *);
123 void CT_AverageMagneticField (double ****bf, double ***UU[], Grid *);
124 void CT_AverageNormalMagField (const Data *, int, Grid *);
125 void CT_AverageTransverseMagFiled (const Data *, int, Grid *);
126 void CT_Update(const Data *, Grid *);
127 void CT_CheckDivB (double ***b[], Grid *);
128 void EMF_BOUNDARY (EMF *, Grid *);
129 void CT_StoreEMF (const State_1D *, int, int, Grid *);
130 void CT_EMF_Init (const State_1D *, int, int, Grid *);
131 
132 void CT_StoreResistiveEMF (double **, int, int, Grid *);
133 EMF *CT_GetEMF (const Data *, Grid *);
134 void FillMagneticField (const Data *, int, Grid *);
135 
136 void MULTI_D_Reconstruct (double ***vv[], double ***bf[], double ***,
137  double ***, double **, double **, Grid *);
138 /*
139 void EMF_BOUNDARY_STATES (Data_Arr, Data_Arr,
140  Data_Arr, Data_Arr,
141  Data_Arr, Data_Arr, Grid *);
142 */
143 void EMF_USERDEF_BOUNDARY (EMF *, int, int, Grid *);
144 
145 void CT_GetStagSlopes (const Data_Arr, EMF *, Grid *);
146 
147 
148 void CT_EMF_HLL_Solver (const Data *, const EMF *, Grid *);
149 void CT_StoreVelSlopes (EMF *, const State_1D *, int, int);
150 void CT_EMF_CMUSCL_Average (const Data *, const EMF *, Grid *);