5 #include "PatchPluto.H"
9 #if (EOS != ISOTHERMAL) && (AMR_EN_SWITCH == NO)
22 void PatchPluto::computeRefGradient(FArrayBox& gFab, FArrayBox& UFab,
23 const FArrayBox& a_dV,
const Box& b)
40 CH_assert(m_isDefined);
43 int Uib, Uie, Ujb=0, Uje=0, Ukb=0, Uke=0;
44 int Gib, Gie, Gjb=0, Gje=0, Gkb=0, Gke=0;
47 double x, dqx_p, dqx_m, dqx, d2qx, den_x;
48 double y, dqy_p, dqy_m, dqy, d2qy, den_y;
49 double z, dqz_p, dqz_m, dqz, d2qz, den_z;
51 double qref, gr1, gr2;
54 double ***UU[
NVAR], ***grad;
59 double **rho, **
Bx, **By, dx0,
xi,chi_r;
72 Ubox.
jb = Ubox.
je = Ubox.
kb = Ubox.
ke = 0;
73 Gbox.
jb = Gbox.
je = Gbox.
kb = Gbox.
ke = 0;
76 Ubox.
jb = UFab.loVect()[
JDIR]; Ubox.
je = UFab.hiVect()[
JDIR]; ,
77 Ubox.
kb = UFab.loVect()[
KDIR]; Ubox.
ke = UFab.hiVect()[
KDIR]; );
80 Gbox.
jb = gFab.loVect()[
JDIR]; Gbox.
je = gFab.hiVect()[
JDIR]; ,
81 Gbox.
kb = gFab.loVect()[
KDIR]; Gbox.
ke = gFab.hiVect()[
KDIR]; );
83 for (nv = 0; nv <
NVAR; nv++){
86 Ubox.
ib, Ubox.
ie, UFab.dataPtr(nv));
90 Gbox.
ib, Gbox.
ie, gFab.dataPtr(0));
94 #if REF_CRIT != 1 && REF_CRIT != 2
95 print (
"! TagCells.cpp: Refinement criterion not valid\n");
108 xi = fabs(dx0/m_dx - 1.0);
109 chi_r = (0.2 - 0.37)/(1.0 + xi*
xi) + 0.37;
118 y = (j + 0.5)*m_dx + g_domBeg[
JDIR];
119 x = (i + 0.5)*m_dx + g_domBeg[
IDIR];
121 #if GEOMETRY == CYLINDRICAL
122 rp = (i+0.5)/(i+1.5);
123 rm = (i+0.5)/(i-0.5);
126 dqx = 0.5*(UU[
BY][
k][
j][i+1] - UU[
BY][
k][
j][i-1]);
127 dqy = 0.5*(UU[
BX][
k][j+1][
i] - UU[
BX][
k][j-1][
i]);
130 gr1 = fabs(dqx - dqy)/(fabs(dqx) + fabs(dqy) + m_dx/dx0*sqrt(pm));
131 grad[
k][
j][
i] = gr1/chi_r;
139 for (nv = 0; nv <
NVAR; nv++){
142 #if CHOMBO_REFINEMENT_VAR == -1
int jb
Lower corner index in the x2 direction.
#define BOX_LOOP(B, k, j, i)
int kb
Lower corner index in the x3 direction.
void FreeArrayBox(double ***t, long nrl, long ncl, long ndl)
int ib
Lower corner index in the x1 direction.
void print(const char *fmt,...)
double g_domBeg[3]
Lower limits of the computational domain.
D_EXPAND(tot/[n]=(double) grid[IDIR].np_int_glob;, tot/[n]=(double) grid[JDIR].np_int_glob;, tot/[n]=(double) grid[KDIR].np_int_glob;)
int ie
Upper corner index in the x1 direction.
int ke
Upper corner index in the x3 direction.
int je
Upper corner index in the x2 direction.
double *** ArrayBoxMap(int nrl, int nrh, int ncl, int nch, int ndl, int ndh, double *uptr)
void FreeArrayBoxMap(double ***t, int nrl, int nrh, int ncl, int nch, int ndl, int ndh)
#define QUIT_PLUTO(e_code)