TYCHO  1.3.0
 All Data Structures Files Functions Variables Enumerations Enumerator
/home/kapf/tycho_docu/sweep_z.c
Go to the documentation of this file.
1 /*
2  * sweep_z.c
3  *
4  * Author: Wolfgang Kapferer
5  */
6 
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <math.h>
10 
11 #ifdef _OPENMP
12 #include <omp.h>
13 #endif
14 
15 #include "variables_global.h"
16 #include "prototypes.h"
17 
21 inline double max_sweep_z(double a, double b) {
22  double tmp;
23 
24  if (a < b) tmp = b;
25  if (a == b)tmp = b;
26  if (a > b) tmp = a;
27 
28  return tmp;
29 }
30 
35 int sweep_z(int x, int y, int z, int flag) {
36  int i, j, k, n, nmin, nmax;
37 
38  //1D variables
39  double *rho_1D, *pre_1D, *eng_1D, *vx_1D, *vy_1D, *vz_1D, *marker_1D;
40  //1D variables for viscosity
41  double *rhodown, *rhoup, *rhofront, *rhoback;
42  double *vxdown, *vxup, *vxfront, *vxback;
43  double *vydown, *vyup, *vyfront, *vyback;
44  double *vzdown, *vzup, *vzfront, *vzback;
45  //for pressure calculations on the solid
46  double *pressure_solid_1D;
47  double *xa, *dx;
48  double *dx0, *xa0;
49  double *a_coef, *ai_coef, *b_coef, *bi_coef, *c_coef, *ci_coef;
50  double *d_x;
51  double *diffa;
52  //parabola
53  double *da, *ar;
54  double *pl, *p6, *rl, *r6;
55  double *u6, *ul, *vl, *v6;
56  double *wl, *w6, *el, *e6;
57  double *ql, *q6, *dp, *du;
58  double *dv, *dw, *dq, *de;
59  double *scratch1, *scratch2, *scratch3;
60  double *dr, *deltaa;
61  //for states
62  double *plft, *prgh, *ulft, *urgh, *rlft, *rrgh, *Cdtdx, *fCdtdx;
63  // for flattening
64  double *steep, *flat;
65  double **para;
66  //riemann solver
67  double *clft, *crgh, *plfti, *prghi, *pmid, *pmold, *wlft, *wrgh, *zlft, *zrgh;
68  double *umidl, *umidr, *umid;
69  //evolve
70  double *dm, *dtbdm, *upmid, *xa1, *xa2, *xa3;
71  double *vx_1D_old;
72  double *dvol, *dvol0, *dvol1;
73  //remap
74  double *delta;
75  double *fluxr, *fluxu, *fluxv, *fluxw, *fluxe, *fluxq;
76  double *dm0;
77  double *e_int_1D;
78  // direction setter 0==x, 1==y, 2==z
79  int direction = 2;
80 
81  dom_state state, state_next;
82 
83 #ifdef _OPENMP
84 #pragma omp parallel default(none) \
85  private(i, j, k, n, nmin, nmax, state, state_next, rho_1D, pre_1D,\
86  eng_1D, vx_1D, vy_1D, vz_1D, marker_1D, \
87  pressure_solid_1D, dx0, xa0, xa, dx, \
88  a_coef, ai_coef, b_coef, bi_coef, c_coef, ci_coef, \
89  d_x, diffa, da, ar, pl, p6, rl, r6, \
90  u6, ul, vl, v6, wl, w6, \
91  el, e6, ql, q6, dp, du, dr, deltaa, \
92  dv, dw, dq, de, scratch1, scratch2, scratch3, \
93  plft, prgh, ulft, urgh, rlft, rrgh, Cdtdx, fCdtdx, \
94  steep, flat, para, clft, crgh, plfti, prghi, pmid, \
95  pmold, wlft, wrgh, zlft, zrgh, umidl, umidr, umid, \
96  dm, dtbdm, upmid, xa1, xa2, xa3, vx_1D_old, \
97  dvol, dvol0, dvol1, delta, fluxr, fluxu, fluxv, \
98  fluxw, fluxe, fluxq, dm0, e_int_1D, rhodown, rhoup, \
99  rhofront, rhoback, vxdown, vxup, vxfront, vxback, \
100  vydown, vyup, vyfront, vyback, vzdown, vzup, vzfront, \
101  vzback) \
102  shared(x, y, z, rho, dom, \
103  pre, vx, vy, vz, marker, zza, zdz, \
104  pressure_on_solid, smallp, smallr, small, Gamma, max_array_length, flag, \
105  direction, obstacle_density, obstacle_temperature, advection, with_obstacles, \
106  viscosity_on_off, bound, inflow_density, inflow_velocity, dimension, \
107  rho_visc, vx_visc, vy_visc, vz_visc)
108  {
109 #endif
110  //==============================================================================
111  init_ppm(&rho_1D, &pre_1D, &eng_1D, &vx_1D, &vy_1D, &vz_1D, &marker_1D, &dx0, &xa0, &xa, &dx,
112  &a_coef, &ai_coef, &b_coef, &bi_coef, &c_coef, &ci_coef, &d_x, &da, &ar,
113  &dp, &dr, &du, &pl, &p6, &rl, &r6, &ul, &u6, &vl, &v6, &wl, &w6, &el, &e6, &ql,
114  &q6, &deltaa, &dv, &dw, &dq, &de, &scratch1, &scratch2, &scratch3, &diffa,
115  &plft, &prgh, &ulft, &urgh, &rlft, &rrgh, &Cdtdx, &fCdtdx, &clft, &crgh,
116  &plfti, &prghi, &pmid, &pmold, &wlft, &wrgh, &zlft, &zrgh, &umidl, &umidr,
117  &umid, &dm, &dtbdm, &upmid, &xa1, &xa2, &xa3, &vx_1D_old, &e_int_1D, &dvol,
118  &dvol0, &dvol1, &delta, &fluxr, &fluxu, &fluxv, &fluxw, &fluxe, &fluxq,
119  &dm0, &steep, &flat, &para, &pressure_solid_1D, &rhodown, &rhoup, &rhofront,
120  &rhoback, &vxdown, &vxup, &vxfront, &vxback, &vydown, &vyup, &vyfront,
121  &vyback, &vzdown, &vzup, &vzfront, &vzback, dimension);
122 
123  //==============================================================================
124 
125 
126  for (j = 0; j < y; j++) {
127 
128 #ifdef _OPENMP
129 #pragma omp for schedule(static)
130 #endif
131 
132  for (i = 0; i < x; i++) {
133 
134  int lefter;
135 
136  nmin = 0;
137  nmax = 0;
138  lefter = 0;
139 
140  for (k = 0; k < z; k++) {
141 
142  n = k + 6 - nmin;
143 
144  xa[n] = zza[k];
145  dx[n] = zdz[k];
146  xa0[n] = zza[k];
147  dx0[n] = zdz[k];
148 
149  // Copy parts of a line from 3D domain into 1D domain
150  if (dom[i][j][k] == 0) {
151  state = DOM_FLUID;
152 
153  rho_1D[n] = rho[i][j][k];
154  pre_1D[n] = pre[i][j][k];
155  vx_1D[n] = vz[i][j][k];
156  vy_1D[n] = vx[i][j][k];
157  vz_1D[n] = vy[i][j][k];
158 
159  if (advection == 1) marker_1D[n] = marker[i][j][k];
160 
161  if (with_obstacles == 1) pressure_solid_1D[n] = pressure_on_solid[i][j][k];
162 
163  pre_1D[n] = max_sweep_z(smallp, pre_1D[n]);
164  eng_1D[n] = pre_1D[n] / (rho_1D[n] * Gamma) + 0.5 * ((pow(vx_1D[n], 2))+(pow(vy_1D[n], 2))+(pow(vz_1D[n], 2)));
165 
166  // if viscosity is set on
167  if (viscosity_on_off == 1) {
168  if (dimension > 1) {
169  //====================================================
170  //first the j-1 case no obstacle
171  if ((i > 0) && (dom[i - 1][j][k] == 0) && (i < x - 1)) {
172  rhodown[n] = rho[i - 1][j ][k];
173  vxdown[n] = vz[i - 1][j ][k];
174  vydown[n] = vy[i - 1][j][k];
175  vzdown[n] = vx[i - 1][j][k];
176  }
177  if ((i > 0) && (dom[i - 1][j][k] != 0) && (i < x - 1)) {
178  rhodown[n] = 0.0;
179  vxdown[n] = 0.0;
180  vydown[n] = 0.0;
181  vzdown[n] = 0.0;
182  }
183  //at j==0 no obstacle is checked before entering viscosity part
184  if (i == 0) {
185  if (bound.left == 0) rhodown[n] = rho_visc[i][j][k];
186  if (bound.left == 1) rhodown[n] = rho_visc[i][j][k];
187  if (bound.left == 2) rhodown[n] = small;
188  if (bound.left == 3) rhodown[n] = rho_visc[i][j][k];
189  if (bound.left == 4) rhodown[n] = inflow_density;
190  if (bound.left == 5) rhodown[n] = rho_visc[x - 1][y][k];
191 
192  if (bound.left == 0) vxdown[n] = vz_visc[i][j][k];
193  if (bound.left == 1) vxdown[n] = -vz_visc[i][j][k];
194  if (bound.left == 2) vxdown[n] = small;
195  if (bound.left == 3) vxdown[n] = vz_visc[i][j][k];
196  if (bound.left == 4) vxdown[n] = 0.0;
197  if (bound.left == 5) vxdown[n] = vz_visc[x - 1][j][k];
198 
199  if (bound.left == 0) vydown[n] = vx_visc[i][j][k];
200  if (bound.left == 1) vydown[n] = -vx_visc[i][j][k];
201  if (bound.left == 2) vydown[n] = small;
202  if (bound.left == 3) {
203  if (vy_visc[i][j][k] > 0.0) vydown[n] = small;
204  if (vy_visc[i][j][k] <= 0.0) vydown[n] = vx_visc[i][j][k];
205  }
206 
207  if (bound.left == 4) vydown[n] = inflow_velocity;
208  if (bound.left == 5) vydown[n] = vy_visc[x - 1][j][k];
209 
210  if (bound.left == 0) vzdown[n] = vy_visc[i][j][k];
211  if (bound.left == 1) vzdown[n] = -vy_visc[i][j][k];
212  if (bound.left == 2) vzdown[n] = small;
213  if (bound.left == 3) vzdown[n] = vy_visc[i][j][k];
214  if (bound.left == 4) vzdown[n] = 0.0;
215  if (bound.left == 5) vzdown[n] = vz_visc[x - 1][j][k];
216 
217  rhoup[n] = rho_visc[i + 1][j][k];
218  vxup[n] = vx_visc[i + 1][j][k];
219  vyup[n] = vy_visc[i + 1][j][k];
220  vzup[n] = vz_visc[i + 1][j][k];
221  }
222  //====================================================
223 
224  //====================================================
225  //now the case j = y - 1 no obstacle
226  if ((i < x - 1) && (dom[i + 1][j][k] == 0) && (i > 0)) {
227  rhoup[n] = rho_visc[i + 1][j][k];
228  vxup[n] = vz_visc[i + 1][j][k];
229  vyup[n] = vx_visc[i + 1][j][k];
230  vzup[n] = vy_visc[i + 1][j][k];
231  }
232  if ((i < x - 1) && (dom[i + 1][j][k] != 0) && (i > 0)) {
233  rhoup[n] = 0.0;
234  vxup[n] = 0.0;
235  vyup[n] = 0.0;
236  vzup[n] = 0.0;
237  }
238  //at j==0 no obstacle is checked before entering viscosity part
239  if (i == x - 1) {
240  if (bound.right == 0) rhoup[n] = rho_visc[i][j][k];
241  if (bound.right == 1) rhoup[n] = rho_visc[i][j][k];
242  if (bound.right == 2) rhoup[n] = small;
243  if (bound.right == 3) rhoup[n] = rho_visc[i][j][k];
244  if (bound.right == 4) rhoup[n] = inflow_density;
245  if (bound.right == 5) rhoup[n] = rho_visc[0][j][k];
246 
247  if (bound.right == 0) vxup[n] = vz_visc[i][j][k];
248  if (bound.right == 1) vxup[n] = -vz_visc[i][j][k];
249  if (bound.right == 2) vxup[n] = small;
250  if (bound.right == 3) vxup[n] = vz_visc[i][j][k];
251  if (bound.right == 4) vxup[n] = 0.0;
252  if (bound.right == 5) vxup[n] = vx_visc[0][j][k];
253  ;
254 
255  if (bound.right == 0) vyup[n] = vx_visc[i][j][k];
256  if (bound.right == 1) vyup[n] = -vx_visc[i][j][k];
257  if (bound.right == 2) vyup[n] = small;
258  if (bound.right == 3) {
259  if (vy_visc[i][j][k] < 0.0) vyup[n] = small;
260  if (vy_visc[i][j][k] >= 0.0) vyup[n] = vx_visc[i][j][k];
261  }
262 
263  if (bound.right == 4) vyup[n] = inflow_velocity;
264  if (bound.right == 5) vyup[n] = vx_visc[0][j][k];
265 
266  if (bound.right == 0) vzup[n] = vy_visc[i][j][k];
267  if (bound.right == 1) vzup[n] = -vy_visc[i][j][k];
268  if (bound.right == 2) vzup[n] = small;
269  if (bound.right == 3) vzup[n] = vy_visc[i][j][k];
270  if (bound.right == 4) vzup[n] = 0.0;
271  if (bound.right == 5) vzup[n] = vy_visc[0][j][k];
272 
273  rhodown[n] = rho_visc[i - 1][j][k];
274  vxdown[n] = vx_visc[i - 1][j][k];
275  vydown[n] = vy_visc[i - 1][j][k];
276  vzdown[n] = vz_visc[i - 1][j][k];
277  }
278  //====================================================
279  }
280  if (dimension > 2) {
281  //====================================================
282  //now the k > 0 case no obstacle
283 
284  if ((j > 0) && (dom[i][j - 1][k] == 0) && (j < y - 1)) {
285  rhofront[n] = rho_visc[i][j - 1][k];
286  vxfront[n] = vz_visc[i][j - 1][k];
287  vyfront[n] = vx_visc[i][j - 1][k];
288  vzfront[n] = vy_visc[i][j - 1][k];
289  }
290  if ((j > 0) && (dom[i][j - 1][k] != 0) && (j < y - 1)) {
291  rhofront[n] = 0.0;
292  vxfront[n] = 0.0;
293  vyfront[n] = 0.0;
294  vzfront[n] = 0.0;
295  }
296  //at k == 0 no obstacle is check-1ed before entering viscosity part
297  if (j == 0) {
298  if (bound.down == 0) rhofront[n] = rho_visc[i][j][k];
299  if (bound.down == 1) rhofront[n] = rho_visc[i][j][k];
300  if (bound.down == 2) rhofront[n] = small;
301  if (bound.down == 3) rhofront[n] = rho_visc[i][j][k];
302  if (bound.down == 4) rhofront[n] = inflow_density;
303  if (bound.down == 5) rhofront[n] = rho_visc[i][y - 1][k];
304 
305  if (bound.down == 0) vxfront[n] = vz_visc[i][j][k];
306  if (bound.down == 1) vxfront[n] = -vz_visc[i][j][k];
307  if (bound.down == 2) vxfront[n] = small;
308  if (bound.down == 3) vxfront[n] = vz_visc[i][j][k];
309  if (bound.down == 4) vxfront[n] = 0.0;
310  if (bound.down == 5) vxfront[n] = vz_visc[i][y - 1][k];
311 
312  if (bound.down == 0) vyfront[n] = vx_visc[i][j][k];
313  if (bound.down == 1) vyfront[n] = -vx_visc[i][j][k];
314  if (bound.down == 2) vyfront[n] = small;
315  if (bound.down == 3) vyfront[n] = vx_visc[i][j][k];
316  if (bound.down == 4) vyfront[n] = inflow_velocity;
317  if (bound.down == 5) vyfront[n] = vx_visc[i][y - 1][k];
318 
319  if (bound.down == 0) vzfront[n] = vy_visc[i][j][k];
320  if (bound.down == 1) vzfront[n] = -vy_visc[i][j][k];
321  if (bound.down == 2) vzfront[n] = small;
322  if (bound.down == 3) {
323  if (vz_visc[i][j][k] > 0.0) vzfront[n] = small;
324  if (vz_visc[i][j][k] <= 0.0) vzfront[n] = vy_visc[i][j][k];
325  }
326  if (bound.down == 4) vzfront[n] = 0.0;
327  if (bound.down == 5) vzfront[n] = vy_visc[i][y - 1][z];
328 
329  rhoback[n] = rho_visc[i][j + 1][k];
330  vxback[n] = vx_visc[i][j + 1][k];
331  vyback[n] = vy_visc[i][j + 1][k];
332  vzback[n] = vz_visc[i][j + 1][k];
333  }
334  //====================================================
335 
336  //====================================================
337  //now the k < z-1 case no obstacle
338  if ((j < y - 1) && (dom[i][j + 1][k ] == 0) && (j > 0)) {
339  rhoback[n] = rho_visc[i][j + 1][k];
340  vxback[n] = vz_visc[i][j + 1][k ];
341  vyback[n] = vx_visc[i][j + 1][k ];
342  vzback[n] = vy_visc[i][j + 1][k ];
343  }
344  if ((j < y - 1) && (dom[i][j + 1][k] != 0) && (j > 0)) {
345  rhoback[n] = 0.0;
346  vxback[n] = 0.0;
347  vyback[n] = 0.0;
348  vzback[n] = 0.0;
349  }
350  //at k == z - 1 no obstacle is check-1ed before entering viscosity part
351  if (j == y - 1) {
352  if (bound.up == 0) rhoback[n] = rho_visc[i][j][k];
353  if (bound.up == 1) rhoback[n] = rho_visc[i][j][k];
354  if (bound.up == 2) rhoback[n] = small;
355  if (bound.up == 3) rhoback[n] = rho_visc[i][j][k];
356  if (bound.up == 4) rhoback[n] = inflow_density;
357  if (bound.up == 5) rhoback[n] = rho_visc[i][0][k];
358 
359  if (bound.up == 0) vxback[n] = vx_visc[i][j][k];
360  if (bound.up == 1) vxback[n] = -vx_visc[i][j][k];
361  if (bound.up == 2) vxback[n] = small;
362  if (bound.up == 3) vxback[n] = vx_visc[i][j][k];
363  if (bound.up == 4) vxback[n] = 0.0;
364  if (bound.up == 5) vxback[n] = vx_visc[i][0][k];
365 
366  if (bound.up == 0) vyback[n] = vy_visc[i][j][k];
367  if (bound.up == 1) vyback[n] = -vy_visc[i][j][k];
368  if (bound.up == 2) vyback[n] = small;
369  if (bound.up == 3) vyback[n] = vy_visc[i][j][k];
370  if (bound.up == 4) vyback[n] = inflow_velocity;
371  if (bound.up == 5) vyback[n] = vy_visc[i][0][k];
372 
373  if (bound.up == 0) vzback[n] = vz_visc[i][j][k];
374  if (bound.up == 1) vzback[n] = -vz_visc[i][j][k];
375  if (bound.up == 2) vzback[n] = small;
376  if (bound.up == 3) {
377  if (vz_visc[i][j][k] < 0.0) vzback[n] = small;
378  if (vz_visc[i][j][k] >= 0.0) vzback[n] = vz_visc[i][j][k];
379  }
380  if (bound.up == 4) vzback[n] = 0.0;
381  if (bound.up == 5) vzback[n] = vz_visc[i][0][k];
382 
383  rhofront[n] = rho_visc[i][j - 1][k];
384  vxfront[n] = vx_visc[i][j - 1][k];
385  vyfront[n] = vy_visc[i][j - 1][k];
386  vzfront[n] = vz_visc[i][j - 1][k];
387  }
388  //====================================================
389  }
390  }
391 
392  } else if (dom[i][j][k] == 1) {
393  state = DOM_SOLID;
394 
395  rho_1D[n] = obstacle_density;
396  pre_1D[n] = obstacle_temperature;
397  vx_1D[n] = 0.0;
398  vy_1D[n] = 0.0;
399  vz_1D[n] = 0.0;
400 
401  if (advection == 1) marker_1D[n] = 0.0;
402 
403  if (with_obstacles == 1) pressure_solid_1D[n] = 0.0;
404 
405  pre_1D[n] = 0.0;
406  eng_1D[n] = 0.0;
407 
408  }
409 
410 
411  if (k < z - 1) {
412  state_next = (dom[i][j][k + 1] == 0) ? DOM_FLUID : DOM_SOLID;
413  } else {
414  state_next = (state == DOM_FLUID) ? DOM_SOLID : DOM_FLUID;
415  }
416 
417  if (state != state_next) {
418  if (state == DOM_FLUID) {
419  //checks if we are at the most left or most right part of the domain
420  int bound_checker;
421  int kk;
422  int nminz2 = 6;
423  int nmaxz2 = (nmax - nmin) + 6;
424 
425  //if the most left boundary is reached bound_checker is 0
426  //if the most right boundary is reached bound_checker is 0
427  if ((nmin == 0) || (nmax == (z - 1))) {
428  bound_checker = 0;
429  }
430  //Now we consider an obstacle in the row
431  if ((nmax - nmin) != (z - 1)) {
432  bound_checker = 1;
433  //is the left boundary at the edge of the computational domain
434  //lefter = 1
435  if (nmin == 0) lefter = 1;
436  //is the right boundary at the edge of the computational domain
437  //lefter =2;
438  if (nmax == (z - 1)) lefter = 2;
439  //if there is an obstacle left and right than
440  //lefter = 3
441  if ((nmin != 0) && (nmax != (z - 1))) lefter = 3;
442  }
443 
444  ppm_step(i, j, k, direction, flag, nminz2, nmaxz2, a_coef, ai_coef, b_coef, bi_coef, c_coef, ci_coef,
445  d_x, diffa, da, ar, pl, p6, rl, r6, u6, ul, vl, v6, wl, w6, el,
446  e6, ql, q6, dp, du, dr, dv, dw, dq, de, scratch1, scratch2, scratch3,
447  plft, prgh, ulft, urgh, rlft, rrgh, Cdtdx, fCdtdx, steep, flat,
448  para, clft, crgh, plfti, prghi, pmid, pmold, wlft, wrgh, zlft,
449  zrgh, umidl, umidr, umid, dm, dtbdm, upmid, xa1, xa2, xa3,
450  vx_1D_old, dvol, dvol0, dvol1, delta, fluxr, fluxu, fluxv,
451  fluxw, fluxe, fluxq, dm0, e_int_1D, rho_1D, pre_1D, eng_1D,
452  vx_1D, vy_1D, vz_1D, marker_1D, pressure_solid_1D, dx0, xa0,
453  xa, dx, bound_checker, lefter, rhodown, rhoup, rhofront,
454  rhoback, vxdown, vxup, vxfront, vxback, vydown, vyup, vyfront,
455  vyback, vzdown, vzup, vzfront, vzback, viscosity_on_off, dimension);
456 
457  //put the solution back into the 3D arrays
458  for (kk = nmin; kk <= nmax; kk++) {
459  n = kk + 6 - nmin;
460 
461  rho[i][j][kk] = rho_1D[n];
462  pre[i][j][kk] = pre_1D[n];
463  vz[i][j][kk] = vx_1D[n];
464  vx[i][j][kk] = vy_1D[n];
465  vy[i][j][kk] = vz_1D[n];
466 
467  if (advection == 1) marker[i][j][kk] = marker_1D[n];
468 
469  //for the pressure on the obstacle calculation
470  if (with_obstacles == 1) pressure_on_solid[i][j][kk] = pressure_solid_1D[n];
471  }
472 
473  } else if (state == DOM_SOLID) {
474  nmin = nmax + 1;
475  }
476  }
477  nmax++;
478  }
479  }
480  }
481  //free section
482  ppm_free(&rho_1D, &pre_1D, &eng_1D, &vx_1D, &vy_1D, &vz_1D, &marker_1D,
483  &pressure_solid_1D, &dx0, &xa0, &xa, &dx, &a_coef, &ai_coef, &b_coef,
484  &bi_coef, &c_coef, &ci_coef, &d_x, &da, &ar,
485  &dp, &dr, &du, &pl, &p6, &rl, &r6, &ul, &u6, &vl, &v6, &wl, &w6, &el, &e6, &ql,
486  &q6, &deltaa, &dv, &dw, &dq, &de, &scratch1, &scratch2, &scratch3, &diffa,
487  &plft, &prgh, &ulft, &urgh, &rlft, &rrgh, &Cdtdx, &fCdtdx, &clft, &crgh,
488  &plfti, &prghi, &pmid, &pmold, &wlft, &wrgh, &zlft, &zrgh, &umidl, &umidr,
489  &umid, &dm, &dtbdm, &upmid, &xa1, &xa2, &xa3, &vx_1D_old, &e_int_1D, &dvol,
490  &dvol0, &dvol1, &delta, &fluxr, &fluxu, &fluxv, &fluxw, &fluxe, &fluxq,
491  &dm0, &steep, &flat, &para, &rhodown, &rhoup, &rhofront,
492  &rhoback, &vxdown, &vxup, &vxfront, &vxback, &vydown, &vyup, &vyfront,
493  &vyback, &vzdown, &vzup, &vzfront, &vzback, dimension);
494 #ifdef _OPENMP
495  }
496 #endif
497 
498  return 0;
499 }
500