diff options
-rw-r--r-- | param.ccl | 7 | ||||
-rw-r--r-- | src/setup_epsdis.c | 16 |
2 files changed, 14 insertions, 9 deletions
@@ -42,9 +42,14 @@ INT update_ah_every "how often to update the AH information for dissipation" STE REAL ah_slope "Slope inside AH" STEERABLE=always { - *:* :: "0 for no dissipation. Unstable when total epsdis<0 or total epsdis>1/3" + *:* :: "Slope from the outside value to the inside value in AHs" } 0.2 +REAL ah_radius_offset "Offset to the distance from the AH." STEERABLE=always +{ + *:* :: "negative values shift inwards, positive outwards" +} 0.0 + REAL ah_max_epsdis "maximal epsdis" STEERABLE=always { *:* :: "<0 for 'off', >=0 for maximal epsdis in horizon" diff --git a/src/setup_epsdis.c b/src/setup_epsdis.c index b17b8cc..4be7a2c 100644 --- a/src/setup_epsdis.c +++ b/src/setup_epsdis.c @@ -66,7 +66,7 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=0;i<outer_bound_npoints;i++) { index = CCTK_GFINDEX3D(cctkGH,i,j,k); indexP= CCTK_GFINDEX3D(cctkGH,outer_bound_npoints,j,k); - epsdisA[index]=epsdis+ob_slope*abs(x[index]-x[indexP]); + epsdisA[index]=epsdis+ob_slope*fabs(x[index]-x[indexP]); } } } @@ -77,7 +77,7 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=ni;i>ni-outer_bound_npoints;i--) { index = CCTK_GFINDEX3D(cctkGH,i,j,k); indexP= CCTK_GFINDEX3D(cctkGH,ni-outer_bound_npoints,j,k); - epsdisA[index]=epsdis+ob_slope*abs(x[index]-x[indexP]); + epsdisA[index]=epsdis+ob_slope*fabs(x[index]-x[indexP]); } } } @@ -89,7 +89,7 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=0;i<ni;i++) { index = CCTK_GFINDEX3D(cctkGH,i,j,k); indexP= CCTK_GFINDEX3D(cctkGH,i,outer_bound_npoints,k); - epsdisA[index]=epsdis+ob_slope*abs(y[index]-y[indexP]); + epsdisA[index]=epsdis+ob_slope*fabs(y[index]-y[indexP]); } } } @@ -100,7 +100,7 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=0;i<ni;i++) { index = CCTK_GFINDEX3D(cctkGH,i,j,k); indexP= CCTK_GFINDEX3D(cctkGH,i,nj-outer_bound_npoints,k); - epsdisA[index]=epsdis+ob_slope*abs(y[index]-y[indexP]); + epsdisA[index]=epsdis+ob_slope*fabs(y[index]-y[indexP]); } } } @@ -112,7 +112,7 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=0;i<ni;i++) { index = CCTK_GFINDEX3D(cctkGH,i,j,k); indexP= CCTK_GFINDEX3D(cctkGH,i,j,outer_bound_npoints); - epsdisA[index]=epsdis+ob_slope*abs(z[index]-z[indexP]); + epsdisA[index]=epsdis+ob_slope*fabs(z[index]-z[indexP]); } } } @@ -123,7 +123,7 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=0;i<ni;i++) { index = CCTK_GFINDEX3D(cctkGH,i,j,k); indexP= CCTK_GFINDEX3D(cctkGH,i,j,nk-outer_bound_npoints); - epsdisA[index]=epsdis+ob_slope*abs(z[index]-z[indexP]); + epsdisA[index]=epsdis+ob_slope*fabs(z[index]-z[indexP]); } } } @@ -256,8 +256,8 @@ setup_epsdis (CCTK_ARGUMENTS) for (i=0;i<npts;i++) { radp=sqrt((xa[i]-odx)*(xa[i]-odx)+(ya[i]-ody)*(ya[i]-ody)+ (za[i]-odz)*(za[i]-odz)); - if (radp<=rads[i]) { - epsdisA[inds[i]]=epsdis+ ah_slope*(rads[i]-radp); + if (radp<=rads[i]+ah_radius_offset) { + epsdisA[inds[i]]=epsdis+ ah_slope*(rads[i]+ah_radius_offset-radp); if (epsdisA[inds[i]] > ah_max_epsdis) { epsdisA[inds[i]] = ah_max_epsdis; } |