18 static double LimO3Func (
double, 
double, 
double);
 
   29   double **v, **vp, **vm, *dvp, *dvm, *
dx;
 
   30   double **L, **R, *lambda;
 
   58   #if CHAR_LIMITING == NO   
   61    for (i = beg-1; i <= 
end; i++){
 
   62    for (nv = 
NVAR; nv--; ){
 
   63      dv[
i][nv] = v[i+1][nv] - v[
i][nv];
 
   66    for (i = beg; i <= 
end; i++){
 
   70      #if SHOCK_FLATTENING == MULTID     
   72         for (nv = 
NVAR; nv--;    ) {
 
   73           dmm = 
MINMOD(dvp[nv], dvm[nv]);
 
   74           vp[
i][nv] = v[
i][nv] + 0.5*dmm;
 
   75           vm[
i][nv] = v[
i][nv] - 0.5*dmm;
 
   81      for (nv = 
NVAR; nv--; ){
 
   82        vp[
i][nv] = v[
i][nv] + 0.5*dvp[nv]*
LimO3Func(dvp[nv], dvm[nv], dx[i]);
 
   83        vm[
i][nv] = v[
i][nv] - 0.5*dvm[nv]*
LimO3Func(dvm[nv], dvp[nv], dx[i]);
 
   95    for (i = beg; i <= 
end; i++){
 
  113      #if SHOCK_FLATTENING == MULTID     
  115         for (nv = 
NVAR; nv--;    ) {
 
  116           dmm = 
MINMOD(dvp[nv], dvm[nv]);
 
  117           vp[
i][nv] = v[
i][nv] + 0.5*dmm;
 
  118           vm[
i][nv] = v[
i][nv] - 0.5*dmm;
 
  128      for (k = 
NFLX; k--; ){
 
  129        dwp_lim[
k] = dwp[
k]*
LimO3Func(dwp[k], dwm[k], dx[i]);
 
  130        dwm_lim[
k] = dwm[
k]*
LimO3Func(dwm[k], dwp[k], dx[i]);
 
  132      for (nv = 
NFLX; nv--;   ){
 
  135         if (nv == 
BXn) 
continue;
 
  137        for (k = 
NFLX; k--; ){
 
  138          dvpR += dwp_lim[
k]*R[nv][
k];
 
  139          dvmR += dwm_lim[
k]*R[nv][
k];
 
  141        vp[
i][nv] = v[
i][nv] + 0.5*dvpR;
 
  142        vm[
i][nv] = v[
i][nv] - 0.5*dvmR;
 
  153        dvpR = dvp[nv]*
LimO3Func(dvp[nv], dvm[nv], dx[i]);
 
  154        dvmR = dvm[nv]*
LimO3Func(dvm[nv], dvp[nv], dx[i]);
 
  155        vp[
i][nv] = v[
i][nv] + 0.5*dvpR;
 
  156        vm[
i][nv] = v[
i][nv] - 0.5*dvmR;
 
  168   for (i = beg; i <= 
end; i++){
 
  171     if (vp[i][
RHO] < 0.0 || vm[i][
RHO] < 0.0){
 
  178      if (vp[i][PRS] < 0.0 || vm[i][PRS] < 0.0){
 
  179        dmm = 
MINMOD(dvp[PRS], dvm[PRS]);
 
  180        vp[
i][PRS] = v[
i][PRS] + 0.5*dmm;
 
  181        vm[
i][PRS] = v[
i][PRS] - 0.5*dmm;
 
  185      if (vp[i][ENTR] < 0.0 || vm[i][ENTR] < 0.0){
 
  186        dmm = 
MINMOD(dvp[ENTR], dvm[ENTR]);
 
  187        vp[
i][ENTR] = v[
i][ENTR] + 0.5*dmm;
 
  188        vm[
i][ENTR] = v[
i][ENTR] - 0.5*dmm;
 
  194     #if PHYSICS == RHD || PHYSICS == RMHD 
  203   #if SHOCK_FLATTENING == ONED  
  204    Flatten (state, beg, end, grid);
 
  212    for (i = beg - 1; i <= 
end; i++) {
 
  221 #if TIME_STEPPING == CHARACTERISTIC_TRACING 
  223 #elif TIME_STEPPING == HANCOCK 
  255   double a,b,
c,
q, th, lim;
 
  256   double eta, psi, 
eps = 1.e-12;
 
  258   th  = dvm/(dvp + 1.e-16);
 
  269   eta = (dvm*dvm + dvp*dvp)/(eta*eta);
 
  270   if ( eta <= 1.0 - eps) {
 
  272   }
else if (eta >= 1.0 + eps){
 
  275     psi =   (1.0 - (eta - 1.0)/
eps)*q
 
  276           + (1.0 + (eta - 1.0)/
eps)*psi;
 
double ** v
Cell-centered primitive varables at the base time level, v[i] =  . 
 
void VelocityLimiter(double *, double *, double *)
 
void ConvertTo4vel(double **, int, int)
 
int end
Global end index for the local array. 
 
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 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. 
 
int beg
Global start index for the local array. 
 
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) 
 
static double LimO3Func(double, double, double)
 
long int NMAX_POINT
Maximum number of points among the three directions, boundaries excluded. 
 
void PrimToCons(double **uprim, double **ucons, int ibeg, int iend)
 
void States(const State_1D *state, int beg, int end, Grid *grid)
 
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. 
 
void HancockStep(const State_1D *, int, int, Grid *)