TYCHO  1.3.0
 All Data Structures Files Functions Variables Enumerations Enumerator
/home/kapf/tycho_docu/ppm_step.c
Go to the documentation of this file.
1 /*
2  * ppm_step.c
3  *
4  * Author: Wolfgang Kapferer
5  */
6 
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <math.h>
10 
11 #include "variables_global.h"
12 #include "prototypes.h"
13 
24 int ppm_step(int i, int j, int k, int direction, int flag, int nmin, int nmax, double *a_coef, double *ai_coef,
25  double *b_coef, double *bi_coef, double *c_coef, double *ci_coef,
26  double *d_x, double *diffa, double *da, double *ar, double *pl,
27  double *p6, double *rl, double *r6, double *u6, double *ul,
28  double *vl, double *v6, double *wl, double *w6, double *el,
29  double *e6, double *ql, double *q6, double *dp, double *du,
30  double *dr, double *dv, double *dw, double *dq, double *de,
31  double *scratch1, double *scratch2, double *scratch3,
32  double *plft, double *prgh, double *ulft, double *urgh,
33  double *rlft, double *rrgh, double *Cdtdx, double *fCdtdx,
34  double *steep, double *flat, double **para, double *clft,
35  double *crgh, double *plfti, double *prghi, double *pmid,
36  double *pmold, double *wlft, double *wrgh, double *zlft,
37  double *zrgh, double *umidl, double *umidr, double *umid,
38  double *dm, double *dtbdm, double *upmid, double *xa1, double *xa2, double *xa3,
39  double *vx_1D_old, double *dvol, double *dvol0, double *dvol1,
40  double *delta, double *fluxr, double *fluxu, double *fluxv, double *fluxw,
41  double *fluxe, double *fluxq, double *dm0, double *e_int_1D, double *rho_1D,
42  double *pre_1D, double *eng_1D, double *vx_1D, double *vy_1D,
43  double *vz_1D, double *marker_1D, double *pressure_solid_1D,
44  double *dx0, double *xa0, double *xa, double *dx, int bound_checker, int lefter,
45  double *rhodown, double *rhoup, double *rhofront, double *rhoback, double *vxdown,
46  double *vxup, double *vxfront, double *vxback, double *vydown, double *vyup,
47  double *vyfront, double *vyback, double *vzdown, double *vzup, double *vzfront,
48  double *vzback, int viscosity_on_off, int dimension) {
49 
50  int n;
51 
52  set_boundary(nmin, nmax, flag, bound_checker, lefter, rho_1D, eng_1D, pre_1D, vx_1D,
53  vy_1D, vz_1D, pressure_solid_1D, xa0, dx0, xa, dx, rhodown, rhoup, rhofront,
54  rhoback, vxdown, vxup, vxfront, vxback, vydown, vyup, vyfront, vyback, vzdown,
55  vzup, vzfront, vzback, viscosity_on_off, dimension);
56 
57  para_coef(nmin - 4, nmax + 5, flag, a_coef, dx,
58  ai_coef, b_coef, bi_coef, c_coef,
59  d_x, para, ci_coef);
60 
61  volume(nmin, nmax, dvol, dx, dvol0, dx0);
62 
63  flatten(nmin, nmax, pre_1D, vx_1D, steep, flat);
64 
65  parabola(nmin - 4, nmax + 4, pre_1D, dp, p6, pl, 0, diffa,
66  da, para, ar, flat, scratch1, scratch2, scratch3);
67  parabola(nmin - 4, nmax + 4, rho_1D, dr, r6, rl, 1, diffa,
68  da, para, ar, flat, scratch1, scratch2, scratch3);
69  parabola(nmin - 4, nmax + 4, vx_1D, du, u6, ul, 2, diffa,
70  da, para, ar, flat, scratch1, scratch2, scratch3);
71 
72  states(nmin, nmax, flag, pre_1D, rho_1D, dx, Cdtdx, fCdtdx, plft,
73  pl, dp, p6, ulft, ul, du, u6, rlft, rl, dr,
74  r6, prgh, urgh, rrgh);
75 
76  riemann(nmin - 3, nmax + 4, clft, crgh, rlft, rrgh, plfti,
77  prghi, pmid, pmold, plft, wrgh, prgh, wlft,
78  zlft, zrgh, umidl, umidr, umid, urgh, ulft);
79 
80  evolve(nmin, nmax, flag, rho_1D, dvol, dm, dtbdm,
81  xa1, xa, dvol1, umid, upmid, pmid, xa2,
82  dx, xa3, vx_1D_old, vx_1D, vy_1D, vz_1D,
83  eng_1D, e_int_1D, pre_1D);
84 
85  // if viscosity is set on
86  if (viscosity_on_off == 1) {
87  viscosity(i, j, k, flag, nmin, nmax, rho_1D, vx_1D, vy_1D, vz_1D, pre_1D,
88  e_int_1D, eng_1D, lefter, rhodown, rhoup, rhofront, rhoback, vxdown, vxup,
89  vxfront, vxback, vydown, vyup, vyfront, vyback, vzdown, vzup,
90  vzfront, vzback, dimension);
91  }
92 
93  remap(nmin, nmax, flag, a_coef, dx,
94  ai_coef, b_coef, bi_coef, c_coef,
95  d_x, para, ci_coef, dr, r6, rl, diffa,
96  da, ar, flat, scratch1, scratch2, scratch3,
97  du, u6, ul, dv, v6, vl, w6, wl,
98  dq, q6, ql, de, e6, el, xa, xa0, delta,
99  fluxr, fluxu, fluxv, fluxw, dw, fluxe, fluxq,
100  dm, rho_1D, dvol, dvol0, dm0, vx_1D, vy_1D,
101  vz_1D, eng_1D, e_int_1D, pre_1D);
102 
103 
104  if (advection == 1) {
105  advect(nmin, nmax, flag, dx, vx_1D, marker_1D);
106  }
107 
108 
109  return 0;
110 }