PLUTO  4.4-patch2
mod_defs.h
Go to the documentation of this file.
1 /* ///////////////////////////////////////////////////////////////////// */
12 /* ///////////////////////////////////////////////////////////////////// */
13 
14 /* *********************************************************
15  Set flow variable indices.
16  Extra vector components, when not needed, point to the
17  last element (255) of the array stored by startup.c.
18  ********************************************************* */
19 
20 #define RHO 0
21 
22 #define MX1 1
23 #define MX2 2
24 #define MX3 3
25 #define BX1 4
26 #define BX2 5
27 #define BX3 6
28 
29 #if HAVE_ENERGY
30  #define ENG 7
31  #define PRS ENG
32 #endif
33 #if DIVB_CONTROL == DIV_CLEANING
34  #define PSI_GLM (7 + HAVE_ENERGY)
35 #endif
36 
37 #define VX1 MX1
38 #define VX2 MX2
39 #define VX3 MX3
40 
41 #define NFLX (7 + HAVE_ENERGY + (DIVB_CONTROL == DIV_CLEANING))
42 
43 /* ********************************************************************* */
54 enum KWAVES {
55  KFASTM, KFASTP
56  #if HAVE_ENERGY
57  , KENTRP
58  #endif
59 
60  #if DIVB_CONTROL != DIV_CLEANING
61  , KDIVB
62  #endif
63 
64  , KSLOWM, KSLOWP, KALFVM, KALFVP
65 
66  #if DIVB_CONTROL == DIV_CLEANING
67  , KPSI_GLMM, KPSI_GLMP
68  #endif
69 };
70 
77 #define AX1 (NVAR + 1)
78 #define AX2 (NVAR + 2)
79 #define AX3 (NVAR + 3)
80 
82 #define AX AX1
83 #define AY AX2
84 #define AZ AX3
85 
86 /* *************************************************
87  Now define more convenient and user-friendly
88  pointer labels for geometry setting
89  ************************************************* */
90 
91 #if GEOMETRY == CARTESIAN
92  #define VX VX1
93  #define VY VX2
94  #define VZ VX3
95 
96  #define MX MX1
97  #define MY MX2
98  #define MZ MX3
99 
100  #define BX BX1
101  #define BY BX2
102  #define BZ BX3
103 #endif
104 
105 #if GEOMETRY == CYLINDRICAL
106 
107  #define iVR VX1
108  #define iMR MX1
109  #define iBR BX1
110 
111  #define iVZ VX2
112  #define iMZ MX2
113  #define iBZ BX2
114 
115  #define iVPHI VX3
116  #define iMPHI MX3
117  #define iBPHI BX3
118 #endif
119 
120 #if GEOMETRY == POLAR
121  #define iVR VX1
122  #define iMR MX1
123  #define iBR BX1
124 
125  #define iVPHI VX2
126  #define iMPHI MX2
127  #define iBPHI BX2
128 
129  #define iVZ VX3
130  #define iMZ MX3
131  #define iBZ BX3
132 #endif
133 
134 #if GEOMETRY == SPHERICAL
135  #define iVR VX1
136  #define iMR MX1
137  #define iBR BX1
138 
139  #define iVTH VX2
140  #define iMTH MX2
141  #define iBTH BX2
142 
143  #define iVPHI VX3
144  #define iMPHI MX3
145  #define iBPHI BX3
146 #endif
147 
148 /* ***********************************************************
149  \cond REPEAT_FUNCTION_DOCUMENTATION_IN_HEADER_FILES
150  Function prototyping
151  *********************************************************** */
152 
153 void BackgroundField (double x1, double x2, double x3, double *B0);
154 
155 void ConsEigenvectors (double *, double *, double,
156  double **, double **, double *);
157 int ConsToPrim (double **, double **, int , int, uint16_t *);
158 void Eigenvalues (double **, double *, double **, int, int);
159 
160 void Flux (const State *, int, int);
161 #if BACKGROUND_FIELD == YES
162 void GetBackgroundField (const State *, int, int, int, Grid *);
163 #endif
164 void GetCurrent (const Data *, Grid *);
165 void HLL_Speed (const State *, const State *, double *, double *, int, int);
166 
167 void MaxSignalSpeed (const State *, double *, double *, int, int);
168 
169 void PrimEigenvectors(const State *, int, int);
170 void PrimRHS (double *, double *, double, double, double *);
171 void PrimSource (const State *, double **, int, int, Grid *);
172 void PrimToCons (double **, double **, int, int);
173 
174 #if DIVB_CONTROL == EIGHT_WAVES
175  void Roe_DivBSource (const Sweep *, int, int, Grid *);
176  void HLL_DivBSource (const Sweep *, double **, int, int, Grid *);
177 #elif DIVB_CONTROL == DIV_CLEANING
178 
179  #include "MHD/GLM/glm.h"
180 
181 #elif DIVB_CONTROL == CONSTRAINED_TRANSPORT
182 
183  #include "MHD/CT/ct.h"
184 
185 #endif
186 
187 Riemann_Solver HLL_Solver, HLLC_Solver, HLLD_Solver, HLLEM_Solver;
188 Riemann_Solver HLL_Linde_Solver;
189 Riemann_Solver LF_Solver, Roe_Solver, GFORCE_Solver, GMUSTA1_Solver;
190 
191 #if AMBIPOLAR_DIFFUSION != NO
192  #include "Ambipolar_Diffusion/ad.h"
193 #endif
194 #if RESISTIVITY != NO
195  #include "Resistivity/res.h"
196 #endif
197 
198 #ifdef SHEARINGBOX
200 #endif
201 /* \endcond */
void GetBackgroundField(const State *state, int beg, int end, int where, Grid *grid)
Definition: bckgrnd_field.c:19
void MaxSignalSpeed(const State *, double *, double *, int, int)
Definition: eigenv.c:34
int ConsToPrim(double **, double **, int, int, uint16_t *)
Definition: mappers.c:88
void PrimToCons(double **, double **, int, int)
Definition: mappers.c:26
Definition: structs.h:124
void HLL_DivBSource(const Sweep *sweep, double **Uhll, int beg, int end, Grid *grid)
Definition: source.c:155
void Flux(const State *, int, int)
Definition: fluxes.c:23
void BackgroundField(double x1, double x2, double x3, double *B0)
Definition: init.c:91
void HLL_Speed(const State *, const State *, double *, double *, int, int)
Definition: hll_speed.c:24
Header file for GLM Divergence Cleaning.
Header file for Constrained-Transport (CT) module.
void Eigenvalues(double **, double *, double **, int, int)
Definition: eigenv.c:68
void Roe_DivBSource(const Sweep *sweep, int beg, int end, Grid *grid)
Definition: source.c:39
void ConsEigenvectors(double *, double *, double, double **, double **, double *)
Definition: eigenv.c:277
Definition: structs.h:514
void PrimEigenvectors(const State *, int, int)
Definition: eigenv.c:92
Definition: structs.h:261
Riemann_Solver HLLD_Solver
Definition: mod_defs.h:225
Shearing-Box module header file.
void GetCurrent(const Data *d, Grid *grid)
Definition: get_current.c:87
Resistive MHD module header file.
void PrimRHS(double *, double *, double, double, double *)
Definition: prim_eqn.c:30
void PrimSource(const State *, double **, int, int, Grid *)
Definition: prim_eqn.c:124
Definition: structs.h:289