aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortradke <tradke@b1d164ef-f17a-46e7-89d4-021c7118ef4e>2003-09-29 14:28:21 +0000
committertradke <tradke@b1d164ef-f17a-46e7-89d4-021c7118ef4e>2003-09-29 14:28:21 +0000
commit50fca33a874c1c5911f03c511bf881d335ddefec (patch)
tree54f0eb483a36584ba6c3f99c1c3286bed688ecab
parent53719c534c23739dcc01e6b936e53441bb74012d (diff)
Some optimizations: precalculate some spacing terms for 4th order spatial differencing.
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinBase/ADMMacros/trunk@65 b1d164ef-f17a-46e7-89d4-021c7118ef4e
-rw-r--r--src/macro/ADM_Derivative.h39
-rw-r--r--src/macro/ADM_Spacing.h18
-rw-r--r--src/macro/ADM_Spacing_declare.h10
3 files changed, 43 insertions, 24 deletions
diff --git a/src/macro/ADM_Derivative.h b/src/macro/ADM_Derivative.h
index c9b4fb4..8e62310 100644
--- a/src/macro/ADM_Derivative.h
+++ b/src/macro/ADM_Derivative.h
@@ -28,40 +28,43 @@
+ var(i,j,k-1))
#define ADM_DXY_2(var,i,j,k) IDXY*(var(i+1,j+1,k) - var(i+1,j-1,k) \
- - var(i-1,j+1,k) + var(i-1,j-1,k))
+ - var(i-1,j+1,k) + var(i-1,j-1,k))
#define ADM_DXZ_2(var,i,j,k) IDXZ*(var(i+1,j,k+1) - var(i+1,j,k-1) \
- - var(i-1,j,k+1) + var(i-1,j,k-1))
+ - var(i-1,j,k+1) + var(i-1,j,k-1))
#define ADM_DYZ_2(var,i,j,k) IDYZ*(var(i,j+1,k+1) - var(i,j+1,k-1) \
- - var(i,j-1,k+1) + var(i,j-1,k-1))
+ - var(i,j-1,k+1) + var(i,j-1,k-1))
/*
* 4th order operators.
*/
-#define ADM_DX_4(var,i,j,k) (I2DX/6.d0)*(-var(i+2,j,k) + 8.d0*var(i+1,j,k) \
- - 8.d0*var(i-1,j,k) + var(i-2,j,k))
-#define ADM_DY_4(var,i,j,k) (I2DY/6.d0)*(-var(i,j+2,k) + 8.d0*var(i,j+1,k) \
- - 8.d0*var(i,j-1,k) + var(i,j-2,k))
-#define ADM_DZ_4(var,i,j,k) (I2DZ/6.d0)*(-var(i,j,k+2) + 8.d0*var(i,j,k+1) \
- - 8.d0*var(i,j,k-1) + var(i,j,k-2))
+#define ADM_DX_4(var,i,j,k) I12DX*(-var(i+2,j,k) + var(i-2,j,k) \
+ + 8.d0*(var(i+1,j,k) - var(i-1,j,k)))
+#define ADM_DY_4(var,i,j,k) I12DY*(-var(i,j+2,k) + var(i,j-2,k) \
+ + 8.d0*(var(i,j+1,k) - var(i,j-1,k)))
+#define ADM_DZ_4(var,i,j,k) I12DZ*(-var(i,j,k+2) + var(i,j,k-2) \
+ + 8.d0*(var(i,j,k+1) - var(i,j,k-1)))
-#define ADM_DXX_4(var,i,j,k) (IDXX/12.d0)*(-var(i+2,j,k) + 16.d0*var(i+1,j,k)\
- - 30.d0*var(i,j,k) + 16.d0*var(i-1,j,k) - var(i-2,j,k))
-#define ADM_DYY_4(var,i,j,k) (IDYY/12.d0)*(-var(i,j+2,k) + 16.d0*var(i,j+1,k)\
- - 30.d0*var(i,j,k) + 16.d0*var(i,j-1,k) - var(i,j-2,k))
-#define ADM_DZZ_4(var,i,j,k) (IDZZ/12.d0)*(-var(i,j,k+2) + 16.d0*var(i,j,k+1)\
- - 30.d0*var(i,j,k) + 16.d0*var(i,j,k-1) - var(i,j,k-2))
+#define ADM_DXX_4(var,i,j,k) I12DXX*(-var(i+2,j,k) - var(i-2,j,k) \
+ + 16.d0*(var(i+1,j,k) + var(i-1,j,k)) \
+ - 30.d0*var(i,j,k))
+#define ADM_DYY_4(var,i,j,k) I12DYY*(-var(i,j+2,k) - var(i,j-2,k) \
+ + 16.d0*(var(i,j+1,k) + var(i,j-1,k)) \
+ - 30.d0*var(i,j,k))
+#define ADM_DZZ_4(var,i,j,k) I12DZZ*(-var(i,j,k+2) - var(i,j,k-2) \
+ + 16.d0*(var(i,j,k+1) + var(i,j,k-1)) \
+ - 30.d0*var(i,j,k))
-#define ADM_DXY_4(var,i,j,k) (IDXY/36.d0)* \
+#define ADM_DXY_4(var,i,j,k) I36DXY* \
(var(i+2,j+2,k) - var(i+2,j-2,k) - var(i-2,j+2,k) + var(i-2,j-2,k) \
+ 8.d0*(-var(i+2,j+1,k) + var(i+2,j-1,k) - var(i+1,j+2,k) + var(i+1,j-2,k) \
+ var(i-2,j+1,k) - var(i-2,j-1,k) - var(i-1,j-2,k) + var(i-1,j+2,k)) \
+ 64.d0*(var(i+1,j+1,k) - var(i+1,j-1,k) - var(i-1,j+1,k) + var(i-1,j-1,k)))
-#define ADM_DXZ_4(var,i,j,k) (IDXZ/36.d0)* \
+#define ADM_DXZ_4(var,i,j,k) I36DXZ* \
(var(i+2,j,k+2) - var(i+2,j,k-2) - var(i-2,j,k+2) + var(i-2,j,k-2) \
+ 8.d0*(-var(i+2,j,k+1) + var(i+2,j,k-1) - var(i+1,j,k+2) + var(i+1,j,k-2) \
+ var(i-2,j,k+1) - var(i-2,j,k-1) - var(i-1,j,k-2) + var(i-1,j,k+2)) \
+ 64.d0*(var(i+1,j,k+1) - var(i+1,j,k-1) - var(i-1,j,k+1) + var(i-1,j,k-1)))
-#define ADM_DYZ_4(var,i,j,k) (IDYZ/36.d0)* \
+#define ADM_DYZ_4(var,i,j,k) I36DYZ* \
(var(i,j+2,k+2) - var(i,j+2,k-2) - var(i,j-2,k+2) + var(i,j-2,k-2) \
+ 8.d0*(-var(i,j+2,k+1) + var(i,j+2,k-1) - var(i,j+1,k+2) + var(i,j+1,k-2) \
+ var(i,j-2,k+1) - var(i,j-2,k-1) - var(i,j-1,k-2) + var(i,j-1,k+2)) \
diff --git a/src/macro/ADM_Spacing.h b/src/macro/ADM_Spacing.h
index c1845fe..58087c8 100644
--- a/src/macro/ADM_Spacing.h
+++ b/src/macro/ADM_Spacing.h
@@ -19,16 +19,28 @@
idy=1.d0/dy
idz=1.d0/dz
- i2dx=0.5d0*idx
- i2dy=0.5d0*idy
- i2dz=0.5d0*idz
+ i2dx=idx/2.d0
+ i2dy=idy/2.d0
+ i2dz=idz/2.d0
+
+ i12dx=idx/12.d0
+ i12dy=idy/12.d0
+ i12dz=idz/12.d0
idxx=idx**2
idyy=idy**2
idzz=idz**2
+ i12dxx=idxx/12.d0
+ i12dyy=idyy/12.d0
+ i12dzz=idzz/12.d0
+
idxy=i2dx*i2dy
idxz=i2dx*i2dz
idyz=i2dy*i2dz
+ i36dxy=idxy/36.d0
+ i36dxz=idxz/36.d0
+ i36dyz=idyz/36.d0
+
#endif
diff --git a/src/macro/ADM_Spacing_declare.h b/src/macro/ADM_Spacing_declare.h
index 21a1ee6..b8246d1 100644
--- a/src/macro/ADM_Spacing_declare.h
+++ b/src/macro/ADM_Spacing_declare.h
@@ -1,13 +1,17 @@
/*@@
- @header ADM_Spacing.h
+ @header ADM_Spacing_delcare.h
@date June 2002
@author Denis Pollney
@desc
- Calculate various spacing dependent scalars.
+ Declare various spacing dependent scalars.
@enddesc
@@*/
CCTK_REAL :: dt, dx, dy, dz
- CCTK_REAL :: idx, idy, idz, i2dx, i2dy, i2dz
+ CCTK_REAL :: idx, idy, idz
+ CCTK_REAL :: i2dx, i2dy, i2dz
+ CCTK_REAL :: i12dx, i12dy, i12dz
CCTK_REAL :: idxx, idxy, idxz, idyy, idyz, idzz
+ CCTK_REAL :: i12dxx, i12dyy, i12dzz
+ CCTK_REAL :: i36dxy, i36dxz, i36dyz