22 static int step_ch(
int truestep,
int *dumpingnext,
FTYPE *fullndt,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR]);
23 static int post_advance(
int truestep,
int *dumpingnext,
int timeorder,
int numtimeorders,
int finalstep,
SFTYPE boundtime,
SFTYPE fluxtime,
FTYPE (*pi)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pb)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pf)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR]);
34 int step_ch_full(
int truestep,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR])
47 step_ch(truestep,dumpingnext, &fullndt,prim,pstag,ucons,vpot,Bhat,pl_ct, pr_ct, F1, F2, F3,Atemp,uconstemp);
50 if(truestep)
post_stepch(dumpingnext, fullndt, prim, ucons);
56 compute_new_metric_longsteps(prim,pstag,ucons,vpot,Bhat,pl_ct, pr_ct, F1, F2, F3,Atemp,uconstemp);
60 control_metric_update();
69 MYFUN(error_check(2),
"main.c",
"error_check",1);
83 int step_ch(
int truestep,
int *dumpingnext,
FTYPE *fullndt,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR])
85 int step_ch_simplempi(
int truestep,
int *dumpingnext,
FTYPE *fullndt,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR]);
86 int step_ch_supermpi(
int truestep,
int *dumpingnext,
FTYPE *fullndt,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR]);
91 MYFUN(
step_ch_simplempi(truestep, dumpingnext, fullndt,prim,pstag,ucons,vpot,Bhat,pl_ct, pr_ct,F1,F2,F3,Atemp,uconstemp),
"step_ch.c:step_ch()",
"step_ch_simplempi()", 1);
93 MYFUN(step_ch_supermpi(truestep, dumpingnext, fullndt,prim,pstag,ucons,vpot,Bhat,pl_ct, pr_ct,F1,F2,F3,Atemp,uconstemp),
"step_ch.c:step_ch()",
"step_ch_supermpi()", 1);
125 if(dumpingnext[0] || dumpingnext[1]){
126 #if(CALCFARADAYANDCURRENTS)
156 #if(CALCFARADAYANDCURRENTS)
178 diag_flux(prim,F1, F2, F3,
dt);
183 diag_flux_general(prim,
dt);
191 diag_fixup_allzones(prim, ucons);
251 dualfprintf(
fail_file,
"Got onemorestep dt=%g\n",dt);
258 dualfprintf(
fail_file,
"Got t+dt>tf : %g %g %g\n",
t,dt,
tf);
262 else if (
t + dt ==
tf){
263 dualfprintf(
fail_file,
"Got t+dt==tf : %g %g %g\n",
t,dt,
tf);
268 dualfprintf(
fail_file,
"Got dt<SMALL : %g\n",dt);
277 if(dt==0.0 &&
t>=
tf){
279 dualfprintf(
fail_file,
"SOMEHOW GOT HERE\n");
305 #if(EOMTYPE!=EOMFFDE && EOMTYPE!=EOMFFDE2)
307 MYFUN(pre_fixup(
STAGEM1, pi),
"step_ch.c:step_ch_simple()",
"pre_fixup()", 1);
321 int post_advance(
int truestep,
int *dumpingnext,
int timeorder,
int numtimeorders,
int finalstep,
SFTYPE boundtime,
SFTYPE fluxtime,
FTYPE (*pi)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pb)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pf)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR])
344 evolve_withvpot(boundtime, pf, pstag, ucons, vpot, Bhat, F1, F2, F3, Atemp,uconstemp);
365 #if( (1 == CHECKSOLUTION || UTOPRIMADJUST == UTOPRIMAVG) )
409 MYFUN(post_fixup(
STAGEM1,finalstep,boundtime, pf,pb,ucons),
"step_ch.c:advance()",
"post_fixup()", 1);
426 MYFUN(post_fixup_nofixup(
STAGEM1,finalstep,boundtime, pf,pb,ucons),
"step_ch.c:advance()",
"post_fixup_nofixup()", 1);
439 MYFUN(error_check(1),
"step_ch.c",
"error_check", 1);
447 dualfprintf(
fail_file,
"1before bound\n");
449 dualfprintf(
fail_file,
"2before bound\n");
464 recompute_fluxpositions(0,timeorder, numtimeorders,
nstep,
t);
473 if(timeorder==numtimeorders-1){
476 consfixup_allzones(finaluu,pf,ucons);
516 field_Bhat_fluxrecon(pf,ucons,Bhat);
528 if(dumpingnext[0] || dumpingnext[1]){
529 #if(CALCFARADAYANDCURRENTS)
539 ((numtimeorders>=3)&&(timeorder==1))
540 ||((numtimeorders<=2)&&(timeorder==0))
589 int step_ch_simplempi(
int truestep,
int *dumpingnext,
FTYPE *fullndt,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR])
605 int stage, stagei,stagef;
624 int finalstep,initialstep;
636 setup_rktimestep(truestep, &numtimeorders,prim,pstag,ucons,vpot,Bhat,
GLOBALPOINT(pk),pii,pbb,pff,uii,uff,ucum,CUf,CUnew);
644 get_truetime_fluxdt(numtimeorders,
dt, CUf, CUnew, fluxdt, boundtime, fluxtime, NULL,NULL);
660 for(timeorder=0;timeorder<numtimeorders;timeorder++){
668 if(timeorder!=numtimeorders-1){
670 tsteppartf =
t + CUf[timeorder][2] * dt + CUf[timeorder][3] *
dt;
684 if(timeorder==numtimeorders-1) finalstep=1;
else finalstep=0;
685 if(timeorder==0) initialstep=1;
else initialstep=0;
688 trifprintf(
"|%ds",timeorder);
698 pre_advance(timeorder, numtimeorders, finalstep, pii[timeorder],pbb[timeorder],pff[timeorder]);
717 #if(SPLITNPR&&(USESTOREDSPEEDSFORFLUX==0 || STOREWAVESPEEDS==0))
718 #error Not correct use of SPLITNPR and wavespeeds
756 #pragma omp parallel private(pl)
772 MYFUN(
advance(truestep,
STAGEM1, pii[timeorder], pbb[timeorder], pff[timeorder], pstag, pl_ct, pr_ct, F1, F2, F3, vpot, uii[timeorder], uff[timeorder], ucum[timeorder], CUf[timeorder], CUnew[timeorder], fluxdt[timeorder], boundtime[timeorder], fluxtime[timeorder], timeorder,numtimeorders,&ndt),
"step_ch.c:step_ch_simplempi()",
"advance()", 1);
781 MYFUN(
bound_evolveprim(
STAGEM1,finalstep,boundtime[timeorder],pff[timeorder],pstag,uff[timeorder],USEMPI),
"step_ch.c:step_ch_simplempi()",
"bound_evolveprim()", 1);
787 PLOOPBONLY(pl)
MACP1A1(pbb,timeorder,i,j,k,pl)=
MACP1A1(pff,timeorder,i,j,k,pl);
801 #pragma omp parallel private(pl)
822 MYFUN(
advance(truestep,
STAGEM1, pii[timeorder], pbb[timeorder], pff[timeorder], pstag, pl_ct, pr_ct, F1, F2, F3, vpot, uii[timeorder], uff[timeorder], ucum[timeorder], CUf[timeorder], CUnew[timeorder], fluxdt[timeorder], boundtime[timeorder], fluxtime[timeorder], timeorder,numtimeorders,&ndt),
"step_ch.c:step_ch_simplempi()",
"advance()", 1);
833 #pragma omp parallel private(pl)
866 MYFUN(
advance(truestep,
STAGEM1, pii[timeorder], pbb[timeorder], pff[timeorder], pstag, pl_ct, pr_ct, F1, F2, F3, vpot, uii[timeorder], uff[timeorder], ucum[timeorder], CUf[timeorder], CUnew[timeorder], fluxdt[timeorder], boundtime[timeorder], fluxtime[timeorder], timeorder,numtimeorders,&ndt),
"step_ch.c:step_ch_simplempi()",
"advance()", 1);
884 if(ndt<lastndt) lastndt=ndt;
893 post_advance(truestep, dumpingnext, timeorder, numtimeorders, finalstep, boundtime[timeorder], fluxtime[timeorder], pii[timeorder],pbb[timeorder],pff[timeorder],pstag,ucons,vpot,Bhat, F1, F2, F3, Atemp, uconstemp);
922 FTYPE Ui, dUriemann, dUgeom ;
945 for(timeorder=0;timeorder<numtimeorders;timeorder++){
946 fluxdt[timeorder] = 0.0;
947 boundtime[timeorder] = 0.0;
948 fluxtime[timeorder] = 0.0;
956 for(timeorder=4;timeorder<numtimeorders;timeorder++){
957 fluxdt[timeorder-4] += CUnew[timeorder][2]*CUf[timeorder][1]*CUf[timeorder-1][1]*CUf[timeorder-2][1]*CUf[timeorder-3][1]*CUf[timeorder-4][2]*localdt;
960 for(timeorder=3;timeorder<numtimeorders;timeorder++){
961 fluxdt[timeorder-3] += CUnew[timeorder][2]*CUf[timeorder][1]*CUf[timeorder-1][1]*CUf[timeorder-2][1]*CUf[timeorder-3][2]*localdt;
964 for(timeorder=2;timeorder<numtimeorders;timeorder++){
965 fluxdt[timeorder-2] += CUnew[timeorder][2]*CUf[timeorder][1]*CUf[timeorder-1][1]*CUf[timeorder-2][2]*localdt;
968 for(timeorder=1;timeorder<numtimeorders;timeorder++){
969 fluxdt[timeorder-1] += CUnew[timeorder][2]*CUf[timeorder][1]*CUf[timeorder-1][2]*localdt;
972 for(timeorder=0;timeorder<numtimeorders;timeorder++){
973 fluxdt[timeorder] += (CUnew[timeorder][1] + CUnew[timeorder][2]*CUf[timeorder][2])*localdt;
977 for(timeorder=0;timeorder<numtimeorders;timeorder++){
978 dualfprintf(
fail_file,
"timeorder=%d fluxdt/dt=%g\n",timeorder,fluxdt[timeorder]/localdt);
995 for(timeorder=0;timeorder<numtimeorders;timeorder++){
1000 oldufdt=ufdt[timeorder-1];
1004 ufdt[timeorder] = UFSET(CUf[timeorder],localdt,Ui,oldufdt,dUriemann,dUgeom,dUnongeomall);
1007 ucumdt[timeorder] = UCUMUPDATE(CUnew[timeorder],localdt,Ui,ufdt[timeorder],dUriemann,dUgeom,dUnongeomall);
1010 boundtime[timeorder] =
t + ufdt[timeorder];
1016 if(timeorder>0) fluxtime[timeorder] =
t + CUf[timeorder-1][2] *
dt + CUf[timeorder-1][3] *
dt;
1017 else fluxtime[timeorder] =
t;
1036 for(timeorder=0;timeorder<numtimeorders;timeorder++){
1037 if(timeorder<numtimeorders-1){
1038 boundtime[timeorder] =
t + localdt*CUf[timeorder][3]+ localdt*CUf[timeorder][2];
1042 boundtime[timeorder] =
t + localdt;
1051 for(timeorder=0;timeorder<numtimeorders;timeorder++){
1052 dualfprintf(
fail_file,
"to=%d fluxdt=%21.15g fluxdtperdt=%21.15g boundtime=%21.15g fluxtime=%21.15g\n",timeorder,fluxdt[timeorder],fluxdt[timeorder]/
dt,boundtime[timeorder],fluxtime[timeorder]);
1100 int step_ch_supermpi(
int truestep,
int *dumpingnext,
FTYPE *fullndt,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pstag)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*ucons)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*vpot)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*Bhat)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pl_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pr_ct)[
NSTORE1][
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*F1)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F2)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*F3)[
NSTORE2][
NSTORE3][NPR+
NSPECIAL],
FTYPE (*Atemp)[
NSTORE1+
SHIFTSTORE1][
NSTORE2+
SHIFTSTORE2][
NSTORE3+
SHIFTSTORE3],
FTYPE (*uconstemp)[
NSTORE2][
NSTORE3][NPR])
1111 int stage, stagei,stagef;
1126 int i,
j, k, pl, pliter;
1141 setup_rktimestep(truestep, &numtimeorders,prim,pstag,ucons,vpot,Bhat,
GLOBALPOINT(pk),pii,pbb,pff,uii,uff,ucum,CUf,CUnew);
1149 get_truetime_fluxdt(numtimeorders,
dt, CUf, CUnew, fluxdt, boundtime, fluxtime, NULL, NULL);
1161 for(timeorder=1;timeorder<=numtimeorders;timeorder++){
1169 if(timeorder!=numtimeorders-1){
1170 tstepparti =
t + CUf[timeorder][3] *
dt;
1171 tsteppartf =
t + CUf[timeorder][2] * dt + CUf[timeorder][3] *
dt;
1178 if(timeorder==numtimeorders-1) finalstep=1;
else finalstep=0;
1183 trifprintf(
"-to%d/%d-",timeorder,numtimeorders);
1185 if(numtimeorders==2){
1200 else if(timeorder==2){
1208 else if(numtimeorders==1){
1223 for(stage=stagei;stage<=stagef;stage++){
1246 if(stage!=
STAGEM1) boundstage++;
1250 MYFUN(pre_fixup(stage, prevpf),
"step_ch.c:advance()",
"pre_fixup()", 1);
1256 MYFUN(
advance(truestep,-1, pii[timeorder], pbb[timeorder], pff[timeorder], pstag, pl_ct, pr_ct, F1, F2, F3, vpot, uii[timeorder], uff[timeorder], ucum[timeorder],CUf[timeorder], CUnew[timeorder], fluxdt[timeorder], boundtime[timeorder], fluxtime[timeorder], timeorder,numtimeorders,&ndt),
"step_ch.c:step_ch_supermpi()",
"advance()", 1);
1259 MYFUN(error_check(1),
"step_ch.c",
"error_check", 1);
1263 bound_evolveprim(boundstage,finalstep, boundtime[timeorder], prevpf,pstag,ucons,USEMPI);
1267 if(timeorder==numtimeorders){
1268 if(ndt>lastndt) ndt=lastndt;
1272 if(timeorder==numtimeorders){
1278 MYFUN(post_fixup(
STAGEM1,finalstep, boundtime[timeorder], pf,pb,ucons),
"step_ch.c:advance()",
"post_fixup()", 1);
1322 FTYPE (*CUf)[NUMDTCUFS],
FTYPE (*CUnew)[NUMDTCUFS])
1330 CUf[ii][jj]=CUnew[ii][jj]=0.0;
1353 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=0.5; CUf[0][3] = 0.0; CUf[0][4+0] = CUf[0][2];
1354 CUf[1][0]=1.0; CUf[1][1]=0.0; CUf[1][2]=0.5; CUf[1][3] = 0.0; CUf[1][4+1] = CUf[1][2];
1355 CUf[2][0]=1.0; CUf[2][1]=0.0; CUf[2][2]=1.0; CUf[2][3] = 0.0; CUf[2][4+2] = CUf[2][2];
1356 CUf[3][0]=1.0; CUf[3][1]=0.0; CUf[3][2]=1.0; CUf[3][3] = 0.0; CUf[3][4+3] = CUf[3][2];
1359 CUnew[0][0]=1.0; CUnew[0][1]=1.0/6.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = CUnew[0][1];
1360 CUnew[1][0]=0.0; CUnew[1][1]=1.0/3.0; CUnew[1][2]=0.0; CUnew[1][3] = 0.5; CUnew[1][4+1] = CUnew[1][1];
1361 CUnew[2][0]=0.0; CUnew[2][1]=1.0/3.0; CUnew[2][2]=0.0; CUnew[2][3] = 0.5; CUnew[2][4+2] = CUnew[2][1];
1362 CUnew[3][0]=0.0; CUnew[3][1]=1.0/6.0; CUnew[3][2]=0.0; CUnew[3][3] = 1.0; CUnew[3][4+3] = CUnew[3][1];
1365 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1366 pii[1]=
p; pbb[1]=pk[0]; pff[1]=pk[1];
1367 pii[2]=
p; pbb[2]=pk[1]; pff[2]=pk[0];
1368 pii[3]=
p; pbb[3]=pk[0]; pff[3]=
p;
1388 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=1.0; CUf[0][3] = 0.0; CUf[0][4+0] = CUf[0][2];
1389 CUf[1][0]=3.0/4.0; CUf[1][1]=1.0/4.0; CUf[1][2]=1.0/4.0; CUf[1][3] = 0.0; CUf[1][4+1] = CUf[1][2];
1390 CUf[2][0]=1.0/3.0; CUf[2][1]=2.0/3.0; CUf[2][2]=2.0/3.0; CUf[2][3] = 0.0; CUf[2][4+2] = CUf[2][2];
1394 CUnew[0][0]=0.0; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = CUnew[0][1];
1395 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=0.0; CUnew[1][3] = 1.0; CUnew[1][4+1] = CUnew[1][1];
1396 CUnew[2][0]=0.0; CUnew[2][1]=0.0; CUnew[2][2]=1.0; CUnew[2][3] = 1.0/4.0; CUnew[2][4+2] = CUnew[2][1];
1399 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1400 pii[1]=
p; pbb[1]=pk[0]; pff[1]=pk[1];
1401 pii[2]=
p; pbb[2]=pk[1]; pff[2]=
p;
1417 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=0.5; CUf[0][3] = 0.0; CUf[0][4+0] = CUf[0][2];
1418 CUf[1][0]=1.0; CUf[1][1]=0.0; CUf[1][2]=1.0; CUf[1][3] = 0.0; CUf[1][4+1] = CUf[1][2];
1422 CUnew[0][0]=0.0; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = CUnew[0][1];
1423 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=1.0; CUnew[1][3] = 0.5; CUnew[1][4+1] = CUnew[1][1];
1425 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1426 pii[1]=
p; pbb[1]=pk[0]; pff[1]=
p;
1438 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=1.0; CUf[0][3] = 0.0; CUf[0][4+0] = CUf[0][2];
1439 CUf[1][0]=0.5; CUf[1][1]=0.5; CUf[1][2]=0.5; CUf[1][3] = 0.0; CUf[1][4+1] = CUf[1][2];
1443 CUnew[0][0]=0.0; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = CUnew[0][1];
1444 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=1.0; CUnew[1][3] = 1.0; CUnew[1][4+1] = CUnew[1][1];
1446 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1447 pii[1]=
p; pbb[1]=pk[0]; pff[1]=
p;
1460 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=1.0; CUf[0][3] = 0.0; CUf[0][4] = CUf[0][2];
1464 CUnew[0][0]=0.0; CUnew[0][1]=0.0; CUnew[0][2]=1.0; CUnew[1][3] = 0.0; CUnew[1][4] = CUnew[0][1];
1466 pii[0]=
p; pbb[0]=
p; pff[0]=
p;
1492 static FTYPE imp_alpha=0.24169426078821;
1493 static FTYPE imp_beta=0.06042356519705;
1494 static FTYPE imp_eta=0.12915286960590;
1497 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=0.0; CUf[0][3] = 0.0; CUf[0][4+0] = imp_alpha;
1498 CUf[1][0]=2.0; CUf[1][1]=-1.0; CUf[1][2]=0.0; CUf[1][3] = 0.0; CUf[1][4+1] = imp_alpha;
1499 CUf[2][0]=1.0; CUf[2][1]=0.0; CUf[2][2]=1.0; CUf[2][3] = 0.0; CUf[2][4+1] = (1.0-imp_alpha); CUf[2][4+2] = imp_alpha;
1500 CUf[3][0]=3.0/4.0; CUf[3][1]=1.0/4.0; CUf[3][2]=1.0/4.0; CUf[3][3] = 0.0; CUf[3][4+0] = imp_beta; CUf[3][4+1] = (-1.0+imp_alpha+4.0*imp_eta)/4.0; CUf[3][4+2] = (2.0-5.0*imp_alpha-4.0*(imp_beta+imp_eta))/4.0; CUf[3][4+3] = imp_alpha;
1501 CUf[4][0]=1.0/3.0; CUf[4][1]=2.0/3.0; CUf[4][2]=2.0/3.0; CUf[4][3] = 0.0; CUf[4][4+0] = (-2.0*imp_beta/3.0); CUf[4][4+1] = (1.0-4.0*imp_eta)/6.0; CUf[4][4+2] = (-1.0+4.0*imp_alpha+4.0*(imp_beta+imp_eta))/6.0; CUf[4][4+3] = 4.0*(1.0-imp_alpha)/6.0;
1505 CUnew[0][0]=1.0/3.0; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = (-2.0*imp_beta/3.0);
1506 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=0.0; CUnew[1][3] = 0.0; CUnew[1][4+1] = (1.0-4.0*imp_eta)/6.0;
1507 CUnew[2][0]=0.0; CUnew[2][1]=0.0; CUnew[2][2]=0.0; CUnew[2][3] = 0.0; CUnew[2][4+2] = (-1.0+4.0*imp_alpha+4.0*(imp_beta+imp_eta))/6.0;
1508 CUnew[3][0]=0.0; CUnew[3][1]=0.0; CUnew[3][2]=2.0/3.0; CUnew[3][3] = 0.0; CUnew[3][4+3] = 4.0*(1.0-imp_alpha)/6.0;
1509 CUnew[4][0]=0.0; CUnew[4][1]=2.0/3.0; CUnew[4][2]=0.0; CUnew[4][3] = 0.0; CUnew[4][4+4] = 0.0;
1512 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1513 pii[1]=
p; pbb[1]=pk[0]; pff[1]=pk[1];
1514 pii[2]=
p; pbb[2]=pk[1]; pff[2]=pk[0];
1515 pii[3]=
p; pbb[3]=pk[0]; pff[3]=pk[1];
1516 pii[4]=
p; pbb[4]=pk[1]; pff[4]=
p;
1531 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=0.0; CUf[0][3] = 0.0; CUf[0][4+0] = 1.0/4.0;
1532 CUf[1][0]=1.0; CUf[1][1]=0.0; CUf[1][2]=0.5; CUf[1][3] = 0.0; CUf[1][4+1] = 1.0/4.0;
1533 CUf[2][0]=0.0; CUf[2][1]=1.0; CUf[2][2]=1.0/2.0; CUf[2][3] = 0.0; CUf[2][4+0] = 1.0/3.0; CUf[2][4+1] = 1.0/12.0; CUf[2][4+2] = 1.0/3.0;
1534 CUf[3][0]=1.0/3.0; CUf[3][1]=2.0/3.0; CUf[3][2]=1.0/3.0; CUf[3][3] = 0.0; CUf[3][4+0] = 1.0/9.0; CUf[3][4+1] = 1.0/9.0; CUf[3][4+2] = 1.0/9.0;
1538 CUnew[0][0]=1.0/3.0; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = (1.0/9.0);
1539 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=0.0; CUnew[1][3] = 0.0; CUnew[1][4+1] = (1.0/9.0);
1540 CUnew[2][0]=0.0; CUnew[2][1]=0.0; CUnew[2][2]=2.0/3.0; CUnew[2][3] = 0.0; CUnew[2][4+2] = (1.0/9.0);
1541 CUnew[3][0]=0.0; CUnew[3][1]=1.0/3.0; CUnew[3][2]=0.0; CUnew[3][3] = 0.0; CUnew[3][4+3] = 0.0;
1544 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1545 pii[1]=
p; pbb[1]=pk[0]; pff[1]=pk[1];
1546 pii[2]=
p; pbb[2]=pk[1]; pff[2]=pk[0];
1547 pii[3]=
p; pbb[3]=pk[0]; pff[3]=
p;
1560 static FTYPE imp_gamma = 0.2928932188134524755992;
1563 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=0.0; CUf[0][3] = 0.0; CUf[0][4+0] = imp_gamma;
1564 CUf[1][0]=(3.0*imp_gamma-1.0)/imp_gamma; CUf[1][1]=(1.0-2.0*imp_gamma)/imp_gamma; CUf[1][2]=1.0; CUf[1][3] = 0.0; CUf[1][4+1] = imp_gamma;
1565 CUf[2][0]=1.0/2.0; CUf[2][1]=1.0/2.0; CUf[2][2]=1.0/2.0; CUf[2][3] = 0.0; CUf[2][4+0] = imp_gamma; CUf[2][4+1]=(1.0-imp_gamma)/2.0;
1570 CUnew[0][0]=0.5; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0]=imp_gamma;
1571 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=0.5; CUnew[1][3] = 0.0; CUnew[1][4+1]=(1.0-imp_gamma)/2.0;
1572 CUnew[2][0]=0.0; CUnew[2][1]=1.0/2.0; CUnew[2][2]=0.0; CUnew[2][3] = 0.0;
1575 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1576 pii[1]=
p; pbb[1]=pk[0]; pff[1]=pk[1];
1577 pii[2]=
p; pbb[2]=pk[1]; pff[2]=
p;
1591 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=0.5; CUf[0][3] = 0.0; CUf[0][4+0] = CUf[0][2];
1592 CUf[1][0]=1.0; CUf[1][1]=0.0; CUf[1][2]=1.0; CUf[1][3] = 0.0; CUf[1][4+1] = CUf[1][2];
1596 CUnew[0][0]=0.0; CUnew[0][1]=0.0; CUnew[0][2]=0.0; CUnew[0][3] = 0.0; CUnew[0][4+0] = CUnew[0][1];
1597 CUnew[1][0]=0.0; CUnew[1][1]=0.0; CUnew[1][2]=1.0; CUnew[1][3] = 0.0; CUnew[1][4+1] = CUnew[1][1];
1599 pii[0]=
p; pbb[0]=
p; pff[0]=pk[0];
1600 pii[1]=
p; pbb[1]=pk[0]; pff[1]=
p;
1611 CUf[0][0]=1.0; CUf[0][1]=0.0; CUf[0][2]=1.0; CUf[0][3] = 0.0; CUf[0][4] = CUf[0][2];
1615 CUnew[0][0]=0.0; CUnew[0][1]=0.0; CUnew[0][2]=1.0; CUnew[1][3] = 0.0; CUnew[1][4] = CUnew[0][1];
1617 pii[0]=
p; pbb[0]=
p; pff[0]=
p;
1669 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, prim, pstag, ucons,doboundmpi);
1675 bound_uavg(boundstage, finalstep, boundtime, boundvartype, ucons,pstag, ucons,doboundmpi);
1693 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, prim, pstag, ucons,doboundmpi);
1699 bound_uavg(boundstage, finalstep, boundtime, boundvartype, ucons,pstag, ucons,doboundmpi);
1714 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, prim, pstag, ucons,doboundmpi);
1725 bound_anypstag(boundstage, finalstep, boundtime, boundvartype, prim, pstag, ucons,doboundmpi);
1738 bound_anyallprim(boundstage, finalstep, boundtime, boundvartype, prim, pstag,ucons,doboundmpi);
1755 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, prim, pstag, ucons,doboundmpi);
1758 else mystagboundvar=boundvartype;
1759 bound_anypstag(boundstage, finalstep, boundtime, mystagboundvar, prim, pstag, ucons,doboundmpi);
1762 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, prim, pstag, ucons,doboundmpi);
1771 bound_uavg(boundstage, finalstep, boundtime, boundvartype, ucons,pstag, ucons,doboundmpi);
1799 #if(FULLOUTPUT!=0 && PRODUCTION==0)
1800 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, uavg,pstag, uavg,doboundmpi);
1808 bound_anyprim(boundstage, finalstep, boundtime, boundvartype, uavg, pstag, uavg,doboundmpi);
1816 else mystagboundvar=boundvartype;
1818 bound_anypstag(boundstage, finalstep, boundtime, mystagboundvar, uavg, pstag, uavg,doboundmpi);
1836 int whichpltoavg[NPR];
1837 int ifnotavgthencopy[NPR];
1838 int nprlocalstart,nprlocalend;
1839 int nprlocallist[MAXNPR];
1848 MYFUN(bound_gridsectioning(
CENTEREDPRIM,prim,pstag,ucons,finalstep),
"step_ch.c:bound_pstag()",
"bound_pstag_user()", 1);
1861 PALLLOOP(pl) ifnotavgthencopy[pl]=0;
1864 addremovefromanynpr(
REMOVEFROMNPR, whichpltoavg, ifnotavgthencopy, &
nprboundstart, &
nprboundend,
nprboundlist, &nprlocalstart, &nprlocalend, nprlocallist, NULL, NULL);
1874 MYFUN(bound_mpi_dir(boundstage, finalstep, -dir, boundvartype, prim, NULL, NULL, NULL,NULL),
"step_ch.c:bound_prim()",
"bound_mpi()", 1);
1879 MYFUN(
bound_prim_user_dir(boundstage, finalstep, boundtime, dir, boundvartype, prim),
"step_ch.c:bound_prim()",
"bound_prim_user()", 1);
1883 MYFUN(bound_mpi_dir(boundstage, finalstep, +dir, boundvartype, prim, NULL, NULL, NULL,NULL),
"step_ch.c:bound_prim()",
"bound_mpi()", 1);
1889 MYFUN(bound_prim_user_after_mpi_dir(boundstage, finalstep, boundtime, dir, boundvartype, ispstag, prim),
"step_ch.c:bound_prim()",
"bound_prim_user_after_mpi()", 1);
1898 addremovefromanynpr(
RESTORENPR, whichpltoavg, ifnotavgthencopy, &
nprboundstart, &
nprboundend,
nprboundlist, &nprlocalstart, &nprlocalend, nprlocallist, NULL, NULL);
1915 int nprlocalstart,nprlocalend;
1916 int nprlocallist[MAXNPR];
1923 else mystagboundvar=boundvartype;
1931 MYFUN(bound_gridsectioning(
STAGGEREDPRIM,prim,pstag,ucons,finalstep),
"step_ch.c:bound_pstag()",
"bound_pstag_user()", 1);
1957 MYFUN(bound_mpi_dir(boundstage, finalstep, -dir, mystagboundvar, pstag, NULL, NULL, NULL,NULL),
"step_ch.c:bound_pstag()",
"bound_mpi()", 1);
1962 MYFUN(
bound_pstag_user_dir(boundstage, finalstep, boundtime, dir,mystagboundvar,pstag),
"step_ch.c:bound_pstag()",
"bound_pstag_user()", 1);
1967 MYFUN(bound_mpi_dir(boundstage, finalstep, +dir, mystagboundvar, pstag, NULL, NULL, NULL,NULL),
"step_ch.c:bound_pstag()",
"bound_mpi()", 1);
1973 MYFUN(bound_prim_user_after_mpi_dir(boundstage, finalstep, boundtime, dir, mystagboundvar, ispstag, pstag),
"step_ch.c:bound_pstag()",
"bound_prim_user_after_mpi()", 1);
2004 dualfprintf(
fail_file,
"Shouldn't be in bound_flux() with boundvartype=%d\n",boundvartype);
2010 dualfprintf(
fail_file,
"DEBUG: Assuming bound_flux() called only for debugging purposes\n");
2016 MYFUN(bound_mpi(boundstage, finalstep, -1, boundvartype, NULL, F1, F2, F3, NULL),
"step_ch.c:bound_flux()",
"bound_mpi()", 1);
2022 MYFUN(
bound_flux_user(boundstage, finalstep, boundtime, boundvartype,F1,F2,F3),
"step_ch.c:bound_flux()",
"bound_flux_user()", 1);
2027 MYFUN(bound_mpi(boundstage, finalstep, +1, boundvartype, NULL, F1, F2, F3, NULL),
"step_ch.c:bound_flux()",
"bound_mpi()", 1);
2046 dualfprintf(
fail_file,
"Shouldn't be in bound_vpot() with boundvartype=%d\n",boundvartype);
2053 MYFUN(bound_mpi(boundstage, finalstep, -1, boundvartype, NULL, NULL, NULL, NULL, vpot),
"step_ch.c:bound_flux()",
"bound_mpi()", 1);
2060 MYFUN(bound_vpot_user(boundstage, finalstep, boundtime, boundvartype,vpot),
"step_ch.c:bound_vpot()",
"bound_vpot_user()", 1);
2065 MYFUN(bound_mpi(boundstage, finalstep, +1, boundvartype, NULL, NULL, NULL, NULL, vpot),
"step_ch.c:bound_flux()",
"bound_mpi()", 1);
2089 if(UTOPRIMFIXMPICONSISTENT==1){
2090 MYFUN(bound_mpi_int(boundstage, finalstep, -1, boundvartype, prim),
"step_ch.c:bound_pflag()",
"bound_mpi_int()", 1);
2095 MYFUN(bound_mpi_int_fakeutoprimmpiinconsisent(boundstage, finalstep, -1, boundvartype, prim,
UTOPRIMFAILFAKEVALUE),
"step_ch.c:bound_pflag()",
"bound_mpi_int()", 1);
2105 MYFUN(bound_pflag_user(boundstage, finalstep, boundtime, boundvartype, prim),
"step_ch.c:bound_pflag()",
"bound_pflag_user()", 1);
2112 if(UTOPRIMFIXMPICONSISTENT==1){
2113 MYFUN(bound_mpi_int(boundstage, finalstep, +1, boundvartype, prim),
"step_ch.c:bound_pflag()",
"bound_mpi_int()", 1);
2118 MYFUN(bound_mpi_int_fakeutoprimmpiinconsisent(boundstage, finalstep, +1, boundvartype, prim,
UTOPRIMFAILFAKEVALUE),
"step_ch.c:bound_pflag()",
"bound_mpi_int()", 1);