PLUTO
prototypes.h
Go to the documentation of this file.
1 /* *********************************************************************
2  PLUTO function prototypes
3  ********************************************************************* */
4 
5 int AdvanceStep(const Data *, Riemann_Solver *, Time_Step *, Grid *);
6 void AdvectFlux (const State_1D *, int, int, Grid *);
7 void Analysis (const Data *, Grid *);
8 
9 void Boundary (const Data *, int, Grid *);
10 
11 char *Array1D (int, size_t);
12 char **Array2D (int, int, size_t);
13 char ***Array3D (int, int, int, size_t);
14 char ****Array4D (int, int, int, int, size_t);
15 double ***ArrayBox(long int, long int, long int, long int, long int, long int);
16 double ***ArrayBoxMap (int, int, int, int, int, int, double *);
17 double ***ArrayMap (int, int, int, double *);
18 unsigned char ***ArrayCharMap (int, int, int, unsigned char *);
19 
20 void BodyForceVectorGet (double **v, double **g,
21  double *, double *, double *, int beg, int end,
22  Grid *grid);
23 void BodyForcePotentialGet (double **v, double **gphi,
24  double *phi_p, double *phi_c,
25  int beg, int end, Grid *grid);
26 
27 
28 double BodyForcePotential(double, double, double);
29 void BodyForceVector(double *, double *, double, double, double);
30 
31 void ChangeDumpVar ();
32 void CharTracingStep(const State_1D *, int, int, Grid *);
33 void CheckPrimStates (double **, double **, double **, int, int);
34 int CheckNaN (double **, int, int, int);
35 int CloseBinaryFile (FILE *, int);
36 void ComputeUserVar (const Data *, Grid *);
37 float ***Convert_dbl2flt (double ***, double, int);
38 
39 void ConsToPrim3D(Data_Arr, Data_Arr, unsigned char ***, RBox *);
40 void CreateImage (char *);
41 
42 void ComputeEntropy (const Data *, Grid *);
43 void EntropySwitch (const Data *, Grid *);
44 void EntropyOhmicHeating (const Data *, Data_Arr, double, Grid *);
45 
46 void FreeArray1D (void *);
47 void FreeArray2D (void **);
48 void FreeArray3D (void ***);
49 void FreeArray4D (void ****);
50 void FreeArrayBox(double ***, long, long, long);
51 void FreeArrayBoxMap (double ***, int, int, int, int, int, int);
52 void FreeArrayMap (double ***);
53 
54 void FreeArrayCharMap(unsigned char ***);
55 
56 #ifdef FINITE_DIFFERENCE
60  void FD_GetMaxEigenvalues (const Data *d, State_1D *state, Grid *grid);
61 #endif
62 
63 void FindShock (const Data *, Grid *);
64 void FlagShock (const Data *, Grid *);
65 void Flatten (const State_1D *, int, int, Grid *);
66 void FreeGrid (Grid *);
67 
68 void GetAreaFlux (const State_1D *, double **, double **, int, int, Grid *);
69 void GetCGSUnits (double *u);
70 Image *GetImage (char *);
71 double *GetInverse_dl (const Grid *);
72 int GetNghost (void);
73 void GetOutputFrequency(Output *, const char *);
74 RBox *GetRBox(int, int);
75 double ***GetUserVar (char *);
76 
77 void HancockStep (const State_1D *, int, int, Grid *);
78 
79 int LocateIndex(double *, int, int, double);
80 
81 void Init (double *, double, double, double);
82 void Initialize(int argc, char *argv[], Data *, Runtime *, Grid *, Cmd_Line *);
83 
84 void InternalBoundaryReset (const State_1D *, Time_Step *, int, int, Grid *);
85 
86 void InputDataFree (void);
87 void InputDataInterpolate (double *, double, double, double);
88 void InputDataRead (char *, char *);
89 void InputDataSet (char *, int *);
90 
91 int IsLittleEndian (void);
92 
93 void MakeState (State_1D *);
94 void MakeGeometry (Grid *);
95 double MeanMolecularWeight(double *);
96 double Median (double a, double b, double c);
97 
98 FILE *OpenBinaryFile (char *, int, char *);
99 
100 void ParabolicFlux(Data_Arr, Data_Arr J, double ***, const State_1D *,
101  double **, int, int, Grid *);
102 double ParabolicRHS (const Data *, Data_Arr, double, Grid *);
103 void ParseCmdLineArgs (int, char *argv[], char *, Cmd_Line *);
104 
105 int ParamFileRead (char *);
106 char *ParamFileGet (const char *, int );
107 int ParamExist (const char *);
108 int ParamFileHasBoth (const char *, const char *);
109 
110 void PrimToChar (double **, double *, double *);
112 
113 void ReadBinaryArray (void *, size_t, int, FILE *, int, int);
114 void ReadHDF5 (Output *output, Grid *grid);
115 void ResetState (const Data *, State_1D *, Grid *);
116 void RestartFromFile (Runtime *, int, int, Grid *);
117 void RestartDump (Runtime *);
118 void RestartGet (Runtime *, int, int, int);
119 
120 void RightHandSide (const State_1D *, Time_Step *, int, int, double, Grid *);
121 void RightHandSideSource (const State_1D *, Time_Step *, int, int, double,
122  double *, Grid *);
123 void RKC (const Data *d, Time_Step *, Grid *);
124 Runtime *RuntimeGet(void);
125 int RuntimeSetup (Runtime *, Cmd_Line *, char *);
126 void RuntimeSet(Runtime *runtime);
127 
128 void SetColorMap (unsigned char *, unsigned char *, unsigned char *, char *);
129 void SetDefaultVarNames(Output *);
130 int SetDumpVar (char *, int, int);
131 void SetIndexes (Index *indx, Grid *grid);
132 int SetLogFile(char *, Cmd_Line *);
133 void SetOutput (Data *d, Runtime *input);
134 void SetRBox(void);
135 Riemann_Solver *SetSolver (const char *);
136 void SetGrid (Runtime *, Grid *);
137 void SetJetDomain (const Data *, int, int, Grid *);
138 void Show (double **, int);
139 void ShowMatrix(double **, int n, double);
140 void ShowVector (double *, int n);
141 void ShowConfig(int, char *a[], char *);
142 void ShowDomainDecomposition (int, Grid *);
143 void ShowUnits ();
144 void SplitSource (const Data *, double, Time_Step *, Grid *);
145 void STS (const Data *d, Time_Step *, Grid *);
146 
147 
148 void Startup (Data *, Grid *);
149 void States (const State_1D *, int, int, Grid *);
150 void SwapEndian (void *, const int);
151 
152 void UnsetJetDomain (const Data *, int, Grid *);
153 void UpdateStage(const Data *, Data_Arr, double **, Riemann_Solver *,
154  double, Time_Step *, Grid *);
155 void UserDefBoundary (const Data *, RBox *, int, Grid *);
156 
157 void VectorPotentialDiff (double *, int, int, int, Grid *);
158 
159 void Where (int, Grid *);
160 void WriteData (const Data *, Output *, Grid *);
161 void WriteBinaryArray (void *, size_t, int, FILE *, int);
162 void WriteHDF5 (Output *output, Grid *grid);
163 void WriteVTK_Header (FILE *, Grid *);
164 void WriteVTK_Vector (FILE *, Data_Arr, double, char *, Grid *);
165 void WriteVTK_Scalar (FILE *, double ***, double, char *, Grid *);
166 void WriteTabArray (Output *, char *, Grid *);
167 void WritePPM (double ***, char *, char *, Grid *);
168 void WritePNG (double ***, char *, char *, Grid *);
169 
170 #define ARRAY_1D(nx,type) (type *)Array1D(nx,sizeof(type))
171 #define ARRAY_2D(nx,ny,type) (type **)Array2D(nx,ny,sizeof(type))
172 #define ARRAY_3D(nx,ny,nz,type) (type ***)Array3D(nx,ny,nz,sizeof(type))
173 #define ARRAY_4D(nx,ny,nz,nv,type) (type ****)Array4D(nx,ny,nz,nv,sizeof(type))
174 
175 /* ---------------------------------------------------------------------
176  Prototyping for standard output/debugging
177  --------------------------------------------------------------------- */
178 
179 void print (const char *fmt, ...);
180 void print1 (const char *fmt, ...);
181 void Trace (double);
182 
183 /* ---------------------------------------------------------------------
184  Prototyping for Boundary condition functions
185  --------------------------------------------------------------------- */
186 
187 void FlipSign (int, int, int *);
188 void OutflowBound (double ***, int, int, Grid *);
189 void PeriodicBound (double ***, int, int);
190 void ReflectiveBound(double ***, int, int, int);
191 
192 /* ---------------------------------------------------------------------
193  Prototyping for I/O functions
194  --------------------------------------------------------------------- */
195 
196 #ifdef USE_ASYNC_IO
197 void Async_EndWriteData (Runtime *);
198 void Async_BegWriteData (const Data *d, Output *output, Grid *grid);
199 #endif
200 
201 
202 /* ---------------------------------------------------------------------
203  Prototype for cooling functions
204  --------------------------------------------------------------------- */
205 
206 #if COOLING != NO
207  void Numerical_Jacobian (double *v, double **J);
208  void Jacobian (double *v, double *rhs, double **dfdy);
209  void CoolingSource (const Data *, double, Time_Step *, Grid *);
210  #if COOLING == POWER_LAW
211  void PowerLawCooling (Data_Arr, double, Time_Step *, Grid *);
212  #endif
213  /* move the following elsewhere ? */
214 /*
215 double SolveODE_CK45 (double *, double *, double *, double, double);
216 double SolveODE_RKF23 (double *, double *, double *, double, double);
217 double SolveODE_RKF12 (double *, double *, double *, double, double);
218 */
219  double SolveODE_CK45 (double *, double *, double *, double, double, intList *);
220  double SolveODE_RKF23 (double *, double *, double *, double, double, intList *);
221  double SolveODE_RKF12 (double *, double *, double *, double, double, intList *);
222 
223  double SolveODE_ROS34 (double *, double *, double *, double, double);
224  double SolveODE_RK4 (double *, double *, double *, double, intList *);
225  double SolveODE_RK2 (double *, double *, double *, double);
226  double SolveODE_Euler (double *, double *, double *, double);
227 #endif
228 
229 /* ----------------------------------------------
230  functions in tools.c
231  ---------------------------------------------- */
232 
233 void PlutoError (int, char *);
234 
235 double Length_1 (int i, int j, int k, Grid *);
236 double Length_2 (int i, int j, int k, Grid *);
237 double Length_3 (int i, int j, int k, Grid *);
238 
239 #if UPDATE_VECTOR_POTENTIAL == YES
240  void VectorPotentialUpdate (const Data *d, const void *vp,
241  const State_1D *state, const Grid *grid);
242 #endif
243 
244 /* --------------- EOS ------------------------- */
245 
246 void Enthalpy (double **, double *, int, int);
247 void Entropy (double **, double *, int, int);
248 void SoundSpeed2 (double **, double *, double *, int, int, int, Grid *);
249 
250 double GetEntropy (double x);
251 
252 /* --- New stuffs -- */
253 
254 void WriteAsciiFile (char *fname, double *q, int nvar);
255 
256 
double Length_2(int i, int j, int k, Grid *)
Definition: set_geometry.c:169
static double a
Definition: init.c:135
void WritePNG(double ***, char *, char *, Grid *)
void FreeArrayBoxMap(double ***, int, int, int, int, int, int)
Definition: arrays.c:586
char ** Array2D(int, int, size_t)
Definition: arrays.c:108
void ShowDomainDecomposition(int, Grid *)
Definition: show_config.c:295
double WENO3_Reconstruct(double *F, double dx, int j)
void GetOutputFrequency(Output *, const char *)
void RightHandSide(const State_1D *, Time_Step *, int, int, double, Grid *)
Definition: rhs.c:88
char * ParamFileGet(const char *, int)
Definition: parse_file.c:86
void ResetState(const Data *, State_1D *, Grid *)
Definition: set_indexes.c:163
void MakeGeometry(Grid *)
Definition: set_geometry.c:16
void Entropy(double **, double *, int, int)
Definition: eos.c:80
void PrimToChar(double **, double *, double *)
Definition: eigenv.c:593
void EntropyOhmicHeating(const Data *, Data_Arr, double, Grid *)
void ShowConfig(int, char *a[], char *)
Definition: show_config.c:16
double **** Data_Arr
Definition: pluto.h:492
void WriteBinaryArray(void *, size_t, int, FILE *, int)
Definition: bin_io.c:98
void FD_GetMaxEigenvalues(const Data *d, State_1D *state, Grid *grid)
Definition: fd_flux.c:293
void print(const char *fmt,...)
Definition: amrPluto.cpp:497
static int n
Definition: analysis.c:3
int SetLogFile(char *, Cmd_Line *)
Definition: tools.c:321
void ShowVector(double *, int n)
Definition: tools.c:169
RBox * GetRBox(int, int)
Definition: rbox.c:232
void Flatten(const State_1D *, int, int, Grid *)
Definition: flatten.c:4
double MeanMolecularWeight(double *)
void WriteData(const Data *, Output *, Grid *)
Definition: write_data.c:29
void Numerical_Jacobian(double *v, double **J)
void Riemann_Solver(const State_1D *, int, int, double *, Grid *)
Definition: pluto.h:489
void ShowMatrix(double **, int n, double)
Definition: tools.c:182
void States(const State_1D *, int, int, Grid *)
Definition: plm_states.c:430
void SetDefaultVarNames(Output *)
Definition: var_names.c:4
unsigned char *** ArrayCharMap(int, int, int, unsigned char *)
Definition: arrays.c:476
void RKC(const Data *d, Time_Step *, Grid *)
Definition: rkc.c:58
double WENOZ_Reconstruct(double *F, double dx, int j)
double *** ArrayBox(long int, long int, long int, long int, long int, long int)
Definition: arrays.c:341
void CharTracingStep(const State_1D *, int, int, Grid *)
Definition: char_tracing.c:198
void Enthalpy(double **, double *, int, int)
Definition: eos.c:48
void Initialize(int argc, char *argv[], Data *, Runtime *, Grid *, Cmd_Line *)
Definition: initialize.c:37
void ConsToPrim3D(Data_Arr, Data_Arr, unsigned char ***, RBox *)
Definition: mappers3D.c:16
void WriteVTK_Scalar(FILE *, double ***, double, char *, Grid *)
Definition: write_vtk.c:341
double * GetInverse_dl(const Grid *)
Definition: set_geometry.c:205
void RightHandSideSource(const State_1D *, Time_Step *, int, int, double, double *, Grid *)
Definition: rhs_source.c:68
char *** Array3D(int, int, int, size_t)
Definition: arrays.c:149
void WriteVTK_Vector(FILE *, Data_Arr, double, char *, Grid *)
Definition: write_vtk.c:259
void FindShock(const Data *, Grid *)
void CoolingSource(const Data *d, double dt, Time_Step *Dts, Grid *GXYZ)
char * Array1D(int, size_t)
Definition: arrays.c:80
void SetColorMap(unsigned char *, unsigned char *, unsigned char *, char *)
Definition: colortable.c:11
void FlipSign(int, int, int *)
Definition: boundary.c:408
double Median(double a, double b, double c)
void PowerLawCooling(Data_Arr VV, double dt, Time_Step *Dts, Grid *grid)
Definition: cooling.c:50
void WriteVTK_Header(FILE *, Grid *)
Definition: write_vtk.c:91
void ComputeEntropy(const Data *, Grid *)
void InputDataSet(char *, int *)
Definition: input_data.c:54
int ParamFileHasBoth(const char *, const char *)
Definition: parse_file.c:129
void WriteHDF5(Output *output, Grid *grid)
Definition: hdf5_io.c:45
void InputDataRead(char *, char *)
Definition: input_data.c:191
void MakeState(State_1D *)
Definition: tools.c:51
void EntropySwitch(const Data *, Grid *)
void PrimToCons3D(Data_Arr, Data_Arr, RBox *)
Definition: mappers3D.c:86
void InputDataInterpolate(double *, double, double, double)
Definition: input_data.c:287
double SolveODE_CK45(double *v0, double *k1, double *v5th, double dt, double tol, intList *vars)
void ParabolicFlux(Data_Arr, Data_Arr J, double ***, const State_1D *, double **, int, int, Grid *)
double MP5_Reconstruct(double *F, double dx, int j)
Definition: fd_reconstruct.c:4
void ComputeUserVar(const Data *, Grid *)
Definition: userdef_output.c:4
int CheckNaN(double **, int, int, int)
Definition: tools.c:19
double SolveODE_RKF12(double *v0, double *k1, double *v2nd, double dt, double tol, intList *vars)
void SwapEndian(void *, const int)
Definition: tools.c:203
double *** GetUserVar(char *)
Definition: set_output.c:251
void WriteAsciiFile(char *fname, double *q, int nvar)
Definition: tools.c:416
void ReflectiveBound(double ***, int, int, int)
Definition: boundary.c:501
void Startup(Data *, Grid *)
Definition: startup.c:17
Runtime * RuntimeGet(void)
void FreeGrid(Grid *)
Definition: set_grid.c:191
void FreeArrayBox(double ***, long, long, long)
Definition: arrays.c:403
void GetAreaFlux(const State_1D *, double **, double **, int, int, Grid *)
Definition: get_area_flux.c:4
double Length_1(int i, int j, int k, Grid *)
Definition: set_geometry.c:156
void UnsetJetDomain(const Data *, int, Grid *)
Definition: jet_domain.c:154
double Reconstruct(double *, double, int)
Definition: pluto.h:491
FILE * OpenBinaryFile(char *, int, char *)
Definition: bin_io.c:31
void InputDataFree(void)
Definition: input_data.c:484
double SolveODE_RKF23(double *v0, double *k1, double *v3rd, double dt, double tol, intList *vars)
void print1(const char *fmt,...)
Definition: amrPluto.cpp:511
void RestartGet(Runtime *, int, int, int)
Definition: restart.c:177
Definition: structs.h:78
double *** ArrayMap(int, int, int, double *)
Definition: arrays.c:421
int LocateIndex(double *, int, int, double)
Definition: math_table2D.c:144
void WritePPM(double ***, char *, char *, Grid *)
Definition: write_img.c:10
void FreeArrayCharMap(unsigned char ***)
Definition: arrays.c:530
int j
Definition: analysis.c:2
double ParabolicRHS(const Data *, Data_Arr, double, Grid *)
Definition: parabolic_rhs.c:50
void Jacobian(real *v, real *rhs, real **dfdy)
Definition: jacobian.c:4
int IsLittleEndian(void)
Definition: tools.c:40
void ReadHDF5(Output *output, Grid *grid)
Definition: hdf5_io.c:582
int RuntimeSetup(Runtime *, Cmd_Line *, char *)
Definition: runtime_setup.c:22
void Where(int, Grid *)
Definition: tools.c:235
void Analysis(const Data *, Grid *)
Definition: init.c:66
int k
Definition: analysis.c:2
void CreateImage(char *)
Definition: set_image.c:8
void GetCGSUnits(double *u)
Definition: write_data.c:557
int SetDumpVar(char *, int, int)
Definition: set_output.c:211
void SetIndexes(Index *indx, Grid *grid)
Definition: set_indexes.c:49
void FreeArray2D(void **)
Definition: arrays.c:46
float *** Convert_dbl2flt(double ***, double, int)
Definition: bin_io.c:216
int ParamFileRead(char *)
Definition: parse_file.c:53
void FreeArrayMap(double ***)
Definition: arrays.c:518
double BodyForcePotential(double, double, double)
Definition: init.c:479
tuple c
Definition: menu.py:375
double SolveODE_ROS34(double *v0, double *k1, double *v4th, double dt, double tol)
void OutflowBound(double ***, int, int, Grid *)
Definition: boundary.c:295
void STS(const Data *d, Time_Step *, Grid *)
Definition: sts.c:55
void SetRBox(void)
Definition: rbox.c:33
double *** ArrayBoxMap(int, int, int, int, int, int, double *)
Definition: arrays.c:537
Riemann_Solver * SetSolver(const char *)
Definition: set_solver.c:4
void PlutoError(int, char *)
Definition: tools.c:115
double PPM_Reconstruct(double *v, double dx, int i)
void Init(double *, double, double, double)
Definition: init.c:17
double GetEntropy(double x)
void CheckPrimStates(double **, double **, double **, int, int)
Definition: check_states.c:4
Definition: structs.h:30
int CloseBinaryFile(FILE *, int)
Definition: bin_io.c:78
void Show(double **, int)
Definition: tools.c:132
int i
Definition: analysis.c:2
Definition: structs.h:300
void Trace(double)
Definition: tools.c:223
void PeriodicBound(double ***, int, int)
Definition: boundary.c:568
void InternalBoundaryReset(const State_1D *, Time_Step *, int, int, Grid *)
int ParamExist(const char *)
Definition: parse_file.c:159
void Boundary(const Data *, int, Grid *)
Definition: boundary.c:36
Definition: structs.h:317
double LIMO3_Reconstruct(double *v, double dx, int i)
void BodyForceVector(double *, double *, double, double, double)
Definition: init.c:441
void AdvectFlux(const State_1D *, int, int, Grid *)
Definition: adv_flux.c:47
void SoundSpeed2(double **, double *, double *, int, int, int, Grid *)
Definition: eos.c:16
void SplitSource(const Data *, double, Time_Step *, Grid *)
Definition: split_source.c:25
void SetJetDomain(const Data *, int, int, Grid *)
Definition: jet_domain.c:29
void VectorPotentialDiff(double *, int, int, int, Grid *)
double Length_3(int i, int j, int k, Grid *)
Definition: set_geometry.c:186
void UpdateStage(const Data *, Data_Arr, double **, Riemann_Solver *, double, Time_Step *, Grid *)
Definition: update_stage.c:38
void ShowUnits()
Definition: show_config.c:260
void BodyForceVectorGet(double **v, double **g, double *, double *, double *, int beg, int end, Grid *grid)
void FlagShock(const Data *, Grid *)
void ReadBinaryArray(void *, size_t, int, FILE *, int, int)
Definition: bin_io.c:143
void VectorPotentialUpdate(const Data *d, const void *vp, const State_1D *state, const Grid *grid)
void FreeArray3D(void ***)
Definition: arrays.c:56
void RestartFromFile(Runtime *, int, int, Grid *)
Definition: restart.c:17
int GetNghost(void)
Definition: get_nghost.c:18
void WriteTabArray(Output *, char *, Grid *)
Definition: write_tab.c:31
void ParseCmdLineArgs(int, char *argv[], char *, Cmd_Line *)
Definition: cmd_line_opt.c:18
void BodyForcePotentialGet(double **v, double **gphi, double *phi_p, double *phi_c, int beg, int end, Grid *grid)
void FreeArray4D(void ****)
Definition: arrays.c:67
void SetGrid(Runtime *, Grid *)
Definition: set_grid.c:21
void ChangeDumpVar()
Definition: structs.h:346
static Runtime q
void RestartDump(Runtime *)
Definition: restart.c:251
void UserDefBoundary(const Data *, RBox *, int, Grid *)
Definition: init.c:98
int AdvanceStep(const Data *, Riemann_Solver *, Time_Step *, Grid *)
Definition: ctu_step.c:88
char **** Array4D(int, int, int, int, size_t)
Definition: arrays.c:222
void RuntimeSet(Runtime *runtime)
void FreeArray1D(void *)
Definition: arrays.c:37
void HancockStep(const State_1D *, int, int, Grid *)
Definition: hancock.c:136
Image * GetImage(char *)
Definition: set_image.c:35
void SetOutput(Data *d, Runtime *input)
Definition: set_output.c:37
double SolveODE_RK4(double *v0, double *k1, double *v4th, double dt, intList *var_list)
void FD_Flux(const State_1D *state, int beg, int end, double *cmax, Grid *grid)
Definition: fd_flux.c:23