PLUTO
get_area_flux.c
Go to the documentation of this file.
1 #include "pluto.h"
2 
3 /* ********************************************************************* */
4 void GetAreaFlux (const State_1D *state, double **fA,
5  double **fvA, int beg, int end, Grid *grid)
6 /*
7  *
8  *********************************************************************** */
9 {
10  int i,j,k, nv;
11  double A, rp, rp2, rp3, s, s2;
12  double **flux = state->flux;
13 #if ENTROPY_SWITCH
14  double **visc_flux = state->visc_flux;
15  double **visc_src = state->visc_src;
16  double **tc_flux = state->tc_flux;
17  double **res_flux = state->res_flux;
18 #endif
19 
20  if (g_dir == IDIR) {
21 
22  for (i = beg - 1; i <= end; i++){
23  A = grid[IDIR].A[i];
24  rp = grid[IDIR].xr[i];
25 #if GEOMETRY == CYLINDRICAL
26  NVAR_LOOP(nv) fA[i][nv] = flux[i][nv]*A;
27  #if COMPONENTS == 3
28  fA[i][MX3] = flux[i][MX3]*A*A;
29  IF_DUST(fA[i][MX3_D] = flux[i][MX3_D]*A*A;)
30  #endif
31 #elif GEOMETRY == POLAR
32  NVAR_LOOP(nv) fA[i][nv] = flux[i][nv]*A;
33  #if COMPONENTS >= 2
34  fA[i][MX2] *= A;
35  IF_DUST(fA[i][MX2_D] *= A;)
36  #endif
37 #elif GEOMETRY == SPHERICAL
38  rp2 = rp*rp;
39  NVAR_LOOP(nv) fA[i][nv] = flux[i][nv]*rp2;
40  #if COMPONENTS == 3
41  rp3 = rp2*rp;
42  fA[i][MX3] = flux[i][MX3]*rp3;
43  IF_DUST(fA[i][MX3_D] = flux[i][MX3_D]*rp3;)
44  #endif
45  #if PHYSICS == MHD
46  EXPAND( ; ,
47  fA[i][BX2] = flux[i][BX2]*rp; ,
48  fA[i][BX3] = flux[i][BX3]*rp;)
49  #endif
50 #endif
51 
52  #if (ENTROPY_SWITCH) && (VISCOSITY == EXPLICIT)
53  EXPAND(fvA[i][MX1] = visc_flux[i][MX1]*A; ,
54  fvA[i][MX2] = visc_flux[i][MX2]*A; ,
55  fvA[i][MX3] = visc_flux[i][MX3]*A;)
56  #if GEOMETRY == CYLINDRICAL && COMPONENTS == 3
57  fvA[i][MX3] *= rp;
58  #elif GEOMETRY == POLAR && COMPONENTS >= 2
59  fvA[i][MX2] *= rp;
60  #elif GEOMETRY == SPHERICAL && COMPONENTS == 3
61  fvA[i][MX3] *= rp;
62  #endif
63  #if HAVE_ENERGY
64  fvA[i][ENG] = visc_flux[i][ENG]*A;
65  #endif
66  #endif
67  }
68 
69  }else if (g_dir == JDIR){
70 
71  for (j = beg - 1; j <= end; j++){
72 
73 #if GEOMETRY == SPHERICAL
74  s = grid[JDIR].A[j];
75  s2 = s*s;
76 
77  NVAR_LOOP(nv) fA[j][nv] = flux[j][nv]*s;
78  #if COMPONENTS == 3
79  fA[j][MX3] = flux[j][MX3]*s2;
80  IF_DUST(fA[j][MX3_D] = flux[j][MX3_D]*s2;)
81  #endif
82 
83  #if (ENTROPY_SWITCH) && (VISCOSITY == EXPLICIT)
84  EXPAND(fvA[j][iMR] = visc_flux[j][iMR]*s; ,
85  fvA[j][iMTH] = visc_flux[j][iMTH]*s; ,
86  fvA[j][iMPHI] = visc_flux[j][iMPHI]*s2;)
87  #if HAVE_ENERGY
88  fvA[j][ENG] = visc_flux[j][ENG]*s;
89  #endif
90  #endif
91 #endif
92 
93  }
94 
95  }else if (g_dir == KDIR){
96 
97  print1 ("! GetAreaFlux(): should not be called during x3 sweep\n");
98  QUIT_PLUTO(1);
99 
100  }
101 
102 }
103 
#define MX3
Definition: mod_defs.h:22
#define iMPHI
Definition: mod_defs.h:71
#define MX1
Definition: mod_defs.h:20
double ** flux
upwind flux computed with the Riemann solver
Definition: structs.h:149
double ** visc_src
Viscosity source term.
Definition: structs.h:151
#define iMTH
Definition: mod_defs.h:70
void print1(const char *fmt,...)
Definition: amrPluto.cpp:511
double * xr
Definition: structs.h:81
double ** res_flux
Resistive flux (current)
Definition: structs.h:153
#define VISCOSITY
Definition: pluto.h:385
#define SPHERICAL
Definition: pluto.h:36
void GetAreaFlux(const State_1D *state, double **fA, double **fvA, int beg, int end, Grid *grid)
Definition: get_area_flux.c:4
double ** visc_flux
Viscosity flux.
Definition: structs.h:150
#define KDIR
Definition: pluto.h:195
#define POLAR
Definition: pluto.h:35
#define iMR
Definition: mod_defs.h:69
#define IDIR
Definition: pluto.h:193
int g_dir
Specifies the current sweep or direction of integration.
Definition: globals.h:86
#define NVAR_LOOP(n)
Definition: pluto.h:618
Definition: structs.h:78
#define PHYSICS
Definition: definitions_01.h:1
int j
Definition: analysis.c:2
#define MX2
Definition: mod_defs.h:21
int k
Definition: analysis.c:2
double ** tc_flux
Thermal conduction flux.
Definition: structs.h:152
#define GEOMETRY
Definition: definitions_01.h:4
#define CYLINDRICAL
Definition: pluto.h:34
#define MHD
Definition: pluto.h:111
#define s
#define BX3
Definition: mod_defs.h:27
#define COMPONENTS
Definition: definitions_01.h:3
PLUTO main header file.
#define ENTROPY_SWITCH
Definition: pluto.h:337
int i
Definition: analysis.c:2
#define BX2
Definition: mod_defs.h:26
#define JDIR
Definition: pluto.h:194
#define QUIT_PLUTO(e_code)
Definition: macros.h:125
#define EXPLICIT
Definition: pluto.h:67
#define IF_DUST(a)
Definition: pluto.h:625
double * A
Right interface area, A[i] = .
Definition: structs.h:87
#define HAVE_ENERGY
Definition: pluto.h:395