[Commits] [svn:einsteintoolkit] IllinoisGRMHD/trunk/src/ (Rev. 26)

zachetie at gmail.com zachetie at gmail.com
Thu Apr 17 12:15:36 CDT 2014


User: zetienne
Date: 2014/04/17 12:15 PM

Modified:
 /trunk/src/
  compute_B_and_Bstagger_from_A.C, driver_conserv_to_prims.C, reconstruct_set_of_prims_PPM.C

Log:
 Adjust sensitivity of shock detection mechanism. Reduces explosion in roundoff-error differences between different codes.

File Changes:

Directory: /trunk/src/
======================

File [modified]: compute_B_and_Bstagger_from_A.C
Delta lines: +1 -1
===================================================================
--- trunk/src/compute_B_and_Bstagger_from_A.C	2014-04-16 16:00:47 UTC (rev 25)
+++ trunk/src/compute_B_and_Bstagger_from_A.C	2014-04-17 17:15:36 UTC (rev 26)
@@ -180,7 +180,7 @@
   IllinoisGRMHD_set_symmetry_gzs_staggered(cctkGH,cctk_lsh,x,y,z,Symmetry,  Bx        , gridfunc_syms_Bx,0,0,0);
   IllinoisGRMHD_set_symmetry_gzs_staggered(cctkGH,cctk_lsh,x,y,z,Symmetry,  Bx_stagger, gridfunc_syms_Bx,1,0,0);
   double gridfunc_syms_By[3] = { 1,-1,-Sym_Bz};
-  IllinoisGRMHD_set_symmetry_gzs_staggered(cctkGH,cctk_lsh,x,y,z,Symmetry,  By        , gridfunc_syms_Bx,0,0,0);
+  IllinoisGRMHD_set_symmetry_gzs_staggered(cctkGH,cctk_lsh,x,y,z,Symmetry,  By        , gridfunc_syms_By,0,0,0);
   IllinoisGRMHD_set_symmetry_gzs_staggered(cctkGH,cctk_lsh,x,y,z,Symmetry,  By_stagger, gridfunc_syms_By,0,1,0);
   double gridfunc_syms_Bz[3] = { 1, 1, Sym_Bz};
   IllinoisGRMHD_set_symmetry_gzs_staggered(cctkGH,cctk_lsh,x,y,z,Symmetry,  Bz        , gridfunc_syms_Bz,0,0,0);

File [modified]: driver_conserv_to_prims.C
Delta lines: +3 -3
===================================================================
--- trunk/src/driver_conserv_to_prims.C	2014-04-16 16:00:47 UTC (rev 25)
+++ trunk/src/driver_conserv_to_prims.C	2014-04-17 17:15:36 UTC (rev 26)
@@ -186,7 +186,7 @@
 	PRIMS[ww] = By[index];    ww++;
 	PRIMS[ww] = Bz[index];    ww++;
 	double u0L = u0[index];
-	
+
 	double CONSERVS[NUM_CONSERVS] = {rho_star[index], mhd_st_x[index],mhd_st_y[index],mhd_st_z[index],tau[index]};
 
 	double METRIC_LAP_PSI4[NUMVARS_METRIC_AUX];
@@ -284,7 +284,6 @@
 	  for(int ii=0;ii<3;ii++) {
 	    check = harm_primitives_gammalaw_lowlevel(index,i,j,k,x,y,z,METRIC,METRIC_PHYS,METRIC_LAP_PSI4,
 						      CONSERVS,PRIMS,u0L,  g4dn,g4up,   stats,eos);
-
 	    if(check==0) ii=4;
 	  }
 	} else {
@@ -299,6 +298,7 @@
 	  rho_star_fix_applied++;
 	}
 
+
 	// Enforce limits on primitive variables and recompute conservatives.
 	static const int already_computed_physical_metric_and_inverse=1;
 	enforce_limits_on_primitives_and_recompute_conservs(already_computed_physical_metric_and_inverse,PRIMS,u0L,eos,METRIC,g4dn,g4up, TUPMUNU,TDNMUNU,CONSERVS);
@@ -352,7 +352,7 @@
   useconds = end.tv_usec - start.tv_usec;
 
   mtime = ((seconds) * 1000 + useconds/1000.0) + 0.999;  // We add 0.999 since mtime is a long int; this rounds up the result before setting the value.  Here, rounding down is incorrect.
-  printf("Pointcount: %d Font fixes: %d VL: %d Failures: %d, InHoriz: %d / %d = %.3e\t%.2f solutions/second, Error: %e, ErrDenom: %.15e, rho*fixes: %d Lev: %d\n",
+  printf("Pointcount: %d Font fixes: %d VL: %d Failures: %d, InHoriz: %d / %d = %.3e\t%.0f solutions/second, Error: %e, ErrDenom: %.15e, rho*fixes: %d Lev: %d\n",
 	 pointcount,font_fixes,vel_limited_ptcount,
          failures,
          failures_inhoriz,pointcount_inhoriz,failures_inhoriz/((double)pointcount_inhoriz+1e-10), 

File [modified]: reconstruct_set_of_prims_PPM.C
Delta lines: +3 -3
===================================================================
--- trunk/src/reconstruct_set_of_prims_PPM.C	2014-04-16 16:00:47 UTC (rev 25)
+++ trunk/src/reconstruct_set_of_prims_PPM.C	2014-04-17 17:15:36 UTC (rev 26)
@@ -339,11 +339,11 @@
   double dP2 = U[PRESSURE][PLUS2] - U[PRESSURE][MINUS2];
 
   // MODIFICATION TO STANDARD PPM:
-  // Cure roundoff error issues when dP1==0 or dP2==0 to 7 or more significant digits.
+  // Cure roundoff error issues when dP1==0 or dP2==0 to 6 or more significant digits.
   double avg1=0.5*(U[PRESSURE][PLUS1] + U[PRESSURE][MINUS1]);
   double avg2=0.5*(U[PRESSURE][PLUS2] + U[PRESSURE][MINUS2]);
-  if(fabs(dP1)/avg1<1e-7) dP1=0.0; /* If this is triggered, there is NO shock */
-  if(fabs(dP2)/avg2<1e-7) dP2=0.0; /* If this is triggered alone, there may be a shock. Otherwise if triggered with above, NO shock. */
+  if(fabs(dP1)/avg1<1e-6) dP1=0.0; /* If this is triggered, there is NO shock */
+  if(fabs(dP2)/avg2<1e-6) dP2=0.0; /* If this is triggered alone, there may be a shock. Otherwise if triggered with above, NO shock. */
 
   double dP1_over_dP2=1.0;
   if (dP2 != 0.0) dP1_over_dP2 = dP1/dP2;



More information about the Commits mailing list