3 static void WENO3_COEFF(
double **,
double **,
double **,
double **,
Grid *);
24 double **v, **vp, **vm, *dvp, *dvm, *dx;
25 double **Lv, **Rv, *lambda;
26 double *R, *L, *P, *M;
27 double b0, S0, wp, tau;
32 static double **Rg, **Lg, **Pg, **Mg;
64 #if CHAR_LIMITING == NO
67 for (i = beg-1; i <= end; i++){
68 for (nv =
NVAR; nv--; ){
69 dv[
i][nv] = v[i+1][nv] - v[
i][nv];
72 for (i = beg; i <= end; i++){
76 #if SHOCK_FLATTENING == MULTID
78 for (nv =
NVAR; nv--; ) {
79 dmm =
MINMOD(dvp[nv], dvm[nv]);
80 vp[
i][nv] = v[
i][nv] + 0.5*dmm;
81 vm[
i][nv] = v[
i][nv] - 0.5*dmm;
88 for (nv = 0; nv <
NVAR; nv++){
89 b0 = dvp[nv]*dvp[nv] + dx2;
90 b1 = dvm[nv]*dvm[nv] + dx2;
92 tau = dvp[nv] - dvm[nv];
104 vp[
i][nv] = v[
i][nv] + (S0*R[
i]*dvp[nv] + P[
i]*S1*R[i-1]*dvm[nv])
106 vm[
i][nv] = v[
i][nv] - (M[
i]*S0*L[
i]*dvp[nv] + S1*L[i-1]*dvm[nv])
118 for (nv =
NVAR; nv--; ) dv[i][nv] = v[i+1][nv] - v[i][nv];
120 for (i = beg; i <= end; i++){
139 #if SHOCK_FLATTENING == MULTID
141 for (nv =
NVAR; nv--; ) {
142 dmm =
MINMOD(dvp[nv], dvm[nv]);
143 vp[
i][nv] = v[
i][nv] + 0.5*dmm;
144 vm[
i][nv] = v[
i][nv] - 0.5*dmm;
151 for (k =
NVAR; k--; ){
152 b0 = dwp[
k]*dwp[
k] + dx2;
153 b1 = dwm[
k]*dwm[
k] + dx2;
155 tau = dwp[
k] - dwm[
k];
161 dwp_lim[
k] = (S0*dwp[
k] + 0.5*S1*dwm[
k])/(2.0*S0 + S1);
162 dwm_lim[
k] = (S1*dwm[
k] + 0.5*S0*dwp[
k])/(2.0*S1 + S0);
169 for (nv =
NFLX; nv--; ){
172 if (nv ==
BXn)
continue;
174 for (k =
NFLX; k--; ){
175 dvpR += dwp_lim[
k]*Rv[nv][
k];
176 dvmR += dwm_lim[
k]*Rv[nv][
k];
178 vp[
i][nv] = v[
i][nv] + dvpR;
179 vm[
i][nv] = v[
i][nv] - dvmR;
191 vp[
i][nv] = v[
i][nv] + dwp_lim[nv];
192 vm[
i][nv] = v[
i][nv] - dwm_lim[nv];
204 for (i = beg; i <= end; i++){
207 if (vp[i][
RHO] < 0.0 || vm[i][
RHO] < 0.0){
208 for (nv =
NFLX; nv--; ){
216 if (vp[i][PRS] < 0.0 || vm[i][PRS] < 0.0){
217 for (nv =
NFLX; nv--; ){
218 dmm =
MINMOD(dvp[PRS], dvm[PRS]);
219 vp[
i][PRS] = v[
i][PRS] + 0.5*dmm;
220 vm[
i][PRS] = v[
i][PRS] - 0.5*dmm;
225 if (vp[i][ENTR] < 0.0 || vm[i][ENTR] < 0.0){
226 dmm =
MINMOD(dvp[ENTR], dvm[ENTR]);
227 vp[
i][ENTR] = v[
i][ENTR] + 0.5*dmm;
228 vm[
i][ENTR] = v[
i][ENTR] - 0.5*dmm;
234 #if PHYSICS == RHD || PHYSICS == RMHD
244 #if SHOCK_FLATTENING == ONED
245 Flatten (state, beg, end, grid);
253 for (i = beg - 1; i <= end; i++) {
262 #if TIME_STEPPING == CHARACTERISTIC_TRACING
264 #elif TIME_STEPPING == HANCOCK
300 beg = 0; end = grid[d].
np_tot - 2;
301 for (i = beg; i <= end; i++){
302 R[d][
i] = dV[i + 1]/(dV[
i] + dV[i + 1]);
303 L[d][
i] = 1.0 - R[d][
i];
305 beg = 1; end = grid[d].
np_tot - 2;
306 for (i = beg; i <= end; i++){
307 P[d][
i] = dV[i + 1]/(dV[
i] + dV[i - 1]);
308 M[d][
i] = dV[i - 1]/(dV[
i] + dV[i + 1]);
double ** v
Cell-centered primitive varables at the base time level, v[i] = .
void VelocityLimiter(double *, double *, double *)
void ConvertTo4vel(double **, int, int)
void Flatten(const State_1D *, int, int, Grid *)
void PrimEigenvectors(double *q, double cs2, double h, double *lambda, double **LL, double **RR)
void CharTracingStep(const State_1D *, int, int, Grid *)
double ** vR
Primitive variables to the right of the interface, .
#define FLAG_MINMOD
Reconstruct using MINMOD limiter.
void States(const State_1D *state, int beg, int end, Grid *grid)
static void WENO3_COEFF(double **, double **, double **, double **, Grid *)
void SoundSpeed2(double **v, double *cs2, double *h, int beg, int end, int pos, Grid *grid)
double ** vp
prim vars at i+1/2 edge, vp[i] = vL(i+1/2)
int g_dir
Specifies the current sweep or direction of integration.
double ** lambda
Characteristic speed associated to Lp and Rp.
void ConvertTo3vel(double **, int, int)
void PrimToChar(double **L, double *v, double *w)
double ** vm
prim vars at i-1/2 edge, vm[i] = vR(i-1/2)
long int NMAX_POINT
Maximum number of points among the three directions, boundaries excluded.
void PrimToCons(double **uprim, double **ucons, int ibeg, int iend)
double * bn
Face magentic field, bn = bx(i+1/2)
double ** um
same as vm, in conservative vars
double ** vL
Primitive variables to the left of the interface, .
double * a2
Sound speed squared.
double ** up
same as vp, in conservative vars
#define ARRAY_2D(nx, ny, type)
double *** Rp
Left and right primitive eigenvectors.
int np_tot
Total number of points in the local domain (boundaries included).
void HancockStep(const State_1D *, int, int, Grid *)