diff options
Diffstat (limited to 'src/macro/ADM_Derivative.h')
-rw-r--r-- | src/macro/ADM_Derivative.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/macro/ADM_Derivative.h b/src/macro/ADM_Derivative.h new file mode 100644 index 0000000..af8cc91 --- /dev/null +++ b/src/macro/ADM_Derivative.h @@ -0,0 +1,93 @@ +/*@@ + @header ADM_Derivative.h + @date June 2002 + @author Denis Pollney + @desc + Derivative operators. + @enddesc +@@*/ + +#ifndef ADM_DERIVATIVE_H +#define ADM_DERIVATIVE_H + +#include "ADM_Spacing.h" + +/* + * 2nd order operators. + */ + +#define ADM_DX_2(var,i,j,k) I2DX*(var(i+1,j,k) - var(i-1,j,k)) +#define ADM_DY_2(var,i,j,k) I2DY*(var(i,j+1,k) - var(i,j-1,k)) +#define ADM_DZ_2(var,i,j,k) I2DZ*(var(i,j,k+1) - var(i,j,k-1)) + +#define ADM_DXX_2(var,i,j,k) IDXX*(var(i+1,j,k) - 2.d0*var(i,j,k) \ + + var(i-1,j,k)) +#define ADM_DYY_2(var,i,j,k) IDYY*(var(i,j+1,k) - 2.d0*var(i,j,k) \ + + var(i,j-1,k)) +#define ADM_DZZ_2(var,i,j,k) IDZZ*(var(i,j,k+1) - 2.d0*var(i,j,k) \ + + 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)) +#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)) +#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)) +/* + * 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_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_DXY_4(var,i,j,k) (IDXY/36.d0)* \ + (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)* \ + (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)* \ + (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)) \ + + 64.d0*(var(i,j+1,k+1) - var(i,j+1,k-1) - var(i,j-1,k+1) + var(i,j-1,k-1))) + + +#define ADM_ADV_DX_P1(var,i,j,k) betax(i,j,k)*IDX*(var(i+i,j,k) - var(i,j,k)) +#define ADM_ADV_DY_P1(var,i,j,k) betay(i,j,k)*IDY*(var(i,j+1,k) - var(i,j,k)) +#define ADM_ADV_DZ_P1(var,i,j,k) betaz(i,j,k)*IDZ*(var(i,j,k+1) - var(i,j,k)) + +#define ADM_ADV_DX_M1(var,i,j,k) betax(i,j,k)*IDX*(var(i,j,k) - var(i-1,j,k)) +#define ADM_ADV_DY_M1(var,i,j,k) betay(i,j,k)*IDY*(var(i,j,k) - var(i,j-1,k)) +#define ADM_ADV_DZ_M1(var,i,j,k) betaz(i,j,k)*IDZ*(var(i,j,k) - var(i,j,k-1)) + +#define ADM_ADV_DX_P2(var,i,j,k) betax(i,j,k)*I2DX*(-3.d0*var(i,j,k) \ + + 4.d0*var(i+1,j,k) - var(i+2,j,k)) +#define ADM_ADV_DY_P2(var,i,j,k) betay(i,j,k)*I2DY*(-3.d0*var(i,j,k) \ + + 4.d0*var(i,j+1,k) - var(i,j+2,k)) +#define ADM_ADV_DZ_P2(var,i,j,k) betaz(i,j,k)*I2DZ*(-3.d0*var(i,j,k) \ + + 4.d0*var(i,j,k+1) - var(i,j,k+2)) + +#define ADM_ADV_DX_M2(var,i,j,k) betax(i,j,k)*I2DX*(3.d0*var(i,j,k) \ + - 4.d0*var(i-1,j,k) + var(i-2,j,k)) +#define ADM_ADV_DY_M2(var,i,j,k) betay(i,j,k)*I2DY*(3.d0*var(i,j,k) \ + - 4.d0*var(i,j-1,k) + var(i,j-2,k)) +#define ADM_ADV_DZ_M2(var,i,j,k) betaz(i,j,k)*I2DZ*(3.d0*var(i,j,k) \ + - 4.d0*var(i,j,k-1) + var(i,j,k-2)) + +#endif |