aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorevans <evans@b1d164ef-f17a-46e7-89d4-021c7118ef4e>1999-03-09 21:04:02 +0000
committerevans <evans@b1d164ef-f17a-46e7-89d4-021c7118ef4e>1999-03-09 21:04:02 +0000
commit0a13cbb3d0f5ebf208d962d374a197c66bd13b1b (patch)
tree19582fa856a1193d17170ad971353f58e7be36c9
parentc58897b8676212b9aee16d6d2f80ca2adeb50c6c (diff)
added the Einstien macros.
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinBase/ADMMacros/trunk@2 b1d164ef-f17a-46e7-89d4-021c7118ef4e
-rw-r--r--src/macro/CDCDA_declare.h57
-rw-r--r--src/macro/CDCDA_guts.h43
-rw-r--r--src/macro/CDCDA_undefine.h15
-rw-r--r--src/macro/CDK_declare.h19
-rw-r--r--src/macro/CDK_guts.h18
-rw-r--r--src/macro/CDK_undefine.h14
-rw-r--r--src/macro/CDXCDK_declare.h98
-rw-r--r--src/macro/CDXCDK_guts.h60
-rw-r--r--src/macro/CDXCDK_undefine.h12
-rw-r--r--src/macro/CDYCDK_declare.h98
-rw-r--r--src/macro/CDYCDK_guts.h67
-rw-r--r--src/macro/CDYCDK_undefine.h13
-rw-r--r--src/macro/CDZCDK_declare.h98
-rw-r--r--src/macro/CDZCDK_guts.h67
-rw-r--r--src/macro/CDZCDK_undefine.h12
-rw-r--r--src/macro/CHR1_declare.h164
-rw-r--r--src/macro/CHR1_guts.h65
-rw-r--r--src/macro/CHR1_undefine.h13
-rw-r--r--src/macro/CHR2_declare.h175
-rw-r--r--src/macro/CHR2_guts.h72
-rw-r--r--src/macro/CHR2_undefine.h13
-rw-r--r--src/macro/DA_declare.h109
-rw-r--r--src/macro/DA_guts.h38
-rw-r--r--src/macro/DA_undefine.h12
-rw-r--r--src/macro/DB_declare.h24
-rw-r--r--src/macro/DB_guts.h25
-rw-r--r--src/macro/DB_undefine.h14
-rw-r--r--src/macro/DCGDT_declare.h123
-rw-r--r--src/macro/DCGDT_guts.h96
-rw-r--r--src/macro/DCGDT_undefine.h13
-rw-r--r--src/macro/DDA_declare.h197
-rw-r--r--src/macro/DDA_guts.h52
-rw-r--r--src/macro/DDA_undefine.h10
-rw-r--r--src/macro/DDG_declare.h105
-rw-r--r--src/macro/DDG_guts.h26
-rw-r--r--src/macro/DDG_undefine.h17
-rw-r--r--src/macro/DETG_declare.h129
-rw-r--r--src/macro/DETG_guts.h57
-rw-r--r--src/macro/DETG_undefine.h10
-rw-r--r--src/macro/DG_declare.h24
-rw-r--r--src/macro/DG_guts.h25
-rw-r--r--src/macro/DG_undefine.h14
-rw-r--r--src/macro/DKDT_declare.h111
-rw-r--r--src/macro/DKDT_guts.h75
-rw-r--r--src/macro/DKDT_undefine.h17
-rw-r--r--src/macro/DK_declare.h24
-rw-r--r--src/macro/DK_guts.h25
-rw-r--r--src/macro/DK_undefine.h14
-rw-r--r--src/macro/DXDB_declare.h93
-rw-r--r--src/macro/DXDB_guts.h39
-rw-r--r--src/macro/DXDB_undefine.h11
-rw-r--r--src/macro/DXDCG_declare.h139
-rw-r--r--src/macro/DXDCG_guts.h48
-rw-r--r--src/macro/DXDCG_undefine.h11
-rw-r--r--src/macro/DXDG_declare.h130
-rw-r--r--src/macro/DXDG_guts.h53
-rw-r--r--src/macro/DXDG_undefine.h12
-rw-r--r--src/macro/DXDK_declare.h138
-rw-r--r--src/macro/DXDK_guts.h40
-rw-r--r--src/macro/DXDK_undefine.h11
-rw-r--r--src/macro/DXXDG_declare.h96
-rw-r--r--src/macro/DXXDG_guts.h81
-rw-r--r--src/macro/DXXDG_undefine.h11
-rw-r--r--src/macro/DXYDG_declare.h206
-rw-r--r--src/macro/DXYDG_guts.h94
-rw-r--r--src/macro/DXYDG_undefine.h13
-rw-r--r--src/macro/DXZDG_declare.h206
-rw-r--r--src/macro/DXZDG_guts.h95
-rw-r--r--src/macro/DXZDG_undefine.h12
-rw-r--r--src/macro/DYDB_declare.h92
-rw-r--r--src/macro/DYDB_guts.h39
-rw-r--r--src/macro/DYDB_undefine.h10
-rw-r--r--src/macro/DYDCG_declare.h137
-rw-r--r--src/macro/DYDCG_guts.h49
-rw-r--r--src/macro/DYDCG_undefine.h10
-rw-r--r--src/macro/DYDG_declare.h131
-rw-r--r--src/macro/DYDG_guts.h53
-rw-r--r--src/macro/DYDG_undefine.h12
-rw-r--r--src/macro/DYDK_declare.h137
-rw-r--r--src/macro/DYDK_guts.h41
-rw-r--r--src/macro/DYDK_undefine.h11
-rw-r--r--src/macro/DYYDG_declare.h94
-rw-r--r--src/macro/DYYDG_guts.h80
-rw-r--r--src/macro/DYYDG_undefine.h13
-rw-r--r--src/macro/DYZDG_declare.h206
-rw-r--r--src/macro/DYZDG_guts.h95
-rw-r--r--src/macro/DYZDG_undefine.h14
-rw-r--r--src/macro/DZDB_declare.h92
-rw-r--r--src/macro/DZDB_guts.h39
-rw-r--r--src/macro/DZDB_undefine.h10
-rw-r--r--src/macro/DZDCG_declare.h136
-rw-r--r--src/macro/DZDCG_guts.h48
-rw-r--r--src/macro/DZDCG_undefine.h10
-rw-r--r--src/macro/DZDG_declare.h132
-rw-r--r--src/macro/DZDG_guts.h53
-rw-r--r--src/macro/DZDG_undefine.h12
-rw-r--r--src/macro/DZDK_declare.h135
-rw-r--r--src/macro/DZDK_guts.h40
-rw-r--r--src/macro/DZDK_undefine.h11
-rw-r--r--src/macro/DZZDG_declare.h92
-rw-r--r--src/macro/DZZDG_guts.h79
-rw-r--r--src/macro/DZZDG_undefine.h12
-rw-r--r--src/macro/GAMMA_declare.h57
-rw-r--r--src/macro/GAMMA_guts.h51
-rw-r--r--src/macro/GAMMA_undefine.h13
-rw-r--r--src/macro/HAMADM_declare.h42
-rw-r--r--src/macro/HAMADM_guts.h34
-rw-r--r--src/macro/HAMADM_undefine.h18
-rw-r--r--src/macro/KK_declare.h103
-rw-r--r--src/macro/KK_guts.h88
-rw-r--r--src/macro/KK_undefine.h13
-rw-r--r--src/macro/LIEG_declare.h110
-rw-r--r--src/macro/LIEG_guts.h80
-rw-r--r--src/macro/LIEG_undefine.h14
-rw-r--r--src/macro/LIEK_declare.h110
-rw-r--r--src/macro/LIEK_guts.h80
-rw-r--r--src/macro/LIEK_undefine.h14
-rw-r--r--src/macro/MOMXADM_declare.h41
-rw-r--r--src/macro/MOMXADM_guts.h41
-rw-r--r--src/macro/MOMXADM_undefine.h17
-rw-r--r--src/macro/MOMYADM_declare.h41
-rw-r--r--src/macro/MOMYADM_guts.h41
-rw-r--r--src/macro/MOMYADM_undefine.h17
-rw-r--r--src/macro/MOMZADM_declare.h41
-rw-r--r--src/macro/MOMZADM_guts.h39
-rw-r--r--src/macro/MOMZADM_undefine.h17
-rw-r--r--src/macro/NABA_declare.h36
-rw-r--r--src/macro/NABA_guts.h36
-rw-r--r--src/macro/NABA_undefine.h14
-rw-r--r--src/macro/RICCI_declare.h80
-rw-r--r--src/macro/RICCI_guts.h188
-rw-r--r--src/macro/RICCI_undefine.h14
-rw-r--r--src/macro/STRESSENERGY_declare.h68
-rw-r--r--src/macro/STRESSENERGY_guts.h40
-rw-r--r--src/macro/STRESSENERGY_undefine.h17
-rw-r--r--src/macro/TRKK_declare.h41
-rw-r--r--src/macro/TRKK_guts.h35
-rw-r--r--src/macro/TRKK_undefine.h15
-rw-r--r--src/macro/TRK_declare.h68
-rw-r--r--src/macro/TRK_guts.h42
-rw-r--r--src/macro/TRK_undefine.h14
-rw-r--r--src/macro/TRRICCI_declare.h44
-rw-r--r--src/macro/TRRICCI_guts.h35
-rw-r--r--src/macro/TRRICCI_undefine.h15
-rw-r--r--src/macro/TRT_declare.h114
-rw-r--r--src/macro/TRT_guts.h62
-rw-r--r--src/macro/TRT_undefine.h14
-rw-r--r--src/macro/UPPERMET_declare.h93
-rw-r--r--src/macro/UPPERMET_guts.h42
-rw-r--r--src/macro/UPPERMET_undefine.h11
-rw-r--r--src/macro/WAVEG_declare.h56
-rw-r--r--src/macro/WAVEG_guts.h113
-rw-r--r--src/macro/WAVEG_undefine.h17
153 files changed, 8689 insertions, 0 deletions
diff --git a/src/macro/CDCDA_declare.h b/src/macro/CDCDA_declare.h
new file mode 100644
index 0000000..0c29c88
--- /dev/null
+++ b/src/macro/CDCDA_declare.h
@@ -0,0 +1,57 @@
+/*@@
+ @header CDCDA_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate all second covariant spatial derivative of lapse
+
+ That is alpha_{;ij}
+ @enddesc
+@@*/
+
+#ifndef CDCDA_DECLARE
+#define CDCDA_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DA_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDA_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_declare.h"
+
+/* Output variables */
+#undef CDCDA_CDXXDA
+#define CDCDA_CDXXDA cdcda_cdxxda
+#undef CDCDA_CDXYDA
+#define CDCDA_CDXYDA cdcda_cdxyda
+#undef CDCDA_CDXZDA
+#define CDCDA_CDXZDA cdcda_cdxzda
+#undef CDCDA_CDYYDA
+#define CDCDA_CDYYDA cdcda_cdyyda
+#undef CDCDA_CDYZDA
+#define CDCDA_CDYZDA cdcda_cdyzda
+#undef CDCDA_CDZZDA
+#define CDCDA_CDZZDA cdcda_cdzzda
+
+#ifdef FCODE
+
+/* Declare output variables */
+ REAL CDCDA_CDXXDA
+ REAL CDCDA_CDXYDA
+ REAL CDCDA_CDXZDA
+ REAL CDCDA_CDYYDA
+ REAL CDCDA_CDYZDA
+ REAL CDCDA_CDZZDA
+
+#endif
+
+#ifdef CCODE
+
+/* Declare output variables */
+ double CDCDA_CDXXDA;
+ double CDCDA_CDXYDA;
+ double CDCDA_CDXZDA;
+ double CDCDA_CDYYDA;
+ double CDCDA_CDYZDA;
+ double CDCDA_CDZZDA;
+
+#endif
+
+#endif
diff --git a/src/macro/CDCDA_guts.h b/src/macro/CDCDA_guts.h
new file mode 100644
index 0000000..08d7661
--- /dev/null
+++ b/src/macro/CDCDA_guts.h
@@ -0,0 +1,43 @@
+/*@@
+ @header CDCDA_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all second covariant spatial derivative of lapse
+
+ That is alpha_{;ij}
+
+ @enddesc
+@@*/
+
+#ifndef CDCDA_GUTS
+#define CDCDA_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DA_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDA_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_guts.h"
+
+#ifdef FCODE
+
+ CDCDA_CDXXDA = (DDA_DXXDA-CHR2_XXX*DA_DXDA-CHR2_YXX*DA_DYDA-CHR2_ZXX*DA_DZDA)
+ CDCDA_CDXYDA = (DDA_DXYDA-CHR2_XXY*DA_DXDA-CHR2_YXY*DA_DYDA-CHR2_ZXY*DA_DZDA)
+ CDCDA_CDXZDA = (DDA_DXZDA-CHR2_XXZ*DA_DXDA-CHR2_YXZ*DA_DYDA-CHR2_ZXZ*DA_DZDA)
+ CDCDA_CDYYDA = (DDA_DYYDA-CHR2_XYY*DA_DXDA-CHR2_YYY*DA_DYDA-CHR2_ZYY*DA_DZDA)
+ CDCDA_CDYZDA = (DDA_DYZDA-CHR2_XYZ*DA_DXDA-CHR2_YYZ*DA_DYDA-CHR2_ZYZ*DA_DZDA)
+ CDCDA_CDZZDA = (DDA_DZZDA-CHR2_XZZ*DA_DXDA-CHR2_YZZ*DA_DYDA-CHR2_ZZZ*DA_DZDA)
+
+#endif
+
+#ifdef CCODE
+
+ CDCDA_CDXXDA = (DDA_DXXDA-CHR2_XXX*DA_DXDA-CHR2_YXX*DA_DYDA-CHR2_ZXX*DA_DZDA);
+ CDCDA_CDXYDA = (DDA_DXYDA-CHR2_XXY*DA_DXDA-CHR2_YXY*DA_DYDA-CHR2_ZXY*DA_DZDA);
+ CDCDA_CDXZDA = (DDA_DXZDA-CHR2_XXZ*DA_DXDA-CHR2_YXZ*DA_DYDA-CHR2_ZXZ*DA_DZDA);
+ CDCDA_CDYYDA = (DDA_DYYDA-CHR2_XYY*DA_DXDA-CHR2_YYY*DA_DYDA-CHR2_ZYY*DA_DZDA);
+ CDCDA_CDYZDA = (DDA_DYZDA-CHR2_XYZ*DA_DXDA-CHR2_YYZ*DA_DYDA-CHR2_ZYZ*DA_DZDA);
+ CDCDA_CDZZDA = (DDA_DZZDA-CHR2_XZZ*DA_DXDA-CHR2_YZZ*DA_DYDA-CHR2_ZZZ*DA_DZDA);
+
+#endif
+
+#endif
+
diff --git a/src/macro/CDCDA_undefine.h b/src/macro/CDCDA_undefine.h
new file mode 100644
index 0000000..ff34780
--- /dev/null
+++ b/src/macro/CDCDA_undefine.h
@@ -0,0 +1,15 @@
+/*@@
+ @header CDCDA_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CDCDA_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DA_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDA_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_undefine.h"
+
+
diff --git a/src/macro/CDK_declare.h b/src/macro/CDK_declare.h
new file mode 100644
index 0000000..47fd651
--- /dev/null
+++ b/src/macro/CDK_declare.h
@@ -0,0 +1,19 @@
+/*@@
+ @header CDG_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate all the first covariant
+ derivatives of the extrinsic curvature with respect to x, y, z.
+ @enddesc
+@@*/
+
+#ifndef CDK_DECLARE
+#define CDK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDXCDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDYCDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDZCDK_declare.h"
+
+#endif
diff --git a/src/macro/CDK_guts.h b/src/macro/CDK_guts.h
new file mode 100644
index 0000000..527e442
--- /dev/null
+++ b/src/macro/CDK_guts.h
@@ -0,0 +1,18 @@
+/*@@
+ @header CDK_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all the first covariant derivatives of the
+ extrinsic curvature with respect to x, y, z
+ @enddesc
+@@*/
+
+#ifndef CDK_GUTS
+#define CDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDXCDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDYCDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDZCDK_guts.h"
+
+#endif
diff --git a/src/macro/CDK_undefine.h b/src/macro/CDK_undefine.h
new file mode 100644
index 0000000..29b16c7
--- /dev/null
+++ b/src/macro/CDK_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header CDK_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDXCDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDYCDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDZCDK_undefine.h"
+
diff --git a/src/macro/CDXCDK_declare.h b/src/macro/CDXCDK_declare.h
new file mode 100644
index 0000000..6c9a4e7
--- /dev/null
+++ b/src/macro/CDXCDK_declare.h
@@ -0,0 +1,98 @@
+/*@@
+ @header CDXCDK_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to compute first conformal
+ derivatives of the extrinsic curvature with respect to x
+ @enddesc
+@@*/
+
+#ifndef CDXCDK_DECLARE
+#define CDXCDK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef CDXCDK_KXX
+#define CDXCDK_KXX hxx(i,j,k)
+#undef CDXCDK_KXY
+#define CDXCDK_KXY hxy(i,j,k)
+#undef CDXCDK_KXZ
+#define CDXCDK_KXZ hxz(i,j,k)
+#undef CDXCDK_KYY
+#define CDXCDK_KYY hyy(i,j,k)
+#undef CDXCDK_KYZ
+#define CDXCDK_KYZ hyz(i,j,k)
+#undef CDXCDK_KZZ
+#define CDXCDK_KZZ hzz(i,j,k)
+
+/* Output variables */
+#undef CDXCDK_CDXCDKXX
+#define CDXCDK_CDXCDKXX cdxcdk_cdxcdkxx
+#undef CDXCDK_CDXCDKXY
+#define CDXCDK_CDXCDKXY cdxcdk_cdxcdkxy
+#undef CDXCDK_CDXCDKXZ
+#define CDXCDK_CDXCDKXZ cdxcdk_cdxcdkxz
+#undef CDXCDK_CDXCDKYY
+#define CDXCDK_CDXCDKYY cdxcdk_cdxcdkyy
+#undef CDXCDK_CDXCDKYZ
+#define CDXCDK_CDXCDKYZ cdxcdk_cdxcdkyz
+#undef CDXCDK_CDXCDKZZ
+#define CDXCDK_CDXCDKZZ cdxcdk_cdxcdkzz
+
+/* Declare output variables */
+ REAL CDXCDK_CDXCDKXX
+ REAL CDXCDK_CDXCDKXY
+ REAL CDXCDK_CDXCDKXZ
+ REAL CDXCDK_CDXCDKYY
+ REAL CDXCDK_CDXCDKYZ
+ REAL CDXCDK_CDXCDKZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef CDXCDK_KXX
+#define CDXCDK_KXX hxx[ijk]
+#undef CDXCDK_KXY
+#define CDXCDK_KXY hxy[ijk]
+#undef CDXCDK_KXZ
+#define CDXCDK_KXZ hxz[ijk]
+#undef CDXCDK_KYY
+#define CDXCDK_KYY hyy[ijk]
+#undef CDXCDK_KYZ
+#define CDXCDK_KYZ hyz[ijk]
+#undef CDXCDK_KZZ
+#define CDXCDK_KZZ hzz[ijk]
+
+/* Output variables */
+#undef CDXCDK_CDXCDKXX
+#define CDXCDK_CDXCDKXX cdxcdk_cdxcdkxx
+#undef CDXCDK_CDXCDKXY
+#define CDXCDK_CDXCDKXY cdxcdk_cdxcdkxy
+#undef CDXCDK_CDXCDKXZ
+#define CDXCDK_CDXCDKXZ cdxcdk_cdxcdkxz
+#undef CDXCDK_CDXCDKYY
+#define CDXCDK_CDXCDKYY cdxcdk_cdxcdkyy
+#undef CDXCDK_CDXCDKYZ
+#define CDXCDK_CDXCDKYZ cdxcdk_cdxcdkyz
+#undef CDXCDK_CDXCDKZZ
+#define CDXCDK_CDXCDKZZ cdxcdk_cdxcdkzz
+
+/* Declare output variables */
+double CDXCDK_CDXCDKXX;
+double CDXCDK_CDXCDKXY;
+double CDXCDK_CDXCDKXZ;
+double CDXCDK_CDXCDKYY;
+double CDXCDK_CDXCDKYZ;
+double CDXCDK_CDXCDKZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/CDXCDK_guts.h b/src/macro/CDXCDK_guts.h
new file mode 100644
index 0000000..710d791
--- /dev/null
+++ b/src/macro/CDXCDK_guts.h
@@ -0,0 +1,60 @@
+/*@@
+ @header CDXCDK_guts.h
+ @date August 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first conformal derivatives of the
+ extrinsic curvature with respect to x
+ @enddesc
+@@*/
+
+#ifndef CDXCDK_GUTS
+#define CDXCDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_guts.h"
+
+#ifdef FCODE
+
+ CDXCDK_CDXCDKXX = DXDK_DXDKXX - 2D0*(CHR2_XXX*CDXCDK_KXX
+ & + CHR2_YXX*CDXCDK_KXY + CHR2_ZXX*CDXCDK_KXZ)
+ CDXCDK_CDXCDKYY = DXDK_DXDKYY - 2D0*(CHR2_XXY*CDXCDK_KXY
+ & + CHR2_YXY*CDXCDK_KYY + CHR2_ZXY*CDXCDK_KYZ)
+ CDXCDK_CDXCDKZZ = DXDK_DXDKZZ - 2D0*(CHR2_XXZ*CDXCDK_KXZ
+ & + CHR2_YXZ*CDXCDK_KYZ + CHR2_ZXZ*CDXCDK_KZZ)
+
+ CDXCDK_CDXCDKXY = DXDK_DXDKXY - CHR2_XXY*CDXCDK_KXX -
+ & (CHR2_XXX + CHR2_YXY)*CDXCDK_KXY - CHR2_ZXY*CDXCDK_KXZ -
+ & CHR2_YXX*CDXCDK_KYY - CHR2_ZXX*CDXCDK_KYZ
+ CDXCDK_CDXCDKXZ = DXDK_DXDKXZ - CHR2_XXZ*CDXCDK_KXX -
+ & (CHR2_XXX + CHR2_ZXZ)*CDXCDK_KXZ - CHR2_YXZ*CDXCDK_KXY -
+ & CHR2_YXX*CDXCDK_KYZ - CHR2_ZXX*CDXCDK_KZZ
+ CDXCDK_CDXCDKYZ = DXDK_DXDKYZ - CHR2_XXZ*CDXCDK_KXY -
+ & CHR2_XXY*CDXCDK_KXZ - CHR2_YXZ*CDXCDK_KYY -
+ & (CHR2_YXY + CHR2_ZXZ)*CDXCDK_KYZ - CHR2_ZXY*CDXCDK_KZZ
+
+#endif
+
+#ifdef CCODE
+
+ CDXCDK_CDXCDKXX = DXDK_DXDKXX - 2D0*(CHR2_XXX*CDXCDK_KXX
+ + CHR2_YXX*CDXCDK_KXY + CHR2_ZXX*CDXCDK_KXZ);
+ CDXCDK_CDXCDKYY = DXDK_DXDKYY - 2D0*(CHR2_XXY*CDXCDK_KXY
+ + CHR2_YXY*CDXCDK_KYY + CHR2_ZXY*CDXCDK_KYZ);
+ CDXCDK_CDXCDKZZ = DXDK_DXDKZZ - 2D0*(CHR2_XXZ*CDXCDK_KXZ
+ + CHR2_YXZ*CDXCDK_KYZ + CHR2_ZXZ*CDXCDK_KZZ);
+
+ CDXCDK_CDXCDKXY = DXDK_DXDKXY - CHR2_XXY*CDXCDK_KXX -
+ (CHR2_XXX + CHR2_YXY)*CDXCDK_KXY - CHR2_ZXY*CDXCDK_KXZ -
+ CHR2_YXX*CDXCDK_KYY - CHR2_ZXX*CDXCDK_KYZ;
+ CDXCDK_CDXCDKXZ = DXDK_DXDKXZ - CHR2_XXZ*CDXCDK_KXX -
+ (CHR2_XXX + CHR2_ZXZ)*CDXCDK_KXZ - CHR2_YXZ*CDXCDK_KXY -
+ CHR2_YXX*CDXCDK_KYZ - CHR2_ZXX*CDXCDK_KZZ;
+ CDXCDK_CDXCDKYZ = DXDK_DXDKYZ - CHR2_XXZ*CDXCDK_KXY -
+ CHR2_XXY*CDXCDK_KXZ - CHR2_YXZ*CDXCDK_KYY -
+ (CHR2_YXY + CHR2_ZXZ)*CDXCDK_KYZ - CHR2_ZXY*CDXCDK_KZZ;
+
+
+#endif
+
+#endif
diff --git a/src/macro/CDXCDK_undefine.h b/src/macro/CDXCDK_undefine.h
new file mode 100644
index 0000000..774daae
--- /dev/null
+++ b/src/macro/CDXCDK_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header CDXCDK_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CDXCDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_undefine.h"
diff --git a/src/macro/CDYCDK_declare.h b/src/macro/CDYCDK_declare.h
new file mode 100644
index 0000000..759e218
--- /dev/null
+++ b/src/macro/CDYCDK_declare.h
@@ -0,0 +1,98 @@
+/*@@
+ @header CDYCDK_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to compute first conformal
+ derivatives of the extrinsic curvature with respect to y
+ @enddesc
+@@*/
+
+#ifndef CDYCDK_DECLARE
+#define CDYCDK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef CDYCDK_KXX
+#define CDYCDK_KXX hxx(i,j,k)
+#undef CDYCDK_KXY
+#define CDYCDK_KXY hxy(i,j,k)
+#undef CDYCDK_KXZ
+#define CDYCDK_KXZ hxz(i,j,k)
+#undef CDYCDK_KYY
+#define CDYCDK_KYY hyy(i,j,k)
+#undef CDYCDK_KYZ
+#define CDYCDK_KYZ hyz(i,j,k)
+#undef CDYCDK_KZZ
+#define CDYCDK_KZZ hzz(i,j,k)
+
+/* Output variables */
+#undef CDYCDK_CDYCDKXX
+#define CDYCDK_CDYCDKXX cdycdk_cdycdkxx
+#undef CDYCDK_CDYCDKXY
+#define CDYCDK_CDYCDKXY cdycdk_cdycdkxy
+#undef CDYCDK_CDYCDKXZ
+#define CDYCDK_CDYCDKXZ cdycdk_cdycdkxz
+#undef CDYCDK_CDYCDKYY
+#define CDYCDK_CDYCDKYY cdycdk_cdycdkyy
+#undef CDYCDK_CDYCDKYZ
+#define CDYCDK_CDYCDKYZ cdycdk_cdycdkyz
+#undef CDYCDK_CDYCDKZZ
+#define CDYCDK_CDYCDKZZ cdycdk_cdycdkzz
+
+/* Declare output variables */
+ REAL CDYCDK_CDYCDKXX
+ REAL CDYCDK_CDYCDKXY
+ REAL CDYCDK_CDYCDKXZ
+ REAL CDYCDK_CDYCDKYY
+ REAL CDYCDK_CDYCDKYZ
+ REAL CDYCDK_CDYCDKZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef CDYCDK_KXX
+#define CDYCDK_KXX hxx[ijk]
+#undef CDYCDK_KXY
+#define CDYCDK_KXY hxy[ijk]
+#undef CDYCDK_KXZ
+#define CDYCDK_KXZ hxz[ijk]
+#undef CDYCDK_KYY
+#define CDYCDK_KYY hyy[ijk]
+#undef CDYCDK_KYZ
+#define CDYCDK_KYZ hyz[ijk]
+#undef CDYCDK_KZZ
+#define CDYCDK_KZZ hzz[ijk]
+
+/* Output variables */
+#undef CDYCDK_CDYCDKXX
+#define CDYCDK_CDYCDKXX cdycdk_cdycdkxx
+#undef CDYCDK_CDYCDKXY
+#define CDYCDK_CDYCDKXY cdycdk_cdycdkxy
+#undef CDYCDK_CDYCDKXZ
+#define CDYCDK_CDYCDKXZ cdycdk_cdycdkxz
+#undef CDYCDK_CDYCDKYY
+#define CDYCDK_CDYCDKYY cdycdk_cdycdkyy
+#undef CDYCDK_CDYCDKYZ
+#define CDYCDK_CDYCDKYZ cdycdk_cdycdkyz
+#undef CDYCDK_CDYCDKZZ
+#define CDYCDK_CDYCDKZZ cdycdk_cdycdkzz
+
+/* Declare output variables */
+double CDYCDK_CDYCDKXX;
+double CDYCDK_CDYCDKXY;
+double CDYCDK_CDYCDKXZ;
+double CDYCDK_CDYCDKYY;
+double CDYCDK_CDYCDKYZ;
+double CDYCDK_CDYCDKZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/CDYCDK_guts.h b/src/macro/CDYCDK_guts.h
new file mode 100644
index 0000000..21ea703
--- /dev/null
+++ b/src/macro/CDYCDK_guts.h
@@ -0,0 +1,67 @@
+/*@@
+ @header CDYCDK_guts.h
+ @date August 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first covariant derivatives of the
+ extrinsic curvature with respect to x
+ @enddesc
+@@*/
+
+#ifndef CDYCDK_GUTS
+#define CDYCDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_guts.h"
+
+#ifdef FCODE
+
+ CDYCDK_CDYCDKXX = DYDK_DYDKXX - 2D0*(CHR2_XXY*CDYCDK_KXX +
+ & CHR2_YXY*CDYCDK_KXY + CHR2_ZXY*CDYCDK_KXZ)
+
+ CDYCDK_CDYCDKYY = DYDK_DYDKYY - 2D0*(CHR2_XYY*CDYCDK_KXY +
+ & CHR2_YYY*CDYCDK_KYY + CHR2_ZYY*CDYCDK_KYZ)
+
+ CDYCDK_CDYCDKZZ = DYDK_DYDKZZ - 2D0*(CHR2_XYZ*CDYCDK_KXZ +
+ & CHR2_YYZ*CDYCDK_KYZ + CHR2_ZYZ*CDYCDK_KZZ)
+
+ CDYCDK_CDYCDKXY = DYDK_DYDKXY - (CHR2_XYY*CDYCDK_KXX) -
+ & (CHR2_XXY + CHR2_YYY)*CDYCDK_KXY - CHR2_ZYY*CDYCDK_KXZ -
+ & CHR2_YXY*CDYCDK_KYY - CHR2_ZXY*CDYCDK_KYZ
+
+ CDYCDK_CDYCDKXZ = DYDK_DYDKXZ - (CHR2_XYZ*CDYCDK_KXX) -
+ & CHR2_YYZ*CDYCDK_KXY - (CHR2_XXY + CHR2_ZYZ)*CDYCDK_KXZ -
+ & CHR2_YXY*CDYCDK_KYZ - CHR2_ZXY*CDYCDK_KZZ
+
+ CDYCDK_CDYCDKYZ = DYDK_DYDKYZ -(CHR2_XYZ*CDYCDK_KXY) -
+ & CHR2_XYY*CDYCDK_KXZ - CHR2_YYZ*CDYCDK_KYY -
+ & (CHR2_YYY + CHR2_ZYZ)*CDYCDK_KYZ - CHR2_ZYY*CDYCDK_KZZ
+
+#endif
+
+#ifdef CCODE
+
+ CDYCDK_CDYCDKXX = DYDK_DYDKXX - 2D0*(CHR2_XXY*CDYCDK_KXX +
+ CHR2_YXY*CDYCDK_KXY + CHR2_ZXY*CDYCDK_KXZ);
+
+ CDYCDK_CDYCDKYY = DYDK_DYDKYY - 2D0*(CHR2_XYY*CDYCDK_KXY +
+ CHR2_YYY*CDYCDK_KYY + CHR2_ZYY*CDYCDK_KYZ);
+
+ CDYCDK_CDYCDKZZ = DYDK_DYDKZZ - 2D0*(CHR2_XYZ*CDYCDK_KXZ +
+ CHR2_YYZ*CDYCDK_KYZ + CHR2_ZYZ*CDYCDK_KZZ);
+
+ CDYCDK_CDYCDKXY = DYDK_DYDKXY - (CHR2_XYY*CDYCDK_KXX) -
+ (CHR2_XXY + CHR2_YYY)*CDYCDK_KXY - CHR2_ZYY*CDYCDK_KXZ -
+ CHR2_YXY*CDYCDK_KYY - CHR2_ZXY*CDYCDK_KYZ;
+
+ CDYCDK_CDYCDKXZ = DYDK_DYDKXZ - (CHR2_XYZ*CDYCDK_KXX) -
+ CHR2_YYZ*CDYCDK_KXY - (CHR2_XXY + CHR2_ZYZ)*CDYCDK_KXZ -
+ CHR2_YXY*CDYCDK_KYZ - CHR2_ZXY*CDYCDK_KZZ;
+
+ CDYCDK_CDYCDKYZ = DYDK_DYDKYZ -(CHR2_XYZ*CDYCDK_KXY) -
+ CHR2_XYY*CDYCDK_KXZ - CHR2_YYZ*CDYCDK_KYY -
+ (CHR2_YYY + CHR2_ZYZ)*CDYCDK_KYZ - CHR2_ZYY*CDYCDK_KZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/CDYCDK_undefine.h b/src/macro/CDYCDK_undefine.h
new file mode 100644
index 0000000..fb33304
--- /dev/null
+++ b/src/macro/CDYCDK_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header CDYCDK_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CDYCDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_undefine.h"
+
diff --git a/src/macro/CDZCDK_declare.h b/src/macro/CDZCDK_declare.h
new file mode 100644
index 0000000..5f518aa
--- /dev/null
+++ b/src/macro/CDZCDK_declare.h
@@ -0,0 +1,98 @@
+/*@@
+ @header CDZCDK_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to compute first conformal
+ derivatives of the extrinsic curvature with respect to z
+ @enddesc
+@@*/
+
+#ifndef CDZCDK_DECLARE
+#define CDZCDK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef CDZCDK_KXX
+#define CDZCDK_KXX hxx(i,j,k)
+#undef CDZCDK_KXY
+#define CDZCDK_KXY hxy(i,j,k)
+#undef CDZCDK_KXZ
+#define CDZCDK_KXZ hxz(i,j,k)
+#undef CDZCDK_KYY
+#define CDZCDK_KYY hyy(i,j,k)
+#undef CDZCDK_KYZ
+#define CDZCDK_KYZ hyz(i,j,k)
+#undef CDZCDK_KZZ
+#define CDZCDK_KZZ hzz(i,j,k)
+
+/* Output variables */
+#undef CDZCDK_CDZCDKXX
+#define CDZCDK_CDZCDKXX cdzcdk_cdzcdkxx
+#undef CDZCDK_CDZCDKXY
+#define CDZCDK_CDZCDKXY cdzcdk_cdzcdkxy
+#undef CDZCDK_CDZCDKXZ
+#define CDZCDK_CDZCDKXZ cdzcdk_cdzcdkxz
+#undef CDZCDK_CDZCDKYY
+#define CDZCDK_CDZCDKYY cdzcdk_cdzcdkyy
+#undef CDZCDK_CDZCDKYZ
+#define CDZCDK_CDZCDKYZ cdzcdk_cdzcdkyz
+#undef CDZCDK_CDZCDKZZ
+#define CDZCDK_CDZCDKZZ cdzcdk_cdzcdkzz
+
+/* Declare output variables */
+ REAL CDZCDK_CDZCDKXX
+ REAL CDZCDK_CDZCDKXY
+ REAL CDZCDK_CDZCDKXZ
+ REAL CDZCDK_CDZCDKYY
+ REAL CDZCDK_CDZCDKYZ
+ REAL CDZCDK_CDZCDKZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef CDZCDK_KXX
+#define CDZCDK_KXX hxx[ijk]
+#undef CDZCDK_KXY
+#define CDZCDK_KXY hxy[ijk]
+#undef CDZCDK_KXZ
+#define CDZCDK_KXZ hxz[ijk]
+#undef CDZCDK_KYY
+#define CDZCDK_KYY hyy[ijk]
+#undef CDZCDK_KYZ
+#define CDZCDK_KYZ hyz[ijk]
+#undef CDZCDK_KZZ
+#define CDZCDK_KZZ hzz[ijk]
+
+/* Output variables */
+#undef CDZCDK_CDZCDKXX
+#define CDZCDK_CDZCDKXX cdzcdk_cdzcdkxx
+#undef CDZCDK_CDZCDKXY
+#define CDZCDK_CDZCDKXY cdzcdk_cdzcdkxy
+#undef CDZCDK_CDZCDKXZ
+#define CDZCDK_CDZCDKXZ cdzcdk_cdzcdkxz
+#undef CDZCDK_CDZCDKYY
+#define CDZCDK_CDZCDKYY cdzcdk_cdzcdkyy
+#undef CDZCDK_CDZCDKYZ
+#define CDZCDK_CDZCDKYZ cdzcdk_cdzcdkyz
+#undef CDZCDK_CDZCDKZZ
+#define CDZCDK_CDZCDKZZ cdzcdk_cdzcdkzz
+
+/* Declare output variables */
+double CDZCDK_CDZCDKXX;
+double CDZCDK_CDZCDKXY;
+double CDZCDK_CDZCDKXZ;
+double CDZCDK_CDZCDKYY;
+double CDZCDK_CDZCDKYZ;
+double CDZCDK_CDZCDKZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/CDZCDK_guts.h b/src/macro/CDZCDK_guts.h
new file mode 100644
index 0000000..20a99db
--- /dev/null
+++ b/src/macro/CDZCDK_guts.h
@@ -0,0 +1,67 @@
+/*@@
+ @header CDZCDK_guts.h
+ @date August 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first covariant derivatives of the
+ extrinsic curvature with respect to y
+ @enddesc
+@@*/
+
+#ifndef CDZCDK_GUTS
+#define CDZCDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_guts.h"
+
+#ifdef FCODE
+
+ CDZCDK_CDZCDKXX = DZDK_DZDKXX - 2D0*(CHR2_XXZ*CDZCDK_KXX +
+ & CHR2_YXZ*CDZCDK_KXY + CHR2_ZXZ*CDZCDK_KXZ)
+
+ CDZCDK_CDZCDKYY = DZDK_DZDKYY - 2D0*(CHR2_XYZ*CDZCDK_KXY +
+ & CHR2_YYZ*CDZCDK_KYY + CHR2_ZYZ*CDZCDK_KYZ)
+
+ CDZCDK_CDZCDKZZ = DZDK_DZDKZZ - 2D0*(CHR2_XZZ*CDZCDK_KXZ +
+ & CHR2_YZZ*CDZCDK_KYZ + CHR2_ZZZ*CDZCDK_KZZ)
+
+ CDZCDK_CDZCDKXY = DZDK_DZDKXY-(CHR2_XYZ*CDZCDK_KXX) -
+ & (CHR2_XXZ + CHR2_YYZ)*CDZCDK_KXY - CHR2_ZYZ*CDZCDK_KXZ -
+ & CHR2_YXZ*CDZCDK_KYY - CHR2_ZXZ*CDZCDK_KYZ
+
+ CDZCDK_CDZCDKXZ = DZDK_DZDKXZ-(CHR2_XZZ*CDZCDK_KXX) -
+ & CHR2_YZZ*CDZCDK_KXY - (CHR2_XXZ + CHR2_ZZZ)*CDZCDK_KXZ
+ & - CHR2_YXZ*CDZCDK_KYZ - CHR2_ZXZ*CDZCDK_KZZ
+
+ CDZCDK_CDZCDKYZ = DZDK_DZDKYZ-(CHR2_XZZ*CDZCDK_KXY) -
+ & CHR2_XYZ*CDZCDK_KXZ - CHR2_YZZ*CDZCDK_KYY -
+ & (CHR2_YYZ + CHR2_ZZZ)*CDZCDK_KYZ - CHR2_ZYZ*CDZCDK_KZZ
+
+#endif
+
+#ifdef CCODE
+
+ CDZCDK_CDZCDKXX = DZDK_DZDKXX - 2D0*(CHR2_XXZ*CDZCDK_KXX +
+ CHR2_YXZ*CDZCDK_KXY + CHR2_ZXZ*CDZCDK_KXZ);
+
+ CDZCDK_CDZCDKYY = DZDK_DZDKYY - 2D0*(CHR2_XYZ*CDZCDK_KXY +
+ CHR2_YYZ*CDZCDK_KYY + CHR2_ZYZ*CDZCDK_KYZ);
+
+ CDZCDK_CDZCDKZZ = DZDK_DZDKZZ - 2D0*(CHR2_XZZ*CDZCDK_KXZ +
+ CHR2_YZZ*CDZCDK_KYZ + CHR2_ZZZ*CDZCDK_KZZ);
+
+ CDZCDK_CDZCDKXY = DZDK_DZDKXY-(CHR2_XYZ*CDZCDK_KXX) -
+ (CHR2_XXZ + CHR2_YYZ)*CDZCDK_KXY - CHR2_ZYZ*CDZCDK_KXZ -
+ CHR2_YXZ*CDZCDK_KYY - CHR2_ZXZ*CDZCDK_KYZ;
+
+ CDZCDK_CDZCDKXZ = DZDK_DZDKXZ-(CHR2_XZZ*CDZCDK_KXX) -
+ CHR2_YZZ*CDZCDK_KXY - (CHR2_XXZ + CHR2_ZZZ)*CDZCDK_KXZ
+ - CHR2_YXZ*CDZCDK_KYZ - CHR2_ZXZ*CDZCDK_KZZ;
+
+ CDZCDK_CDZCDKYZ = DZDK_DZDKYZ-(CHR2_XZZ*CDZCDK_KXY) -
+ CHR2_XYZ*CDZCDK_KXZ - CHR2_YZZ*CDZCDK_KYY -
+ (CHR2_YYZ + CHR2_ZZZ)*CDZCDK_KYZ - CHR2_ZYZ*CDZCDK_KZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/CDZCDK_undefine.h b/src/macro/CDZCDK_undefine.h
new file mode 100644
index 0000000..fe41aa2
--- /dev/null
+++ b/src/macro/CDZCDK_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header CDZCDK_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CDZCDK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_undefine.h"
diff --git a/src/macro/CHR1_declare.h b/src/macro/CHR1_declare.h
new file mode 100644
index 0000000..081d3c9
--- /dev/null
+++ b/src/macro/CHR1_declare.h
@@ -0,0 +1,164 @@
+/*@@
+ @header CHR1_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the Christoffel symbols of the
+ first kind
+ @enddesc
+@@*/
+
+#ifndef CHR1_DECLARE
+#define CHR1_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DG_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef CHR1_XXX
+#define CHR1_XXX gammado111
+#undef CHR1_XXY
+#define CHR1_XXY gammado112
+#undef CHR1_XXZ
+#define CHR1_XXZ gammado113
+#undef CHR1_XYY
+#define CHR1_XYY gammado122
+#undef CHR1_XYZ
+#define CHR1_XYZ gammado123
+#undef CHR1_XZZ
+#define CHR1_XZZ gammado133
+#undef CHR1_YXX
+#define CHR1_YXX gammado211
+#undef CHR1_YXY
+#define CHR1_YXY gammado212
+#undef CHR1_YXZ
+#define CHR1_YXZ gammado213
+#undef CHR1_YYY
+#define CHR1_YYY gammado222
+#undef CHR1_YYZ
+#define CHR1_YYZ gammado223
+#undef CHR1_YZZ
+#define CHR1_YZZ gammado233
+#undef CHR1_ZXX
+#define CHR1_ZXX gammado311
+#undef CHR1_ZXY
+#define CHR1_ZXY gammado312
+#undef CHR1_ZXZ
+#define CHR1_ZXZ gammado313
+#undef CHR1_ZYY
+#define CHR1_ZYY gammado322
+#undef CHR1_ZYZ
+#define CHR1_ZYZ gammado323
+#undef CHR1_ZZZ
+#define CHR1_ZZZ gammado333
+
+/* Declare output variables */
+ REAL CHR1_XXX
+ REAL CHR1_XXY
+ REAL CHR1_XXZ
+ REAL CHR1_XYY
+ REAL CHR1_XYZ
+ REAL CHR1_XZZ
+ REAL CHR1_YXX
+ REAL CHR1_YXY
+ REAL CHR1_YXZ
+ REAL CHR1_YYY
+ REAL CHR1_YYZ
+ REAL CHR1_YZZ
+ REAL CHR1_ZXX
+ REAL CHR1_ZXY
+ REAL CHR1_ZXZ
+ REAL CHR1_ZYY
+ REAL CHR1_ZYZ
+ REAL CHR1_ZZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef CHR1_XX1
+#define CHR1_XXX gammado111
+#undef CHR1_XXY
+#define CHR1_XXY gammado112
+#undef CHR1_XXZ
+#define CHR1_XXZ gammado113
+#undef CHR1_XYY
+#define CHR1_XYY gammado122
+#undef CHR1_XYZ
+#define CHR1_XYZ gammado123
+#undef CHR1_XZZ
+#define CHR1_XZZ gammado133
+#undef CHR1_YXX
+#define CHR1_YXX gammado211
+#undef CHR1_YXY
+#define CHR1_YXY gammado212
+#undef CHR1_YXZ
+#define CHR1_Y1Z gammado213
+#undef CHR1_YYY
+#define CHR1_YYY gammado222
+#undef CHR1_YYZ
+#define CHR1_YYZ gammado223
+#undef CHR1_2ZZ
+#define CHR1_YZZ gammado233
+#undef CHR1_ZXX
+#define CHR1_ZXX gammado311
+#undef CHR1_ZXY
+#define CHR1_ZXY gammado312
+#undef CHR1_ZXZ
+#define CHR1_ZXZ gammado313
+#undef CHR1_ZYY
+#define CHR1_ZYY gammado322
+#undef CHR1_ZYZ
+#define CHR1_ZYZ gammado323
+#undef CHR1_ZZZ
+#define CHR1_ZZZ gammado333
+
+/* Declare output variables */
+double CHR1_XXX;
+double CHR1_XXY;
+double CHR1_XXZ;
+double CHR1_XYY;
+double CHR1_XYZ;
+double CHR1_XZZ;
+double CHR1_YXX;
+double CHR1_YXY;
+double CHR1_YXZ;
+double CHR1_YYY;
+double CHRX_YYZ;
+double CHR1_YZZ;
+double CHR1_ZXX;
+double CHR1_ZXY;
+double CHR1_ZXZ;
+double CHR1_ZYY;
+double CHR1_ZYZ;
+double CHR1_ZZZ;
+
+#endif
+
+/* Symmetries */
+#undef CHR1_XYX
+#define CHR1_XYX CHR1_XXY
+#undef CHR1_XZX
+#define CHR1_XZX CHR1_XXZ
+#undef CHR1_XZY
+#define CHR1_XZY CHR1_XYZ
+#undef CHR1_YYX
+#define CHR1_YYX CHR1_YXY
+#undef CHR1_YZX
+#define CHR1_YZX CHR1_YXZ
+#undef CHR1_YZY
+#define CHR1_YZY CHR1_YYZ
+#undef CHR1_ZYX
+#define CHR1_ZYX CHR1_ZXY
+#undef CHR1_ZZX
+#define CHR1_ZZX CHR1_ZXZ
+#undef CHR1_ZZY
+#define CHR1_ZZY CHR1_ZYZ
+
+#endif
+
+
+
diff --git a/src/macro/CHR1_guts.h b/src/macro/CHR1_guts.h
new file mode 100644
index 0000000..84bac21
--- /dev/null
+++ b/src/macro/CHR1_guts.h
@@ -0,0 +1,65 @@
+/*@@
+ @header CHR1_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate Christoffel symbols of the first kind.
+
+ That is CHR1_cab = 1/2 (g_ac,b + gbc,a - gab,c)
+
+ @enddesc
+@@*/
+
+#ifndef CHR1_GUTS
+#define CHR1_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DG_guts.h"
+
+#ifdef FCODE
+
+ CHR1_XXX = DXDG_DXDGXX/2D0
+ CHR1_XXY = DYDG_DYDGXX/2D0
+ CHR1_XXZ = DZDG_DZDGXX/2D0
+ CHR1_XYY = -DXDG_DXDGYY/2D0 + DYDG_DYDGXY
+ CHR1_XYZ = (-DXDG_DXDGYZ + DYDG_DYDGXZ + DZDG_DZDGXY)/2D0
+ CHR1_XZZ = -DXDG_DXDGZZ/2D0 + DZDG_DZDGXZ
+ CHR1_YXX = DXDG_DXDGXY - DYDG_DYDGXX/2D0
+ CHR1_YXY = DXDG_DXDGYY/2D0
+ CHR1_YXZ = ( DXDG_DXDGYZ - DYDG_DYDGXZ + DZDG_DZDGXY)/2D0
+ CHR1_YYY = DYDG_DYDGYY/2D0
+ CHR1_YYZ = DZDG_DZDGYY/2D0
+ CHR1_YZZ = -DYDG_DYDGZZ/2D0 + DZDG_DZDGYZ
+ CHR1_ZXX = DXDG_DXDGXZ - DZDG_DZDGXX/2D0
+ CHR1_ZXY = ( DXDG_DXDGYZ + DYDG_DYDGXZ - DZDG_DZDGXY)/2D0
+ CHR1_ZXZ = DXDG_DXDGZZ/2D0
+ CHR1_ZYY = DYDG_DYDGYZ - DZDG_DZDGYY/2D0
+ CHR1_ZYZ = DYDG_DYDGZZ/2D0
+ CHR1_ZZZ = DZDG_DZDGZZ/2D0
+
+#endif
+
+#ifdef CCODE
+
+ CHR1_XXX = DXDG_DXDGXX/2;
+ CHR1_XXY = DYDG_DYDGXX/2;
+ CHR1_XXZ = DZDG_DZDGXX/2;
+ CHR1_XYY = -DXDG_DXDGYY/2 + DYDG_DYDGXY;
+ CHR1_XYZ = (-DXDG_DXDGYZ + DYDG_DYDGXZ + DZDG_DZDGXY)/2;
+ CHR1_XZZ = -DXDG_DXDGZZ/2 + DZDG_DZDGXZ;
+ CHR1_YXX = DXDG_DXDGXY - DYDG_DYDGXX/2;
+ CHR1_YXY = DXDG_DXDGYY/2;
+ CHR1_YXZ = ( DXDG_DXDGYZ - DYDG_DYDGXZ + DZDG_DZDGXY)/2;
+ CHR1_YYY = DYDG_DYDGYY/2;
+ CHR1_YYZ = DZDG_DZDGYY/2;
+ CHR1_YZZ = -DYDG_DYDGZZ/2 + DZDG_DZDGYZ;
+ CHR1_ZXX = DXDG_DXDGXZ - DZDG_DZDGXX/2;
+ CHR1_ZXY = ( DXDG_DXDGYZ + DYDG_DYDGXZ - DZDG_DZDGXY)/2;
+ CHR1_ZXZ = DXDG_DXDGZZ/2;
+ CHR1_ZYY = DYDG_DYDGYZ - DZDG_DZDGYY/2;
+ CHR1_ZYZ = DYDG_DYDGZZ/2;
+ CHR1_ZZZ = DZDG_DZDGZZ/2;
+
+#endif
+
+#endif
+
diff --git a/src/macro/CHR1_undefine.h b/src/macro/CHR1_undefine.h
new file mode 100644
index 0000000..5735508
--- /dev/null
+++ b/src/macro/CHR1_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header CHR1_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CHR1_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DG_undefine.h"
+
+
diff --git a/src/macro/CHR2_declare.h b/src/macro/CHR2_declare.h
new file mode 100644
index 0000000..cf4afb8
--- /dev/null
+++ b/src/macro/CHR2_declare.h
@@ -0,0 +1,175 @@
+/*@@
+ @header CHR2_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the Christoffel symbols of the
+ second kind
+
+ That is CHR2_cab = g^cd CHR1_dab
+
+ = 1/2 g^cd (g_ad,b + gbd,a - gab,d)
+
+ Requires: Christoffel symbols of first kind
+ Uppermetric
+
+ Provides: Christoffel sybols of second kind
+
+ @enddesc
+@@*/
+
+#ifndef CHR2_DECLARE
+#define CHR2_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR1_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef CHR2_XXX
+#define CHR2_XXX gamma111
+#undef CHR2_XXY
+#define CHR2_XXY gamma112
+#undef CHR2_XXZ
+#define CHR2_XXZ gamma113
+#undef CHR2_XYY
+#define CHR2_XYY gamma122
+#undef CHR2_XYZ
+#define CHR2_XYZ gamma123
+#undef CHR2_XZZ
+#define CHR2_XZZ gamma133
+#undef CHR2_YXX
+#define CHR2_YXX gamma211
+#undef CHR2_YXY
+#define CHR2_YXY gamma212
+#undef CHR2_YXZ
+#define CHR2_YXZ gamma213
+#undef CHR2_YYY
+#define CHR2_YYY gamma222
+#undef CHR2_YYZ
+#define CHR2_YYZ gamma223
+#undef CHR2_YZZ
+#define CHR2_YZZ gamma233
+#undef CHR2_ZXX
+#define CHR2_ZXX gamma311
+#undef CHR2_ZXY
+#define CHR2_ZXY gamma312
+#undef CHR2_ZXZ
+#define CHR2_ZXZ gamma313
+#undef CHR2_ZYY
+#define CHR2_ZYY gamma322
+#undef CHR2_ZYZ
+#define CHR2_ZYZ gamma323
+#undef CHR2_ZZZ
+#define CHR2_ZZZ gamma333
+
+/* Declare output variables */
+ REAL CHR2_XXX
+ REAL CHR2_XXY
+ REAL CHR2_XXZ
+ REAL CHR2_XYY
+ REAL CHR2_XYZ
+ REAL CHR2_XZZ
+ REAL CHR2_YXX
+ REAL CHR2_YXY
+ REAL CHR2_YXZ
+ REAL CHR2_YYY
+ REAL CHR2_YYZ
+ REAL CHR2_YZZ
+ REAL CHR2_ZXX
+ REAL CHR2_ZXY
+ REAL CHR2_ZXZ
+ REAL CHR2_ZYY
+ REAL CHR2_ZYZ
+ REAL CHR2_ZZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef CHR2_XXX
+#define CHR2_XXX gamma111
+#undef CHR2_XXY
+#define CHR2_XXY gamma112
+#undef CHR2_XXZ
+#define CHR2_XXZ gamma113
+#undef CHR2_XYY
+#define CHR2_XYY gamma122
+#undef CHR2_XYZ
+#define CHR2_XYZ gamma123
+#undef CHR2_XZZ
+#define CHR2_XZZ gamma133
+#undef CHR2_YXX
+#define CHR2_YXX gamma211
+#undef CHR2_YXY
+#define CHR2_YXY gamma212
+#undef CHR2_YXZ
+#define CHR2_YXZ gamma213
+#undef CHR2_YYY
+#define CHR2_YYY gamma222
+#undef CHR2_YYZ
+#define CHR2_YYZ gamma223
+#undef CHR2_YZZ
+#define CHR2_YZZ gamma233
+#undef CHR2_ZXX
+#define CHR2_ZXX gamma311
+#undef CHR2_ZXY
+#define CHR2_ZXY gamma312
+#undef CHR2_ZXZ
+#define CHR2_ZXZ gamma313
+#undef CHR2_ZYY
+#define CHR2_ZYY gamma322
+#undef CHR2_ZYZ
+#define CHR2_ZYZ gamma323
+#undef CHR2_ZZZ
+#define CHR2_ZZZ gamma333
+
+/* Declare output variables */
+double CHR2_XXX;
+double CHR2_XXY;
+double CHR2_XXZ;
+double CHR2_XYY;
+double CHR2_XYZ;
+double CHR2_XZZ;
+double CHR2_YXX;
+double CHR2_YXY;
+double CHR2_YXZ;
+double CHR2_YYY;
+double CHR2_Y2Z;
+double CHR2_YZZ;
+double CHR2_ZXX;
+double CHR2_ZXY;
+double CHR2_ZXZ;
+double CHR2_ZYY;
+double CHR2_ZYZ;
+double CHR2_ZZZ;
+
+#endif
+
+/* Symmetries */
+#undef CHR2_XYX
+#define CHR2_XYX CHR2_XXY
+#undef CHR2_XZX
+#define CHR2_XZX CHR2_XXZ
+#undef CHR2_XZY
+#define CHR2_XZY CHR2_XYZ
+#undef CHR2_YYX
+#define CHR2_YYX CHR2_YXY
+#undef CHR2_YZX
+#define CHR2_YZX CHR2_YXZ
+#undef CHR2_YZY
+#define CHR2_YZY CHR2_YYZ
+#undef CHR2_ZYX
+#define CHR2_ZYX CHR2_ZXY
+#undef CHR2_ZZX
+#define CHR2_ZZX CHR2_ZXZ
+#undef CHR2_ZZY
+#define CHR2_ZZY CHR2_ZYZ
+
+#endif
+
+
+
diff --git a/src/macro/CHR2_guts.h b/src/macro/CHR2_guts.h
new file mode 100644
index 0000000..596b089
--- /dev/null
+++ b/src/macro/CHR2_guts.h
@@ -0,0 +1,72 @@
+/*@@
+ @header CHR2_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate Christoffel symbols of the second kind.
+
+ That is CHR2_cab = g^cd CHR1_dab
+
+ = 1/2 g^cd (g_ad,b + gbd,a - gab,d)
+
+ Requires: Christoffel symbols of first kind
+ Uppermetric
+
+ Provides: Christoffel sybols of second kind
+
+ @enddesc
+@@*/
+
+#ifndef CHR2_GUTS
+#define CHR2_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR1_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+
+#ifdef FCODE
+
+ CHR2_XXX = CHR1_XXX*UPPERMET_UXX + CHR1_YXX*UPPERMET_UXY + CHR1_ZXX*UPPERMET_UXZ
+ CHR2_XXY = CHR1_XXY*UPPERMET_UXX + CHR1_YXY*UPPERMET_UXY + CHR1_ZXY*UPPERMET_UXZ
+ CHR2_XXZ = CHR1_XXZ*UPPERMET_UXX + CHR1_YXZ*UPPERMET_UXY + CHR1_ZXZ*UPPERMET_UXZ
+ CHR2_XYY = CHR1_XYY*UPPERMET_UXX + CHR1_YYY*UPPERMET_UXY + CHR1_ZYY*UPPERMET_UXZ
+ CHR2_XYZ = CHR1_XYZ*UPPERMET_UXX + CHR1_YYZ*UPPERMET_UXY + CHR1_ZYZ*UPPERMET_UXZ
+ CHR2_XZZ = CHR1_XZZ*UPPERMET_UXX + CHR1_YZZ*UPPERMET_UXY + CHR1_ZZZ*UPPERMET_UXZ
+ CHR2_YXX = CHR1_XXX*UPPERMET_UXY + CHR1_YXX*UPPERMET_UYY + CHR1_ZXX*UPPERMET_UYZ
+ CHR2_YXY = CHR1_XXY*UPPERMET_UXY + CHR1_YXY*UPPERMET_UYY + CHR1_ZXY*UPPERMET_UYZ
+ CHR2_YXZ = CHR1_XXZ*UPPERMET_UXY + CHR1_YXZ*UPPERMET_UYY + CHR1_ZXZ*UPPERMET_UYZ
+ CHR2_YYY = CHR1_XYY*UPPERMET_UXY + CHR1_YYY*UPPERMET_UYY + CHR1_ZYY*UPPERMET_UYZ
+ CHR2_YYZ = CHR1_XYZ*UPPERMET_UXY + CHR1_YYZ*UPPERMET_UYY + CHR1_ZYZ*UPPERMET_UYZ
+ CHR2_YZZ = CHR1_XZZ*UPPERMET_UXY + CHR1_YZZ*UPPERMET_UYY + CHR1_ZZZ*UPPERMET_UYZ
+ CHR2_ZXX = CHR1_XXX*UPPERMET_UXZ + CHR1_YXX*UPPERMET_UYZ + CHR1_ZXX*UPPERMET_UZZ
+ CHR2_ZXY = CHR1_XXY*UPPERMET_UXZ + CHR1_YXY*UPPERMET_UYZ + CHR1_ZXY*UPPERMET_UZZ
+ CHR2_ZXZ = CHR1_XXZ*UPPERMET_UXZ + CHR1_YXZ*UPPERMET_UYZ + CHR1_ZXZ*UPPERMET_UZZ
+ CHR2_ZYY = CHR1_XYY*UPPERMET_UXZ + CHR1_YYY*UPPERMET_UYZ + CHR1_ZYY*UPPERMET_UZZ
+ CHR2_ZYZ = CHR1_XYZ*UPPERMET_UXZ + CHR1_YYZ*UPPERMET_UYZ + CHR1_ZYZ*UPPERMET_UZZ
+ CHR2_ZZZ = CHR1_XZZ*UPPERMET_UXZ + CHR1_YZZ*UPPERMET_UYZ + CHR1_ZZZ*UPPERMET_UZZ
+
+#endif
+
+#ifdef CCODE
+
+ CHR2_XXX = CHR1_XXX*UPPERMET_UXX + CHR1_YXX*UPPERMET_UXY + CHR1_ZXX*UPPERMET_UXZ;
+ CHR2_XXY = CHR1_XXY*UPPERMET_UXX + CHR1_YXY*UPPERMET_UXY + CHR1_ZXY*UPPERMET_UXZ;
+ CHR2_XXZ = CHR1_XXZ*UPPERMET_UXX + CHR1_YXZ*UPPERMET_UXY + CHR1_ZXZ*UPPERMET_UXZ;
+ CHR2_XYY = CHR1_XYY*UPPERMET_UXX + CHR1_YYY*UPPERMET_UXY + CHR1_ZYY*UPPERMET_UXZ;
+ CHR2_XYZ = CHR1_XYZ*UPPERMET_UXX + CHR1_YYZ*UPPERMET_UXY + CHR1_ZYZ*UPPERMET_UXZ;
+ CHR2_XZZ = CHR1_XZZ*UPPERMET_UXX + CHR1_YZZ*UPPERMET_UXY + CHR1_ZZZ*UPPERMET_UXZ;
+ CHR2_YXX = CHR1_XXX*UPPERMET_UXY + CHR1_YXX*UPPERMET_UYY + CHR1_ZXX*UPPERMET_UYZ;
+ CHR2_YXY = CHR1_XXY*UPPERMET_UXY + CHR1_YXY*UPPERMET_UYY + CHR1_ZXY*UPPERMET_UYZ;
+ CHR2_YXZ = CHR1_XXZ*UPPERMET_UXY + CHR1_YXZ*UPPERMET_UYY + CHR1_ZXZ*UPPERMET_UYZ;
+ CHR2_YYY = CHR1_XYY*UPPERMET_UXY + CHR1_YYY*UPPERMET_UYY + CHR1_ZYY*UPPERMET_UYZ;
+ CHR2_YYZ = CHR1_XYZ*UPPERMET_UXY + CHR1_YYZ*UPPERMET_UYY + CHR1_ZYZ*UPPERMET_UYZ;
+ CHR2_YZZ = CHR1_XZZ*UPPERMET_UXY + CHR1_YZZ*UPPERMET_UYY + CHR1_ZZZ*UPPERMET_UYZ;
+ CHR2_ZXX = CHR1_XXX*UPPERMET_UXZ + CHR1_YXX*UPPERMET_UYZ + CHR1_ZXX*UPPERMET_UZZ;
+ CHR2_ZXY = CHR1_XXY*UPPERMET_UXZ + CHR1_YXY*UPPERMET_UYZ + CHR1_ZXY*UPPERMET_UZZ;
+ CHR2_ZXZ = CHR1_XXZ*UPPERMET_UXZ + CHR1_YXZ*UPPERMET_UYZ + CHR1_ZXZ*UPPERMET_UZZ;
+ CHR2_ZYY = CHR1_XYY*UPPERMET_UXZ + CHR1_YYY*UPPERMET_UYZ + CHR1_ZYY*UPPERMET_UZZ;
+ CHR2_ZYZ = CHR1_XYZ*UPPERMET_UXZ + CHR1_YYZ*UPPERMET_UYZ + CHR1_ZYZ*UPPERMET_UZZ;
+ CHR2_ZZZ = CHR1_XZZ*UPPERMET_UXZ + CHR1_YZZ*UPPERMET_UYZ + CHR1_ZZZ*UPPERMET_UZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/CHR2_undefine.h b/src/macro/CHR2_undefine.h
new file mode 100644
index 0000000..97d0bbb
--- /dev/null
+++ b/src/macro/CHR2_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header CHR2_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef CHR2_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR1_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+
diff --git a/src/macro/DA_declare.h b/src/macro/DA_declare.h
new file mode 100644
index 0000000..a1da72f
--- /dev/null
+++ b/src/macro/DA_declare.h
@@ -0,0 +1,109 @@
+/*@@
+ @header DA_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DA_guts.h to compute first
+ spatial derivatives of the lapse
+ @enddesc
+@@*/
+
+#ifndef DA_DECLARE
+#define DA_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DA_A_IP
+#define DA_A_IP alp(i+1,j,k)
+#undef DA_A_IM
+#define DA_A_IM alp(i-1,j,k)
+#undef DA_A_JP
+#define DA_A_JP alp(i,j+1,k)
+#undef DA_A_JM
+#define DA_A_JM alp(i,j-1,k)
+#undef DA_A_KP
+#define DA_A_KP alp(i,j,k+1)
+#undef DA_A_KM
+#define DA_A_KM alp(i,j,k-1)
+
+/* Output variables */
+#undef DA_DXDA
+#define DA_DXDA da_dxda
+#undef DA_DYDA
+#define DA_DYDA da_dyda
+#undef DA_DZDA
+#define DA_DZDA da_dzda
+
+/* Internal variables */
+#undef DA_OO2DX
+#define DA_OO2DX da_oo2dx
+#undef DA_OO2DY
+#define DA_OO2DY da_oo2dy
+#undef DA_OO2DZ
+#define DA_OO2DZ da_oo2dz
+#undef DA_DX
+#define DA_DX dx
+#undef DA_DY
+#define DA_DY dy
+#undef DA_DZ
+#define DA_DZ dz
+
+/* Declare internal variables */
+ REAL DA_OO2DX
+ REAL DA_OO2DY
+ REAL DA_OO2DZ
+
+/* Declare output variables */
+ REAL DA_DXDA
+ REAL DA_DYDA
+ REAL DA_DZDA
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DA_A_IP
+#define DA_A_IP alp[ di + ijk]
+#undef DA_A_IM
+#define DA_A_IM alp[-di + ijk]
+#undef DA_A_JP
+#define DA_A_JP alp[ dj + ijk]
+#undef DA_A_JM
+#define DA_A_JM alp[-dj + ijk]
+#undef DA_A_KP
+#define DA_A_KP alp[ dk + ijk]
+#undef DA_A_KM
+#define DA_A_KM alp[-dk + ijk]
+
+/* Output variables */
+#undef DA_DXDA
+#define DA_DXDA da_dxda
+#undef DA_DYDA
+#define DA_DYDA da_dyda
+#undef DA_DZDA
+#define DA_DZDA da_dzda
+
+/* Internal variables */
+#undef DA_OO2DX
+#define DA_OO2DX da_oo2dx
+#undef DA_OO2DY
+#define DA_OO2DY da_oo2dy
+#undef DA_OO2DZ
+#define DA_OO2DZ da_oo2dz
+
+/* Declare internal variables */
+ double DA_OO2DX;
+ double DA_OO2DY;
+ double DA_OO2DZ;
+
+/* Declare output variables */
+ double DA_DXDA;
+ double DA_DYDA;
+ double DA_DZDA;
+
+#endif
+
+#endif
diff --git a/src/macro/DA_guts.h b/src/macro/DA_guts.h
new file mode 100644
index 0000000..2797294
--- /dev/null
+++ b/src/macro/DA_guts.h
@@ -0,0 +1,38 @@
+/*@@
+ @header DA_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all first spatial derivative of lapse
+ @enddesc
+@@*/
+
+#ifndef DA_GUTS
+#define DA_GUTS
+
+#ifdef FCODE
+
+ DA_OO2DX = 1D0/(2D0*DA_DX)
+ DA_OO2DY = 1D0/(2D0*DA_DY)
+ DA_OO2DZ = 1D0/(2D0*DA_DZ)
+
+ DA_DXDA = DA_OO2DX*(DA_A_IP - DA_A_IM)
+ DA_DYDA = DA_OO2DY*(DA_A_JP - DA_A_JM)
+ DA_DZDA = DA_OO2DZ*(DA_A_KP - DA_A_KM)
+
+#endif
+
+#ifdef CCODE
+
+ DA_OO2DX = 1D0/(2D0*DA_DX);
+ DA_OO2DY = 1D0/(2D0*DA_DY);
+ DA_OO2DZ = 1D0/(2D0*DA_DZ);
+
+ DA_DXDA = DA_OO2DX*(DA_A_IP - DA_A_IM);
+ DA_DYDA = DA_OO2DY*(DA_A_JP - DA_A_JM);
+ DA_DZDA = DA_OO2DZ*(DA_A_KP - DA_A_KM);
+
+#endif
+
+#endif
+
diff --git a/src/macro/DA_undefine.h b/src/macro/DA_undefine.h
new file mode 100644
index 0000000..b5d1504
--- /dev/null
+++ b/src/macro/DA_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header DA_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DA_GUTS
+
+
+
diff --git a/src/macro/DB_declare.h b/src/macro/DB_declare.h
new file mode 100644
index 0000000..51341ba
--- /dev/null
+++ b/src/macro/DB_declare.h
@@ -0,0 +1,24 @@
+/*@@
+ @header DB_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate all the first derivatives of the
+ shift vector with respect to x, y, z using the subsidary macros
+ @seefile DXDB_guts.h @seefile DYDB_guts.h and @seefile DZDB_guts.h.
+
+ Calls the macros @seefile DXDB_declare.h @seefile DYDB_declare.h
+ and @seefile DZDB_declare.h.
+
+ @enddesc
+@@*/
+
+#ifndef DB_DECLARE
+#define DB_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDB_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDB_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDB_declare.h"
+
+#endif
diff --git a/src/macro/DB_guts.h b/src/macro/DB_guts.h
new file mode 100644
index 0000000..72ea813
--- /dev/null
+++ b/src/macro/DB_guts.h
@@ -0,0 +1,25 @@
+/*@@
+ @header DB_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all the first derivatives of the
+ shift vector with respect to x, y, z
+
+ Calls the macros @seefile DXDB_guts.h @seefile DYDB_guts.h
+ and @seefile DZDB_guts.h.
+
+ The macro is defined in terms of standard variables in
+ @seefile DXDB_declare.h ,@seefile DYDB_declare.h and
+ @seefile DZDB_declare.h
+ @enddesc
+@@*/
+
+#ifndef DB_GUTS
+#define DB_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDB_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDB_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDB_guts.h"
+
+#endif
diff --git a/src/macro/DB_undefine.h b/src/macro/DB_undefine.h
new file mode 100644
index 0000000..3083532
--- /dev/null
+++ b/src/macro/DB_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header DB_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DB_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDB_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDB_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDB_undefine.h"
+
diff --git a/src/macro/DCGDT_declare.h b/src/macro/DCGDT_declare.h
new file mode 100644
index 0000000..3208a76
--- /dev/null
+++ b/src/macro/DCGDT_declare.h
@@ -0,0 +1,123 @@
+/*@@
+ @header DCGDT_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DCGDT_guts.h to calculate the source term
+ in the evolution equation for the conformal 3-metric. That is
+
+ d g~_ij/dt =( - 2 alpha K_ij + L_beta g_ij )/Psi^4
+
+ where g~ is the conformal metric
+ @enddesc
+@@*/
+
+#ifndef DCGDT_DECLARE
+#define DCGDT_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DCGDT_A
+#define DCGDT_A alp(i,j,k)
+#undef DCGDT_KXX
+#define DCGDT_KXX hxx(i,j,k)
+#undef DCGDT_KXY
+#define DCGDT_KXY hxy(i,j,k)
+#undef DCGDT_KXZ
+#define DCGDT_KXZ hxz(i,j,k)
+#undef DCGDT_KYY
+#define DCGDT_KYY hyy(i,j,k)
+#undef DCGDT_KYZ
+#define DCGDT_KYZ hyz(i,j,k)
+#undef DCGDT_KZZ
+#define DCGDT_KZZ hzz(i,j,k)
+#undef DCGDT_PSI
+#define DCGDT_PSI psi(i,j,k)
+
+/* Internal variables */
+#undef DCGDT_IPSI4
+#define DCGDT_IPSI4 cdgdt_ipsi4
+
+/* Output variables */
+#undef DCGDT_DCGXXDT
+#define DCGDT_DCGXXDT cdgdt_cdgxxdt
+#undef DCGDT_DCGXYDT
+#define DCGDT_DCGXYDT cdgdt_cdgxydt
+#undef DCGDT_DCGXZDT
+#define DCGDT_DCGXZDT cdgdt_cdgxzdt
+#undef DCGDT_DCGYYDT
+#define DCGDT_DCGYYDT cdgdt_cdgyydt
+#undef DCGDT_DCGYZDT
+#define DCGDT_DCGYZDT cdgdt_cdgyzdt
+#undef DCGDT_DCGZZDT
+#define DCGDT_DCGZZDT cdgdt_cdgzzdt
+
+/* Declare internal variables */
+ REAL DCGDT_IPSI4
+
+/* Declare output variables */
+ REAL DCGDT_DCGXXDT
+ REAL DCGDT_DCGXYDT
+ REAL DCGDT_DCGXZDT
+ REAL DCGDT_DCGYYDT
+ REAL DCGDT_DCGYZDT
+ REAL DCGDT_DCGZZDT
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DCGDT_A
+#define DCGDT_A alp[ijk]
+#undef DCGDT_KXX
+#define DCGDT_KXX hxx[ijk]
+#undef DCGDT_KXY
+#define DCGDT_KXY hxy[ijk]
+#undef DCGDT_KXZ
+#define DCGDT_KXZ hxz[ijk]
+#undef DCGDT_KYY
+#define DCGDT_KYY hyy[ijk]
+#undef DCGDT_KYZ
+#define DCGDT_KYZ hyz[ijk]
+#undef DCGDT_KZZ
+#define DCGDT_KZZ hzz[ijk]
+#undef DCGDT_PSI
+#define DCGDT_PSI psi[ijk]
+
+/* Internal variables */
+#undef DCGDT_IPSI4
+#define DCGDT_IPSI4 cdgdt_ipsi4
+
+/* Output variables */
+#undef DCGDT_DCGXXDT
+#define DCGDT_DCGXXDT cdgdt_cdgxxdt
+#undef DCGDT_DCGXYDT
+#define DCGDT_DCGXYDT cdgdt_cdgxydt
+#undef DCGDT_DCGXZDT
+#define DCGDT_DCGXZDT cdgdt_cdgxzdt
+#undef DCGDT_DCGYYDT
+#define DCGDT_DCGYYDT cdgdt_cdgyydt
+#undef DCGDT_DCGYZDT
+#define DCGDT_DCGYZDT cdgdt_cdgyzdt
+#undef DCGDT_DCGZZDT
+#define DCGDT_DCGZZDT cdgdt_cdgzzdt
+
+/* Declare internal variables */
+ double DCGDT_IPSI4;
+
+/* Declare output variables */
+ double DCGDT_DCGXXDT;
+ double DCGDT_DCGXYDT;
+ double DCGDT_DCGXZDT;
+ double DCGDT_DCGYYDT;
+ double DCGDT_DCGYZDT;
+ double DCGDT_DCGZZDT;
+
+#endif
+
+#endif
diff --git a/src/macro/DCGDT_guts.h b/src/macro/DCGDT_guts.h
new file mode 100644
index 0000000..10553c4
--- /dev/null
+++ b/src/macro/DCGDT_guts.h
@@ -0,0 +1,96 @@
+/*@@
+ @header DCGDT_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the source term in the evolution equation for the
+ conformal 3-metric. That is
+
+ d g~_ij/dt =( - 2 alpha K_ij + L_beta g_ij )/Psi^4
+
+ where g~ is the conformal metric
+
+ @enddesc
+@@*/
+
+#ifndef DCGDT_GUTS
+#define DCGDT_GUTS
+
+#ifdef FCODE
+
+ DCGDT_DCGXXDT = - 2*DCGDT_A*DCGDT_KXX
+ DCGDT_DCGXYDT = - 2*DCGDT_A*DCGDT_KXY
+ DCGDT_DCGXZDT = - 2*DCGDT_A*DCGDT_KXZ
+ DCGDT_DCGYYDT = - 2*DCGDT_A*DCGDT_KYY
+ DCGDT_DCGYZDT = - 2*DCGDT_A*DCGDT_KYZ
+ DCGDT_DCGZZDT = - 2*DCGDT_A*DCGDT_KZZ
+
+ IF (conformal_state .eq. CONFORMAL_METRIC) THEN
+
+ DCGDT_IPSI4 = 1D0/(DCGDT_PSI**4)
+
+ DCGDT_DCGXXDT = DCGDT_DCGXXDT*DCGDT_IPSI4
+ DCGDT_DCGXYDT = DCGDT_DCGXYDT*DCGDT_IPSI4
+ DCGDT_DCGXZDT = DCGDT_DCGXZDT*DCGDT_IPSI4
+ DCGDT_DCGYYDT = DCGDT_DCGYYDT*DCGDT_IPSI4
+ DCGDT_DCGYZDT = DCGDT_DCGYZDT*DCGDT_IPSI4
+ DCGDT_DCGZZDT = DCGDT_DCGZZDT*DCGDT_IPSI4
+
+ END IF
+
+ IF (shift_active .ne. SHIFT_INACTIVE) THEN
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEG_guts.h"
+
+ DCGDT_DCGXXDT = DCGDT_DCGXXDT + LIEG_LGXX
+ DCGDT_DCGXYDT = DCGDT_DCGXYDT + LIEG_LGXY
+ DCGDT_DCGXZDT = DCGDT_DCGXZDT + LIEG_LGXZ
+ DCGDT_DCGYYDT = DCGDT_DCGYYDT + LIEG_LGYY
+ DCGDT_DCGYZDT = DCGDT_DCGYZDT + LIEG_LGYZ
+ DCGDT_DCGZZDT = DCGDT_DCGZZDT + LIEG_LGZZ
+
+ END IF
+
+#endif
+
+#ifdef CCODE
+
+ DCGDT_DCGXXDT = - 2*DCGDT_A*DCGDT_KXX
+ DCGDT_DCGXYDT = - 2*DCGDT_A*DCGDT_KXY
+ DCGDT_DCGXZDT = - 2*DCGDT_A*DCGDT_KXZ
+ DCGDT_DCGYYDT = - 2*DCGDT_A*DCGDT_KYY
+ DCGDT_DCGYZDT = - 2*DCGDT_A*DCGDT_KYZ
+ DCGDT_DCGZZDT = - 2*DCGDT_A*DCGDT_KZZ
+
+ if (conformal_state == CONFORMAL_METRIC)
+ {
+
+ DCGDT_IPSI4 = 1D0/(DCGDT_PSI**4)
+
+ DCGDT_DCGXXDT = DCGDT_DCGXXDT*DCGDT_IPSI4
+ DCGDT_DCGXYDT = DCGDT_DCGXYDT*DCGDT_IPSI4
+ DCGDT_DCGXZDT = DCGDT_DCGXZDT*DCGDT_IPSI4
+ DCGDT_DCGYYDT = DCGDT_DCGYYDT*DCGDT_IPSI4
+ DCGDT_DCGYZDT = DCGDT_DCGYZDT*DCGDT_IPSI4
+ DCGDT_DCGZZDT = DCGDT_DCGZZDT*DCGDT_IPSI4
+
+ }
+
+ if (shift)
+ {
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEG_guts.h"
+
+ DCGDT_DCGXXDT = DCGDT_DCGXXDT + LIEG_LGXX
+ DCGDT_DCGXYDT = DCGDT_DCGXYDT + LIEG_LGXY
+ DCGDT_DCGXZDT = DCGDT_DCGXZDT + LIEG_LGXZ
+ DCGDT_DCGYYDT = DCGDT_DCGYYDT + LIEG_LGYY
+ DCGDT_DCGYZDT = DCGDT_DCGYZDT + LIEG_LGYZ
+ DCGDT_DCGZZDT = DCGDT_DCGZZDT + LIEG_LGZZ
+
+ }
+
+#endif
+
+#endif
+
diff --git a/src/macro/DCGDT_undefine.h b/src/macro/DCGDT_undefine.h
new file mode 100644
index 0000000..312fcbd
--- /dev/null
+++ b/src/macro/DCGDT_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header DCGDT_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DCGDT_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEG_undefine.h"
+
+
diff --git a/src/macro/DDA_declare.h b/src/macro/DDA_declare.h
new file mode 100644
index 0000000..b9d7a29
--- /dev/null
+++ b/src/macro/DDA_declare.h
@@ -0,0 +1,197 @@
+/*@@
+ @header DDA_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DDA_guts.h to compute second
+ spatial derivatives of the lapse
+ @enddesc
+@@*/
+
+#ifndef DDA_DECLARE
+#define DDA_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DDA_A
+#define DDA_A alp(i,j,k)
+#undef DDA_A_IP
+#define DDA_A_IP alp(i+1,j,k)
+#undef DDA_A_IM
+#define DDA_A_IM alp(i-1,j,k)
+#undef DDA_A_JP
+#define DDA_A_JP alp(i,j+1,k)
+#undef DDA_A_JM
+#define DDA_A_JM alp(i,j-1,k)
+#undef DDA_A_KP
+#define DDA_A_KP alp(i,j,k+1)
+#undef DDA_A_KM
+#define DDA_A_KM alp(i,j,k-1)
+#undef DDA_A_IPJP
+#define DDA_A_IPJP alp(i+1,j+1,k)
+#undef DDA_A_IPJM
+#define DDA_A_IPJM alp(i+1,j-1,k)
+#undef DDA_A_IMJP
+#define DDA_A_IMJP alp(i-1,j+1,k)
+#undef DDA_A_IMJM
+#define DDA_A_IMJM alp(i-1,j-1,k)
+#undef DDA_A_IPKP
+#define DDA_A_IPKP alp(i+1,j,k+1)
+#undef DDA_A_IPKM
+#define DDA_A_IPKM alp(i+1,j,k-1)
+#undef DDA_A_IMKP
+#define DDA_A_IMKP alp(i-1,j,k+1)
+#undef DDA_A_IMKM
+#define DDA_A_IMKM alp(i-1,j,k-1)
+#undef DDA_A_JPKP
+#define DDA_A_JPKP alp(i,j+1,k+1)
+#undef DDA_A_JPKM
+#define DDA_A_JPKM alp(i,j+1,k-1)
+#undef DDA_A_JMKP
+#define DDA_A_JMKP alp(i,j-1,k+1)
+#undef DDA_A_JMKM
+#define DDA_A_JMKM alp(i,j-1,k-1)
+
+/* Output variables */
+#undef DDA_DXXDA
+#define DDA_DXXDA dda_dxxda
+#undef DDA_DXYDA
+#define DDA_DXYDA dda_dxyda
+#undef DDA_DXZDA
+#define DDA_DXZDA dda_dxzda
+#undef DDA_DYYDA
+#define DDA_DYYDA dda_dyyda
+#undef DDA_DYZDA
+#define DDA_DYZDA dda_dyzda
+#undef DDA_DZZDA
+#define DDA_DZZDA dda_dzzda
+
+/* Internal variables */
+#undef DDA_OODX2
+#define DDA_OODX2 dda_oodx2
+#undef DDA_OODY2
+#define DDA_OODY2 dda_oody2
+#undef DDA_OODZ2
+#define DDA_OODZ2 dda_oodz2
+#undef DDA_OO4DXDY
+#define DDA_OO4DXDY dda_oo4dxdy
+#undef DDA_OO4DXDZ
+#define DDA_OO4DXDZ dda_oo4dxdz
+#undef DDA_OO4DYDZ
+#define DDA_OO4DYDZ dda_oo4dydz
+#undef DDA_DX
+#define DDA_DX dx
+#undef DDA_DY
+#define DDA_DY dy
+#undef DDA_DZ
+#define DDA_DZ dz
+
+/* Declare internal variables */
+ REAL DDA_OODX2
+ REAL DDA_OODY2
+ REAL DDA_OODZ2
+ REAL DDA_OO4DXDY
+ REAL DDA_OO4DXDZ
+ REAL DDA_OO4DYDZ
+
+/* Declare output variables */
+ REAL DDA_DXXDA
+ REAL DDA_DXYDA
+ REAL DDA_DXZDA
+ REAL DDA_DYYDA
+ REAL DDA_DYZDA
+ REAL DDA_DZZDA
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DDA_A
+#define DDA_A alp[ijk]
+#undef DDA_A_IP
+#define DDA_A_IP alp[ di + ijk]
+#undef DDA_A_IM
+#define DDA_A_IM alp[-di + ijk]
+#undef DDA_A_JP
+#define DDA_A_JP alp[ dj + ijk]
+#undef DDA_A_JM
+#define DDA_A_JM alp[-dj + ijk]
+#undef DDA_A_KP
+#define DDA_A_KP alp[ dk + ijk]
+#undef DDA_A_KM
+#define DDA_A_KM alp[-dk + ijk]
+#undef DDA_A_IPJP
+#define DDA_A_IPJP alp[ di + dj + ijk]
+#undef DDA_A_IPJM
+#define DDA_A_IPJM alp[ di - dj + ijk]
+#undef DDA_A_IMJP
+#define DDA_A_IMJP alp[-di + dj + ijk]
+#undef DDA_A_IMJM
+#define DDA_A_IMJM alp[-di - dj + ijk]
+#undef DDA_A_IPKP
+#define DDA_A_IPKP alp[ di + dk + ijk]
+#undef DDA_A_IPKM
+#define DDA_A_IPKM alp[ di - dk + ijk]
+#undef DDA_A_IMKP
+#define DDA_A_IMKP alp[-di + dk + ijk]
+#undef DDA_A_IMKM
+#define DDA_A_IMKM alp[-di - dk + ijk]
+#undef DDA_A_JPKP
+#define DDA_A_JPKP alp[ dj + dk + ijk]
+#undef DDA_A_JPKM
+#define DDA_A_JPKM alp[ dj - dk + ijk]
+#undef DDA_A_JMKP
+#define DDA_A_JMKP alp[-dj + dk + ijk]
+#undef DDA_A_JMKM
+#define DDA_A_JMKM alp[-dj - dk + ijk]
+
+/* Output variables */
+#undef DDA_DXXDA
+#define DDA_DXXDA dda_dxxda
+#undef DDA_DXYDA
+#define DDA_DXYDA dda_dxyda
+#undef DDA_DXZDA
+#define DDA_DXZDA dda_dxzda
+#undef DDA_DYYDA
+#define DDA_DYYDA dda_dyyda
+#undef DDA_DYZDA
+#define DDA_DYZDA dda_dyzda
+#undef DDA_DZZDA
+#define DDA_DZZDA dda_dzzda
+
+/* Internal variables */
+#undef DDA_OODX2
+#define DDA_OODX2 dda_oodx2
+#undef DDA_OODY2
+#define DDA_OODY2 dda_oody2
+#undef DDA_OODZ2
+#define DDA_OODZ2 dda_oodz2
+#undef DDA_OO4DXDY
+#define DDA_OO4DXDY dda_oo4dxdy
+#undef DDA_OO4DXDZ
+#define DDA_OO4DXDZ dda_oo4dxdz
+#undef DDA_OO4DYDZ
+#define DDA_OO4DYDZ dda_oo4dydz
+
+/* Declare internal variables */
+ double DDA_OODX2;
+ double DDA_OODY2;
+ double DDA_OODZ2;
+ double DDA_OO4DXDY;
+ double DDA_OO4DXDZ;
+ double DDA_OO4DYDZ;
+
+/* Declare output variables */
+ double DDA_DXXDA;
+ double DDA_DXYDA;
+ double DDA_DXZDA;
+ double DDA_DYYDA;
+ double DDA_DYZDA;
+ double DDA_DZZDA;
+
+#endif
+
+#endif
diff --git a/src/macro/DDA_guts.h b/src/macro/DDA_guts.h
new file mode 100644
index 0000000..de4c849
--- /dev/null
+++ b/src/macro/DDA_guts.h
@@ -0,0 +1,52 @@
+/*@@
+ @header DDA_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all second spatial derivative of lapse
+ @enddesc
+@@*/
+
+#ifndef DDA_GUTS
+#define DDA_GUTS
+
+#ifdef FCODE
+
+ DDA_OODX2 = 1D0/(DDA_DX*DDA_DX)
+ DDA_OODY2 = 1D0/(DDA_DY*DDA_DY)
+ DDA_OODZ2 = 1D0/(DDA_DZ*DDA_DZ)
+ DDA_OO4DXDY = 1D0/(4D0*DDA_DX*DDA_DY)
+ DDA_OO4DXDZ = 1D0/(4D0*DDA_DX*DDA_DZ)
+ DDA_OO4DYDZ = 1D0/(4D0*DDA_DY*DDA_DZ)
+
+ DDA_DXXDA = DDA_OODX2*(DDA_A_IP - 2D0*DDA_A + DDA_A_IM)
+ DDA_DYYDA = DDA_OODY2*(DDA_A_JP - 2D0*DDA_A + DDA_A_JM)
+ DDA_DZZDA = DDA_OODZ2*(DDA_A_KP - 2D0*DDA_A + DDA_A_KM)
+
+ DDA_DXYDA = DDA_OO4DXDY*(DDA_A_IPJP-DDA_A_IPJM-DDA_A_IMJP+DDA_A_IMJM)
+ DDA_DXZDA = DDA_OO4DXDZ*(DDA_A_IPKP-DDA_A_IPKM-DDA_A_IMKP+DDA_A_IMKM)
+ DDA_DYZDA = DDA_OO4DYDZ*(DDA_A_JPKP-DDA_A_JPKM-DDA_A_JMKP+DDA_A_JMKM)
+
+#endif
+
+#ifdef CCODE
+
+ DDA_OODX2 = 1/(DDA_DX*DDA_DX);
+ DDA_OODY2 = 1/(DDA_DY*DDA_DY);
+ DDA_OODZ2 = 1/(DDA_DZ*DDA_DZ);
+ DDA_OO4DXDY = 1/(4*DDA_DX*DDA_DY);
+ DDA_OO4DXDZ = 1/(4*DDA_DX*DDA_DZ);
+ DDA_OO4DYDZ = 1/(4*DDA_DY*DDA_DZ);
+
+ DDA_DXXDA = DDA_OODX2*(DDA_A_IP - 2*DDA_A + DDA_A_IM);
+ DDA_DYYDA = DDA_OODY2*(DDA_A_JP - 2*DDA_A + DDA_A_JM);
+ DDA_DZZDA = DDA_OODZ2*(DDA_A_KP - 2*DDA_A + DDA_A_KM);
+
+ DDA_DXYDA = DDA_OO4DXDY*(DDA_A_IPJP-DDA_A_IPJM-DDA_A_IMJP+DDA_A_IMJM);
+ DDA_DXZDA = DDA_OO4DXDZ*(DDA_A_IPKP-DDA_A_IPKM-DDA_A_IMKP+DDA_A_IMKM);
+ DDA_DYZDA = DDA_OO4DYDZ*(DDA_A_JPKP-DDA_A_JPKM-DDA_A_JMKP+DDA_A_JMKM);
+
+#endif
+
+#endif
+
diff --git a/src/macro/DDA_undefine.h b/src/macro/DDA_undefine.h
new file mode 100644
index 0000000..8070d45
--- /dev/null
+++ b/src/macro/DDA_undefine.h
@@ -0,0 +1,10 @@
+/*@@
+ @header DDA_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DDA_GUTS
+
diff --git a/src/macro/DDG_declare.h b/src/macro/DDG_declare.h
new file mode 100644
index 0000000..4a951f8
--- /dev/null
+++ b/src/macro/DDG_declare.h
@@ -0,0 +1,105 @@
+/*@@
+ @header DDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate all the second (and first)
+ derivatives of the physical metric with respect to x, y, z using the
+ subsidary macros @seefile D??DG_guts.h and D?DG_guts.h
+
+ Calls the macros @seefile D??DG_declare.h which in turn call
+ @seefile D?DG_declare.h
+
+ @enddesc
+@@*/
+
+#ifndef DDG_DECLARE
+#define DDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXXDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXYDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXZDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYYDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYZDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZZDG_declare.h"
+
+#undef DDG_DXXDGXX
+#define DDG_DXXDGXX DXXDG_DXXDGXX
+#undef DDG_DXYDGXX
+#define DDG_DXYDGXX DXYDG_DXYDGXX
+#undef DDG_DXZDGXX
+#define DDG_DXZDGXX DXZDG_DXZDGXX
+#undef DDG_DYYDGXX
+#define DDG_DYYDGXX DYYDG_DYYDGXX
+#undef DDG_DYZDGXX
+#define DDG_DYZDGXX DYZDG_DYZDGXX
+#undef DDG_DZZDGXX
+#define DDG_DZZDGXX DZZDG_DZZDGXX
+
+#undef DDG_DXXDGXY
+#define DDG_DXXDGXY DXXDG_DXXDGXY
+#undef DDG_DXYDGXY
+#define DDG_DXYDGXY DXYDG_DXYDGXY
+#undef DDG_DXZDGXY
+#define DDG_DXZDGXY DXZDG_DXZDGXY
+#undef DDG_DYYDGXY
+#define DDG_DYYDGXY DYYDG_DYYDGXY
+#undef DDG_DYZDGXY
+#define DDG_DYZDGXY DYZDG_DYZDGXY
+#undef DDG_DZZDGXY
+#define DDG_DZZDGXY DZZDG_DZZDGXY
+
+#undef DDG_DXXDGXZ
+#define DDG_DXXDGXZ DXXDG_DXXDGXZ
+#undef DDG_DXYDGXZ
+#define DDG_DXYDGXZ DXYDG_DXYDGXZ
+#undef DDG_DXZDGXZ
+#define DDG_DXZDGXZ DXZDG_DXZDGXZ
+#undef DDG_DYYDGXZ
+#define DDG_DYYDGXZ DYYDG_DYYDGXZ
+#undef DDG_DYZDGXZ
+#define DDG_DYZDGXZ DYZDG_DYZDGXZ
+#undef DDG_DZZDGXZ
+#define DDG_DZZDGXZ DZZDG_DZZDGXZ
+
+#undef DDG_DXXDGYY
+#define DDG_DXXDGYY DXXDG_DXXDGYY
+#undef DDG_DXYDGYY
+#define DDG_DXYDGYY DXYDG_DXYDGYY
+#undef DDG_DXZDGYY
+#define DDG_DXZDGYY DXZDG_DXZDGYY
+#undef DDG_DYYDGYY
+#define DDG_DYYDGYY DYYDG_DYYDGYY
+#undef DDG_DYZDGYY
+#define DDG_DYZDGYY DYZDG_DYZDGYY
+#undef DDG_DZZDGYY
+#define DDG_DZZDGYY DZZDG_DZZDGYY
+
+#undef DDG_DXXDGYZ
+#define DDG_DXXDGYZ DXXDG_DXXDGYZ
+#undef DDG_DXYDGYZ
+#define DDG_DXYDGYZ DXYDG_DXYDGYZ
+#undef DDG_DXZDGYZ
+#define DDG_DXZDGYZ DXZDG_DXZDGYZ
+#undef DDG_DYYDGYZ
+#define DDG_DYYDGYZ DYYDG_DYYDGYZ
+#undef DDG_DYZDGYZ
+#define DDG_DYZDGYZ DYZDG_DYZDGYZ
+#undef DDG_DZZDGYZ
+#define DDG_DZZDGYZ DZZDG_DZZDGYZ
+
+#undef DDG_DXXDGZZ
+#define DDG_DXXDGZZ DXXDG_DXXDGZZ
+#undef DDG_DXYDGZZ
+#define DDG_DXYDGZZ DXYDG_DXYDGZZ
+#undef DDG_DXZDGZZ
+#define DDG_DXZDGZZ DXZDG_DXZDGZZ
+#undef DDG_DYYDGZZ
+#define DDG_DYYDGZZ DYYDG_DYYDGZZ
+#undef DDG_DYZDGZZ
+#define DDG_DYZDGZZ DYZDG_DYZDGZZ
+#undef DDG_DZZDGZZ
+#define DDG_DZZDGZZ DZZDG_DZZDGZZ
+
+#endif
diff --git a/src/macro/DDG_guts.h b/src/macro/DDG_guts.h
new file mode 100644
index 0000000..87f350e
--- /dev/null
+++ b/src/macro/DDG_guts.h
@@ -0,0 +1,26 @@
+/*@@
+ @header DDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all the second (and first) derivatives of the
+ physical metric with respect to x, y, z
+
+ Calls the macros @seefile D??DG_guts.h and @seefile D?DG_guts.h
+
+ The macro is defined in terms of standard variables in
+ @seefile D??DG_declare.h ,@seefile D?DG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DDG_GUTS
+#define DDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXXDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXYDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXZDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYYDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYZDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZZDG_guts.h"
+
+#endif
diff --git a/src/macro/DDG_undefine.h b/src/macro/DDG_undefine.h
new file mode 100644
index 0000000..62b62de
--- /dev/null
+++ b/src/macro/DDG_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header DDG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXXDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXYDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXZDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYYDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYZDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZZDG_undefine.h"
+
diff --git a/src/macro/DETG_declare.h b/src/macro/DETG_declare.h
new file mode 100644
index 0000000..8c181f8
--- /dev/null
+++ b/src/macro/DETG_declare.h
@@ -0,0 +1,129 @@
+/*@@
+ @header DETG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Determinants of physical and conformal 3-metric
+ @enddesc
+@@*/
+
+#ifndef DETG_DECLARE
+#define DETG_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DETG_PSI
+#define DETG_PSI psi(i,j,k)
+
+#undef DETG_GXX
+#define DETG_GXX gxx(i,j,k)
+#undef DETG_GXY
+#define DETG_GXY gxy(i,j,k)
+#undef DETG_GXZ
+#define DETG_GXZ gxz(i,j,k)
+#undef DETG_GYY
+#define DETG_GYY gyy(i,j,k)
+#undef DETG_GYZ
+#define DETG_GYZ gyz(i,j,k)
+#undef DETG_GZZ
+#define DETG_GZZ gzz(i,j,k)
+
+/* Output variables */
+#undef DETG_DETG
+#define DETG_DETG detg_detg
+#undef DETG_DETCG
+#define DETG_DETCG detg_detcg
+
+
+/* Temporary variables */
+#undef DETG_PSI4
+#define DETG_PSI4 detg_psi4
+
+#undef DETG_TEMPXX
+#define DETG_TEMPXX detg_tempxx
+#undef DETG_TEMPXY
+#define DETG_TEMPXY detg_tempxy
+#undef DETG_TEMPXZ
+#define DETG_TEMPXZ detg_tempxz
+#undef DETG_TEMPYY
+#define DETG_TEMPYY detg_tempyy
+#undef DETG_TEMPYZ
+#define DETG_TEMPYZ detg_tempyz
+#undef DETG_TEMPZZ
+#define DETG_TEMPZZ detg_tempzz
+
+/* Declare internal variables */
+ REAL DETG_PSI4
+ REAL DETG_TEMPXX,DETG_TEMPXY,DETG_TEMPXZ
+ REAL DETG_TEMPYY,DETG_TEMPYZ,DETG_TEMPZZ
+
+/* Declare output variables */
+ REAL DETG_DETG, DETG_DETCG
+
+#endif
+
+
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DETG_PSI
+#define DETG_PSI psi[ijk]
+
+#undef DETG_GXX
+#define DETG_GXX gxx[ijk]
+#undef DETG_GXY
+#define DETG_GXY gxy[ijk]
+#undef DETG_GXZ
+#define DETG_GXZ gxz[ijk]
+#undef DETG_GYY
+#define DETG_GYY gyy[ijk]
+#undef DETG_GYZ
+#define DETG_GYZ gyz[ijk]
+#undef DETG_GZZ
+#define DETG_GZZ gzz[ijk]
+
+/* Output variables */
+#undef DETG_DETG
+#define DETG_DETG detg_detg
+#undef DETG_DETCG
+#define DETG_DETCG detg_detcg
+
+/* Internal variables */
+
+#undef DETG_PSI4
+#define DETG_PSI4 detg_psi4
+
+#undef DETG_TEMPXX
+#define DETG_TEMPXX detg_tempxx
+#undef DETG_TEMPXY
+#define DETG_TEMPXY detg_tempxy
+#undef DETG_TEMPXZ
+#define DETG_TEMPXZ detg_tempxz
+#undef DETG_TEMPYY
+#define DETG_TEMPYY detg_tempyy
+#undef DETG_TEMPYZ
+#define DETG_TEMPYZ detg_tempyz
+#undef DETG_TEMPZZ
+#define DETG_TEMPZZ detg_tempzz
+
+/* Declare internal variables */
+double DETG_PSI4;
+double DETG_TEMPXX;
+double DETG_TEMPXY;
+double DETG_TEMPXZ;
+double DETG_TEMPYY;
+double DETG_TEMPYZ;
+double DETG_TEMPZZ;
+
+/* Declare output variables */
+double DETG_DETG;
+double DETG_DETCG
+
+#endif
+
+#endif
+
+
diff --git a/src/macro/DETG_guts.h b/src/macro/DETG_guts.h
new file mode 100644
index 0000000..a9025ec
--- /dev/null
+++ b/src/macro/DETG_guts.h
@@ -0,0 +1,57 @@
+/*
+DETG_guts.h
+
+Macro to calculate the determinants of the conformal and
+physical 3-metric
+
+Gabrielle Allen, 5th November 1998
+
+*/
+
+#ifndef DETG_GUTS
+#define DETG_GUTS
+
+#ifdef FCODE
+
+ DETG_PSI4 = DETG_PSI**4
+
+ DETG_TEMPXX = DETG_GYY*DETG_GZZ - DETG_GYZ*DETG_GYZ
+ DETG_TEMPXY = DETG_GXZ*DETG_GYZ - DETG_GXY*DETG_GZZ
+ DETG_TEMPXZ = -DETG_GXZ*DETG_GYY + DETG_GXY*DETG_GYZ
+ DETG_TEMPYY = DETG_GXX*DETG_GZZ - DETG_GXZ*DETG_GXZ
+ DETG_TEMPYZ = DETG_GXY*DETG_GXZ - DETG_GXX*DETG_GYZ
+ DETG_TEMPZZ = DETG_GXX*DETG_GYY - DETG_GXY*DETG_GXY
+
+/* This is the conformal determinant */
+ DETG_DETCG = (DETG_TEMPXX*DETG_GXX +
+ & DETG_TEMPXY*DETG_GXY + DETG_TEMPXZ*DETG_GXZ)
+
+/* This is the physical determinat */
+ DETG_DETG = DETG_PSI4**3*DETG_DETCG
+
+#endif
+
+#ifdef CCODE
+
+#define Cal(x,y,z) ((x)?(y):(z))
+#define Power(x,y) (pow((double) (x), (double) (y)))
+
+DET_PSI4 = ((conformal_state != CONFORMAL_METRIC)?1:Power(DETG_PSI,4));
+
+DETG_TEMPXX = DETG_GYY*DETG_GZZ - DETG_GYZ*DETG_GYZ;
+DETG_TEMPXY = DETG_GXZ*DETG_GYZ - DETG_GXY*DETG_GZZ;
+DETG_TEMPXZ = -DETG_GXZ*DETG_GYY + DETG_GXY*DETG_GYZ;
+DETG_TEMPYY = DETG_GXX*DETG_GZZ - DETG_GXZ*DETG_GXZ;
+DETG_TEMPYZ = DETG_GXY*DETG_GXZ - DETG_GXX*DETG_GYZ;
+DETG_TEMPZZ = DETG_GXX*DETG_GYY - DETG_GXY*DETG_GXY;
+
+/* This is the conformal determinant */
+DETG_DETCG = (DETG_TEMPXX*DETG_GXX +
+ DETG_TEMPXY*DETG_GXY + DETG_TEMPXZ*DETG_GXZ);
+
+/* This is the physical determinat */
+DETG_DETG = DET_PSI4*DET_PSI4*DET_PSI4*DETG_DETCG
+
+#endif
+
+#endif
diff --git a/src/macro/DETG_undefine.h b/src/macro/DETG_undefine.h
new file mode 100644
index 0000000..1b73eee
--- /dev/null
+++ b/src/macro/DETG_undefine.h
@@ -0,0 +1,10 @@
+/*@@
+ @header DETG_undefine.h
+ @date Nov 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DETG_GUTS
+
diff --git a/src/macro/DG_declare.h b/src/macro/DG_declare.h
new file mode 100644
index 0000000..a2a31a4
--- /dev/null
+++ b/src/macro/DG_declare.h
@@ -0,0 +1,24 @@
+/*@@
+ @header DG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate all the first derivatives of the
+ physical metric with respect to x, y, z using the subsidary macros
+ @seefile DXDG_guts.h @seefile DYDG_guts.h and @seefile DZDG_guts.h.
+
+ Calls the macros @seefile DXDG_declare.h @seefile DYDG_declare.h
+ and @seefile DZDG_declare.h.
+
+ @enddesc
+@@*/
+
+#ifndef DG_DECLARE
+#define DG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_declare.h"
+
+#endif
diff --git a/src/macro/DG_guts.h b/src/macro/DG_guts.h
new file mode 100644
index 0000000..1d7b1ac
--- /dev/null
+++ b/src/macro/DG_guts.h
@@ -0,0 +1,25 @@
+/*@@
+ @header DG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all the first derivatives of the
+ physical metric with respect to x, y, z
+
+ Calls the macros @seefile DXDG_guts.h @seefile DYDG_guts.h
+ and @seefile DZDG_guts.h.
+
+ The macro is defined in terms of standard variables in
+ @seefile DXDG_declare.h ,@seefile DYDG_declare.h and
+ @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DG_GUTS
+#define DG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_guts.h"
+
+#endif
diff --git a/src/macro/DG_undefine.h b/src/macro/DG_undefine.h
new file mode 100644
index 0000000..72e899e
--- /dev/null
+++ b/src/macro/DG_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header DG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_undefine.h"
+
diff --git a/src/macro/DKDT_declare.h b/src/macro/DKDT_declare.h
new file mode 100644
index 0000000..b03ad4c
--- /dev/null
+++ b/src/macro/DKDT_declare.h
@@ -0,0 +1,111 @@
+/*@@
+ @header DKDT_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DKDT_guts.h to calculate the source term
+ in the evolution equation for the extrinsic curvature. That is
+
+ d K_ij/dt = alpha*(R_ij-2 K_ik K^k_j + K_ij trK] - nabla_i nabla_j alpha
+
+ + Lie_beta K_ij
+
+ @enddesc
+@@*/
+
+#ifndef DKDT_DECLARE
+#define DKDT_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/RICCI_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/KK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDCDA_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEK_declare.h"
+
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DKDT_A
+#define DKDT_A alp(i,j,k)
+#undef DKDT_KXX
+#define DKDT_KXX hxx(i,j,k)
+#undef DKDT_KXY
+#define DKDT_KXY hxy(i,j,k)
+#undef DKDT_KXZ
+#define DKDT_KXZ hxz(i,j,k)
+#undef DKDT_KYY
+#define DKDT_KYY hyy(i,j,k)
+#undef DKDT_KYZ
+#define DKDT_KYZ hyz(i,j,k)
+#undef DKDT_KZZ
+#define DKDT_KZZ hzz(i,j,k)
+
+/* Output variables */
+#undef DKDT_DKXXDT
+#define DKDT_DKXXDT dkdt_dkxxdt
+#undef DKDT_DKXYDT
+#define DKDT_DKXYDT dkdt_dkxydt
+#undef DKDT_DKXZDT
+#define DKDT_DKXZDT dkdt_dkxzdt
+#undef DKDT_DKYYDT
+#define DKDT_DKYYDT dkdt_dkyydt
+#undef DKDT_DKYZDT
+#define DKDT_DKYZDT dkdt_dkyzdt
+#undef DKDT_DKZZDT
+#define DKDT_DKZZDT dkdt_dkzzdt
+
+/* Declare output variables */
+ REAL DKDT_DKXXDT
+ REAL DKDT_DKXYDT
+ REAL DKDT_DKXZDT
+ REAL DKDT_DKYYDT
+ REAL DKDT_DKYZDT
+ REAL DKDT_DKZZDT
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DKDT_A
+#define DKDT_A alp[ijk]
+#undef DKDT_KXX
+#define DKDT_KXX hxx[ijk]
+#undef DKDT_KXY
+#define DKDT_KXY hxy[ijk]
+#undef DKDT_KXZ
+#define DKDT_KXZ hxz[ijk]
+#undef DKDT_KYY
+#define DKDT_KYY hyy[ijk]
+#undef DKDT_KYZ
+#define DKDT_KYZ hyz[ijk]
+#undef DKDT_KZZ
+#define DKDT_KZZ hzz[ijk]
+
+/* Output variables */
+#undef DKDT_DKXXDT
+#define DKDT_DKXXDT dkdt_dkxxdt
+#undef DKDT_DKXYDT
+#define DKDT_DKXYDT dkdt_dkxydt
+#undef DKDT_DKXZDT
+#define DKDT_DKXZDT dkdt_dkxzdt
+#undef DKDT_DKYYDT
+#define DKDT_DKYYDT dkdt_dkyydt
+#undef DKDT_DKYZDT
+#define DKDT_DKYZDT dkdt_dkyzdt
+#undef DKDT_DKZZDT
+#define DKDT_DKZZDT dkdt_dkzzdt
+
+/* Declare output variables */
+ double DKDT_DKXXDT;
+ double DKDT_DKXYDT;
+ double DKDT_DKXZDT;
+ double DKDT_DKYYDT;
+ double DKDT_DKYZDT;
+ double DKDT_DKZZDT;
+
+#endif
+
+#endif
diff --git a/src/macro/DKDT_guts.h b/src/macro/DKDT_guts.h
new file mode 100644
index 0000000..583cf2b
--- /dev/null
+++ b/src/macro/DKDT_guts.h
@@ -0,0 +1,75 @@
+/*@@
+ @header DKDT_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the source term in the evolution equation for the
+ extrinsic curvature. That is
+
+ d K_ij/dt = alpha*(R_ij-2 K_ik K^k_j + K_ij trK] - nabla_i nabla_j alpha
+
+ + Lie_beta K_ij
+
+ @enddesc
+@@*/
+
+#ifndef DKDT_GUTS
+#define DKDT_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/RICCI_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/KK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDCDA_guts.h"
+
+#ifdef FCODE
+
+ DKDT_DKXXDT = DKDT_A*(RICCI_RXX-2*KK_KKXX+DKDT_KXX*TRK_TRK)-CDCDA_CDXXDA
+ DKDT_DKXYDT = DKDT_A*(RICCI_RXY-2*KK_KKXY+DKDT_KXY*TRK_TRK)-CDCDA_CDXYDA
+ DKDT_DKXZDT = DKDT_A*(RICCI_RXZ-2*KK_KKXZ+DKDT_KXZ*TRK_TRK)-CDCDA_CDXZDA
+ DKDT_DKYYDT = DKDT_A*(RICCI_RYY-2*KK_KKYY+DKDT_KYY*TRK_TRK)-CDCDA_CDYYDA
+ DKDT_DKYZDT = DKDT_A*(RICCI_RYZ-2*KK_KKYZ+DKDT_KYZ*TRK_TRK)-CDCDA_CDYZDA
+ DKDT_DKZZDT = DKDT_A*(RICCI_RZZ-2*KK_KKZZ+DKDT_KZZ*TRK_TRK)-CDCDA_CDZZDA
+
+ IF (shift_active .ne. SHIFT_INACTIVE) THEN
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEK_guts.h"
+
+ DKDT_DKXXDT = DKDT_DKXXDT + LIEK_LKXX
+ DKDT_DKXYDT = DKDT_DKXYDT + LIEK_LKXY
+ DKDT_DKXZDT = DKDT_DKXZDT + LIEK_LKXZ
+ DKDT_DKYYDT = DKDT_DKYYDT + LIEK_LKYY
+ DKDT_DKYZDT = DKDT_DKYZDT + LIEK_LKYZ
+ DKDT_DKZZDT = DKDT_DKZZDT + LIEK_LKZZ
+
+ END IF
+
+
+#endif
+
+#ifdef CCODE
+
+ DKDT_DKXXDT = DKDT_A*(RICCI_RXX-2*KK_KKXX+DKDT_KXX*TRK_TRK)-CDCDA_CDXXDA;
+ DKDT_DKXYDT = DKDT_A*(RICCI_RXY-2*KK_KKXY+DKDT_KXY*TRK_TRK)-CDCDA_CDXYDA;
+ DKDT_DKXZDT = DKDT_A*(RICCI_RXZ-2*KK_KKXZ+DKDT_KXZ*TRK_TRK)-CDCDA_CDXZDA;
+ DKDT_DKYYDT = DKDT_A*(RICCI_RYY-2*KK_KKYY+DKDT_KYY*TRK_TRK)-CDCDA_CDYYDA;
+ DKDT_DKYZDT = DKDT_A*(RICCI_RYZ-2*KK_KKYZ+DKDT_KYZ*TRK_TRK)-CDCDA_CDYZDA;
+ DKDT_DKZZDT = DKDT_A*(RICCI_RZZ-2*KK_KKZZ+DKDT_KZZ*TRK_TRK)-CDCDA_CDZZDA;
+
+ if (shift)
+ {
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEK_guts.h"
+
+ DKDT_DKXXDT = DKDT_DKXXDT + LIEK_LKXX;
+ DKDT_DKXYDT = DKDT_DKXYDT + LIEK_LKXY;
+ DKDT_DKXZDT = DKDT_DKXZDT + LIEK_LKXZ;
+ DKDT_DKYYDT = DKDT_DKYYDT + LIEK_LKYY;
+ DKDT_DKYZDT = DKDT_DKYZDT + LIEK_LKYZ;
+ DKDT_DKZZDT = DKDT_DKZZDT + LIEK_LKZZ;
+
+ }
+
+#endif
+
+#endif
+
diff --git a/src/macro/DKDT_undefine.h b/src/macro/DKDT_undefine.h
new file mode 100644
index 0000000..15c34cd
--- /dev/null
+++ b/src/macro/DKDT_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header DKDT_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DKDT_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/RICCI_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/KK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDCDA_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/LIEK_undefine.h"
+
+
diff --git a/src/macro/DK_declare.h b/src/macro/DK_declare.h
new file mode 100644
index 0000000..4cc0a65
--- /dev/null
+++ b/src/macro/DK_declare.h
@@ -0,0 +1,24 @@
+/*@@
+ @header DG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate all the first derivatives of the
+ extrinsic curvature with respect to x, y, z using the subsidary macros
+ @seefile DXDK_guts.h @seefile DYDK_guts.h and @seefile DZDK_guts.h.
+
+ Calls the macros @seefile DXDK_declare.h @seefile DYDK_declare.h
+ and @seefile DZDK_declare.h.
+
+ @enddesc
+@@*/
+
+#ifndef DK_DECLARE
+#define DK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDK_declare.h"
+
+#endif
diff --git a/src/macro/DK_guts.h b/src/macro/DK_guts.h
new file mode 100644
index 0000000..f525f18
--- /dev/null
+++ b/src/macro/DK_guts.h
@@ -0,0 +1,25 @@
+/*@@
+ @header DK_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate all the first derivatives of the
+ extrinsic curvature with respect to x, y, z
+
+ Calls the macros @seefile DXDK_guts.h @seefile DYDK_guts.h
+ and @seefile DZDK_guts.h.
+
+ The macro is defined in terms of standard variables in
+ @seefile DXDK_declare.h ,@seefile DYDK_declare.h and
+ @seefile DZDK_declare.h
+ @enddesc
+@@*/
+
+#ifndef DK_GUTS
+#define DK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDK_guts.h"
+
+#endif
diff --git a/src/macro/DK_undefine.h b/src/macro/DK_undefine.h
new file mode 100644
index 0000000..cf637ea
--- /dev/null
+++ b/src/macro/DK_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header DK_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDK_undefine.h"
+
diff --git a/src/macro/DXDB_declare.h b/src/macro/DXDB_declare.h
new file mode 100644
index 0000000..d259194
--- /dev/null
+++ b/src/macro/DXDB_declare.h
@@ -0,0 +1,93 @@
+/*@@
+ @header DXDB_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DXDB_guts.h to compute first
+ derivatives of the shift with respect to x
+ @enddesc
+@@*/
+
+#ifndef DXDB_DECLARE
+#define DXDB_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DXDB_BX_IP
+#define DXDB_BX_IP betax(i+1,j,k)
+#undef DXDB_BX_IM
+#define DXDB_BX_IM betax(i-1,j,k)
+#undef DXDB_BY_IP
+#define DXDB_BY_IP betay(i+1,j,k)
+#undef DXDB_BY_IM
+#define DXDB_BY_IM betay(i-1,j,k)
+#undef DXDB_BZ_IP
+#define DXDB_BZ_IP betaz(i+1,j,k)
+#undef DXDB_BZ_IM
+#define DXDB_BZ_IM betaz(i-1,j,k)
+
+/* Output variables */
+#undef DXDB_DXDBX
+#define DXDB_DXDBX dxdb_dxbx
+#undef DXDB_DXDBY
+#define DXDB_DXDBY dxdb_dxby
+#undef DXDB_DXDBZ
+#define DXDB_DXDBZ dxdb_dxbz
+
+/* Internal variables */
+#undef DXDB_DX
+#define DXDB_DX dx
+#undef DXDB_OO2DX
+#define DXDB_OO2DX dxdb_oo2dx
+
+/* Declare internal variables */
+ REAL DXDB_OO2DX
+
+/* Declare output variables */
+ REAL DXDB_DXDBX
+ REAL DXDB_DXDBY
+ REAL DXDB_DXDBZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DXDB_BX_IP
+#define DXDB_BX_IP betax[ di+ijk]
+#undef DXDB_BX_IM
+#define DXDB_BX_IM betax[-di+ijk]
+#undef DXDB_BY_IP
+#define DXDB_BY_IP betay[ di+ijk]
+#undef DXDB_BY_IM
+#define DXDB_BY_IM betay[-di+ijk]
+#undef DXDB_BZ_IP
+#define DXDB_BZ_IP betaz[ di+ijk]
+#undef DXDB_BZ_IM
+#define DXDB_BZ_IM betaz[-di+ijk]
+
+/* Output variables */
+#undef DXDB_DXDBX
+#define DXDB_DXDBX delbeta11
+#undef DXDB_DXDBY
+#define DXDB_DXDBY delbeta12
+#undef DXDB_DXDBZ
+#define DXDB_DXDBZ delbeta13
+
+/* Internal variables */
+#undef DXDB_OO2DX
+#define DXDB_OO2DX dxdb_oo2dx
+
+/* Declare internal variables */
+double DXDB_OO2DX;
+
+/* Declare output variables */
+double DXDB_DXDBX;
+double DXDB_DXDBY;
+double DXDB_DXDBZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXDB_guts.h b/src/macro/DXDB_guts.h
new file mode 100644
index 0000000..7d76ddc
--- /dev/null
+++ b/src/macro/DXDB_guts.h
@@ -0,0 +1,39 @@
+/*@@
+ @header DXDB_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the first derivatives of the
+ shift with respect to x
+
+ The macro is defined in terms of standard variables in
+ @seefile DXDB_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXDB_GUTS
+#define DXDB_GUTS
+
+#ifdef FCODE
+
+ DXDB_OO2DX = 1D0/(2D0*DXDB_DX)
+
+ DXDB_DXDBX = DXDB_OO2DX*(DXDB_BX_IP - DXDB_BX_IM)
+ DXDB_DXDBY = DXDB_OO2DX*(DXDB_BY_IP - DXDB_BY_IM)
+ DXDB_DXDBZ = DXDB_OO2DX*(DXDB_BZ_IP - DXDB_BZ_IM)
+
+#endif
+
+#ifdef CCODE
+
+ DXDB_OO2DX = 1/(2*GH->dx0);
+
+ DXDB_DXDBX = DXDB_OO2DX*(DXDB_BX_IP - DXDB_BX_IM);
+ DXDB_DXDBY = DXDB_OO2DX*(DXDB_BY_IP - DXDB_BY_IM);
+ DXDB_DXDBZ = DXDB_OO2DX*(DXDB_BZ_IP - DXDB_BZ_IM);
+
+#endif
+
+#endif
+
diff --git a/src/macro/DXDB_undefine.h b/src/macro/DXDB_undefine.h
new file mode 100644
index 0000000..1cd28da
--- /dev/null
+++ b/src/macro/DXDB_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header DXDB_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXDB_GUTS
+
+
diff --git a/src/macro/DXDCG_declare.h b/src/macro/DXDCG_declare.h
new file mode 100644
index 0000000..1d0f0c9
--- /dev/null
+++ b/src/macro/DXDCG_declare.h
@@ -0,0 +1,139 @@
+/*@@
+ @header DXDCG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DXDCG_guts.h to compute first
+ derivatives of the conformal metric with respect to x
+
+ Requires: Conformal lower metric at i+1,i-1 ; dx
+
+ Provides: Derivative of conformal lower metric wrt x
+ @enddesc
+@@*/
+
+#ifndef DXDCG_DECLARE
+#define DXDCG_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DXDCG_GXX_IP
+#define DXDCG_GXX_IP gxx(i+1,j,k)
+#undef DXDCG_GXX_IM
+#define DXDCG_GXX_IM gxx(i-1,j,k)
+#undef DXDCG_GXY_IP
+#define DXDCG_GXY_IP gxy(i+1,j,k)
+#undef DXDCG_GXY_IM
+#define DXDCG_GXY_IM gxy(i-1,j,k)
+#undef DXDCG_GXZ_IP
+#define DXDCG_GXZ_IP gxz(i+1,j,k)
+#undef DXDCG_GXZ_IM
+#define DXDCG_GXZ_IM gxz(i-1,j,k)
+#undef DXDCG_GYY_IP
+#define DXDCG_GYY_IP gyy(i+1,j,k)
+#undef DXDCG_GYY_IM
+#define DXDCG_GYY_IM gyy(i-1,j,k)
+#undef DXDCG_GYZ_IP
+#define DXDCG_GYZ_IP gyz(i+1,j,k)
+#undef DXDCG_GYZ_IM
+#define DXDCG_GYZ_IM gyz(i-1,j,k)
+#undef DXDCG_GZZ_IP
+#define DXDCG_GZZ_IP gzz(i+1,j,k)
+#undef DXDCG_GZZ_IM
+#define DXDCG_GZZ_IM gzz(i-1,j,k)
+
+/* Output variables */
+#undef DXDCG_DXDCGXX
+#define DXDCG_DXDCGXX delgb111
+#undef DXDCG_DXDCGXY
+#define DXDCG_DXDCGXY delgb112
+#undef DXDCG_DXDCGXZ
+#define DXDCG_DXDCGXZ delgb113
+#undef DXDCG_DXDCGYY
+#define DXDCG_DXDCGYY delgb122
+#undef DXDCG_DXDCGYZ
+#define DXDCG_DXDCGYZ delgb123
+#undef DXDCG_DXDCGZZ
+#define DXDCG_DXDCGZZ delgb133
+
+/* Internal variables */
+#undef DXDCG_DX
+#define DXDCG_DX dx
+#undef DXDCG_OO2DX
+#define DXDCG_OO2DX cdxdg_oo2dx
+
+/* Declare internal variables */
+ REAL DXDCG_OO2DX
+
+/* Declare output variables */
+ REAL DXDCG_DXDCGXX
+ REAL DXDCG_DXDCGXY
+ REAL DXDCG_DXDCGXZ
+ REAL DXDCG_DXDCGYY
+ REAL DXDCG_DXDCGYZ
+ REAL DXDCG_DXDCGZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DXDCG_GXX_IP
+#define DXDCG_GXX_IP gxx[ di+ijk]
+#undef DXDCG_GXX_IM
+#define DXDCG_GXX_IM gxx[-di+ijk]
+#undef DXDCG_GXY_IP
+#define DXDCG_GXY_IP gxy[ di+ijk]
+#undef DXDCG_GXY_IM
+#define DXDCG_GXY_IM gxy[-di+ijk]
+#undef DXDCG_GXZ_IP
+#define DXDCG_GXZ_IP gxz[ di+ijk]
+#undef DXDCG_GXZ_IM
+#define DXDCG_GXZ_IM gxz[-di+ijk]
+#undef DXDCG_GYY_IP
+#define DXDCG_GYY_IP gyy[ di+ijk]
+#undef DXDCG_GYY_IM
+#define DXDCG_GYY_IM gyy[-di+ijk]
+#undef DXDCG_GYZ_IP
+#define DXDCG_GYZ_IP gyz[ di+ijk]
+#undef DXDCG_GYZ_IM
+#define DXDCG_GYZ_IM gyz[-di+ijk]
+#undef DXDCG_GZZ_IP
+#define DXDCG_GZZ_IP gzz[ di+ijk]
+#undef DXDCG_GZZ_IM
+#define DXDCG_GZZ_IM gzz[-di+ijk]
+
+/* Output variables */
+#undef DXDCG_DXDCGXX
+#define DXDCG_DXDCGXX delgb111
+#undef DXDCG_DXDCGXY
+#define DXDCG_DXDCGXY delgb112
+#undef DXDCG_DXDCGXZ
+#define DXDCG_DXDCGXZ delgb113
+#undef DXDCG_DXDCGYY
+#define DXDCG_DXDCGYY delgb122
+#undef DXDCG_DXDCGYZ
+#define DXDCG_DXDCGYZ delgb123
+#undef DXDCG_DXDCGZZ
+#define DXDCG_DXDCGZZ delgb133
+
+/* Internal variables */
+#undef DXDCG_OO2DX
+#define DXDCG_OO2DX cdxdg_oo2dx
+
+/* Declare internal variables */
+double DXDCG_OO2DX;
+
+/* Declare output variables */
+double DXDCG_DXDCGXX;
+double DXDCG_DXDCGXY;
+double DXDCG_DXDCGXZ;
+double DXDCG_DXDCGYY;
+double DXDCG_DXDCGYZ;
+double DXDCG_DXDCGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXDCG_guts.h b/src/macro/DXDCG_guts.h
new file mode 100644
index 0000000..8647d4f
--- /dev/null
+++ b/src/macro/DXDCG_guts.h
@@ -0,0 +1,48 @@
+/*@@
+ @header DXDCG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ conformal metric with respect to x
+
+ The macro is defined in terms of standard variables in
+
+ Requires: lower conformal metric at i+1,i-1 ; dx0
+
+ Provides: derivative of lower conformal metric wrt x
+
+ @seefile DXDCG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXDCG_GUTS
+#define DXDCG_GUTS
+
+#ifdef FCODE
+
+ DXDCG_OO2DX = 1D0/(2D0*DXDCG_DX)
+
+ DXDCG_DXDCGXX = DXDCG_OO2DX*(DXDCG_GXX_IP - DXDCG_GXX_IM)
+ DXDCG_DXDCGXY = DXDCG_OO2DX*(DXDCG_GXY_IP - DXDCG_GXY_IM)
+ DXDCG_DXDCGXZ = DXDCG_OO2DX*(DXDCG_GXZ_IP - DXDCG_GXZ_IM)
+ DXDCG_DXDCGYY = DXDCG_OO2DX*(DXDCG_GYY_IP - DXDCG_GYY_IM)
+ DXDCG_DXDCGYZ = DXDCG_OO2DX*(DXDCG_GYZ_IP - DXDCG_GYZ_IM)
+ DXDCG_DXDCGZZ = DXDCG_OO2DX*(DXDCG_GZZ_IP - DXDCG_GZZ_IM)
+
+#endif
+
+#ifdef CCODE
+
+ DXDCG_OO2DX = 1/(2*GH->dx0);
+
+ DXDCG_DXDCGXX = DXDCG_OO2DX*(DXDCG_GXX_IP - DXDCG_GXX_IM);
+ DXDCG_DXDCGXY = DXDCG_OO2DX*(DXDCG_GXY_IP - DXDCG_GXY_IM);
+ DXDCG_DXDCGXZ = DXDCG_OO2DX*(DXDCG_GXZ_IP - DXDCG_GXZ_IM);
+ DXDCG_DXDCGYY = DXDCG_OO2DX*(DXDCG_GYY_IP - DXDCG_GYY_IM);
+ DXDCG_DXDCGYZ = DXDCG_OO2DX*(DXDCG_GYZ_IP - DXDCG_GYZ_IM);
+ DXDCG_DXDCGZZ = DXDCG_OO2DX*(DXDCG_GZZ_IP - DXDCG_GZZ_IM);
+
+#endif
+
+#endif
diff --git a/src/macro/DXDCG_undefine.h b/src/macro/DXDCG_undefine.h
new file mode 100644
index 0000000..f4d910a
--- /dev/null
+++ b/src/macro/DXDCG_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header DXDCG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXDCG_GUTS
+
+
diff --git a/src/macro/DXDG_declare.h b/src/macro/DXDG_declare.h
new file mode 100644
index 0000000..e50c9b0
--- /dev/null
+++ b/src/macro/DXDG_declare.h
@@ -0,0 +1,130 @@
+/*@@
+ @header DXDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DXDG_guts.h to compute first
+ derivatives of the physical metric with respect to x
+ @enddesc
+@@*/
+
+#ifndef DXDG_DECLARE
+#define DXDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDCG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DXDG_PSI
+#define DXDG_PSI psi(i,j,k)
+
+#undef DXDG_DXDPSI_O_PSI
+#define DXDG_DXDPSI_O_PSI psix(i,j,k)
+
+#undef DXDG_GXX
+#define DXDG_GXX gxx(i,j,k)
+#undef DXDG_GXY
+#define DXDG_GXY gxy(i,j,k)
+#undef DXDG_GXZ
+#define DXDG_GXZ gxz(i,j,k)
+#undef DXDG_GYY
+#define DXDG_GYY gyy(i,j,k)
+#undef DXDG_GYZ
+#define DXDG_GYZ gyz(i,j,k)
+#undef DXDG_GZZ
+#define DXDG_GZZ gzz(i,j,k)
+
+/* Output variables */
+#undef DXDG_DXDGXX
+#define DXDG_DXDGXX dxdgxx
+#undef DXDG_DXDGXY
+#define DXDG_DXDGXY dxdgxy
+#undef DXDG_DXDGXZ
+#define DXDG_DXDGXZ dxdgxz
+#undef DXDG_DXDGYY
+#define DXDG_DXDGYY dxdgyy
+#undef DXDG_DXDGYZ
+#define DXDG_DXDGYZ dxdgyz
+#undef DXDG_DXDGZZ
+#define DXDG_DXDGZZ dxdgzz
+
+/* Internal variables */
+#undef DXDG_PSI4
+#define DXDG_PSI4 dxdg_psi4
+
+#undef DXDG_FAC
+#define DXDG_FAC dxdg_fac
+
+/* Declare internal variables */
+ REAL DXDG_PSI4;
+ REAL DXDG_FAC;
+
+/* Declare output variables */
+ REAL DXDG_DXDGXX;
+ REAL DXDG_DXDGXY;
+ REAL DXDG_DXDGXZ;
+ REAL DXDG_DXDGYY;
+ REAL DXDG_DXDGYZ;
+ REAL DXDG_DXDGZZ;
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DXDG_PSI
+#define DXDG_PSI psi[ijk]
+
+#undef DXDG_DXDPSI_O_PSI
+#define DXDG_DXDPSI_O_PSI psix[ijk]
+
+#undef DXDG_GXX
+#define DXDG_GXX gxx[ijk]
+#undef DXDG_GXY
+#define DXDG_GXY gxy[ijk]
+#undef DXDG_GXZ
+#define DXDG_GXZ gxz[ijk]
+#undef DXDG_GYY
+#define DXDG_GYY gyy[ijk]
+#undef DXDG_GYZ
+#define DXDG_GYZ gyz[ijk]
+#undef DXDG_GZZ
+#define DXDG_GZZ gzz[ijk]
+
+/* Output variables */
+#undef DXDG_DXDGXX
+#define DXDG_DXDGXX delg111
+#undef DXDG_DXDGXY
+#define DXDG_DXDGXY delg112
+#undef DXDG_DXDGXZ
+#define DXDG_DXDGXZ delg113
+#undef DXDG_DXDGYY
+#define DXDG_DXDGYY delg122
+#undef DXDG_DXDGYZ
+#define DXDG_DXDGYZ delg123
+#undef DXDG_DXDGZZ
+#define DXDG_DXDGZZ delg133
+
+/* Internal variables */
+#undef DXDG_PSI4
+#define DXDG_PSI4 dxdg_psi4
+
+#undef DXDG_FAC
+#define DXDG_FAC dxdg_fac
+
+/* Declare internal variables */
+double DXDG_PSI4;
+double DXDG_FAC;
+
+/* Declare output variables */
+double DXDG_DXDGXX;
+double DXDG_DXDGXY;
+double DXDG_DXDGXZ;
+double DXDG_DXDGYY;
+double DXDG_DXDGYZ;
+double DXDG_DXDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXDG_guts.h b/src/macro/DXDG_guts.h
new file mode 100644
index 0000000..d89610f
--- /dev/null
+++ b/src/macro/DXDG_guts.h
@@ -0,0 +1,53 @@
+/*@@
+ @header DXDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ physical metric with respect to x
+
+ The macro is defined in terms of standard variables in
+ @seefile DXDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXDG_GUTS
+#define DXDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDCG_guts.h"
+
+#ifdef FCODE
+
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DXDG_PSI4 = 1
+ DXDG_FAC = 0
+ ELSE
+ DXDG_PSI4 = DXDG_PSI**4
+ DXDG_FAC = 4*DXDG_PSI4*DXDG_DXDPSI_O_PSI
+ ENDIF
+
+ DXDG_DXDGXX = DXDCG_DXDCGXX*DXDG_PSI4 + DXDG_FAC*DXDG_GXX
+ DXDG_DXDGXY = DXDCG_DXDCGXY*DXDG_PSI4 + DXDG_FAC*DXDG_GXY
+ DXDG_DXDGXZ = DXDCG_DXDCGXZ*DXDG_PSI4 + DXDG_FAC*DXDG_GXZ
+ DXDG_DXDGYY = DXDCG_DXDCGYY*DXDG_PSI4 + DXDG_FAC*DXDG_GYY
+ DXDG_DXDGYZ = DXDCG_DXDCGYZ*DXDG_PSI4 + DXDG_FAC*DXDG_GYZ
+ DXDG_DXDGZZ = DXDCG_DXDCGZZ*DXDG_PSI4 + DXDG_FAC*DXDG_GZZ
+
+#endif
+
+#ifdef CCODE
+
+ DXDG_PSI4 = ((conformal_state != CONFORMAL_METRIC)?1:Power(DXDG_PSI,4));
+
+ DXDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:4*DXDG_PSI4*DXDG_DXDPSI_O_PSI);
+
+ DXDG_DXDGXX = DXDCG_DXDCGXX*DXDG_PSI4 + DXDG_FAC*DXDG_GXX;
+ DXDG_DXDGXY = DXDCG_DXDCGXY*DXDG_PSI4 + DXDG_FAC*DXDG_GXY;
+ DXDG_DXDGXZ = DXDCG_DXDCGXZ*DXDG_PSI4 + DXDG_FAC*DXDG_GXZ;
+ DXDG_DXDGYY = DXDCG_DXDCGYY*DXDG_PSI4 + DXDG_FAC*DXDG_GYY;
+ DXDG_DXDGYZ = DXDCG_DXDCGYZ*DXDG_PSI4 + DXDG_FAC*DXDG_GYZ;
+ DXDG_DXDGZZ = DXDCG_DXDCGZZ*DXDG_PSI4 + DXDG_FAC*DXDG_GZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXDG_undefine.h b/src/macro/DXDG_undefine.h
new file mode 100644
index 0000000..4f1cd7f
--- /dev/null
+++ b/src/macro/DXDG_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header DXDG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDCG_undefine.h"
+
diff --git a/src/macro/DXDK_declare.h b/src/macro/DXDK_declare.h
new file mode 100644
index 0000000..f31bb26
--- /dev/null
+++ b/src/macro/DXDK_declare.h
@@ -0,0 +1,138 @@
+/*@@
+ @header DXDK_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DXDK_guts.h to compute first
+ derivatives of the extrinsic curvature with respect to x
+ @enddesc
+@@*/
+
+#ifndef DXDK_DECLARE
+#define DXDK_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DXDK_KXX_IP
+#define DXDK_KXX_IP hxx(i+1,j,k)
+#undef DXDK_KXX_IM
+#define DXDK_KXX_IM hxx(i-1,j,k)
+#undef DXDK_KXY_IP
+#define DXDK_KXY_IP hxy(i+1,j,k)
+#undef DXDK_KXY_IM
+#define DXDK_KXY_IM hxy(i-1,j,k)
+#undef DXDK_KXZ_IP
+#define DXDK_KXZ_IP hxz(i+1,j,k)
+#undef DXDK_KXZ_IM
+#define DXDK_KXZ_IM hxz(i-1,j,k)
+#undef DXDK_KYY_IP
+#define DXDK_KYY_IP hyy(i+1,j,k)
+#undef DXDK_KYY_IM
+#define DXDK_KYY_IM hyy(i-1,j,k)
+#undef DXDK_KYZ_IP
+#define DXDK_KYZ_IP hyz(i+1,j,k)
+#undef DXDK_KYZ_IM
+#define DXDK_KYZ_IM hyz(i-1,j,k)
+#undef DXDK_KZZ_IP
+#define DXDK_KZZ_IP hzz(i+1,j,k)
+#undef DXDK_KZZ_IM
+#define DXDK_KZZ_IM hzz(i-1,j,k)
+
+/* Output variables */
+#undef DXDK_DXDKXX
+#define DXDK_DXDKXX dxdk_dxdkxx
+#undef DXDK_DXDKXY
+#define DXDK_DXDKXY dxdk_dxdkxy
+#undef DXDK_DXDKXZ
+#define DXDK_DXDKXZ dxdk_dxdkxz
+#undef DXDK_DXDKYY
+#define DXDK_DXDKYY dxdk_dxdkyy
+#undef DXDK_DXDKYZ
+#define DXDK_DXDKYZ dxdk_dxdkyz
+#undef DXDK_DXDKZZ
+#define DXDK_DXDKZZ dxdk_dxdkzz
+
+/* Internal variables */
+#undef DXDK_DX
+#define DXDK_DX dx
+#undef DXDK_OO2DX
+#define DXDK_OO2DX dxdk_oo2dx
+
+/* Declare internal variables */
+ REAL DXDK_OO2DX
+
+/* Declare output variables */
+ REAL DXDK_DXDKXX
+ REAL DXDK_DXDKXY
+ REAL DXDK_DXDKXZ
+ REAL DXDK_DXDKYY
+ REAL DXDK_DXDKYZ
+ REAL DXDK_DXDKZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DXDK_KXX_IP
+#define DXDK_KXX_IP hxx[ di+ijk]
+#undef DXDK_KXX_IM
+#define DXDK_KXX_IM hxx[-di+ijk]
+#undef DXDK_KXY_IP
+#define DXDK_KXY_IP hxy[ di+ijk]
+#undef DXDK_KXY_IM
+#define DXDK_KXY_IM hxy[-di+ijk]
+#undef DXDK_KXZ_IP
+#define DXDK_KXZ_IP hxz[ di+ijk]
+#undef DXDK_KXZ_IM
+#define DXDK_KXZ_IM hxz[-di+ijk]
+#undef DXDK_KYY_IP
+#define DXDK_KYY_IP hyy[ di+ijk]
+#undef DXDK_KYY_IM
+#define DXDK_KYY_IM hyy[-di+ijk]
+#undef DXDK_KYZ_IP
+#define DXDK_KYZ_IP hyz[ di+ijk]
+#undef DXDK_KYZ_IM
+#define DXDK_KYZ_IM hyz[-di+ijk]
+#undef DXDK_KZZ_IP
+#define DXDK_KZZ_IP hzz[ di+ijk]
+#undef DXDK_KZZ_IM
+#define DXDK_KZZ_IM hzz[-di+ijk]
+
+/* Output variables */
+#undef DXDK_DXDKXX
+#define DXDK_DXDKXX dxdk_dxdkxx
+#undef DXDK_DXDKXY
+#define DXDK_DXDKXY dxdk_dxdkxy
+#undef DXDK_DXDKXZ
+#define DXDK_DXDKXZ dxdk_dxdkxz
+#undef DXDK_DXDKYY
+#define DXDK_DXDKYY dxdk_dxdkyy
+#undef DXDK_DXDKYZ
+#define DXDK_DXDKYZ dxdk_dxdkyz
+#undef DXDK_DXDKZZ
+#define DXDK_DXDKZZ dxdk_dxdkzz
+
+/* Internal variables */
+#undef DXDK_DX
+#define DXDK_DX dx0
+#undef DXDK_OO2DX
+#define DXDK_OO2DX dxdk_oo2dx
+
+/* Declare internal variables */
+double DXDK_DX;
+double DXDK_OO2DX;
+
+/* Declare output variables */
+double DXDK_DXDKXX;
+double DXDK_DXDKXY;
+double DXDK_DXDKXZ;
+double DXDK_DXDKYY;
+double DXDK_DXDKYZ;
+double DXDK_DXDKZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXDK_guts.h b/src/macro/DXDK_guts.h
new file mode 100644
index 0000000..c547dae
--- /dev/null
+++ b/src/macro/DXDK_guts.h
@@ -0,0 +1,40 @@
+/*@@
+ @header DXDK_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ extrinsic curvature with respect to x
+ @enddesc
+@@*/
+
+#ifndef DXDK_GUTS
+#define DXDK_GUTS
+
+#ifdef FCODE
+
+ DXDK_OO2DX = 1D0/(2D0*DXDK_DX)
+
+ DXDK_DXDKXX = DXDK_OO2DX*(DXDK_KXX_IP - DXDK_KXX_IM)
+ DXDK_DXDKXY = DXDK_OO2DX*(DXDK_KXY_IP - DXDK_KXY_IM)
+ DXDK_DXDKXZ = DXDK_OO2DX*(DXDK_KXZ_IP - DXDK_KXZ_IM)
+ DXDK_DXDKYY = DXDK_OO2DX*(DXDK_KYY_IP - DXDK_KYY_IM)
+ DXDK_DXDKYZ = DXDK_OO2DX*(DXDK_KYZ_IP - DXDK_KYZ_IM)
+ DXDK_DXDKZZ = DXDK_OO2DX*(DXDK_KZZ_IP - DXDK_KZZ_IM)
+
+#endif
+
+#ifdef CCODE
+
+ DXDK_OO2DX = 1/(2*GH->dx0);
+
+ DXDK_DXDKXX = DXDK_OO2DX*(DXDK_KXX_IP - DXDK_KXX_IM);
+ DXDK_DXDKXY = DXDK_OO2DX*(DXDK_KXY_IP - DXDK_KXY_IM);
+ DXDK_DXDKXZ = DXDK_OO2DX*(DXDK_KXZ_IP - DXDK_KXZ_IM);
+ DXDK_DXDKYY = DXDK_OO2DX*(DXDK_KYY_IP - DXDK_KYY_IM);
+ DXDK_DXDKYZ = DXDK_OO2DX*(DXDK_KYZ_IP - DXDK_KYZ_IM);
+ DXDK_DXDKZZ = DXDK_OO2DX*(DXDK_KZZ_IP - DXDK_KZZ_IM);
+
+#endif
+
+#endif
diff --git a/src/macro/DXDK_undefine.h b/src/macro/DXDK_undefine.h
new file mode 100644
index 0000000..b0a1742
--- /dev/null
+++ b/src/macro/DXDK_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header DXDK_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXDK_GUTS
+
+
diff --git a/src/macro/DXXDG_declare.h b/src/macro/DXXDG_declare.h
new file mode 100644
index 0000000..1c43be9
--- /dev/null
+++ b/src/macro/DXXDG_declare.h
@@ -0,0 +1,96 @@
+/*@@
+ @header DXXDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the (first and) second derivatives
+ of the physical metric with respect to x
+
+ The macro uses @seefile DXDG_guts.h and @seefile DXDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXXDG_DECLARE
+#define DXXDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef DXXDG_DXXDGXX
+#define DXXDG_DXXDGXX dxxdgxx
+#undef DXXDG_DXXDGXY
+#define DXXDG_DXXDGXY dxxdgxy
+#undef DXXDG_DXXDGXZ
+#define DXXDG_DXXDGXZ dxxdgxz
+#undef DXXDG_DXXDGYY
+#define DXXDG_DXXDGYY dxxdgyy
+#undef DXXDG_DXXDGYZ
+#define DXXDG_DXXDGYZ dxxdgyz
+#undef DXXDG_DXXDGZZ
+#define DXXDG_DXXDGZZ dxxdgzz
+
+/* Internal variables */
+#undef DXXDG_FAC
+#define DXXDG_FAC dxxdg_fac
+#undef DXXDG_OODX2
+#define DXXDG_OODX2 dxxdg_oodx2
+#undef DXXDG_DXXDPSI_O_PSI
+#define DXXDG_DXXDPSI_O_PSI psixx(i,j,k)
+
+/* Declare internal variables */
+ REAL DXXDG_FAC
+ REAL DXXDG_OODX2
+
+/* Declare output variables */
+ REAL DXXDG_DXXDGXX
+ REAL DXXDG_DXXDGXY
+ REAL DXXDG_DXXDGXZ
+ REAL DXXDG_DXXDGYY
+ REAL DXXDG_DXXDGYZ
+ REAL DXXDG_DXXDGZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef DXXDG_DXXDGXX
+#define DXXDG_DXXDGXX deldelg1111
+#undef DXXDG_DXXDGXY
+#define DXXDG_DXXDGXY deldelg1112
+#undef DXXDG_DXXDGXZ
+#define DXXDG_DXXDGXZ deldelg1113
+#undef DXXDG_DXXDGYY
+#define DXXDG_DXXDGYY deldelg1122
+#undef DXXDG_DXXDGYZ
+#define DXXDG_DXXDGYZ deldelg1123
+#undef DXXDG_DXXDGZZ
+#define DXXDG_DXXDGZZ deldelg1133
+
+/* Internal variables */
+#undef DXXDG_FAC
+#define DXXDG_FAC dxxdg_fac
+#undef DXXDG_OODX2
+#define DXXDG_OODX2 dxxdg_oodx2
+#undef DXXDG_DXXDPSI_O_PSI
+#define DXXDG_DXXDPSI_O_PSI psixx[ijk]
+
+/* Declare internal variables */
+double DXXDG_FAC;
+double DXXDG_OODX2 = 1/(GH->dx0*GH->dx0);
+/*double DXXDG_DXXDPSI_O_PSI;*/
+
+/* Declare output variables */
+double DXXDG_DXXDGXX;
+double DXXDG_DXXDGXY;
+double DXXDG_DXXDGXZ;
+double DXXDG_DXXDGYY;
+double DXXDG_DXXDGYZ;
+double DXXDG_DXXDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXXDG_guts.h b/src/macro/DXXDG_guts.h
new file mode 100644
index 0000000..92053d6
--- /dev/null
+++ b/src/macro/DXXDG_guts.h
@@ -0,0 +1,81 @@
+/*@@
+ @header DXXDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the (first and) second derivatives of the
+ physical metric with respect to x
+
+ The macro is defined in terms of standard variables in
+ @seefile DXXDG_declare.h
+
+ The macro uses @seefile DXDG_guts.h and @seefile DXDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXXDG_GUTS
+#define DXXDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_guts.h"
+
+#ifdef FCODE
+
+ DXXDG_OODX2 = 1D0/(dx*dx)
+
+ /* Factor involving 2nd derivative of conformal factor */
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DXXDG_FAC = 0
+ ELSE
+ DXXDG_FAC = DXDG_PSI4*(4*DXXDG_DXXDPSI_O_PSI + 12*DXDG_DXDPSI_O_PSI*DXDG_DXDPSI_O_PSI)
+ ENDIF
+
+ /* Now calculate the second derivatives */
+ DXXDG_DXXDGXX = 2*DXDCG_DXDCGXX*DXDG_FAC+DXXDG_FAC*DXDG_GXX+DXDG_PSI4
+ & *DXXDG_OODX2*(DXDCG_GXX_IP-2*DXDG_GXX+DXDCG_GXX_IM)
+
+ DXXDG_DXXDGXY = 2*DXDCG_DXDCGXY*DXDG_FAC+DXXDG_FAC*DXDG_GXY+DXDG_PSI4
+ & *DXXDG_OODX2*(DXDCG_GXY_IP-2*DXDG_GXY+DXDCG_GXY_IM)
+
+ DXXDG_DXXDGXZ = 2*DXDCG_DXDCGXZ*DXDG_FAC+DXXDG_FAC*DXDG_GXZ+DXDG_PSI4
+ & *DXXDG_OODX2*(DXDCG_GXZ_IP-2*DXDG_GXZ+DXDCG_GXZ_IM)
+
+ DXXDG_DXXDGYY = 2*DXDCG_DXDCGYY*DXDG_FAC+DXXDG_FAC*DXDG_GYY+DXDG_PSI4
+ & *DXXDG_OODX2*(DXDCG_GYY_IP-2*DXDG_GYY+DXDCG_GYY_IM)
+
+ DXXDG_DXXDGYZ = 2*DXDCG_DXDCGYZ*DXDG_FAC+DXXDG_FAC*DXDG_GYZ+DXDG_PSI4
+ & *DXXDG_OODX2*(DXDCG_GYZ_IP-2*DXDG_GYZ+DXDCG_GYZ_IM)
+
+ DXXDG_DXXDGZZ = 2*DXDCG_DXDCGZZ*DXDG_FAC+DXXDG_FAC*DXDG_GZZ+DXDG_PSI4
+ & *DXXDG_OODX2*(DXDCG_GZZ_IP-2*DXDG_GZZ+DXDCG_GZZ_IM)
+
+#endif
+
+#ifdef CCODE
+
+/* Factor involving 2nd derivative of conformal factor */
+DXXDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:
+ DXDG_PSI4*(4*DXXDG_DXXDPSI_O_PSI + 12*DXDG_DXDPSI_O_PSI*DXDG_DXDPSI_O_PSI));
+
+/* Now calculate the second derivatives */
+ DXXDG_DXXDGXX = 2*DXDCG_DXDCGXX*DXDG_FAC+DXXDG_FAC*DXDG_GXX+DXDG_PSI4
+ *DXXDG_OODX2*(DXDCG_GXX_IP-2*DXDG_GXX+DXDCG_GXX_IM);
+
+ DXXDG_DXXDGXY = 2*DXDCG_DXDCGXY*DXDG_FAC+DXXDG_FAC*DXDG_GXY+DXDG_PSI4
+ *DXXDG_OODX2*(DXDCG_GXY_IP-2*DXDG_GXY+DXDCG_GXY_IM);
+
+ DXXDG_DXXDGXZ = 2*DXDCG_DXDCGXZ*DXDG_FAC+DXXDG_FAC*DXDG_GXZ+DXDG_PSI4
+ *DXXDG_OODX2*(DXDCG_GXZ_IP-2*DXDG_GXZ+DXDCG_GXZ_IM);
+
+ DXXDG_DXXDGYY = 2*DXDCG_DXDCGYY*DXDG_FAC+DXXDG_FAC*DXDG_GYY+DXDG_PSI4
+ *DXXDG_OODX2*(DXDCG_GYY_IP-2*DXDG_GYY+DXDCG_GYY_IM);
+
+ DXXDG_DXXDGYZ = 2*DXDCG_DXDCGYZ*DXDG_FAC+DXXDG_FAC*DXDG_GYZ+DXDG_PSI4
+ *DXXDG_OODX2*(DXDCG_GYZ_IP-2*DXDG_GYZ+DXDCG_GYZ_IM);
+
+ DXXDG_DXXDGZZ = 2*DXDCG_DXDCGZZ*DXDG_FAC+DXXDG_FAC*DXDG_GZZ+DXDG_PSI4
+ *DXXDG_OODX2*(DXDCG_GZZ_IP-2*DXDG_GZZ+DXDCG_GZZ_IM);
+
+
+#endif
+
+#endif
diff --git a/src/macro/DXXDG_undefine.h b/src/macro/DXXDG_undefine.h
new file mode 100644
index 0000000..8d82f3e
--- /dev/null
+++ b/src/macro/DXXDG_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header DXXDG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXXDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_undefine.h"
diff --git a/src/macro/DXYDG_declare.h b/src/macro/DXYDG_declare.h
new file mode 100644
index 0000000..a8ed889
--- /dev/null
+++ b/src/macro/DXYDG_declare.h
@@ -0,0 +1,206 @@
+/*@@
+ @header DXYDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declaration for macro to calculate the (first and) second derivatives
+ of the physical metric with respect to x,y
+
+ The macro uses @seefile DXDG_guts.h , @seefile DYDG_guts.h and
+ @seefile DXDG_declare.h , @seefile DYDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXYDG_DECLARE
+#define DXYDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DXYDG_GXX_IPJP
+#define DXYDG_GXX_IPJP gxx(i+1,j+1,k)
+#undef DXYDG_GXX_IPJM
+#define DXYDG_GXX_IPJM gxx(i+1,j-1,k)
+#undef DXYDG_GXX_IMJP
+#define DXYDG_GXX_IMJP gxx(i-1,j+1,k)
+#undef DXYDG_GXX_IMJM
+#define DXYDG_GXX_IMJM gxx(i-1,j-1,k)
+
+#undef DXYDG_GXY_IPJP
+#define DXYDG_GXY_IPJP gxy(i+1,j+1,k)
+#undef DXYDG_GXY_IPJM
+#define DXYDG_GXY_IPJM gxy(i+1,j-1,k)
+#undef DXYDG_GXY_IMJP
+#define DXYDG_GXY_IMJP gxy(i-1,j+1,k)
+#undef DXYDG_GXY_IMJM
+#define DXYDG_GXY_IMJM gxy(i-1,j-1,k)
+
+#undef DXYDG_GXZ_IPJP
+#define DXYDG_GXZ_IPJP gxz(i+1,j+1,k)
+#undef DXYDG_GXZ_IPJM
+#define DXYDG_GXZ_IPJM gxz(i+1,j-1,k)
+#undef DXYDG_GXZ_IMJP
+#define DXYDG_GXZ_IMJP gxz(i-1,j+1,k)
+#undef DXYDG_GXZ_IMJM
+#define DXYDG_GXZ_IMJM gxz(i-1,j-1,k)
+
+#undef DXYDG_GYY_IPJP
+#define DXYDG_GYY_IPJP gyy(i+1,j+1,k)
+#undef DXYDG_GYY_IPJM
+#define DXYDG_GYY_IPJM gyy(i+1,j-1,k)
+#undef DXYDG_GYY_IMJP
+#define DXYDG_GYY_IMJP gyy(i-1,j+1,k)
+#undef DXYDG_GYY_IMJM
+#define DXYDG_GYY_IMJM gyy(i-1,j-1,k)
+
+#undef DXYDG_GYZ_IPJP
+#define DXYDG_GYZ_IPJP gyz(i+1,j+1,k)
+#undef DXYDG_GYZ_IPJM
+#define DXYDG_GYZ_IPJM gyz(i+1,j-1,k)
+#undef DXYDG_GYZ_IMJP
+#define DXYDG_GYZ_IMJP gyz(i-1,j+1,k)
+#undef DXYDG_GYZ_IMJM
+#define DXYDG_GYZ_IMJM gyz(i-1,j-1,k)
+
+#undef DXYDG_GZZ_IPJP
+#define DXYDG_GZZ_IPJP gzz(i+1,j+1,k)
+#undef DXYDG_GZZ_IPJM
+#define DXYDG_GZZ_IPJM gzz(i+1,j-1,k)
+#undef DXYDG_GZZ_IMJP
+#define DXYDG_GZZ_IMJP gzz(i-1,j+1,k)
+#undef DXYDG_GZZ_IMJM
+#define DXYDG_GZZ_IMJM gzz(i-1,j-1,k)
+
+/* Output variables */
+#undef DXYDG_DXYDGXX
+#define DXYDG_DXYDGXX deldelg1211
+#undef DXYDG_DXYDGXY
+#define DXYDG_DXYDGXY deldelg1212
+#undef DXYDG_DXYDGXZ
+#define DXYDG_DXYDGXZ deldelg1213
+#undef DXYDG_DXYDGYY
+#define DXYDG_DXYDGYY deldelg1222
+#undef DXYDG_DXYDGYZ
+#define DXYDG_DXYDGYZ deldelg1223
+#undef DXYDG_DXYDGZZ
+#define DXYDG_DXYDGZZ deldelg1233
+
+/* Internal variables */
+#undef DXYDG_FAC
+#define DXYDG_FAC dxydg_fac
+#undef DXYDG_OO4DXDY
+#define DXYDG_OO4DXDY dxydg_oo4dxdy
+#undef DXYDG_DXYDPSI_O_PSI
+#define DXYDG_DXYDPSI_O_PSI psixy(i,j,k)
+
+/* Declare internal variables */
+ REAL DXYDG_FAC
+ REAL DXYDG_OO4DXDY
+
+/* Declare output variables */
+ REAL DXYDG_DXYDGXX
+ REAL DXYDG_DXYDGXY
+ REAL DXYDG_DXYDGXZ
+ REAL DXYDG_DXYDGYY
+ REAL DXYDG_DXYDGYZ
+ REAL DXYDG_DXYDGZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DXYDG_GXX_IPJP
+#define DXYDG_GXX_IPJP gxx[ di + dj + ijk]
+#undef DXYDG_GXX_IPJM
+#define DXYDG_GXX_IPJM gxx[ di - dj + ijk]
+#undef DXYDG_GXX_IMJP
+#define DXYDG_GXX_IMJP gxx[-di + dj + ijk]
+#undef DXYDG_GXX_IMJM
+#define DXYDG_GXX_IMJM gxx[-di - dj + ijk]
+
+#undef DXYDG_GXY_IPJP
+#define DXYDG_GXY_IPJP gxy[ di + dj + ijk]
+#undef DXYDG_GXY_IPJM
+#define DXYDG_GXY_IPJM gxy[ di - dj + ijk]
+#undef DXYDG_GXY_IMJP
+#define DXYDG_GXY_IMJP gxy[-di + dj + ijk]
+#undef DXYDG_GXY_IMJM
+#define DXYDG_GXY_IMJM gxy[-di - dj + ijk]
+
+#undef DXYDG_GXZ_IPJP
+#define DXYDG_GXZ_IPJP gxz[ di + dj + ijk]
+#undef DXYDG_GXZ_IPJM
+#define DXYDG_GXZ_IPJM gxz[ di - dj + ijk]
+#undef DXYDG_GXZ_IMJP
+#define DXYDG_GXZ_IMJP gxz[-di + dj + ijk]
+#undef DXYDG_GXZ_IMJM
+#define DXYDG_GXZ_IMJM gxz[-di - dj + ijk]
+
+#undef DXYDG_GYY_IPJP
+#define DXYDG_GYY_IPJP gyy[ di + dj + ijk]
+#undef DXYDG_GYY_IPJM
+#define DXYDG_GYY_IPJM gyy[ di - dj + ijk]
+#undef DXYDG_GYY_IMJP
+#define DXYDG_GYY_IMJP gyy[-di + dj + ijk]
+#undef DXYDG_GYY_IMJM
+#define DXYDG_GYY_IMJM gyy[-di - dj + ijk]
+
+#undef DXYDG_GYZ_IPJP
+#define DXYDG_GYZ_IPJP gyz[ di + dj + ijk]
+#undef DXYDG_GYZ_IPJM
+#define DXYDG_GYZ_IPJM gyz[ di - dj + ijk]
+#undef DXYDG_GYZ_IMJP
+#define DXYDG_GYZ_IMJP gyz[-di + dj + ijk]
+#undef DXYDG_GYZ_IMJM
+#define DXYDG_GYZ_IMJM gyz[-di - dj + ijk]
+
+#undef DXYDG_GZZ_IPJP
+#define DXYDG_GZZ_IPJP gzz[ di + dj + ijk]
+#undef DXYDG_GZZ_IPJM
+#define DXYDG_GZZ_IPJM gzz[ di - dj + ijk]
+#undef DXYDG_GZZ_IMJP
+#define DXYDG_GZZ_IMJP gzz[-di + dj + ijk]
+#undef DXYDG_GZZ_IMJM
+#define DXYDG_GZZ_IMJM gzz[-di - dj + ijk]
+
+/* Output variables */
+#undef DXYDG_DXYDGXX
+#define DXYDG_DXYDGXX deldelg1211
+#undef DXYDG_DXYDGXY
+#define DXYDG_DXYDGXY deldelg1212
+#undef DXYDG_DXYDGXZ
+#define DXYDG_DXYDGXZ deldelg1213
+#undef DXYDG_DXYDGYY
+#define DXYDG_DXYDGYY deldelg1222
+#undef DXYDG_DXYDGYZ
+#define DXYDG_DXYDGYZ deldelg1223
+#undef DXYDG_DXYDGZZ
+#define DXYDG_DXYDGZZ deldelg1233
+
+/* Internal variables */
+#undef DXYDG_FAC
+#define DXYDG_FAC dxydg_fac
+#undef DXYDG_OO4DXDY
+#define DXYDG_OO4DXDY dxydg_oo4dxdy
+#undef DXYDG_DXYDPSI_O_PSI
+#define DXYDG_DXYDPSI_O_PSI psixy[ijk]
+
+/* Declare internal variables */
+double DXYDG_FAC;
+double DXYDG_OO4DXDY = 1/(4*GH->dx0*GH->dy0);
+
+/* Declare output variables */
+double DXYDG_DXYDGXX;
+double DXYDG_DXYDGXY;
+double DXYDG_DXYDGXZ;
+double DXYDG_DXYDGYY;
+double DXYDG_DXYDGYZ;
+double DXYDG_DXYDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXYDG_guts.h b/src/macro/DXYDG_guts.h
new file mode 100644
index 0000000..3054f61
--- /dev/null
+++ b/src/macro/DXYDG_guts.h
@@ -0,0 +1,94 @@
+/*@@
+ @header DXYDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the (first and) second derivatives of the
+ physical metric with respect to x,y
+
+ The macro is defined in terms of standard variables in
+ @seefile DXYDG_declare.h
+
+ The macro uses @seefile DXDG_guts.h , @seefile DYDG_guts.h and
+ @seefile DXDG_declare.h , @seefile DYDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXYDG_GUTS
+#define DXYDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_guts.h"
+
+#ifdef FCODE
+
+ DXYDG_OO4DXDY = 1D0/(4D0*dx*dy)
+
+ /* Factor involving 2nd derivative of conformal factor */
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DXYDG_FAC = 0
+ ELSE
+ DXYDG_FAC = DXDG_PSI4*(4*DXYDG_DXYDPSI_O_PSI + 12*DXDG_DXDPSI_O_PSI*DYDG_DYDPSI_O_PSI)
+ ENDIF
+
+ /* Now calculate the second deriatives */
+ DXYDG_DXYDGXX = DYDCG_DYDCGXX*DXDG_FAC+DXDCG_DXDCGXX*DYDG_FAC+DXYDG_FAC*DXDG_GXX
+ &+DXDG_PSI4*DXYDG_OO4DXDY*
+ &(DXYDG_GXX_IPJP-DXYDG_GXX_IPJM-DXYDG_GXX_IMJP+DXYDG_GXX_IMJM);
+
+ DXYDG_DXYDGXY = DYDCG_DYDCGXY*DXDG_FAC+DXDCG_DXDCGXY*DYDG_FAC+DXYDG_FAC*DXDG_GXY
+ &+DXDG_PSI4*DXYDG_OO4DXDY*
+ &(DXYDG_GXY_IPJP-DXYDG_GXY_IPJM-DXYDG_GXY_IMJP+DXYDG_GXY_IMJM);
+
+ DXYDG_DXYDGXZ = DYDCG_DYDCGXZ*DXDG_FAC+DXDCG_DXDCGXZ*DYDG_FAC+DXYDG_FAC*DXDG_GXZ
+ &+DXDG_PSI4*DXYDG_OO4DXDY*
+ &(DXYDG_GXZ_IPJP-DXYDG_GXZ_IPJM-DXYDG_GXZ_IMJP+DXYDG_GXZ_IMJM);
+
+ DXYDG_DXYDGYY = DYDCG_DYDCGYY*DXDG_FAC+DXDCG_DXDCGYY*DYDG_FAC+DXYDG_FAC*DXDG_GYY
+ &+DXDG_PSI4*DXYDG_OO4DXDY*
+ &(DXYDG_GYY_IPJP-DXYDG_GYY_IPJM-DXYDG_GYY_IMJP+DXYDG_GYY_IMJM);
+
+ DXYDG_DXYDGYZ = DYDCG_DYDCGYZ*DXDG_FAC+DXDCG_DXDCGYZ*DYDG_FAC+DXYDG_FAC*DXDG_GYZ
+ &+DXDG_PSI4*DXYDG_OO4DXDY*
+ &(DXYDG_GYZ_IPJP-DXYDG_GYZ_IPJM-DXYDG_GYZ_IMJP+DXYDG_GYZ_IMJM);
+
+ DXYDG_DXYDGZZ = DYDCG_DYDCGZZ*DXDG_FAC+DXDCG_DXDCGZZ*DYDG_FAC+DXYDG_FAC*DXDG_GZZ
+ &+DXDG_PSI4*DXYDG_OO4DXDY*
+ &(DXYDG_GZZ_IPJP-DXYDG_GZZ_IPJM-DXYDG_GZZ_IMJP+DXYDG_GZZ_IMJM);
+
+#endif
+
+#ifdef CCODE
+
+/* Factor involving 2nd derivative of conformal factor */
+ DXYDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:
+ DXDG_PSI4*(4*DXYDG_DXYDPSI_O_PSI + 12*DXDG_DXDPSI_O_PSI*DYDG_DYDPSI_O_PSI));
+
+/* Now calculate the second deriatives */
+ DXYDG_DXYDGXX = DYDCG_DYDCGXX*DXDG_FAC+DXDCG_DXDCGXX*DYDG_FAC+DXYDG_FAC*DXDG_GXX
+ +DXDG_PSI4*DXYDG_OO4DXDY*
+ (DXYDG_GXX_IPJP-DXYDG_GXX_IPJM-DXYDG_GXX_IMJP+DXYDG_GXX_IMJM);
+
+ DXYDG_DXYDGXY = DYDCG_DYDCGXY*DXDG_FAC+DXDCG_DXDCGXY*DYDG_FAC+DXYDG_FAC*DXDG_GXY
+ +DXDG_PSI4*DXYDG_OO4DXDY*
+ (DXYDG_GXY_IPJP-DXYDG_GXY_IPJM-DXYDG_GXY_IMJP+DXYDG_GXY_IMJM);
+
+ DXYDG_DXYDGXZ = DYDCG_DYDCGXZ*DXDG_FAC+DXDCG_DXDCGXZ*DYDG_FAC+DXYDG_FAC*DXDG_GXZ
+ +DXDG_PSI4*DXYDG_OO4DXDY*
+ (DXYDG_GXZ_IPJP-DXYDG_GXZ_IPJM-DXYDG_GXZ_IMJP+DXYDG_GXZ_IMJM);
+
+ DXYDG_DXYDGYY = DYDCG_DYDCGYY*DXDG_FAC+DXDCG_DXDCGYY*DYDG_FAC+DXYDG_FAC*DXDG_GYY
+ +DXDG_PSI4*DXYDG_OO4DXDY*
+ (DXYDG_GYY_IPJP-DXYDG_GYY_IPJM-DXYDG_GYY_IMJP+DXYDG_GYY_IMJM);
+
+ DXYDG_DXYDGYZ = DYDCG_DYDCGYZ*DXDG_FAC+DXDCG_DXDCGYZ*DYDG_FAC+DXYDG_FAC*DXDG_GYZ
+ +DXDG_PSI4*DXYDG_OO4DXDY*
+ (DXYDG_GYZ_IPJP-DXYDG_GYZ_IPJM-DXYDG_GYZ_IMJP+DXYDG_GYZ_IMJM);
+
+ DXYDG_DXYDGZZ = DYDCG_DYDCGZZ*DXDG_FAC+DXDCG_DXDCGZZ*DYDG_FAC+DXYDG_FAC*DXDG_GZZ
+ +DXDG_PSI4*DXYDG_OO4DXDY*
+ (DXYDG_GZZ_IPJP-DXYDG_GZZ_IPJM-DXYDG_GZZ_IMJP+DXYDG_GZZ_IMJM);
+
+#endif
+
+#endif
diff --git a/src/macro/DXYDG_undefine.h b/src/macro/DXYDG_undefine.h
new file mode 100644
index 0000000..32210c9
--- /dev/null
+++ b/src/macro/DXYDG_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header DXYDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXYDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_undefine.h"
+
diff --git a/src/macro/DXZDG_declare.h b/src/macro/DXZDG_declare.h
new file mode 100644
index 0000000..2450b58
--- /dev/null
+++ b/src/macro/DXZDG_declare.h
@@ -0,0 +1,206 @@
+/*@@
+ @header DXZDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declaration for macro to calculate the (first and) second derivatives
+ of the physical metric with respect to x,z
+
+ The macro uses @seefile DXDG_guts.h , @seefile DZDG_guts.h and
+ @seefile DXDG_declare.h , @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXZDG_DECLARE
+#define DXZDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DXZDG_GXX_IPKP
+#define DXZDG_GXX_IPKP gxx(i+1,j,k+1)
+#undef DXZDG_GXX_IPKM
+#define DXZDG_GXX_IPKM gxx(i+1,j,k-1)
+#undef DXZDG_GXX_IMKP
+#define DXZDG_GXX_IMKP gxx(i-1,j,k+1)
+#undef DXZDG_GXX_IMKM
+#define DXZDG_GXX_IMKM gxx(i-1,j,k-1)
+
+#undef DXZDG_GXY_IPKP
+#define DXZDG_GXY_IPKP gxy(i+1,j,k+1)
+#undef DXZDG_GXY_IPKM
+#define DXZDG_GXY_IPKM gxy(i+1,j,k-1)
+#undef DXZDG_GXY_IMKP
+#define DXZDG_GXY_IMKP gxy(i-1,j,k+1)
+#undef DXZDG_GXY_IMKM
+#define DXZDG_GXY_IMKM gxy(i-1,j,k-1)
+
+#undef DXZDG_GXZ_IPKP
+#define DXZDG_GXZ_IPKP gxz(i+1,j,k+1)
+#undef DXZDG_GXZ_IPKM
+#define DXZDG_GXZ_IPKM gxz(i+1,j,k-1)
+#undef DXZDG_GXZ_IMKP
+#define DXZDG_GXZ_IMKP gxz(i-1,j,k+1)
+#undef DXZDG_GXZ_IMKM
+#define DXZDG_GXZ_IMKM gxz(i-1,j,k-1)
+
+#undef DXZDG_GYY_IPKP
+#define DXZDG_GYY_IPKP gyy(i+1,j,k+1)
+#undef DXZDG_GYY_IPKM
+#define DXZDG_GYY_IPKM gyy(i+1,j,k-1)
+#undef DXZDG_GYY_IMKP
+#define DXZDG_GYY_IMKP gyy(i-1,j,k+1)
+#undef DXZDG_GYY_IMKM
+#define DXZDG_GYY_IMKM gyy(i-1,j,k-1)
+
+#undef DXZDG_GYZ_IPKP
+#define DXZDG_GYZ_IPKP gyz(i+1,j,k+1)
+#undef DXZDG_GYZ_IPKM
+#define DXZDG_GYZ_IPKM gyz(i+1,j,k-1)
+#undef DXZDG_GYZ_IMKP
+#define DXZDG_GYZ_IMKP gyz(i-1,j,k+1)
+#undef DXZDG_GYZ_IMKM
+#define DXZDG_GYZ_IMKM gyz(i-1,j,k-1)
+
+#undef DXZDG_GZZ_IPKP
+#define DXZDG_GZZ_IPKP gzz(i+1,j,k+1)
+#undef DXZDG_GZZ_IPKM
+#define DXZDG_GZZ_IPKM gzz(i+1,j,k-1)
+#undef DXZDG_GZZ_IMKP
+#define DXZDG_GZZ_IMKP gzz(i-1,j,k+1)
+#undef DXZDG_GZZ_IMKM
+#define DXZDG_GZZ_IMKM gzz(i-1,j,k-1)
+
+/* Output variables */
+#undef DXZDG_DXZDGXX
+#define DXZDG_DXZDGXX deldelg1311
+#undef DXZDG_DXZDGXY
+#define DXZDG_DXZDGXY deldelg1312
+#undef DXZDG_DXZDGXZ
+#define DXZDG_DXZDGXZ deldelg1313
+#undef DXZDG_DXZDGYY
+#define DXZDG_DXZDGYY deldelg1322
+#undef DXZDG_DXZDGYZ
+#define DXZDG_DXZDGYZ deldelg1323
+#undef DXZDG_DXZDGZZ
+#define DXZDG_DXZDGZZ deldelg1333
+
+/* Internal variables */
+#undef DXZDG_FAC
+#define DXZDG_FAC dxzdg_fac
+#undef DXZDG_OO4DXDZ
+#define DXZDG_OO4DXDZ dxzdg_oo4dxdz
+#undef DXZDG_DXZDPSI_O_PSI
+#define DXZDG_DXZDPSI_O_PSI psixz(i,j,k)
+
+/* Declare internal variables */
+ REAL DXZDG_FAC
+ REAL DXZDG_OO4DXDZ
+
+/* Declare output variables */
+ REAL DXZDG_DXZDGXX
+ REAL DXZDG_DXZDGXY
+ REAL DXZDG_DXZDGXZ
+ REAL DXZDG_DXZDGYY
+ REAL DXZDG_DXZDGYZ
+ REAL DXZDG_DXZDGZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DXZDG_GXX_IPKP
+#define DXZDG_GXX_IPKP gxx[ di + dk + ijk]
+#undef DXZDG_GXX_IPKM
+#define DXZDG_GXX_IPKM gxx[ di - dk + ijk]
+#undef DXZDG_GXX_IMKP
+#define DXZDG_GXX_IMKP gxx[-di + dk + ijk]
+#undef DXZDG_GXX_IMKM
+#define DXZDG_GXX_IMKM gxx[-di - dk + ijk]
+
+#undef DXZDG_GXY_IPKP
+#define DXZDG_GXY_IPKP gxy[ di + dk + ijk]
+#undef DXZDG_GXY_IPKM
+#define DXZDG_GXY_IPKM gxy[ di - dk + ijk]
+#undef DXZDG_GXY_IMKP
+#define DXZDG_GXY_IMKP gxy[-di + dk + ijk]
+#undef DXZDG_GXY_IMKM
+#define DXZDG_GXY_IMKM gxy[-di - dk + ijk]
+
+#undef DXZDG_GXZ_IPKP
+#define DXZDG_GXZ_IPKP gxz[ di + dk + ijk]
+#undef DXZDG_GXZ_IPKM
+#define DXZDG_GXZ_IPKM gxz[ di - dk + ijk]
+#undef DXZDG_GXZ_IMKP
+#define DXZDG_GXZ_IMKP gxz[-di + dk + ijk]
+#undef DXZDG_GXZ_IMKM
+#define DXZDG_GXZ_IMKM gxz[-di - dk + ijk]
+
+#undef DXZDG_GYY_IPKP
+#define DXZDG_GYY_IPKP gyy[ di + dk + ijk]
+#undef DXZDG_GYY_IPKM
+#define DXZDG_GYY_IPKM gyy[ di - dk + ijk]
+#undef DXZDG_GYY_IMKP
+#define DXZDG_GYY_IMKP gyy[-di + dk + ijk]
+#undef DXZDG_GYY_IMKM
+#define DXZDG_GYY_IMKM gyy[-di - dk + ijk]
+
+#undef DXZDG_GYZ_IPKP
+#define DXZDG_GYZ_IPKP gyz[ di + dk + ijk]
+#undef DXZDG_GYZ_IPKM
+#define DXZDG_GYZ_IPKM gyz[ di - dk + ijk]
+#undef DXZDG_GYZ_IMKP
+#define DXZDG_GYZ_IMKP gyz[-di + dk + ijk]
+#undef DXZDG_GYZ_IMKM
+#define DXZDG_GYZ_IMKM gyz[-di - dk + ijk]
+
+#undef DXZDG_GZZ_IPKP
+#define DXZDG_GZZ_IPKP gzz[ di + dk + ijk]
+#undef DXZDG_GZZ_IPKM
+#define DXZDG_GZZ_IPKM gzz[ di - dk + ijk]
+#undef DXZDG_GZZ_IMKP
+#define DXZDG_GZZ_IMKP gzz[-di + dk + ijk]
+#undef DXZDG_GZZ_IMKM
+#define DXZDG_GZZ_IMKM gzz[-di - dk + ijk]
+
+/* Output variables */
+#undef DXZDG_DXZDGXX
+#define DXZDG_DXZDGXX deldelg1311
+#undef DXZDG_DXZDGXY
+#define DXZDG_DXZDGXY deldelg1312
+#undef DXZDG_DXZDGXZ
+#define DXZDG_DXZDGXZ deldelg1313
+#undef DXZDG_DXZDGYY
+#define DXZDG_DXZDGYY deldelg1322
+#undef DXZDG_DXZDGYZ
+#define DXZDG_DXZDGYZ deldelg1323
+#undef DXZDG_DXZDGZZ
+#define DXZDG_DXZDGZZ deldelg1333
+
+/* Internal variables */
+#undef DXZDG_FAC
+#define DXZDG_FAC dxzdg_fac
+#undef DXZDG_OO4DXDZ
+#define DXZDG_OO4DXDZ dxzdg_oo4dxdz
+#undef DXZDG_DXZDPSI_O_PSI
+#define DXZDG_DXZDPSI_O_PSI psixz[ijk]
+
+/* Declare internal variables */
+double DXZDG_FAC;
+double DXZDG_OO4DXDZ = 1/(4*GH->dx0*GH->dz0);
+
+/* Declare output variables */
+double DXZDG_DXZDGXX;
+double DXZDG_DXZDGXY;
+double DXZDG_DXZDGXZ;
+double DXZDG_DXZDGYY;
+double DXZDG_DXZDGYZ;
+double DXZDG_DXZDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DXZDG_guts.h b/src/macro/DXZDG_guts.h
new file mode 100644
index 0000000..e2f2861
--- /dev/null
+++ b/src/macro/DXZDG_guts.h
@@ -0,0 +1,95 @@
+/*@@
+ @header DXZDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the (first and) second derivatives of the
+ physical metric with respect to x,z
+
+ The macro is defined in terms of standard variables in
+ @seefile DXZDG_declare.h
+
+ The macro uses @seefile DXDG_guts.h , @seefile DZDG_guts.h and
+ @seefile DXDG_declare.h , @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DXZDG_GUTS
+#define DXZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_guts.h"
+
+#ifdef FCODE
+
+ DXZDG_OO4DXDZ = 1D0/(4D0*dx*dz)
+
+ /* Factor involving 2nd derivative of conformal factor */
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DXZDG_FAC = 0
+ ELSE
+ DXZDG_FAC = DXDG_PSI4*(4*DXZDG_DXZDPSI_O_PSI + 12*DXDG_DXDPSI_O_PSI*DZDG_DZDPSI_O_PSI)
+ ENDIF
+
+ /* Now calculate the second deriatives */
+ DXZDG_DXZDGXX = DZDCG_DZDCGXX*DXDG_FAC+DXDCG_DXDCGXX*DZDG_FAC+DXZDG_FAC*DXDG_GXX+
+ &DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GXX_IPKP-DXZDG_GXX_IPKM-DXZDG_GXX_IMKP+
+ &DXZDG_GXX_IMKM)
+
+ DXZDG_DXZDGXY = DZDCG_DZDCGXY*DXDG_FAC+DXDCG_DXDCGXY*DZDG_FAC+DXZDG_FAC*DXDG_GXY+
+ &DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GXY_IPKP-DXZDG_GXY_IPKM-DXZDG_GXY_IMKP+
+ &DXZDG_GXY_IMKM)
+
+ DXZDG_DXZDGXZ = DZDCG_DZDCGXZ*DXDG_FAC+DXDCG_DXDCGXZ*DZDG_FAC+DXZDG_FAC*DXDG_GXZ+
+ &DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GXZ_IPKP-DXZDG_GXZ_IPKM-DXZDG_GXZ_IMKP+
+ &DXZDG_GXZ_IMKM)
+
+ DXZDG_DXZDGYY = DZDCG_DZDCGYY*DXDG_FAC+DXDCG_DXDCGYY*DZDG_FAC+DXZDG_FAC*DXDG_GYY+
+ &DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GYY_IPKP-DXZDG_GYY_IPKM-DXZDG_GYY_IMKP+
+ &DXZDG_GYY_IMKM)
+
+ DXZDG_DXZDGYZ = DZDCG_DZDCGYZ*DXDG_FAC+DXDCG_DXDCGYZ*DZDG_FAC+DXZDG_FAC*DXDG_GYZ+
+ &DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GYZ_IPKP-DXZDG_GYZ_IPKM-DXZDG_GYZ_IMKP+
+ &DXZDG_GYZ_IMKM)
+
+ DXZDG_DXZDGZZ = DZDCG_DZDCGZZ*DXDG_FAC+DXDCG_DXDCGZZ*DZDG_FAC+DXZDG_FAC*DXDG_GZZ+
+ &DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GZZ_IPKP-DXZDG_GZZ_IPKM-DXZDG_GZZ_IMKP+
+ &DXZDG_GZZ_IMKM)
+
+
+#endif
+
+#ifdef CCODE
+
+ /* Factor involving 2nd derivative of conformal factor */
+ DXZDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:
+ DXDG_PSI4*(4*DXZDG_DXZDPSI_O_PSI + 12*DXDG_DXDPSI_O_PSI*DZDG_DZDPSI_O_PSI));
+
+ /* Now calculate the second deriatives */
+ DXZDG_DXZDGXX = DZDCG_DZDCGXX*DXDG_FAC+DXDCG_DXDCGXX*DZDG_FAC+DXZDG_FAC*DXDG_GXX+
+ DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GXX_IPKP-DXZDG_GXX_IPKM-DXZDG_GXX_IMKP+
+ DXZDG_GXX_IMKM);
+
+ DXZDG_DXZDGXY = DZDCG_DZDCGXY*DXDG_FAC+DXDCG_DXDCGXY*DZDG_FAC+DXZDG_FAC*DXDG_GXY+
+ DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GXY_IPKP-DXZDG_GXY_IPKM-DXZDG_GXY_IMKP+
+ DXZDG_GXY_IMKM);
+
+ DXZDG_DXZDGXZ = DZDCG_DZDCGXZ*DXDG_FAC+DXDCG_DXDCGXZ*DZDG_FAC+DXZDG_FAC*DXDG_GXZ+
+ DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GXZ_IPKP-DXZDG_GXZ_IPKM-DXZDG_GXZ_IMKP+
+ DXZDG_GXZ_IMKM);
+
+ DXZDG_DXZDGYY = DZDCG_DZDCGYY*DXDG_FAC+DXDCG_DXDCGYY*DZDG_FAC+DXZDG_FAC*DXDG_GYY+
+ DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GYY_IPKP-DXZDG_GYY_IPKM-DXZDG_GYY_IMKP+
+ DXZDG_GYY_IMKM);
+
+ DXZDG_DXZDGYZ = DZDCG_DZDCGYZ*DXDG_FAC+DXDCG_DXDCGYZ*DZDG_FAC+DXZDG_FAC*DXDG_GYZ+
+ DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GYZ_IPKP-DXZDG_GYZ_IPKM-DXZDG_GYZ_IMKP+
+ DXZDG_GYZ_IMKM);
+
+ DXZDG_DXZDGZZ = DZDCG_DZDCGZZ*DXDG_FAC+DXDCG_DXDCGZZ*DZDG_FAC+DXZDG_FAC*DXDG_GZZ+
+ DXDG_PSI4*DXZDG_OO4DXDZ*(DXZDG_GZZ_IPKP-DXZDG_GZZ_IPKM-DXZDG_GZZ_IMKP+
+ DXZDG_GZZ_IMKM);
+
+#endif
+
+#endif
diff --git a/src/macro/DXZDG_undefine.h b/src/macro/DXZDG_undefine.h
new file mode 100644
index 0000000..260894c
--- /dev/null
+++ b/src/macro/DXZDG_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header DXZDG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DXZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DXDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_undefine.h"
diff --git a/src/macro/DYDB_declare.h b/src/macro/DYDB_declare.h
new file mode 100644
index 0000000..c48745b
--- /dev/null
+++ b/src/macro/DYDB_declare.h
@@ -0,0 +1,92 @@
+/*@@
+ @header DYDB_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DYDB_guts.h to compute first
+ derivatives of the shift with respect to y
+ @enddesc
+@@*/
+
+#ifndef DYDB_DECLARE
+#define DYDB_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DYDB_BX_JP
+#define DYDB_BX_JP betax(i,j+1,k)
+#undef DYDB_BX_JM
+#define DYDB_BX_JM betax(i,j-1,k)
+#undef DYDB_BY_JP
+#define DYDB_BY_JP betay(i,j+1,k)
+#undef DYDB_BY_JM
+#define DYDB_BY_JM betay(i,j-1,k)
+#undef DYDB_BZ_JP
+#define DYDB_BZ_JP betaz(i,j+1,k)
+#undef DYDB_BZ_JM
+#define DYDB_BZ_JM betaz(i,j-1,k)
+
+/* Output variables */
+#undef DYDB_DYDBX
+#define DYDB_DYDBX dydb_dydbx
+#undef DYDB_DYDBY
+#define DYDB_DYDBY dydb_dydby
+#undef DYDB_DYDBZ
+#define DYDB_DYDBZ dydb_dydbz
+
+/* Internal variables */
+#undef DYDB_DY
+#define DYDB_DY dy
+#undef DYDB_OO2DY
+#define DYDB_OO2DY dydb_oo2dy
+
+/* Declare internal variables */
+ REAL DYDB_OO2DY;
+
+/* Declare output variables */
+ REAL DYDB_DYDBX
+ REAL DYDB_DYDBY
+ REAL DYDB_DYDBZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DYDB_BX_JP
+#define DYDB_BX_JP betax[ dj+ijk]
+#undef DYDB_BX_JM
+#define DYDB_BX_JM betax[-dj+ijk]
+#undef DYDB_BY_JP
+#define DYDB_BY_JP betay[ dj+ijk]
+#undef DYDB_BY_JM
+#define DYDB_BY_JM betay[-dj+ijk]
+#undef DYDB_BZ_JP
+#define DYDB_BZ_JP betaz[ dj+ijk]
+#undef DYDB_BZ_JM
+#define DYDB_BZ_JM betaz[-dj+ijk]
+
+/* Output variables */
+#undef DYDB_DYDBX
+#define DYDB_DYDBX delbeta21
+#undef DYDB_DYDBY
+#define DYDB_DYDBY delbeta22
+#undef DYDB_DYDBZ
+#define DYDB_DYDBZ delbeta23
+
+/* Internal variables */
+#undef DYDB_OO2DY
+#define DYDB_OO2DY dydb_oo2dy
+
+/* Declare internal variables */
+double DYDB_OO2DY;
+
+/* Declare output variables */
+double DYDB_DYDBX;
+double DYDB_DYDBY;
+double DYDB_DYDBZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DYDB_guts.h b/src/macro/DYDB_guts.h
new file mode 100644
index 0000000..eafdcfa
--- /dev/null
+++ b/src/macro/DYDB_guts.h
@@ -0,0 +1,39 @@
+/*@@
+ @header DYDB_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the first derivatives of the
+ shift with respect to y
+
+ The macro is defined in terms of standard variables in
+ @seefile DYDB_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYDB_GUTS
+#define DYDB_GUTS
+
+#ifdef FCODE
+
+ DYDB_OO2DY = 1D0/(2D0*DYDB_DY)
+
+ DYDB_DYDBX = DYDB_OO2DY*(DYDB_BX_JP - DYDB_BX_JM)
+ DYDB_DYDBY = DYDB_OO2DY*(DYDB_BY_JP - DYDB_BY_JM)
+ DYDB_DYDBZ = DYDB_OO2DY*(DYDB_BZ_JP - DYDB_BZ_JM)
+
+#endif
+
+#ifdef CCODE
+
+ DYDB_OO2DY = 1/(2*GH->dy0);
+
+ DYDB_DYDBX = DYDB_OO2DY*(DYDB_BX_JP - DYDB_BX_JM);
+ DYDB_DYDBY = DYDB_OO2DY*(DYDB_BY_JP - DYDB_BY_JM);
+ DYDB_DYDBZ = DYDB_OO2DY*(DYDB_BZ_JP - DYDB_BZ_JM);
+
+#endif
+
+#endif
+
diff --git a/src/macro/DYDB_undefine.h b/src/macro/DYDB_undefine.h
new file mode 100644
index 0000000..326e48b
--- /dev/null
+++ b/src/macro/DYDB_undefine.h
@@ -0,0 +1,10 @@
+/*@@
+ @header DYDB_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DYDB_GUTS
+
diff --git a/src/macro/DYDCG_declare.h b/src/macro/DYDCG_declare.h
new file mode 100644
index 0000000..19a6e57
--- /dev/null
+++ b/src/macro/DYDCG_declare.h
@@ -0,0 +1,137 @@
+/*@@
+ @header DYDCG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DYDCG_guts.h to compute first
+ derivatives of the conformal metric with respect to y
+ @enddesc
+@@*/
+
+#ifndef DYDCG_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DYDCG_GXX_JP
+#define DYDCG_GXX_JP gxx(i,j+1,k)
+#undef DYDCG_GXX_JM
+#define DYDCG_GXX_JM gxx(i,j-1,k)
+#undef DYDCG_GXY_JP
+#define DYDCG_GXY_JP gxy(i,j+1,k)
+#undef DYDCG_GXY_JM
+#define DYDCG_GXY_JM gxy(i,j-1,k)
+#undef DYDCG_GXZ_JP
+#define DYDCG_GXZ_JP gxz(i,j+1,k)
+#undef DYDCG_GXZ_JM
+#define DYDCG_GXZ_JM gxz(i,j-1,k)
+#undef DYDCG_GYY_JP
+#define DYDCG_GYY_JP gyy(i,j+1,k)
+#undef DYDCG_GYY_JM
+#define DYDCG_GYY_JM gyy(i,j-1,k)
+#undef DYDCG_GYZ_JP
+#define DYDCG_GYZ_JP gyz(i,j+1,k)
+#undef DYDCG_GYZ_JM
+#define DYDCG_GYZ_JM gyz(i,j-1,k)
+#undef DYDCG_GZZ_JP
+#define DYDCG_GZZ_JP gzz(i,j+1,k)
+#undef DYDCG_GZZ_JM
+#define DYDCG_GZZ_JM gzz(i,j-1,k)
+
+/* Output variables */
+#undef DYDCG_DYDCGXX
+#define DYDCG_DYDCGXX delgb211
+#undef DYDCG_DYDCGXY
+#define DYDCG_DYDCGXY delgb212
+#undef DYDCG_DYDCGXZ
+#define DYDCG_DYDCGXZ delgb213
+#undef DYDCG_DYDCGYY
+#define DYDCG_DYDCGYY delgb222
+#undef DYDCG_DYDCGYZ
+#define DYDCG_DYDCGYZ delgb223
+#undef DYDCG_DYDCGZZ
+#define DYDCG_DYDCGZZ delgb233
+
+/* Internal variables */
+#undef DYDCG_DY
+#define DYDCG_DY dy
+#undef DYDCG_OO2DY
+#define DYDCG_OO2DY cdydg_oo2dy
+
+/* Declare internal variables */
+ REAL DYDCG_OO2DY
+
+/* Declare output variables */
+ REAL DYDCG_DYDCGXX
+ REAL DYDCG_DYDCGXY
+ REAL DYDCG_DYDCGXZ
+ REAL DYDCG_DYDCGYY
+ REAL DYDCG_DYDCGYZ
+ REAL DYDCG_DYDCGZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DYDCG_GXX_JP
+#define DYDCG_GXX_JP gxx[ dj+ijk]
+#undef DYDCG_GXX_JM
+#define DYDCG_GXX_JM gxx[-dj+ijk]
+#undef DYDCG_GXY_JP
+#define DYDCG_GXY_JP gxy[ dj+ijk]
+#undef DYDCG_GXY_JM
+#define DYDCG_GXY_JM gxy[-dj+ijk]
+#undef DYDCG_GXZ_JP
+#define DYDCG_GXZ_JP gxz[ dj+ijk]
+#undef DYDCG_GXZ_JM
+#define DYDCG_GXZ_JM gxz[-dj+ijk]
+#undef DYDCG_GYY_JP
+#define DYDCG_GYY_JP gyy[ dj+ijk]
+#undef DYDCG_GYY_JM
+#define DYDCG_GYY_JM gyy[-dj+ijk]
+#undef DYDCG_GYZ_JP
+#define DYDCG_GYZ_JP gyz[ dj+ijk]
+#undef DYDCG_GYZ_JM
+#define DYDCG_GYZ_JM gyz[-dj+ijk]
+#undef DYDCG_GZZ_JP
+#define DYDCG_GZZ_JP gzz[ dj+ijk]
+#undef DYDCG_GZZ_JM
+#define DYDCG_GZZ_JM gzz[-dj+ijk]
+
+/* Output variables */
+#undef DYDCG_DYDCGXX
+#define DYDCG_DYDCGXX delgb211
+#undef DYDCG_DYDCGXY
+#define DYDCG_DYDCGXY delgb212
+#undef DYDCG_DYDCGXZ
+#define DYDCG_DYDCGXZ delgb213
+#undef DYDCG_DYDCGYY
+#define DYDCG_DYDCGYY delgb222
+#undef DYDCG_DYDCGYZ
+#define DYDCG_DYDCGYZ delgb223
+#undef DYDCG_DYDCGZZ
+#define DYDCG_DYDCGZZ delgb233
+
+/* Internal variables */
+#undef DYDCG_OO2DY
+#define DYDCG_OO2DY cdydg_oo2dy
+
+/* Declare internal variables */
+double DYDCG_OO2DY;
+
+/* Declare output variables */
+double DYDCG_DYDCGXX;
+double DYDCG_DYDCGXY;
+double DYDCG_DYDCGXZ;
+double DYDCG_DYDCGYY;
+double DYDCG_DYDCGYZ;
+double DYDCG_DYDCGZZ;
+
+#endif
+
+#define DYDCG_DECLARE
+
+#endif
+
diff --git a/src/macro/DYDCG_guts.h b/src/macro/DYDCG_guts.h
new file mode 100644
index 0000000..a9777d5
--- /dev/null
+++ b/src/macro/DYDCG_guts.h
@@ -0,0 +1,49 @@
+/*@@
+ @header DYDCG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ conformal metric with respect to y
+
+ The macro is defined in terms of standard variables in
+
+ Requires: lower conformal metric at j+1,j-1 ; dy0
+
+ Provides: derivative of lower conformal metric wrt y
+
+ @seefile DYDCG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYDCG_GUTS
+#define DYDCG_GUTS
+
+#ifdef FCODE
+
+ DYDCG_OO2DY = 1D0/(2D0*DYDCG_DY)
+
+ DYDCG_DYDCGXX = DYDCG_OO2DY*(DYDCG_GXX_JP - DYDCG_GXX_JM)
+ DYDCG_DYDCGXY = DYDCG_OO2DY*(DYDCG_GXY_JP - DYDCG_GXY_JM)
+ DYDCG_DYDCGXZ = DYDCG_OO2DY*(DYDCG_GXZ_JP - DYDCG_GXZ_JM)
+ DYDCG_DYDCGYY = DYDCG_OO2DY*(DYDCG_GYY_JP - DYDCG_GYY_JM)
+ DYDCG_DYDCGYZ = DYDCG_OO2DY*(DYDCG_GYZ_JP - DYDCG_GYZ_JM)
+ DYDCG_DYDCGZZ = DYDCG_OO2DY*(DYDCG_GZZ_JP - DYDCG_GZZ_JM)
+
+#endif
+
+
+#ifdef CCODE
+
+ DYDCG_OO2DY = 1/(2*GH->dy0);
+
+ DYDCG_DYDCGXX = DYDCG_OO2DY*(DYDCG_GXX_JP - DYDCG_GXX_JM);
+ DYDCG_DYDCGXY = DYDCG_OO2DY*(DYDCG_GXY_JP - DYDCG_GXY_JM);
+ DYDCG_DYDCGXZ = DYDCG_OO2DY*(DYDCG_GXZ_JP - DYDCG_GXZ_JM);
+ DYDCG_DYDCGYY = DYDCG_OO2DY*(DYDCG_GYY_JP - DYDCG_GYY_JM);
+ DYDCG_DYDCGYZ = DYDCG_OO2DY*(DYDCG_GYZ_JP - DYDCG_GYZ_JM);
+ DYDCG_DYDCGZZ = DYDCG_OO2DY*(DYDCG_GZZ_JP - DYDCG_GZZ_JM);
+
+#endif
+
+#endif
diff --git a/src/macro/DYDCG_undefine.h b/src/macro/DYDCG_undefine.h
new file mode 100644
index 0000000..0b24669
--- /dev/null
+++ b/src/macro/DYDCG_undefine.h
@@ -0,0 +1,10 @@
+/*@@
+ @header DYDCG_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DYDCG_GUTS
+
diff --git a/src/macro/DYDG_declare.h b/src/macro/DYDG_declare.h
new file mode 100644
index 0000000..5bdd34f
--- /dev/null
+++ b/src/macro/DYDG_declare.h
@@ -0,0 +1,131 @@
+/*@@
+ @header DYDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DYDG_guts.h to compute first
+ derivatives of the physical metric with respect to y
+ @enddesc
+@@*/
+
+#ifndef DYDG_DECLARE
+#define DYDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDCG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DYDG_PSI
+#define DYDG_PSI psi(i,j,k)
+
+#undef DYDG_DYDPSI_O_PSI
+#define DYDG_DYDPSI_O_PSI psiy(i,j,k)
+
+#undef DYDG_GXX
+#define DYDG_GXX gxx(i,j,k)
+#undef DYDG_GXY
+#define DYDG_GXY gxy(i,j,k)
+#undef DYDG_GXZ
+#define DYDG_GXZ gxz(i,j,k)
+#undef DYDG_GYY
+#define DYDG_GYY gyy(i,j,k)
+#undef DYDG_GYZ
+#define DYDG_GYZ gyz(i,j,k)
+#undef DYDG_GZZ
+#define DYDG_GZZ gzz(i,j,k)
+
+/* Output variables */
+#undef DYDG_DYDGXX
+#define DYDG_DYDGXX dydgxx
+#undef DYDG_DYDGXY
+#define DYDG_DYDGXY dydgxy
+#undef DYDG_DYDGXZ
+#define DYDG_DYDGXZ dydgxz
+#undef DYDG_DYDGYY
+#define DYDG_DYDGYY dydgyy
+#undef DYDG_DYDGYZ
+#define DYDG_DYDGYZ dydgyz
+#undef DYDG_DYDGZZ
+#define DYDG_DYDGZZ dydgzz
+
+/* Internal variables */
+#undef DYDG_PSI4
+#define DYDG_PSI4 dydg_psi4
+
+#undef DYDG_FAC
+#define DYDG_FAC dydg_fac
+
+/* Declare internal variables */
+ REAL DYDG_PSI4;
+ REAL DYDG_FAC;
+
+/* Declare output variables */
+ REAL DYDG_DYDGXX;
+ REAL DYDG_DYDGXY;
+ REAL DYDG_DYDGXZ;
+ REAL DYDG_DYDGYY;
+ REAL DYDG_DYDGYZ;
+ REAL DYDG_DYDGZZ;
+
+#endif
+
+#ifdef CCODE
+
+/* Output variables */
+#undef DYDG_DYDGXX
+#define DYDG_DYDGXX delg211
+#undef DYDG_DYDGXY
+#define DYDG_DYDGXY delg212
+#undef DYDG_DYDGXZ
+#define DYDG_DYDGXZ delg213
+#undef DYDG_DYDGYY
+#define DYDG_DYDGYY delg222
+#undef DYDG_DYDGYZ
+#define DYDG_DYDGYZ delg223
+#undef DYDG_DYDGZZ
+#define DYDG_DYDGZZ delg233
+
+/* Input variables */
+
+#undef DYDG_PSI
+#define DYDG_PSI psi[ijk]
+
+#undef DYDG_DYDPSI_O_PSI
+#define DYDG_DYDPSI_O_PSI psiy[ijk]
+
+#undef DYDG_GXX
+#define DYDG_GXX gxx[ijk]
+#undef DYDG_GXY
+#define DYDG_GXY gxy[ijk]
+#undef DYDG_GXZ
+#define DYDG_GXZ gxz[ijk]
+#undef DYDG_GYY
+#define DYDG_GYY gyy[ijk]
+#undef DYDG_GYZ
+#define DYDG_GYZ gyz[ijk]
+#undef DYDG_GZZ
+#define DYDG_GZZ gzz[ijk]
+
+/* Internal variables */
+#undef DYDG_PSI4
+#define DYDG_PSI4 dydg_psi4
+
+#undef DYDG_FAC
+#define DYDG_FAC dydg_fac
+
+/* Declare internal variables */
+double DYDG_PSI4;
+double DYDG_FAC;
+
+/* Declare output variables */
+double DYDG_DYDGXX;
+double DYDG_DYDGXY;
+double DYDG_DYDGXZ;
+double DYDG_DYDGYY;
+double DYDG_DYDGYZ;
+double DYDG_DYDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DYDG_guts.h b/src/macro/DYDG_guts.h
new file mode 100644
index 0000000..802d3c4
--- /dev/null
+++ b/src/macro/DYDG_guts.h
@@ -0,0 +1,53 @@
+/*@@
+ @header DYDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ physical metric with respect to y
+
+ The macro is defined in terms of standard variables in
+ @seefile DYDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYDG_GUTS
+#define DYDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDCG_guts.h"
+
+#ifdef FCODE
+
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DYDG_PSI4 = 1
+ DYDG_FAC = 0
+ ELSE
+ DYDG_PSI4 = DYDG_PSI**4
+ DYDG_FAC = 4*DYDG_PSI4*DYDG_DYDPSI_O_PSI
+ ENDIF
+
+ DYDG_DYDGXX = DYDCG_DYDCGXX*DYDG_PSI4 + DYDG_FAC*DYDG_GXX
+ DYDG_DYDGXY = DYDCG_DYDCGXY*DYDG_PSI4 + DYDG_FAC*DYDG_GXY
+ DYDG_DYDGXZ = DYDCG_DYDCGXZ*DYDG_PSI4 + DYDG_FAC*DYDG_GXZ
+ DYDG_DYDGYY = DYDCG_DYDCGYY*DYDG_PSI4 + DYDG_FAC*DYDG_GYY
+ DYDG_DYDGYZ = DYDCG_DYDCGYZ*DYDG_PSI4 + DYDG_FAC*DYDG_GYZ
+ DYDG_DYDGZZ = DYDCG_DYDCGZZ*DYDG_PSI4 + DYDG_FAC*DYDG_GZZ
+
+#endif
+
+#ifdef CCODE
+
+ DYDG_PSI4 = ((conformal_state != CONFORMAL_METRIC)?1:Power(DYDG_PSI,4));
+
+ DYDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:4*DYDG_PSI4*DYDG_DYDPSI_O_PSI);
+
+ DYDG_DYDGXX = DYDCG_DYDCGXX*DYDG_PSI4 + DYDG_FAC*DYDG_GXX;
+ DYDG_DYDGXY = DYDCG_DYDCGXY*DYDG_PSI4 + DYDG_FAC*DYDG_GXY;
+ DYDG_DYDGXZ = DYDCG_DYDCGXZ*DYDG_PSI4 + DYDG_FAC*DYDG_GXZ;
+ DYDG_DYDGYY = DYDCG_DYDCGYY*DYDG_PSI4 + DYDG_FAC*DYDG_GYY;
+ DYDG_DYDGYZ = DYDCG_DYDCGYZ*DYDG_PSI4 + DYDG_FAC*DYDG_GYZ;
+ DYDG_DYDGZZ = DYDCG_DYDCGZZ*DYDG_PSI4 + DYDG_FAC*DYDG_GZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DYDG_undefine.h b/src/macro/DYDG_undefine.h
new file mode 100644
index 0000000..95b873d
--- /dev/null
+++ b/src/macro/DYDG_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header DYDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DYDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDCG_undefine.h"
+
diff --git a/src/macro/DYDK_declare.h b/src/macro/DYDK_declare.h
new file mode 100644
index 0000000..16f6d4e
--- /dev/null
+++ b/src/macro/DYDK_declare.h
@@ -0,0 +1,137 @@
+/*@@
+ @header DYDK_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DYDG_guts.h to compute first
+ derivatives of the extrinsic curvature with respect to y
+ @enddesc
+@@*/
+
+#ifndef DYDK_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DYDK_KXX_JP
+#define DYDK_KXX_JP hxx(i,j+1,k)
+#undef DYDK_KXX_JM
+#define DYDK_KXX_JM hxx(i,j-1,k)
+#undef DYDK_KXY_JP
+#define DYDK_KXY_JP hxy(i,j+1,k)
+#undef DYDK_KXY_JM
+#define DYDK_KXY_JM hxy(i,j-1,k)
+#undef DYDK_KXZ_JP
+#define DYDK_KXZ_JP hxz(i,j+1,k)
+#undef DYDK_KXZ_JM
+#define DYDK_KXZ_JM hxz(i,j-1,k)
+#undef DYDK_KYY_JP
+#define DYDK_KYY_JP hyy(i,j+1,k)
+#undef DYDK_KYY_JM
+#define DYDK_KYY_JM hyy(i,j-1,k)
+#undef DYDK_KYZ_JP
+#define DYDK_KYZ_JP hyz(i,j+1,k)
+#undef DYDK_KYZ_JM
+#define DYDK_KYZ_JM hyz(i,j-1,k)
+#undef DYDK_KZZ_JP
+#define DYDK_KZZ_JP hzz(i,j+1,k)
+#undef DYDK_KZZ_JM
+#define DYDK_KZZ_JM hzz(i,j-1,k)
+
+/* Output variables */
+#undef DYDK_DYDKXX
+#define DYDK_DYDKXX dydk_dydkxx
+#undef DYDK_DYDKXY
+#define DYDK_DYDKXY dydk_dydkxy
+#undef DYDK_DYDKXZ
+#define DYDK_DYDKXZ dydk_dydkxz
+#undef DYDK_DYDKYY
+#define DYDK_DYDKYY dydk_dydkyy
+#undef DYDK_DYDKYZ
+#define DYDK_DYDKYZ dydk_dydkyz
+#undef DYDK_DYDKZZ
+#define DYDK_DYDKZZ dydk_dydkzz
+
+/* Internal variables */
+#undef DYDK_DY
+#define DYDK_DY dy
+#undef DYDK_OO2DY
+#define DYDK_OO2DY dydk_oo2dy
+
+/* Declare internal variables */
+ REAL DYDK_OO2DY
+
+/* Declare output variables */
+ REAL DYDK_DYDKXX
+ REAL DYDK_DYDKXY
+ REAL DYDK_DYDKXZ
+ REAL DYDK_DYDKYY
+ REAL DYDK_DYDKYZ
+ REAL DYDK_DYDKZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DYDK_KXX_JP
+#define DYDK_KXX_JP hxx[ dj+ijk]
+#undef DYDK_KXX_JM
+#define DYDK_KXX_JM hxx[-dj+ijk]
+#undef DYDK_KXY_JP
+#define DYDK_KXY_JP hxy[ dj+ijk]
+#undef DYDK_KXY_JM
+#define DYDK_KXY_JM hxy[-dj+ijk]
+#undef DYDK_KXZ_JP
+#define DYDK_KXZ_JP hxz[ dj+ijk]
+#undef DYDK_KXZ_JM
+#define DYDK_KXZ_JM hxz[-dj+ijk]
+#undef DYDK_KYY_JP
+#define DYDK_KYY_JP hyy[ dj+ijk]
+#undef DYDK_KYY_JM
+#define DYDK_KYY_JM hyy[-dj+ijk]
+#undef DYDK_KYZ_JP
+#define DYDK_KYZ_JP hyz[ dj+ijk]
+#undef DYDK_KYZ_JM
+#define DYDK_KYZ_JM hyz[-dj+ijk]
+#undef DYDK_KZZ_JP
+#define DYDK_KZZ_JP hzz[ dj+ijk]
+#undef DYDK_KZZ_JM
+#define DYDK_KZZ_JM hzz[-dj+ijk]
+
+/* Output variables */
+#undef DYDK_DYDKXX
+#define DYDK_DYDKXX dydk_dydkxx
+#undef DYDK_DYDKXY
+#define DYDK_DYDKXY dydk_dydkxy
+#undef DYDK_DYDKXZ
+#define DYDK_DYDKXZ dydk_dydkxz
+#undef DYDK_DYDKYY
+#define DYDK_DYDKYY dydk_dydkyy
+#undef DYDK_DYDKYZ
+#define DYDK_DYDKYZ dydk_dydkyz
+#undef DYDK_DYDKZZ
+#define DYDK_DYDKZZ dydk_dydkzz
+
+/* Internal variables */
+#undef DYDK_OO2DY
+#define DYDK_OO2DY dydk_oo2dy
+
+/* Declare internal variables */
+double DYDK_OO2DY;
+
+/* Declare output variables */
+double DYDK_DYDKXX;
+double DYDK_DYDKXY;
+double DYDK_DYDKXZ;
+double DYDK_DYDKYY;
+double DYDK_DYDKYZ;
+double DYDK_DYDKZZ;
+
+#endif
+
+#define DYDK_DECLARE
+
+#endif
+
diff --git a/src/macro/DYDK_guts.h b/src/macro/DYDK_guts.h
new file mode 100644
index 0000000..0eba500
--- /dev/null
+++ b/src/macro/DYDK_guts.h
@@ -0,0 +1,41 @@
+/*@@
+ @header DYDG_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ extrinsic curvature with respect to y
+ @enddesc
+@@*/
+
+#ifndef DYDK_GUTS
+#define DYDK_GUTS
+
+#ifdef FCODE
+
+ DYDK_OO2DY = 1D0/(2D0*DYDK_DY)
+
+ DYDK_DYDKXX = DYDK_OO2DY*(DYDK_KXX_JP - DYDK_KXX_JM)
+ DYDK_DYDKXY = DYDK_OO2DY*(DYDK_KXY_JP - DYDK_KXY_JM)
+ DYDK_DYDKXZ = DYDK_OO2DY*(DYDK_KXZ_JP - DYDK_KXZ_JM)
+ DYDK_DYDKYY = DYDK_OO2DY*(DYDK_KYY_JP - DYDK_KYY_JM)
+ DYDK_DYDKYZ = DYDK_OO2DY*(DYDK_KYZ_JP - DYDK_KYZ_JM)
+ DYDK_DYDKZZ = DYDK_OO2DY*(DYDK_KZZ_JP - DYDK_KZZ_JM)
+
+#endif
+
+
+#ifdef CCODE
+
+ DYDK_OO2DY = 1/(2*GH->dy0);
+
+ DYDK_DYDKXX = DYDK_OO2DY*(DYDK_KXX_JP - DYDK_KXX_JM);
+ DYDK_DYDKXY = DYDK_OO2DY*(DYDK_KXY_JP - DYDK_KXY_JM);
+ DYDK_DYDKXZ = DYDK_OO2DY*(DYDK_KXZ_JP - DYDK_KXZ_JM);
+ DYDK_DYDKYY = DYDK_OO2DY*(DYDK_KYY_JP - DYDK_KYY_JM);
+ DYDK_DYDKYZ = DYDK_OO2DY*(DYDK_KYZ_JP - DYDK_KYZ_JM);
+ DYDK_DYDKZZ = DYDK_OO2DY*(DYDK_KZZ_JP - DYDK_KZZ_JM);
+
+#endif
+
+#endif
diff --git a/src/macro/DYDK_undefine.h b/src/macro/DYDK_undefine.h
new file mode 100644
index 0000000..98d3aee
--- /dev/null
+++ b/src/macro/DYDK_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header DYDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DYDK_GUTS
+
+
diff --git a/src/macro/DYYDG_declare.h b/src/macro/DYYDG_declare.h
new file mode 100644
index 0000000..2bf22e6
--- /dev/null
+++ b/src/macro/DYYDG_declare.h
@@ -0,0 +1,94 @@
+/*@@
+ @header DYYDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the (first and) second derivatives
+ of the physical metric with respect to y
+
+ The macro uses @seefile DYDG_guts.h and @seefile DYDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYYDG_DECLARE
+#define DYYDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef DYYDG_DYYDGXX
+#define DYYDG_DYYDGXX dyydgxx
+#undef DYYDG_DYYDGXY
+#define DYYDG_DYYDGXY dyydgxy
+#undef DYYDG_DYYDGXZ
+#define DYYDG_DYYDGXZ dyydgxz
+#undef DYYDG_DYYDGYY
+#define DYYDG_DYYDGYY dyydgyy
+#undef DYYDG_DYYDGYZ
+#define DYYDG_DYYDGYZ dyydgyz
+#undef DYYDG_DYYDGZZ
+#define DYYDG_DYYDGZZ dyydgzz
+
+/* Internal variables */
+#undef DYYDG_FAC
+#define DYYDG_FAC dyydg_fac
+#undef DYYDG_OODY2
+#define DYYDG_OODY2 dyydg_oody2
+#undef DYYDG_DYYDPSI_O_PSI
+#define DYYDG_DYYDPSI_O_PSI psiyy(i,j,k)
+
+/* Declare internal variables */
+ REAL DYYDG_FAC
+ REAL DYYDG_OODY2
+
+/* Declare output variables */
+ REAL DYYDG_DYYDGXX
+ REAL DYYDG_DYYDGXY
+ REAL DYYDG_DYYDGXZ
+ REAL DYYDG_DYYDGYY
+ REAL DYYDG_DYYDGYZ
+ REAL DYYDG_DYYDGZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Output variables */
+#undef DYYDG_DYYDGXX
+#define DYYDG_DYYDGXX deldelg2211
+#undef DYYDG_DYYDGXY
+#define DYYDG_DYYDGXY deldelg2212
+#undef DYYDG_DYYDGXZ
+#define DYYDG_DYYDGXZ deldelg2213
+#undef DYYDG_DYYDGYY
+#define DYYDG_DYYDGYY deldelg2222
+#undef DYYDG_DYYDGYZ
+#define DYYDG_DYYDGYZ deldelg2223
+#undef DYYDG_DYYDGZZ
+#define DYYDG_DYYDGZZ deldelg2233
+
+/* Internal variables */
+#undef DYYDG_FAC
+#define DYYDG_FAC dyydg_fac
+#undef DYYDG_OODY2
+#define DYYDG_OODY2 dyydg_oody2
+#undef DYYDG_DYYDPSI_O_PSI
+#define DYYDG_DYYDPSI_O_PSI psiyy[ijk]
+
+/* Declare internal variables */
+double DYYDG_FAC;
+double DYYDG_OODY2 = 1/(GH->dy0*GH->dy0);
+
+/* Declare output variables */
+double DYYDG_DYYDGXX;
+double DYYDG_DYYDGXY;
+double DYYDG_DYYDGXZ;
+double DYYDG_DYYDGYY;
+double DYYDG_DYYDGYZ;
+double DYYDG_DYYDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DYYDG_guts.h b/src/macro/DYYDG_guts.h
new file mode 100644
index 0000000..96870e0
--- /dev/null
+++ b/src/macro/DYYDG_guts.h
@@ -0,0 +1,80 @@
+/*@@
+ @header DYYDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the (first and) second derivatives of the
+ physical metric with respect to y
+
+ The macro is defined in terms of standard variables in
+ @seefile DYYDG_declare.h
+
+ The macro uses @seefile DXDG_guts.h and @seefile DXDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYYDG_GUTS
+#define DYYDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_guts.h"
+
+#ifdef FCODE
+
+ DYYDG_OODY2 = 1D0/(dy*dy)
+
+ /* Factor involving 2nd derivative of conformal factor */
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DYYDG_FAC = 0
+ ELSE
+ DYYDG_FAC = DYDG_PSI4*(4*DYYDG_DYYDPSI_O_PSI + 12*DYDG_DYDPSI_O_PSI*DYDG_DYDPSI_O_PSI)
+ ENDIF
+
+ /* Now calculate the second deriatives */
+ DYYDG_DYYDGXX = 2*DYDCG_DYDCGXX*DYDG_FAC+DYYDG_FAC*DYDG_GXX+DYDG_PSI4
+ &*DYYDG_OODY2*(DYDCG_GXX_JP-2*DYDG_GXX+DYDCG_GXX_JM)
+
+ DYYDG_DYYDGXY = 2*DYDCG_DYDCGXY*DYDG_FAC+DYYDG_FAC*DYDG_GXY+DYDG_PSI4
+ &*DYYDG_OODY2*(DYDCG_GXY_JP-2*DYDG_GXY+DYDCG_GXY_JM)
+
+ DYYDG_DYYDGXZ = 2*DYDCG_DYDCGXZ*DYDG_FAC+DYYDG_FAC*DYDG_GXZ+DYDG_PSI4
+ &*DYYDG_OODY2*(DYDCG_GXZ_JP-2*DYDG_GXZ+DYDCG_GXZ_JM)
+
+ DYYDG_DYYDGYY = 2*DYDCG_DYDCGYY*DYDG_FAC+DYYDG_FAC*DYDG_GYY+DYDG_PSI4
+ &*DYYDG_OODY2*(DYDCG_GYY_JP-2*DYDG_GYY+DYDCG_GYY_JM)
+
+ DYYDG_DYYDGYZ = 2*DYDCG_DYDCGYZ*DYDG_FAC+DYYDG_FAC*DYDG_GYZ+DYDG_PSI4
+ &*DYYDG_OODY2*(DYDCG_GYZ_JP-2*DYDG_GYZ+DYDCG_GYZ_JM)
+
+ DYYDG_DYYDGZZ = 2*DYDCG_DYDCGZZ*DYDG_FAC+DYYDG_FAC*DYDG_GZZ+DYDG_PSI4
+ &*DYYDG_OODY2*(DYDCG_GZZ_JP-2*DYDG_GZZ+DYDCG_GZZ_JM)
+
+#endif
+
+#ifdef CCODE
+
+ /* Factor involving 2nd derivative of conformal factor */
+ DYYDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:
+ DYDG_PSI4*(4*DYYDG_DYYDPSI_O_PSI + 12*DYDG_DYDPSI_O_PSI*DYDG_DYDPSI_O_PSI));
+
+ /* Now calculate the second deriatives */
+ DYYDG_DYYDGXX = 2*DYDCG_DYDCGXX*DYDG_FAC+DYYDG_FAC*DYDG_GXX+DYDG_PSI4
+ *DYYDG_OODY2*(DYDCG_GXX_JP-2*DYDG_GXX+DYDCG_GXX_JM);
+
+ DYYDG_DYYDGXY = 2*DYDCG_DYDCGXY*DYDG_FAC+DYYDG_FAC*DYDG_GXY+DYDG_PSI4
+ *DYYDG_OODY2*(DYDCG_GXY_JP-2*DYDG_GXY+DYDCG_GXY_JM);
+
+ DYYDG_DYYDGXZ = 2*DYDCG_DYDCGXZ*DYDG_FAC+DYYDG_FAC*DYDG_GXZ+DYDG_PSI4
+ *DYYDG_OODY2*(DYDCG_GXZ_JP-2*DYDG_GXZ+DYDCG_GXZ_JM);
+
+ DYYDG_DYYDGYY = 2*DYDCG_DYDCGYY*DYDG_FAC+DYYDG_FAC*DYDG_GYY+DYDG_PSI4
+ *DYYDG_OODY2*(DYDCG_GYY_JP-2*DYDG_GYY+DYDCG_GYY_JM);
+
+ DYYDG_DYYDGYZ = 2*DYDCG_DYDCGYZ*DYDG_FAC+DYYDG_FAC*DYDG_GYZ+DYDG_PSI4
+ *DYYDG_OODY2*(DYDCG_GYZ_JP-2*DYDG_GYZ+DYDCG_GYZ_JM);
+
+ DYYDG_DYYDGZZ = 2*DYDCG_DYDCGZZ*DYDG_FAC+DYYDG_FAC*DYDG_GZZ+DYDG_PSI4
+ *DYYDG_OODY2*(DYDCG_GZZ_JP-2*DYDG_GZZ+DYDCG_GZZ_JM);
+
+#endif
+
+#endif
diff --git a/src/macro/DYYDG_undefine.h b/src/macro/DYYDG_undefine.h
new file mode 100644
index 0000000..d9cdf17
--- /dev/null
+++ b/src/macro/DYYDG_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header DYYDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DYYDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_undefine.h"
+
+
diff --git a/src/macro/DYZDG_declare.h b/src/macro/DYZDG_declare.h
new file mode 100644
index 0000000..49c6e7b
--- /dev/null
+++ b/src/macro/DYZDG_declare.h
@@ -0,0 +1,206 @@
+/*@@
+ @header DYZDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declaration for macro to calculate the (first and) second derivatives
+ of the physical metric with respect to x,z
+
+ The macro uses @seefile DYDG_guts.h , @seefile DZDG_guts.h and
+ @seefile DYDG_declare.h , @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYZDG_DECLARE
+#define DYZDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DYZDG_GXX_JPKP
+#define DYZDG_GXX_JPKP gxx(i,j+1,k+1)
+#undef DYZDG_GXX_JPKM
+#define DYZDG_GXX_JPKM gxx(i,j+1,k-1)
+#undef DYZDG_GXX_JMKP
+#define DYZDG_GXX_JMKP gxx(i,j-1,k+1)
+#undef DYZDG_GXX_JMKM
+#define DYZDG_GXX_JMKM gxx(i,j-1,k-1)
+
+#undef DYZDG_GXY_JPKP
+#define DYZDG_GXY_JPKP gxy(i,j+1,k+1)
+#undef DYZDG_GXY_JPKM
+#define DYZDG_GXY_JPKM gxy(i,j+1,k-1)
+#undef DYZDG_GXY_JMKP
+#define DYZDG_GXY_JMKP gxy(i,j-1,k+1)
+#undef DYZDG_GXY_JMKM
+#define DYZDG_GXY_JMKM gxy(i,j-1,k-1)
+
+#undef DYZDG_GXZ_JPKP
+#define DYZDG_GXZ_JPKP gxz(i,j+1,k+1)
+#undef DYZDG_GXZ_JPKM
+#define DYZDG_GXZ_JPKM gxz(i,j+1,k-1)
+#undef DYZDG_GXZ_JMKP
+#define DYZDG_GXZ_JMKP gxz(i,j-1,k+1)
+#undef DYZDG_GXZ_JMKM
+#define DYZDG_GXZ_JMKM gxz(i,j-1,k-1)
+
+#undef DYZDG_GYY_JPKP
+#define DYZDG_GYY_JPKP gyy(i,j+1,k+1)
+#undef DYZDG_GYY_JPKM
+#define DYZDG_GYY_JPKM gyy(i,j+1,k-1)
+#undef DYZDG_GYY_JMKP
+#define DYZDG_GYY_JMKP gyy(i,j-1,k+1)
+#undef DYZDG_GYY_JMKM
+#define DYZDG_GYY_JMKM gyy(i,j-1,k-1)
+
+#undef DYZDG_GYZ_JPKP
+#define DYZDG_GYZ_JPKP gyz(i,j+1,k+1)
+#undef DYZDG_GYZ_JPKM
+#define DYZDG_GYZ_JPKM gyz(i,j+1,k-1)
+#undef DYZDG_GYZ_JMKP
+#define DYZDG_GYZ_JMKP gyz(i,j-1,k+1)
+#undef DYZDG_GYZ_JMKM
+#define DYZDG_GYZ_JMKM gyz(i,j-1,k-1)
+
+#undef DYZDG_GZZ_JPKP
+#define DYZDG_GZZ_JPKP gzz(i,j+1,k+1)
+#undef DYZDG_GZZ_JPKM
+#define DYZDG_GZZ_JPKM gzz(i,j+1,k-1)
+#undef DYZDG_GZZ_JMKP
+#define DYZDG_GZZ_JMKP gzz(i,j-1,k+1)
+#undef DYZDG_GZZ_JMKM
+#define DYZDG_GZZ_JMKM gzz(i,j-1,k-1)
+
+/* Output variables */
+#undef DYZDG_DYZDGXX
+#define DYZDG_DYZDGXX deldelg2311
+#undef DYZDG_DYZDGXY
+#define DYZDG_DYZDGXY deldelg2312
+#undef DYZDG_DYZDGXZ
+#define DYZDG_DYZDGXZ deldelg2313
+#undef DYZDG_DYZDGYY
+#define DYZDG_DYZDGYY deldelg2322
+#undef DYZDG_DYZDGYZ
+#define DYZDG_DYZDGYZ deldelg2323
+#undef DYZDG_DYZDGZZ
+#define DYZDG_DYZDGZZ deldelg2333
+
+/* Internal variables */
+#undef DYZDG_FAC
+#define DYZDG_FAC dyzdg_fac
+#undef DYZDG_OO4DYDZ
+#define DYZDG_OO4DYDZ dyzdg_oo4dydz
+#undef DYZDG_DYZDPSI_O_PSI
+#define DYZDG_DYZDPSI_O_PSI psiyz(i,j,k)
+
+/* Declare internal variables */
+ REAL DYZDG_FAC
+ REAL DYZDG_OO4DYDZ
+
+/* Declare output variables */
+ REAL DYZDG_DYZDGXX
+ REAL DYZDG_DYZDGXY
+ REAL DYZDG_DYZDGXZ
+ REAL DYZDG_DYZDGYY
+ REAL DYZDG_DYZDGYZ
+ REAL DYZDG_DYZDGZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DYZDG_GXX_JPKP
+#define DYZDG_GXX_JPKP gxx[ dj + dk + ijk]
+#undef DYZDG_GXX_JPKM
+#define DYZDG_GXX_JPKM gxx[ dj - dk + ijk]
+#undef DYZDG_GXX_JMKP
+#define DYZDG_GXX_JMKP gxx[-dj + dk + ijk]
+#undef DYZDG_GXX_JMKM
+#define DYZDG_GXX_JMKM gxx[-dj - dk + ijk]
+
+#undef DYZDG_GXY_JPKP
+#define DYZDG_GXY_JPKP gxy[ dj + dk + ijk]
+#undef DYZDG_GXY_JPKM
+#define DYZDG_GXY_JPKM gxy[ dj - dk + ijk]
+#undef DYZDG_GXY_JMKP
+#define DYZDG_GXY_JMKP gxy[-dj + dk + ijk]
+#undef DYZDG_GXY_JMKM
+#define DYZDG_GXY_JMKM gxy[-dj - dk + ijk]
+
+#undef DYZDG_GXZ_JPKP
+#define DYZDG_GXZ_JPKP gxz[ dj + dk + ijk]
+#undef DYZDG_GXZ_JPKM
+#define DYZDG_GXZ_JPKM gxz[ dj - dk + ijk]
+#undef DYZDG_GXZ_JMKP
+#define DYZDG_GXZ_JMKP gxz[-dj + dk + ijk]
+#undef DYZDG_GXZ_JMKM
+#define DYZDG_GXZ_JMKM gxz[-dj - dk + ijk]
+
+#undef DYZDG_GYY_JPKP
+#define DYZDG_GYY_JPKP gyy[ dj + dk + ijk]
+#undef DYZDG_GYY_JPKM
+#define DYZDG_GYY_JPKM gyy[ dj - dk + ijk]
+#undef DYZDG_GYY_JMKP
+#define DYZDG_GYY_JMKP gyy[-dj + dk + ijk]
+#undef DYZDG_GYY_JMKM
+#define DYZDG_GYY_JMKM gyy[-dj - dk + ijk]
+
+#undef DYZDG_GYZ_JPKP
+#define DYZDG_GYZ_JPKP gyz[ dj + dk + ijk]
+#undef DYZDG_GYZ_JPKM
+#define DYZDG_GYZ_JPKM gyz[ dj - dk + ijk]
+#undef DYZDG_GYZ_JMKP
+#define DYZDG_GYZ_JMKP gyz[-dj + dk + ijk]
+#undef DYZDG_GYZ_JMKM
+#define DYZDG_GYZ_JMKM gyz[-dj - dk + ijk]
+
+#undef DYZDG_GZZ_JPKP
+#define DYZDG_GZZ_JPKP gzz[ dj + dk + ijk]
+#undef DYZDG_GZZ_JPKM
+#define DYZDG_GZZ_JPKM gzz[ dj - dk + ijk]
+#undef DYZDG_GZZ_JMKP
+#define DYZDG_GZZ_JMKP gzz[-dj + dk + ijk]
+#undef DYZDG_GZZ_JMKM
+#define DYZDG_GZZ_JMKM gzz[-dj - dk + ijk]
+
+/* Output variables */
+#undef DYZDG_DYZDGXX
+#define DYZDG_DYZDGXX deldelg2311
+#undef DYZDG_DYZDGXY
+#define DYZDG_DYZDGXY deldelg2312
+#undef DYZDG_DYZDGXZ
+#define DYZDG_DYZDGXZ deldelg2313
+#undef DYZDG_DYZDGYY
+#define DYZDG_DYZDGYY deldelg2322
+#undef DYZDG_DYZDGYZ
+#define DYZDG_DYZDGYZ deldelg2323
+#undef DYZDG_DYZDGZZ
+#define DYZDG_DYZDGZZ deldelg2333
+
+/* Internal variables */
+#undef DYZDG_FAC
+#define DYZDG_FAC dyzdg_fac
+#undef DYZDG_OO4DYDZ
+#define DYZDG_OO4DYDZ dyzdg_oo4dydz
+#undef DYZDG_DYZDPSI_O_PSI
+#define DYZDG_DYZDPSI_O_PSI psiyz[ijk]
+
+/* Declare internal variables */
+double DYZDG_FAC;
+double DYZDG_OO4DYDZ = 1/(4*GH->dy0*GH->dz0);
+
+/* Declare output variables */
+double DYZDG_DYZDGXX;
+double DYZDG_DYZDGXY;
+double DYZDG_DYZDGXZ;
+double DYZDG_DYZDGYY;
+double DYZDG_DYZDGYZ;
+double DYZDG_DYZDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DYZDG_guts.h b/src/macro/DYZDG_guts.h
new file mode 100644
index 0000000..5122860
--- /dev/null
+++ b/src/macro/DYZDG_guts.h
@@ -0,0 +1,95 @@
+/*@@
+ @header DYZDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the (first and) second derivatives of the
+ physical metric with respect to y,z
+
+ The macro is defined in terms of standard variables in
+ @seefile DYZDG_declare.h
+
+ The macro uses @seefile DYDG_guts.h , @seefile DZDG_guts.h and
+ @seefile DYDG_declare.h , @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DYZDG_GUTS
+#define DYZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_guts.h"
+
+#ifdef FCODE
+
+ DYZDG_OO4DYDZ = 1D0/(4D0*dy*dz)
+
+ /* Factor involving 2nd derivative of conformal factor */
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DYZDG_FAC = 0
+ ELSE
+ DYZDG_FAC = DYDG_PSI4*(4*DYZDG_DYZDPSI_O_PSI + 12*DYDG_DYDPSI_O_PSI*DZDG_DZDPSI_O_PSI)
+ ENDIF
+
+ /* Now calculate the second deriatives */
+ DYZDG_DYZDGXX = DZDCG_DZDCGXX*DYDG_FAC+DYDCG_DYDCGXX*DZDG_FAC+DYZDG_FAC*DYDG_GXX
+ & +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GXX_JPKP-DYZDG_GXX_JPKM-DYZDG_GXX_JMKP
+ & +DYZDG_GXX_JMKM)
+
+ DYZDG_DYZDGXY = DZDCG_DZDCGXY*DYDG_FAC+DYDCG_DYDCGXY*DZDG_FAC+DYZDG_FAC*DYDG_GXY
+ & +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GXY_JPKP-DYZDG_GXY_JPKM-DYZDG_GXY_JMKP
+ & +DYZDG_GXY_JMKM)
+
+ DYZDG_DYZDGXZ = DZDCG_DZDCGXZ*DYDG_FAC+DYDCG_DYDCGXZ*DZDG_FAC+DYZDG_FAC*DYDG_GXZ
+ & +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GXZ_JPKP-DYZDG_GXZ_JPKM-DYZDG_GXZ_JMKP
+ & +DYZDG_GXZ_JMKM)
+
+ DYZDG_DYZDGYY = DZDCG_DZDCGYY*DYDG_FAC+DYDCG_DYDCGYY*DZDG_FAC+DYZDG_FAC*DYDG_GYY
+ & +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GYY_JPKP-DYZDG_GYY_JPKM-DYZDG_GYY_JMKP
+ & +DYZDG_GYY_JMKM)
+
+ DYZDG_DYZDGYZ = DZDCG_DZDCGYZ*DYDG_FAC+DYDCG_DYDCGYZ*DZDG_FAC+DYZDG_FAC*DYDG_GYZ
+ & +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GYZ_JPKP-DYZDG_GYZ_JPKM-DYZDG_GYZ_JMKP
+ & +DYZDG_GYZ_JMKM)
+
+ DYZDG_DYZDGZZ = DZDCG_DZDCGZZ*DYDG_FAC+DYDCG_DYDCGZZ*DZDG_FAC+DYZDG_FAC*DYDG_GZZ
+ & +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GZZ_JPKP-DYZDG_GZZ_JPKM-DYZDG_GZZ_JMKP
+ & +DYZDG_GZZ_JMKM)
+
+#endif
+
+#ifdef CCODE
+
+ /* Factor involving 2nd derivative of conformal factor */
+ DYZDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:
+ DYDG_PSI4*(4*DYZDG_DYZDPSI_O_PSI + 12*DYDG_DYDPSI_O_PSI*DZDG_DZDPSI_O_PSI));
+
+ /* Now calculate the second deriatives */
+ DYZDG_DYZDGXX = DZDCG_DZDCGXX*DYDG_FAC+DYDCG_DYDCGXX*DZDG_FAC+DYZDG_FAC*DYDG_GXX
+ +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GXX_JPKP-DYZDG_GXX_JPKM-DYZDG_GXX_JMKP
+ +DYZDG_GXX_JMKM);
+
+ DYZDG_DYZDGXY = DZDCG_DZDCGXY*DYDG_FAC+DYDCG_DYDCGXY*DZDG_FAC+DYZDG_FAC*DYDG_GXY
+ +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GXY_JPKP-DYZDG_GXY_JPKM-DYZDG_GXY_JMKP
+ +DYZDG_GXY_JMKM);
+
+ DYZDG_DYZDGXZ = DZDCG_DZDCGXZ*DYDG_FAC+DYDCG_DYDCGXZ*DZDG_FAC+DYZDG_FAC*DYDG_GXZ
+ +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GXZ_JPKP-DYZDG_GXZ_JPKM-DYZDG_GXZ_JMKP
+ +DYZDG_GXZ_JMKM);
+
+ DYZDG_DYZDGYY = DZDCG_DZDCGYY*DYDG_FAC+DYDCG_DYDCGYY*DZDG_FAC+DYZDG_FAC*DYDG_GYY
+ +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GYY_JPKP-DYZDG_GYY_JPKM-DYZDG_GYY_JMKP
+ +DYZDG_GYY_JMKM);
+
+ DYZDG_DYZDGYZ = DZDCG_DZDCGYZ*DYDG_FAC+DYDCG_DYDCGYZ*DZDG_FAC+DYZDG_FAC*DYDG_GYZ
+ +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GYZ_JPKP-DYZDG_GYZ_JPKM-DYZDG_GYZ_JMKP
+ +DYZDG_GYZ_JMKM);
+
+ DYZDG_DYZDGZZ = DZDCG_DZDCGZZ*DYDG_FAC+DYDCG_DYDCGZZ*DZDG_FAC+DYZDG_FAC*DYDG_GZZ
+ +DYDG_PSI4*DYZDG_OO4DYDZ*(DYZDG_GZZ_JPKP-DYZDG_GZZ_JPKM-DYZDG_GZZ_JMKP
+ +DYZDG_GZZ_JMKM);
+
+#endif
+
+#endif
+
diff --git a/src/macro/DYZDG_undefine.h b/src/macro/DYZDG_undefine.h
new file mode 100644
index 0000000..8575755
--- /dev/null
+++ b/src/macro/DYZDG_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header DYZDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DYZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DYDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_undefine.h"
+
+
diff --git a/src/macro/DZDB_declare.h b/src/macro/DZDB_declare.h
new file mode 100644
index 0000000..3eee015
--- /dev/null
+++ b/src/macro/DZDB_declare.h
@@ -0,0 +1,92 @@
+/*@@
+ @header DZDB_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DZDB_guts.h to compute first
+ derivatives of the shift with respect to z
+ @enddesc
+@@*/
+
+#ifndef DZDB_DECLARE
+#define DZDB_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DZDB_BX_KP
+#define DZDB_BX_KP betax(i,j,k+1)
+#undef DZDB_BX_KM
+#define DZDB_BX_KM betax(i,j,k-1)
+#undef DZDB_BY_KP
+#define DZDB_BY_KP betay(i,j,k+1)
+#undef DZDB_BY_KM
+#define DZDB_BY_KM betay(i,j,k-1)
+#undef DZDB_BZ_KP
+#define DZDB_BZ_KP betaz(i,j,k+1)
+#undef DZDB_BZ_KM
+#define DZDB_BZ_KM betaz(i,j,k-1)
+
+/* Output variables */
+#undef DZDB_DZDBX
+#define DZDB_DZDBX dzdb_dzdbx
+#undef DZDB_DZDBY
+#define DZDB_DZDBY dzdb_dzdby
+#undef DZDB_DZDBZ
+#define DZDB_DZDBZ dzdb_dzdbz
+
+/* Internal variables */
+#undef DZDB_DZ
+#define DZDB_DZ dz
+#undef DZDB_OO2DZ
+#define DZDB_OO2DZ dzdb_oo2dz
+
+/* Declare internal variables */
+ REAL DZDB_OO2DZ;
+
+/* Declare output variables */
+ REAL DZDB_DZDBX
+ REAL DZDB_DZDBY
+ REAL DZDB_DZDBZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DZDB_BX_KP
+#define DZDB_BX_KP betax[ dj+ijk]
+#undef DZDB_BX_KM
+#define DZDB_BX_KM betax[-dj+ijk]
+#undef DZDB_BY_KP
+#define DZDB_BY_KP betay[ dj+ijk]
+#undef DZDB_BY_KM
+#define DZDB_BY_KM betay[-dj+ijk]
+#undef DZDB_BZ_KP
+#define DZDB_BZ_KP betaz[ dj+ijk]
+#undef DZDB_BZ_KM
+#define DZDB_BZ_KM betaz[-dj+ijk]
+
+/* Output variables */
+#undef DZDB_DZDBX
+#define DZDB_DZDBX delbeta31
+#undef DZDB_DZDBY
+#define DZDB_DZDBY delbeta32
+#undef DZDB_DZDBZ
+#define DZDB_DZDBZ delbeta33
+
+/* Internal variables */
+#undef DZDB_OO2DZ
+#define DZDB_OO2DZ dzdb_oo2dz
+
+/* Declare internal variables */
+double DZDB_OO2DZ;
+
+/* Declare output variables */
+double DZDB_DZDBX;
+double DZDB_DZDBY;
+double DZDB_DZDBZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DZDB_guts.h b/src/macro/DZDB_guts.h
new file mode 100644
index 0000000..757ae1a
--- /dev/null
+++ b/src/macro/DZDB_guts.h
@@ -0,0 +1,39 @@
+/*@@
+ @header DZDB_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the first derivatives of the
+ shift with respect to z
+
+ The macro is defined in terms of standard variables in
+ @seefile DZDB_declare.h
+ @enddesc
+@@*/
+
+#ifndef DZDB_GUTS
+#define DZDB_GUTS
+
+#ifdef FCODE
+
+ DZDB_OO2DZ = 1D0/(2D0*DZDB_DZ)
+
+ DZDB_DZDBX = DZDB_OO2DZ*(DZDB_BX_KP - DZDB_BX_KM)
+ DZDB_DZDBY = DZDB_OO2DZ*(DZDB_BY_KP - DZDB_BY_KM)
+ DZDB_DZDBZ = DZDB_OO2DZ*(DZDB_BZ_KP - DZDB_BZ_KM)
+
+#endif
+
+#ifdef CCODE
+
+ DZDB_OO2DZ = 1/(2*GH->dz0);
+
+ DZDB_DZDBX = DZDB_OO2DZ*(DZDB_BX_KP - DZDB_BX_KM);
+ DZDB_DZDBY = DZDB_OO2DZ*(DZDB_BY_KP - DZDB_BY_KM);
+ DZDB_DZDBZ = DZDB_OO2DZ*(DZDB_BZ_KP - DZDB_BZ_KM);
+
+#endif
+
+#endif
+
diff --git a/src/macro/DZDB_undefine.h b/src/macro/DZDB_undefine.h
new file mode 100644
index 0000000..d725fc2
--- /dev/null
+++ b/src/macro/DZDB_undefine.h
@@ -0,0 +1,10 @@
+/*@@
+ @header DZDB_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DZDB_GUTS
+
diff --git a/src/macro/DZDCG_declare.h b/src/macro/DZDCG_declare.h
new file mode 100644
index 0000000..5a0c801
--- /dev/null
+++ b/src/macro/DZDCG_declare.h
@@ -0,0 +1,136 @@
+/*@@
+ @header DZDCG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DZDCG_guts.h to compute first
+ derivatives of the conformal metric with respect to z
+ @enddesc
+@@*/
+
+#ifndef DZDCG_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DZDCG_GXX_KP
+#define DZDCG_GXX_KP gxx(i,j,k+1)
+#undef DZDCG_GXX_KM
+#define DZDCG_GXX_KM gxx(i,j,k-1)
+#undef DZDCG_GXY_KP
+#define DZDCG_GXY_KP gxy(i,j,k+1)
+#undef DZDCG_GXY_KM
+#define DZDCG_GXY_KM gxy(i,j,k-1)
+#undef DZDCG_GXZ_KP
+#define DZDCG_GXZ_KP gxz(i,j,k+1)
+#undef DZDCG_GXZ_KM
+#define DZDCG_GXZ_KM gxz(i,j,k-1)
+#undef DZDCG_GYY_KP
+#define DZDCG_GYY_KP gyy(i,j,k+1)
+#undef DZDCG_GYY_KM
+#define DZDCG_GYY_KM gyy(i,j,k-1)
+#undef DZDCG_GYZ_KP
+#define DZDCG_GYZ_KP gyz(i,j,k+1)
+#undef DZDCG_GYZ_KM
+#define DZDCG_GYZ_KM gyz(i,j,k-1)
+#undef DZDCG_GZZ_KP
+#define DZDCG_GZZ_KP gzz(i,j,k+1)
+#undef DZDCG_GZZ_KM
+#define DZDCG_GZZ_KM gzz(i,j,k-1)
+
+/* Output variables */
+#undef DZDCG_DZDCGXX
+#define DZDCG_DZDCGXX delgb311
+#undef DZDCG_DZDCGXY
+#define DZDCG_DZDCGXY delgb312
+#undef DZDCG_DZDCGXZ
+#define DZDCG_DZDCGXZ delgb313
+#undef DZDCG_DZDCGYY
+#define DZDCG_DZDCGYY delgb322
+#undef DZDCG_DZDCGYZ
+#define DZDCG_DZDCGYZ delgb323
+#undef DZDCG_DZDCGZZ
+#define DZDCG_DZDCGZZ delgb333
+
+/* Internal variables */
+#undef DZDCG_DZ
+#define DZDCG_DZ dz
+#undef DZDCG_OO2DZ
+#define DZDCG_OO2DZ cdzdg_oo2dz
+
+/* Declare internal variables */
+ REAL DZDCG_OO2DZ
+
+/* Declare output variables */
+ REAL DZDCG_DZDCGXX
+ REAL DZDCG_DZDCGXY
+ REAL DZDCG_DZDCGXZ
+ REAL DZDCG_DZDCGYY
+ REAL DZDCG_DZDCGYZ
+ REAL DZDCG_DZDCGZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DZDCG_GXX_KP
+#define DZDCG_GXX_KP gxx[ dk+ijk]
+#undef DZDCG_GXX_KM
+#define DZDCG_GXX_KM gxx[-dk+ijk]
+#undef DZDCG_GXY_KP
+#define DZDCG_GXY_KP gxy[ dk+ijk]
+#undef DZDCG_GXY_KM
+#define DZDCG_GXY_KM gxy[-dk+ijk]
+#undef DZDCG_GXZ_KP
+#define DZDCG_GXZ_KP gxz[ dk+ijk]
+#undef DZDCG_GXZ_KM
+#define DZDCG_GXZ_KM gxz[-dk+ijk]
+#undef DZDCG_GYY_KP
+#define DZDCG_GYY_KP gyy[ dk+ijk]
+#undef DZDCG_GYY_KM
+#define DZDCG_GYY_KM gyy[-dk+ijk]
+#undef DZDCG_GYZ_KP
+#define DZDCG_GYZ_KP gyz[ dk+ijk]
+#undef DZDCG_GYZ_KM
+#define DZDCG_GYZ_KM gyz[-dk+ijk]
+#undef DZDCG_GZZ_KP
+#define DZDCG_GZZ_KP gzz[ dk+ijk]
+#undef DZDCG_GZZ_KM
+#define DZDCG_GZZ_KM gzz[-dk+ijk]
+
+/* Output variables */
+#undef DZDCG_DZDCGXX
+#define DZDCG_DZDCGXX delgb311
+#undef DZDCG_DZDCGXY
+#define DZDCG_DZDCGXY delgb312
+#undef DZDCG_DZDCGXZ
+#define DZDCG_DZDCGXZ delgb313
+#undef DZDCG_DZDCGYY
+#define DZDCG_DZDCGYY delgb322
+#undef DZDCG_DZDCGYZ
+#define DZDCG_DZDCGYZ delgb323
+#undef DZDCG_DZDCGZZ
+#define DZDCG_DZDCGZZ delgb333
+
+/* Internal variables */
+#undef DZDCG_OO2DZ
+#define DZDCG_OO2DZ cdzdg_oo2dz
+
+/* Declare internal variables */
+double DZDCG_OO2DZ;
+
+/* Declare output variables */
+double DZDCG_DZDCGXX;
+double DZDCG_DZDCGXY;
+double DZDCG_DZDCGXZ;
+double DZDCG_DZDCGYY;
+double DZDCG_DZDCGYZ;
+double DZDCG_DZDCGZZ;
+
+#endif
+
+#define DZDCG_DECLARE
+
+#endif
diff --git a/src/macro/DZDCG_guts.h b/src/macro/DZDCG_guts.h
new file mode 100644
index 0000000..6f4858a
--- /dev/null
+++ b/src/macro/DZDCG_guts.h
@@ -0,0 +1,48 @@
+/*@@
+ @header DZDCG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ conformal metric with respect to z
+
+ The macro is defined in terms of standard variables in
+
+ Requires: lower conformal metric at k+1,k-1 ; dz0
+
+ Provides: derivative of lower conformal metric wrt z
+
+ @seefile DZDCG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DZDCG_GUTS
+#define DZDCG_GUTS
+
+#ifdef FCODE
+
+ DZDCG_OO2DZ = 1D0/(2D0*DZDCG_DZ)
+
+ DZDCG_DZDCGXX = DZDCG_OO2DZ*(DZDCG_GXX_KP - DZDCG_GXX_KM)
+ DZDCG_DZDCGXY = DZDCG_OO2DZ*(DZDCG_GXY_KP - DZDCG_GXY_KM)
+ DZDCG_DZDCGXZ = DZDCG_OO2DZ*(DZDCG_GXZ_KP - DZDCG_GXZ_KM)
+ DZDCG_DZDCGYY = DZDCG_OO2DZ*(DZDCG_GYY_KP - DZDCG_GYY_KM)
+ DZDCG_DZDCGYZ = DZDCG_OO2DZ*(DZDCG_GYZ_KP - DZDCG_GYZ_KM)
+ DZDCG_DZDCGZZ = DZDCG_OO2DZ*(DZDCG_GZZ_KP - DZDCG_GZZ_KM)
+
+#endif
+
+#ifdef CCODE
+
+ DZDCG_OO2DZ = 1/(2*GH->dz0);
+
+ DZDCG_DZDCGXX = DZDCG_OO2DZ*(DZDCG_GXX_KP - DZDCG_GXX_KM);
+ DZDCG_DZDCGXY = DZDCG_OO2DZ*(DZDCG_GXY_KP - DZDCG_GXY_KM);
+ DZDCG_DZDCGXZ = DZDCG_OO2DZ*(DZDCG_GXZ_KP - DZDCG_GXZ_KM);
+ DZDCG_DZDCGYY = DZDCG_OO2DZ*(DZDCG_GYY_KP - DZDCG_GYY_KM);
+ DZDCG_DZDCGYZ = DZDCG_OO2DZ*(DZDCG_GYZ_KP - DZDCG_GYZ_KM);
+ DZDCG_DZDCGZZ = DZDCG_OO2DZ*(DZDCG_GZZ_KP - DZDCG_GZZ_KM);
+
+#endif
+
+#endif
diff --git a/src/macro/DZDCG_undefine.h b/src/macro/DZDCG_undefine.h
new file mode 100644
index 0000000..69ab07a
--- /dev/null
+++ b/src/macro/DZDCG_undefine.h
@@ -0,0 +1,10 @@
+/*@@
+ @header DZDCG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DZDCG_GUTS
+
diff --git a/src/macro/DZDG_declare.h b/src/macro/DZDG_declare.h
new file mode 100644
index 0000000..db98d23
--- /dev/null
+++ b/src/macro/DZDG_declare.h
@@ -0,0 +1,132 @@
+/*@@
+ @header DZDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DZDG_guts.h to compute first
+ derivatives of the physical metric with respect to y
+ @enddesc
+@@*/
+
+#ifndef DZDG_DECLARE
+#define DZDG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDCG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DZDG_PSI
+#define DZDG_PSI psi(i,j,k)
+
+#undef DZDG_DZDPSI_O_PSI
+#define DZDG_DZDPSI_O_PSI psiz(i,j,k)
+
+#undef DZDG_GXX
+#define DZDG_GXX gxx(i,j,k)
+#undef DZDG_GXY
+#define DZDG_GXY gxy(i,j,k)
+#undef DZDG_GXZ
+#define DZDG_GXZ gxz(i,j,k)
+#undef DZDG_GYY
+#define DZDG_GYY gyy(i,j,k)
+#undef DZDG_GYZ
+#define DZDG_GYZ gyz(i,j,k)
+#undef DZDG_GZZ
+#define DZDG_GZZ gzz(i,j,k)
+
+/* Output variables */
+#undef DZDG_DZDGXX
+#define DZDG_DZDGXX dzdgxx
+#undef DZDG_DZDGXY
+#define DZDG_DZDGXY dzdgxy
+#undef DZDG_DZDGXZ
+#define DZDG_DZDGXZ dzdgxz
+#undef DZDG_DZDGYY
+#define DZDG_DZDGYY dzdgyy
+#undef DZDG_DZDGYZ
+#define DZDG_DZDGYZ dzdgyz
+#undef DZDG_DZDGZZ
+#define DZDG_DZDGZZ dzdgzz
+
+/* Internal variables */
+#undef DZDG_PSI4
+#define DZDG_PSI4 dzdg_psi4
+
+#undef DZDG_FAC
+#define DZDG_FAC dzdg_fac
+
+/* Declare internal variables */
+ REAL DZDG_PSI4;
+ REAL DZDG_FAC;
+
+/* Declare output variables */
+ REAL DZDG_DZDGXX;
+ REAL DZDG_DZDGXY;
+ REAL DZDG_DZDGXZ;
+ REAL DZDG_DZDGYY;
+ REAL DZDG_DZDGYZ;
+ REAL DZDG_DZDGZZ;
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef DZDG_DZDGXX
+#define DZDG_DZDGXX delg311
+#undef DZDG_DZDGXY
+#define DZDG_DZDGXY delg312
+#undef DZDG_DZDGXZ
+#define DZDG_DZDGXZ delg313
+#undef DZDG_DZDGYY
+#define DZDG_DZDGYY delg322
+#undef DZDG_DZDGYZ
+#define DZDG_DZDGYZ delg323
+#undef DZDG_DZDGZZ
+#define DZDG_DZDGZZ delg333
+
+/* Input variables */
+
+#undef DZDG_PSI
+#define DZDG_PSI psi[ijk]
+
+#undef DZDG_DZDPSI_O_PSI
+#define DZDG_DZDPSI_O_PSI psiz[ijk]
+
+#undef DZDG_GXX
+#define DZDG_GXX gxx[ijk]
+#undef DZDG_GXY
+#define DZDG_GXY gxy[ijk]
+#undef DZDG_GXZ
+#define DZDG_GXZ gxz[ijk]
+#undef DZDG_GYY
+#define DZDG_GYY gyy[ijk]
+#undef DZDG_GYZ
+#define DZDG_GYZ gyz[ijk]
+#undef DZDG_GZZ
+#define DZDG_GZZ gzz[ijk]
+
+/* Internal variables */
+#undef DZDG_PSI4
+#define DZDG_PSI4 dzdg_psi4
+
+#undef DZDG_FAC
+#define DZDG_FAC dzdg_fac
+
+/* Declare internal variables */
+double DZDG_PSI4;
+double DZDG_FAC;
+
+/* Declare output variables */
+double DZDG_DZDGXX;
+double DZDG_DZDGXY;
+double DZDG_DZDGXZ;
+double DZDG_DZDGYY;
+double DZDG_DZDGYZ;
+double DZDG_DZDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DZDG_guts.h b/src/macro/DZDG_guts.h
new file mode 100644
index 0000000..897ea07
--- /dev/null
+++ b/src/macro/DZDG_guts.h
@@ -0,0 +1,53 @@
+/*@@
+ @header DZDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ physical metric with respect to z
+
+ The macro is defined in terms of standard variables in
+ @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DZDG_GUTS
+#define DZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDCG_guts.h"
+
+#ifdef FCODE
+
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DZDG_PSI4 = 1
+ DZDG_FAC = 0
+ ELSE
+ DZDG_PSI4 = DZDG_PSI**4
+ DZDG_FAC = 4*DZDG_PSI4*DZDG_DZDPSI_O_PSI
+ ENDIF
+
+ DZDG_DZDGXX = DZDCG_DZDCGXX*DZDG_PSI4 + DZDG_FAC*DZDG_GXX
+ DZDG_DZDGXY = DZDCG_DZDCGXY*DZDG_PSI4 + DZDG_FAC*DZDG_GXY
+ DZDG_DZDGXZ = DZDCG_DZDCGXZ*DZDG_PSI4 + DZDG_FAC*DZDG_GXZ
+ DZDG_DZDGYY = DZDCG_DZDCGYY*DZDG_PSI4 + DZDG_FAC*DZDG_GYY
+ DZDG_DZDGYZ = DZDCG_DZDCGYZ*DZDG_PSI4 + DZDG_FAC*DZDG_GYZ
+ DZDG_DZDGZZ = DZDCG_DZDCGZZ*DZDG_PSI4 + DZDG_FAC*DZDG_GZZ
+
+#endif
+
+#ifdef CCODE
+
+ DZDG_PSI4 = ((conformal_state != CONFORMAL_METRIC)?1:Power(DZDG_PSI,4));
+
+ DZDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:4*DZDG_PSI4*DZDG_DZDPSI_O_PSI);
+
+ DZDG_DZDGXX = DZDCG_DZDCGXX*DZDG_PSI4 + DZDG_FAC*DZDG_GXX;
+ DZDG_DZDGXY = DZDCG_DZDCGXY*DZDG_PSI4 + DZDG_FAC*DZDG_GXY;
+ DZDG_DZDGXZ = DZDCG_DZDCGXZ*DZDG_PSI4 + DZDG_FAC*DZDG_GXZ;
+ DZDG_DZDGYY = DZDCG_DZDCGYY*DZDG_PSI4 + DZDG_FAC*DZDG_GYY;
+ DZDG_DZDGYZ = DZDCG_DZDCGYZ*DZDG_PSI4 + DZDG_FAC*DZDG_GYZ;
+ DZDG_DZDGZZ = DZDCG_DZDCGZZ*DZDG_PSI4 + DZDG_FAC*DZDG_GZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DZDG_undefine.h b/src/macro/DZDG_undefine.h
new file mode 100644
index 0000000..0b95e10
--- /dev/null
+++ b/src/macro/DZDG_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header DZDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDCG_undefine.h"
+
diff --git a/src/macro/DZDK_declare.h b/src/macro/DZDK_declare.h
new file mode 100644
index 0000000..aba7c5e
--- /dev/null
+++ b/src/macro/DZDK_declare.h
@@ -0,0 +1,135 @@
+/*@@
+ @header DZDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro @seefile DZDG_guts.h to compute first
+ derivatives of the conformal metric with respect to z
+ @enddesc
+@@*/
+
+#ifndef DZDK_DECLARE
+#define DZDK_DECLARE
+
+#ifdef FCODE
+
+/* Input variables */
+#undef DZDK_KXX_KP
+#define DZDK_KXX_KP hxx(i,j,k+1)
+#undef DZDK_KXX_KM
+#define DZDK_KXX_KM hxx(i,j,k-1)
+#undef DZDK_KXY_KP
+#define DZDK_KXY_KP hxy(i,j,k+1)
+#undef DZDK_KXY_KM
+#define DZDK_KXY_KM hxy(i,j,k-1)
+#undef DZDK_KXZ_KP
+#define DZDK_KXZ_KP hxz(i,j,k+1)
+#undef DZDK_KXZ_KM
+#define DZDK_KXZ_KM hxz(i,j,k-1)
+#undef DZDK_KYY_KP
+#define DZDK_KYY_KP hyy(i,j,k+1)
+#undef DZDK_KYY_KM
+#define DZDK_KYY_KM hyy(i,j,k-1)
+#undef DZDK_KYZ_KP
+#define DZDK_KYZ_KP hyz(i,j,k+1)
+#undef DZDK_KYZ_KM
+#define DZDK_KYZ_KM hyz(i,j,k-1)
+#undef DZDK_KZZ_KP
+#define DZDK_KZZ_KP hzz(i,j,k+1)
+#undef DZDK_KZZ_KM
+#define DZDK_KZZ_KM hzz(i,j,k-1)
+
+/* Output variables */
+#undef DZDK_DZDKXX
+#define DZDK_DZDKXX dzdk_dzdkxx
+#undef DZDK_DZDKXY
+#define DZDK_DZDKXY dzdk_dzdkxy
+#undef DZDK_DZDKXZ
+#define DZDK_DZDKXZ dzdk_dzdkxz
+#undef DZDK_DZDKYY
+#define DZDK_DZDKYY dzdk_dzdkyy
+#undef DZDK_DZDKYZ
+#define DZDK_DZDKYZ dzdk_dzdkyz
+#undef DZDK_DZDKZZ
+#define DZDK_DZDKZZ dzdk_dzdkzz
+
+/* Internal variables */
+#undef DZDK_DZ
+#define DZDK_DZ dz
+#undef DZDK_OO2DZ
+#define DZDK_OO2DZ dzdk_oo2dz
+
+/* Declare internal variables */
+ REAL DZDK_OO2DZ
+
+/* Declare output variables */
+ REAL DZDK_DZDKXX
+ REAL DZDK_DZDKXY
+ REAL DZDK_DZDKXZ
+ REAL DZDK_DZDKYY
+ REAL DZDK_DZDKYZ
+ REAL DZDK_DZDKZZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Input variables */
+#undef DZDK_KXX_KP
+#define DZDK_KXX_KP hxx[ dk+ijk]
+#undef DZDK_KXX_KM
+#define DZDK_KXX_KM hxx[-dk+ijk]
+#undef DZDK_KXY_KP
+#define DZDK_KXY_KP hxy[ dk+ijk]
+#undef DZDK_KXY_KM
+#define DZDK_KXY_KM hxy[-dk+ijk]
+#undef DZDK_KXZ_KP
+#define DZDK_KXZ_KP hxz[ dk+ijk]
+#undef DZDK_KXZ_KM
+#define DZDK_KXZ_KM hxz[-dk+ijk]
+#undef DZDK_KYY_KP
+#define DZDK_KYY_KP hyy[ dk+ijk]
+#undef DZDK_KYY_KM
+#define DZDK_KYY_KM hyy[-dk+ijk]
+#undef DZDK_KYZ_KP
+#define DZDK_KYZ_KP hyz[ dk+ijk]
+#undef DZDK_KYZ_KM
+#define DZDK_KYZ_KM hyz[-dk+ijk]
+#undef DZDK_KZZ_KP
+#define DZDK_KZZ_KP hzz[ dk+ijk]
+#undef DZDK_KZZ_KM
+#define DZDK_KZZ_KM hzz[-dk+ijk]
+
+/* Output variables */
+#undef DZDK_DZDKXX
+#define DZDK_DZDKXX dzdk_dzdkxx
+#undef DZDK_DZDKXY
+#define DZDK_DZDKXY dzdk_dzdkxy
+#undef DZDK_DZDKXZ
+#define DZDK_DZDKXZ dzdk_dzdkxz
+#undef DZDK_DZDKYY
+#define DZDK_DZDKYY dzdk_dzdkyy
+#undef DZDK_DZDKYZ
+#define DZDK_DZDKYZ dzdk_dzdkyz
+#undef DZDK_DZDKZZ
+#define DZDK_DZDKZZ dzdk_dzdkzz
+
+/* Internal variables */
+#undef DZDK_OO2DZ
+#define DZDK_OO2DZ dzdk_oo2dz
+
+/* Declare internal variables */
+double DZDK_OO2DZ;
+
+/* Declare output variables */
+double DZDK_DZDKXX;
+double DZDK_DZDKXY;
+double DZDK_DZDKXZ;
+double DZDK_DZDKYY;
+double DZDK_DZDKYZ;
+double DZDK_DZDKZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DZDK_guts.h b/src/macro/DZDK_guts.h
new file mode 100644
index 0000000..f388e37
--- /dev/null
+++ b/src/macro/DZDK_guts.h
@@ -0,0 +1,40 @@
+/*@@
+ @header DZDG_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the first derivatives of the
+ extrinsic with respect to z
+ @enddesc
+@@*/
+
+#ifndef DZDK_GUTS
+#define DZDK_GUTS
+
+#ifdef FCODE
+
+ DZDK_OO2DZ = 1D0/(2D0*DZDK_DZ)
+
+ DZDK_DZDKXX = DZDK_OO2DZ*(DZDK_KXX_KP - DZDK_KXX_KM)
+ DZDK_DZDKXY = DZDK_OO2DZ*(DZDK_KXY_KP - DZDK_KXY_KM)
+ DZDK_DZDKXZ = DZDK_OO2DZ*(DZDK_KXZ_KP - DZDK_KXZ_KM)
+ DZDK_DZDKYY = DZDK_OO2DZ*(DZDK_KYY_KP - DZDK_KYY_KM)
+ DZDK_DZDKYZ = DZDK_OO2DZ*(DZDK_KYZ_KP - DZDK_KYZ_KM)
+ DZDK_DZDKZZ = DZDK_OO2DZ*(DZDK_KZZ_KP - DZDK_KZZ_KM)
+
+#endif
+
+#ifdef CCODE
+
+ DZDK_OO2DZ = 1/(2*GH->dz0);
+
+ DZDK_DZDKXX = DZDK_OO2DZ*(DZDK_KXX_KP - DZDK_KXX_KM);
+ DZDK_DZDKXY = DZDK_OO2DZ*(DZDK_KXY_KP - DZDK_KXY_KM);
+ DZDK_DZDKXZ = DZDK_OO2DZ*(DZDK_KXZ_KP - DZDK_KXZ_KM);
+ DZDK_DZDKYY = DZDK_OO2DZ*(DZDK_KYY_KP - DZDK_KYY_KM);
+ DZDK_DZDKYZ = DZDK_OO2DZ*(DZDK_KYZ_KP - DZDK_KYZ_KM);
+ DZDK_DZDKZZ = DZDK_OO2DZ*(DZDK_KZZ_KP - DZDK_KZZ_KM);
+
+#endif
+
+#endif
diff --git a/src/macro/DZDK_undefine.h b/src/macro/DZDK_undefine.h
new file mode 100644
index 0000000..29551cc
--- /dev/null
+++ b/src/macro/DZDK_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header DZDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DZDK_GUTS
+
+
diff --git a/src/macro/DZZDG_declare.h b/src/macro/DZZDG_declare.h
new file mode 100644
index 0000000..9ab559f
--- /dev/null
+++ b/src/macro/DZZDG_declare.h
@@ -0,0 +1,92 @@
+/*@@
+ @header DZZDG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the (first and) second derivatives
+ of the physical metric with respect to z
+
+ The macro uses @seefile DZDG_guts.h and @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DZZDG_DECLARE
+#define DZZDG_DECLARE
+
+#ifdef FCODE
+
+/* Output variables */
+#undef DZZDG_DZZDGXX
+#define DZZDG_DZZDGXX dzzdgxx
+#undef DZZDG_DZZDGXY
+#define DZZDG_DZZDGXY dzzdgxy
+#undef DZZDG_DZZDGXZ
+#define DZZDG_DZZDGXZ dzzdgxz
+#undef DZZDG_DZZDGYY
+#define DZZDG_DZZDGYY dzzdgyy
+#undef DZZDG_DZZDGYZ
+#define DZZDG_DZZDGYZ dzzdgyz
+#undef DZZDG_DZZDGZZ
+#define DZZDG_DZZDGZZ dzzdgzz
+
+/* Internal variables */
+#undef DZZDG_FAC
+#define DZZDG_FAC dzzdg_fac
+#undef DZZDG_OODZ2
+#define DZZDG_OODZ2 dzzdg_oodz2
+#undef DZZDG_DZZDPSI_O_PSI
+#define DZZDG_DZZDPSI_O_PSI psizz(i,j,k)
+
+/* Declare internal variables */
+ REAL DZZDG_FAC
+ REAL DZZDG_OODZ2
+
+/* Declare output variables */
+ REAL DZZDG_DZZDGXX
+ REAL DZZDG_DZZDGXY
+ REAL DZZDG_DZZDGXZ
+ REAL DZZDG_DZZDGYY
+ REAL DZZDG_DZZDGYZ
+ REAL DZZDG_DZZDGZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Output variables */
+#undef DZZDG_DZZDGXX
+#define DZZDG_DZZDGXX deldelg3311
+#undef DZZDG_DZZDGXY
+#define DZZDG_DZZDGXY deldelg3312
+#undef DZZDG_DZZDGXZ
+#define DZZDG_DZZDGXZ deldelg3313
+#undef DZZDG_DZZDGYY
+#define DZZDG_DZZDGYY deldelg3322
+#undef DZZDG_DZZDGYZ
+#define DZZDG_DZZDGYZ deldelg3323
+#undef DZZDG_DZZDGZZ
+#define DZZDG_DZZDGZZ deldelg3333
+
+/* Internal variables */
+#undef DZZDG_FAC
+#define DZZDG_FAC dzzdg_fac
+#undef DZZDG_OODZ2
+#define DZZDG_OODZ2 dzzdg_oodz2
+#undef DZZDG_DZZDPSI_O_PSI
+#define DZZDG_DZZDPSI_O_PSI psizz[ijk]
+
+/* Declare internal variables */
+double DZZDG_FAC;
+double DZZDG_OODZ2 = 1/(GH->dz0*GH->dz0);
+
+/* Declare output variables */
+double DZZDG_DZZDGXX;
+double DZZDG_DZZDGXY;
+double DZZDG_DZZDGXZ;
+double DZZDG_DZZDGYY;
+double DZZDG_DZZDGYZ;
+double DZZDG_DZZDGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/DZZDG_guts.h b/src/macro/DZZDG_guts.h
new file mode 100644
index 0000000..ef0a946
--- /dev/null
+++ b/src/macro/DZZDG_guts.h
@@ -0,0 +1,79 @@
+/*@@
+ @header DZZDG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the (first and) second derivatives of the
+ physical metric with respect to z
+
+ The macro is defined in terms of standard variables in
+ @seefile DZZDG_declare.h
+
+ The macro uses @seefile DZDG_guts.h and @seefile DZDG_declare.h
+ @enddesc
+@@*/
+
+#ifndef DZZDG_GUTS
+#define DZZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_guts.h"
+
+#ifdef FCODE
+
+ DZZDG_OODZ2 = 1D0/(dz*dz)
+
+ /* Factor involving 2nd derivative of conformal factor */
+ IF (conformal_state /= CONFORMAL_METRIC) THEN
+ DZZDG_FAC = 0
+ ELSE
+ DZZDG_FAC = DZDG_PSI4*(4*DZZDG_DZZDPSI_O_PSI + 12*DZDG_DZDPSI_O_PSI*DZDG_DZDPSI_O_PSI)
+ ENDIF
+
+ DZZDG_DZZDGXX = 2*DZDCG_DZDCGXX*DZDG_FAC+DZZDG_FAC*DZDG_GXX+DZDG_PSI4
+ &*DZZDG_OODZ2*(DZDCG_GXX_KP-2*DZDG_GXX+DZDCG_GXX_KM)
+
+ DZZDG_DZZDGXY = 2*DZDCG_DZDCGXY*DZDG_FAC+DZZDG_FAC*DZDG_GXY+DZDG_PSI4
+ &*DZZDG_OODZ2*(DZDCG_GXY_KP-2*DZDG_GXY+DZDCG_GXY_KM)
+
+ DZZDG_DZZDGXZ = 2*DZDCG_DZDCGXZ*DZDG_FAC+DZZDG_FAC*DZDG_GXZ+DZDG_PSI4
+ &*DZZDG_OODZ2*(DZDCG_GXZ_KP-2*DZDG_GXZ+DZDCG_GXZ_KM)
+
+ DZZDG_DZZDGYY = 2*DZDCG_DZDCGYY*DZDG_FAC+DZZDG_FAC*DZDG_GYY+DZDG_PSI4
+ &*DZZDG_OODZ2*(DZDCG_GYY_KP-2*DZDG_GYY+DZDCG_GYY_KM)
+
+ DZZDG_DZZDGYZ = 2*DZDCG_DZDCGYZ*DZDG_FAC+DZZDG_FAC*DZDG_GYZ+DZDG_PSI4
+ &*DZZDG_OODZ2*(DZDCG_GYZ_KP-2*DZDG_GYZ+DZDCG_GYZ_KM)
+
+ DZZDG_DZZDGZZ = 2*DZDCG_DZDCGZZ*DZDG_FAC+DZZDG_FAC*DZDG_GZZ+DZDG_PSI4
+ &*DZZDG_OODZ2*(DZDCG_GZZ_KP-2*DZDG_GZZ+DZDCG_GZZ_KM)
+
+#endif
+
+#ifdef CCODE
+
+ /* Factor involving 2nd derivative of conformal factor */
+ DZZDG_FAC = ((conformal_state != CONFORMAL_METRIC)?0:
+ DZDG_PSI4*(4*DZZDG_DZZDPSI_O_PSI + 12*DZDG_DZDPSI_O_PSI*DZDG_DZDPSI_O_PSI));
+
+ /* Now calculate the second deriatives */
+ DZZDG_DZZDGXX = 2*DZDCG_DZDCGXX*DZDG_FAC+DZZDG_FAC*DZDG_GXX+DZDG_PSI4
+ *DZZDG_OODZ2*(DZDCG_GXX_KP-2*DZDG_GXX+DZDCG_GXX_KM);
+
+ DZZDG_DZZDGXY = 2*DZDCG_DZDCGXY*DZDG_FAC+DZZDG_FAC*DZDG_GXY+DZDG_PSI4
+ *DZZDG_OODZ2*(DZDCG_GXY_KP-2*DZDG_GXY+DZDCG_GXY_KM);
+
+ DZZDG_DZZDGXZ = 2*DZDCG_DZDCGXZ*DZDG_FAC+DZZDG_FAC*DZDG_GXZ+DZDG_PSI4
+ *DZZDG_OODZ2*(DZDCG_GXZ_KP-2*DZDG_GXZ+DZDCG_GXZ_KM);
+
+ DZZDG_DZZDGYY = 2*DZDCG_DZDCGYY*DZDG_FAC+DZZDG_FAC*DZDG_GYY+DZDG_PSI4
+ *DZZDG_OODZ2*(DZDCG_GYY_KP-2*DZDG_GYY+DZDCG_GYY_KM);
+
+ DZZDG_DZZDGYZ = 2*DZDCG_DZDCGYZ*DZDG_FAC+DZZDG_FAC*DZDG_GYZ+DZDG_PSI4
+ *DZZDG_OODZ2*(DZDCG_GYZ_KP-2*DZDG_GYZ+DZDCG_GYZ_KM);
+
+ DZZDG_DZZDGZZ = 2*DZDCG_DZDCGZZ*DZDG_FAC+DZZDG_FAC*DZDG_GZZ+DZDG_PSI4
+ *DZZDG_OODZ2*(DZDCG_GZZ_KP-2*DZDG_GZZ+DZDCG_GZZ_KM);
+
+#endif
+
+#endif
diff --git a/src/macro/DZZDG_undefine.h b/src/macro/DZZDG_undefine.h
new file mode 100644
index 0000000..b62646a
--- /dev/null
+++ b/src/macro/DZZDG_undefine.h
@@ -0,0 +1,12 @@
+/*@@
+ @header DZZDG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef DZZDG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DZDG_undefine.h"
+
diff --git a/src/macro/GAMMA_declare.h b/src/macro/GAMMA_declare.h
new file mode 100644
index 0000000..1d79c0a
--- /dev/null
+++ b/src/macro/GAMMA_declare.h
@@ -0,0 +1,57 @@
+/*@@
+ @header GAMMA_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate Gauge Source Functions (Gammas)
+
+ That is GAMMA_a = g^bc CHR2_abc
+ @enddesc
+@@*/
+
+#ifndef GAMMA_DECLARE
+#define GAMMA_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef GAMMA_GAMMAX
+#define GAMMA_GAMMAX gamma_gammax
+#undef GAMMA_GAMMAY
+#define GAMMA_GAMMAY gamma_gammay
+#undef GAMMA_GAMMAZ
+#define GAMMA_GAMMAZ gamma_gammaz
+
+/* Declare output variables */
+ REAL GAMMA_GAMMAX
+ REAL GAMMA_GAMMAY
+ REAL GAMMA_GAMMAZ
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef GAMMA_GAMMAX
+#define GAMMA_GAMMAX gamma_gammax
+#undef GAMMA_GAMMAY
+#define GAMMA_GAMMAY gamma_gammay
+#undef GAMMA_GAMMAZ
+#define GAMMA_GAMMAZ gamma_gammaz
+
+/* Declare output variables */
+double GAMMA_GAMMAX;
+double GAMMA_GAMMAY;
+double GAMMA_GAMMAZ;
+
+#endif
+
+#endif
+
+
+
diff --git a/src/macro/GAMMA_guts.h b/src/macro/GAMMA_guts.h
new file mode 100644
index 0000000..cae7376
--- /dev/null
+++ b/src/macro/GAMMA_guts.h
@@ -0,0 +1,51 @@
+/*@@
+ @header GAMMA_guts.h
+ @date Oct 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate Gauge Source Functions (Gammas)
+
+ That is GAMMA_Ga = g^bc CHR2_abc
+
+ @enddesc
+@@*/
+
+#ifndef GAMMA_GUTS
+#define GAMMA_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+
+#ifdef FCODE
+
+ GAMMA_GAMMAX = UPPERMET_UXX*CHR2_XXX + 2D0*UPPERMET_UXY*CHR2_XXY
+ & + 2D0*UPPERMET_UXZ*CHR2_XXZ + UPPERMET_UYY*CHR2_XYY
+ & + 2D0*UPPERMET_UYZ*CHR2_XYZ + UPPERMET_UZZ*CHR2_XZZ
+
+ GAMMA_GAMMAY = UPPERMET_UXX*CHR2_YXX + 2D0*UPPERMET_UXY*CHR2_YXY
+ & + 2D0*UPPERMET_UXZ*CHR2_YXZ + UPPERMET_UYY*CHR2_YYY
+ & + 2D0*UPPERMET_UYZ*CHR2_YYZ + UPPERMET_UZZ*CHR2_YZZ
+
+ GAMMA_GAMMAZ = UPPERMET_UXX*CHR2_ZXX + 2D0*UPPERMET_UXY*CHR2_ZXY
+ & + 2D0*UPPERMET_UXZ*CHR2_ZXZ + UPPERMET_UYY*CHR2_ZYY
+ & + 2D0*UPPERMET_UYZ*CHR2_ZYZ + UPPERMET_UZZ*CHR2_ZZZ
+
+#endif
+
+#ifdef CCODE
+
+ GAMMA_GAMMAX = UPPERMET_UXX*CHR2_XXX + 2*UPPERMET_UXY*CHR2_XXY
+ + 2*UPPERMET_UXZ*CHR2_XXZ + UPPERMET_UYY*CHR2_XYY
+ + 2*UPPERMET_UYZ*CHR2_XYZ + UPPERMET_UZZ*CHR2_XZZ;
+
+ GAMMA_GAMMAY = UPPERMET_UXX*CHR2_YXX + 2*UPPERMET_UXY*CHR2_YXY
+ + 2*UPPERMET_UXZ*CHR2_YXZ + UPPERMET_UYY*CHR2_YYY
+ + 2*UPPERMET_UYZ*CHR2_YYZ + UPPERMET_UZZ*CHR2_YZZ;
+
+ GAMMA_GAMMAZ = UPPERMET_UXX*CHR2_ZXX + 2*UPPERMET_UXY*CHR2_ZXY
+ + 2*UPPERMET_UXZ*CHR2_ZXZ + UPPERMET_UYY*CHR2_ZYY
+ + 2*UPPERMET_UYZ*CHR2_ZYZ + UPPERMET_UZZ*CHR2_ZZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/GAMMA_undefine.h b/src/macro/GAMMA_undefine.h
new file mode 100644
index 0000000..b653490
--- /dev/null
+++ b/src/macro/GAMMA_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header GAMMA_undefine.h
+ @date Oct 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef GAMMA_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+
diff --git a/src/macro/HAMADM_declare.h b/src/macro/HAMADM_declare.h
new file mode 100644
index 0000000..30a338c
--- /dev/null
+++ b/src/macro/HAMADM_declare.h
@@ -0,0 +1,42 @@
+/*@@
+ @header HAMADM_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate vacuum part of Hamiltonian
+ constraint
+
+ @enddesc
+@@*/
+
+#ifndef HAMADM_DECLARE
+#define HAMADM_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRRICCI_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRKK_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRK_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef HAMADM_HAMADM
+#define HAMADM_HAMADM hamadm_ham_adm
+
+/* Declare output variables */
+ REAL HAMADM_HAMADM
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef HAMADM_HAMADM
+#define HAMADM_HAMADM hamadm_ham_adm
+
+/* Declare output variables */
+ double HAMADM_HAMADM;
+
+#endif
+
+#endif
diff --git a/src/macro/HAMADM_guts.h b/src/macro/HAMADM_guts.h
new file mode 100644
index 0000000..667987f
--- /dev/null
+++ b/src/macro/HAMADM_guts.h
@@ -0,0 +1,34 @@
+/*@@
+ @header HAMADM_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the spacetime part of the
+ Hamiltonian Constraint. That is:
+
+ R - K^i_j K^j_i + trK^2
+
+ @enddesc
+@@*/
+
+#ifndef HAMADM_GUTS
+#define HAMADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRRICCI_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRKK_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRK_guts.h"
+
+#ifdef FCODE
+
+ HAMADM_HAMADM = TRRICCI_TRRICCI - TRKK_TRKK + TRK_TRK**2
+
+#endif
+
+#ifdef CCODE
+
+ HAMADM_HAMADM = TRRICCI_TRRICCI - TRKK_TRKK + TRK_TRK**2
+
+#endif
+
+#endif
+
diff --git a/src/macro/HAMADM_undefine.h b/src/macro/HAMADM_undefine.h
new file mode 100644
index 0000000..ee0638a
--- /dev/null
+++ b/src/macro/HAMADM_undefine.h
@@ -0,0 +1,18 @@
+/*@@
+ @header HAMADM_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef HAMADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRRICCI_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRKK_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRK_undefine.h"
+
+
+
+
+
diff --git a/src/macro/KK_declare.h b/src/macro/KK_declare.h
new file mode 100644
index 0000000..84699b6
--- /dev/null
+++ b/src/macro/KK_declare.h
@@ -0,0 +1,103 @@
+/*@@
+ @header KK_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate term K_{ik}K^{k}_{l}
+
+ Requires: Upper physical metric
+ Lower extrinsic curvature
+
+ Provides: Components of K_{ik}K^{k}_{l}
+
+ @enddesc
+@@*/
+
+#ifndef KK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef KK_HXX
+#define KK_HXX hxx(i,j,k)
+#undef KK_HXY
+#define KK_HXY hxy(i,j,k)
+#undef KK_HXZ
+#define KK_HXZ hxz(i,j,k)
+#undef KK_HYY
+#define KK_HYY hyy(i,j,k)
+#undef KK_HYZ
+#define KK_HYZ hyz(i,j,k)
+#undef KK_HZZ
+#define KK_HZZ hzz(i,j,k)
+
+/* Output variables */
+#undef KK_KKXX
+#define KK_KKXX KK11
+#undef KK_KKXY
+#define KK_KKXY KK12
+#undef KK_KKXZ
+#define KK_KKXZ KK13
+#undef KK_KKYY
+#define KK_KKYY KK22
+#undef KK_KKYZ
+#define KK_KKYZ KK23
+#undef KK_KKZZ
+#define KK_KKZZ KK33
+
+/* Declare output variables */
+ REAL KK_KKXX
+ REAL KK_KKXY
+ REAL KK_KKXZ
+ REAL KK_KKYY
+ REAL KK_KKYZ
+ REAL KK_KKZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef KK_HXX
+#define KK_HXX hxx[ijk]
+#undef KK_HXY
+#define KK_HXY hxy[ijk]
+#undef KK_HXZ
+#define KK_HXZ hxz[ijk]
+#undef KK_HYY
+#define KK_HYY hyy[ijk]
+#undef KK_HYZ
+#define KK_HYZ hyz[ijk]
+#undef KK_HZZ
+#define KK_HZZ hzz[ijk]
+
+/* Output variables */
+#undef KK_KKXX
+#define KK_KKXX KK11
+#undef KK_KKXY
+#define KK_KKXY KK12
+#undef KK_KKXZ
+#define KK_KKXZ KK13
+#undef KK_KKYY
+#define KK_KKYY KK22
+#undef KK_KKYZ
+#define KK_KKYZ KK23
+#undef KK_KKZZ
+#define KK_KKZZ KK33
+
+/* Declare output variables */
+double KK_KKXX;
+double KK_KKXY;
+double KK_KKXZ;
+double KK_KKYY;
+double KK_KKYZ;
+double KK_KKZZ;
+
+#endif
+
+#define KK_DECLARE
+
+#endif
diff --git a/src/macro/KK_guts.h b/src/macro/KK_guts.h
new file mode 100644
index 0000000..ec3ac83
--- /dev/null
+++ b/src/macro/KK_guts.h
@@ -0,0 +1,88 @@
+/*@@
+ @header KK_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate term K_{ik}K^{k}_{l}
+
+ The macro is defined in terms of standard variables in
+ KK_declare.h
+
+ Requires: Upper physical metric
+ Lower extrinsic curvature
+
+ Provides: Components of K_{ik}K^{k}_{l}
+
+ @enddesc
+@@*/
+
+#ifndef KK_GUTS
+#define KK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+
+#ifdef FCODE
+
+ KK_KKXX = 2*(UPPERMET_UYZ*KK_HXY*KK_HXZ + KK_HXX*(UPPERMET_UXY*KK_HXY +
+ &UPPERMET_UXZ*KK_HXZ)) + UPPERMET_UXX*KK_HXX*KK_HXX +
+ &UPPERMET_UYY*KK_HXY*KK_HXY + UPPERMET_UZZ*KK_HXZ*KK_HXZ
+
+ KK_KKXY = KK_HXY*(UPPERMET_UXX*KK_HXX + UPPERMET_UYY*KK_HYY) +
+ &UPPERMET_UZZ*KK_HXZ*KK_HYZ + UPPERMET_UXZ*(KK_HXY*KK_HXZ +
+ &KK_HXX*KK_HYZ) + UPPERMET_UYZ*(KK_HXZ*KK_HYY + KK_HXY*KK_HYZ) +
+ &UPPERMET_UXY*(KK_HXX*KK_HYY + KK_HXY*KK_HXY)
+
+ KK_KKXZ = UPPERMET_UYY*KK_HXY*KK_HYZ + UPPERMET_UXY*(KK_HXY*KK_HXZ +
+ &KK_HXX*KK_HYZ) + KK_HXZ*(UPPERMET_UXX*KK_HXX + UPPERMET_UZZ*KK_HZZ) +
+ &UPPERMET_UYZ*(KK_HXZ*KK_HYZ + KK_HXY*KK_HZZ) +
+ &UPPERMET_UXZ*(KK_HXX*KK_HZZ + KK_HXZ*KK_HXZ)
+
+ KK_KKYY = 2*(UPPERMET_UYZ*KK_HYY*KK_HYZ + KK_HXY*(UPPERMET_UXY*KK_HYY +
+ &UPPERMET_UXZ*KK_HYZ)) + UPPERMET_UXX*KK_HXY*KK_HXY +
+ &UPPERMET_UYY*KK_HYY*KK_HYY + UPPERMET_UZZ*KK_HYZ*KK_HYZ ;
+
+ KK_KKYZ = UPPERMET_UXX*KK_HXY*KK_HXZ + UPPERMET_UXY*(KK_HXZ*KK_HYY +
+ &KK_HXY*KK_HYZ) + KK_HYZ*(UPPERMET_UYY*KK_HYY + UPPERMET_UZZ*KK_HZZ) +
+ &UPPERMET_UXZ*(KK_HXZ*KK_HYZ + KK_HXY*KK_HZZ) +
+ &UPPERMET_UYZ*(KK_HYY*KK_HZZ + KK_HYZ*KK_HYZ)
+
+ KK_KKZZ = 2*(UPPERMET_UYZ*KK_HYZ*KK_HZZ + KK_HXZ*(UPPERMET_UXY*KK_HYZ +
+ &UPPERMET_UXZ*KK_HZZ)) + UPPERMET_UXX*KK_HXZ*KK_HXZ +
+ &UPPERMET_UYY*KK_HYZ*KK_HYZ + UPPERMET_UZZ*KK_HZZ*KK_HZZ
+
+#endif
+
+#ifdef CCODE
+
+KK_KKXX = 2*(UPPERMET_UYZ*KK_HXY*KK_HXZ + KK_HXX*(UPPERMET_UXY*KK_HXY +
+UPPERMET_UXZ*KK_HXZ)) + UPPERMET_UXX*KK_HXX*KK_HXX +
+UPPERMET_UYY*KK_HXY*KK_HXY + UPPERMET_UZZ*KK_HXZ*KK_HXZ;
+
+KK_KKXY = KK_HXY*(UPPERMET_UXX*KK_HXX + UPPERMET_UYY*KK_HYY) +
+UPPERMET_UZZ*KK_HXZ*KK_HYZ + UPPERMET_UXZ*(KK_HXY*KK_HXZ +
+KK_HXX*KK_HYZ) + UPPERMET_UYZ*(KK_HXZ*KK_HYY + KK_HXY*KK_HYZ) +
+UPPERMET_UXY*(KK_HXX*KK_HYY + KK_HXY*KK_HXY) ;
+
+KK_KKXZ = UPPERMET_UYY*KK_HXY*KK_HYZ + UPPERMET_UXY*(KK_HXY*KK_HXZ +
+KK_HXX*KK_HYZ) + KK_HXZ*(UPPERMET_UXX*KK_HXX + UPPERMET_UZZ*KK_HZZ) +
+UPPERMET_UYZ*(KK_HXZ*KK_HYZ + KK_HXY*KK_HZZ) +
+UPPERMET_UXZ*(KK_HXX*KK_HZZ + KK_HXZ*KK_HXZ) ;
+
+KK_KKYY = 2*(UPPERMET_UYZ*KK_HYY*KK_HYZ + KK_HXY*(UPPERMET_UXY*KK_HYY +
+UPPERMET_UXZ*KK_HYZ)) + UPPERMET_UXX*KK_HXY*KK_HXY +
+UPPERMET_UYY*KK_HYY*KK_HYY + UPPERMET_UZZ*KK_HYZ*KK_HYZ ;
+
+KK_KKYZ = UPPERMET_UXX*KK_HXY*KK_HXZ + UPPERMET_UXY*(KK_HXZ*KK_HYY +
+KK_HXY*KK_HYZ) + KK_HYZ*(UPPERMET_UYY*KK_HYY + UPPERMET_UZZ*KK_HZZ) +
+UPPERMET_UXZ*(KK_HXZ*KK_HYZ + KK_HXY*KK_HZZ) +
+UPPERMET_UYZ*(KK_HYY*KK_HZZ + KK_HYZ*KK_HYZ) ;
+
+KK_KKZZ = 2*(UPPERMET_UYZ*KK_HYZ*KK_HZZ + KK_HXZ*(UPPERMET_UXY*KK_HYZ +
+UPPERMET_UXZ*KK_HZZ)) + UPPERMET_UXX*KK_HXZ*KK_HXZ +
+UPPERMET_UYY*KK_HYZ*KK_HYZ + UPPERMET_UZZ*KK_HZZ*KK_HZZ ;
+
+#endif
+
+#endif
+
diff --git a/src/macro/KK_undefine.h b/src/macro/KK_undefine.h
new file mode 100644
index 0000000..1d02704
--- /dev/null
+++ b/src/macro/KK_undefine.h
@@ -0,0 +1,13 @@
+/*@@
+ @header KK_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef KK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+
+
diff --git a/src/macro/LIEG_declare.h b/src/macro/LIEG_declare.h
new file mode 100644
index 0000000..3f52f68
--- /dev/null
+++ b/src/macro/LIEG_declare.h
@@ -0,0 +1,110 @@
+/*@@
+ @header LIEG_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the Lie derivative of the lower
+ physical metric
+
+ @enddesc
+@@*/
+
+#ifndef LIEG_DECLARE
+#define LIEG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DB_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DG_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef LIEG_BX
+#define LIEG_BX betax(i,j,k)
+#undef LIEG_BY
+#define LIEG_BY betay(i,j,k)
+#undef LIEG_BZ
+#define LIEG_BZ betaz(i,j,k)
+#undef LIEG_GXX
+#define LIEG_GXX gxx(i,j,k)
+#undef LIEG_GXY
+#define LIEG_GXY gxy(i,j,k)
+#undef LIEG_GXZ
+#define LIEG_GXZ gxz(i,j,k)
+#undef LIEG_GYY
+#define LIEG_GYY gyy(i,j,k)
+#undef LIEG_GYZ
+#define LIEG_GYZ gyz(i,j,k)
+#undef LIEG_GZZ
+#define LIEG_GZZ gzz(i,j,k)
+
+/* Output variables */
+#undef LIEG_LGXX
+#define LIEG_LGXX lieg_lgxx
+#undef LIEG_LGXY
+#define LIEG_LGXY lieg_lgxy
+#undef LIEG_LGXZ
+#define LIEG_LGXZ lieg_lgxz
+#undef LIEG_LGYY
+#define LIEG_LGYY lieg_lgyy
+#undef LIEG_LGYZ
+#define LIEG_LGYZ lieg_lgyz
+#undef LIEG_LGZZ
+#define LIEG_LGZZ lieg_lgzz
+
+/* Declare output variables */
+ REAL LIEG_LGXX
+ REAL LIEG_LGXY
+ REAL LIEG_LGXZ
+ REAL LIEG_LGYY
+ REAL LIEG_LGYZ
+ REAL LIEG_LGZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef LIEG_BX
+#define LIEG_BX betax[ijk]
+#undef LIEG_BY
+#define LIEG_BY betay[ijk]
+#undef LIEG_BZ
+#define LIEG_BZ betaz[ijk]
+#undef LIEG_GXX
+#define LIEG_GXX gxx[ijk]
+#undef LIEG_GXY
+#define LIEG_GXY gxy[ijk]
+#undef LIEG_GXZ
+#define LIEG_GXZ gxz[ijk]
+#undef LIEG_GYY
+#define LIEG_GYY gyy[ijk]
+#undef LIEG_GYZ
+#define LIEG_GYZ gyz[ijk]
+#undef LIEG_GZZ
+#define LIEG_GZZ gzz[ijk]
+
+/* Output variables */
+#undef LIEG_LGXX
+#define LIEG_LGXX lieg_lgxx
+#undef LIEG_LGXY
+#define LIEG_LGXY lieg_lgxy
+#undef LIEG_LGXZ
+#define LIEG_LGXZ lieg_lgxz
+#undef LIEG_LGYY
+#define LIEG_LGYY lieg_lgyy
+#undef LIEG_LGYZ
+#define LIEG_LGYZ lieg_lgyz
+#undef LIEG_LGZZ
+#define LIEG_LGZZ lieg_lgzz
+
+/* Declare output variables */
+ double LIEG_LGXX;
+ double LIEG_LGXY;
+ double LIEG_LGXZ;
+ double LIEG_LGYY;
+ double LIEG_LGYZ;
+ double LIEG_LGZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/LIEG_guts.h b/src/macro/LIEG_guts.h
new file mode 100644
index 0000000..a769079
--- /dev/null
+++ b/src/macro/LIEG_guts.h
@@ -0,0 +1,80 @@
+/*@@
+ @header LIEG_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the Lie derivative of the lower
+ conformal metric
+
+ @enddesc
+@@*/
+
+#ifndef LIEG_GUTS
+#define LIEG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DB_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DG_guts.h"
+
+#ifdef FCODE
+
+ LIEG_LGXX = DXDCG_DXDCGXX*LIEG_BX + DYDCG_DYDCGXX*LIEG_BY +
+ & DZDCG_DZDCGXX*LIEG_BZ + 2*(DXDB_DXDBX*LIEG_GXX + DXDB_DXDBY*LIEG_GXY +
+ & DXDB_DXDBZ*LIEG_GXZ)
+
+ LIEG_LGXY = DXDCG_DXDCGXY*LIEG_BX + DYDCG_DYDCGXY*LIEG_BY +
+ & DZDCG_DZDCGXY*LIEG_BZ + DYDB_DYDBX*LIEG_GXX + (DXDB_DXDBX +
+ & DYDB_DYDBY)*LIEG_GXY + DYDB_DYDBZ*LIEG_GXZ + DXDB_DXDBY*LIEG_GYY +
+ & DXDB_DXDBZ*LIEG_GYZ
+
+ LIEG_LGXZ = DXDCG_DXDCGXZ*LIEG_BX + DYDCG_DYDCGXZ*LIEG_BY +
+ & DZDCG_DZDCGXZ*LIEG_BZ + DZDB_DZDBX*LIEG_GXX + DZDB_DZDBY*LIEG_GXY +
+ & (DXDB_DXDBX + DZDB_DZDBZ)*LIEG_GXZ + DXDB_DXDBY*LIEG_GYZ +
+ & DXDB_DXDBZ*LIEG_GZZ
+
+ LIEG_LGYY = DXDCG_DXDCGYY*LIEG_BX +DYDCG_DYDCGYY*LIEG_BY +
+ & DZDCG_DZDCGYY*LIEG_BZ + 2*(DYDB_DYDBX*LIEG_GXY + DYDB_DYDBY*LIEG_GYY +
+ & DYDB_DYDBZ*LIEG_GYZ)
+
+ LIEG_LGYZ = DXDCG_DXDCGYZ*LIEG_BX + DYDCG_DYDCGYZ*LIEG_BY +
+ & DZDCG_DZDCGYZ*LIEG_BZ + DZDB_DZDBX*LIEG_GXY + DYDB_DYDBX*LIEG_GXZ +
+ & DZDB_DZDBY*LIEG_GYY + (DYDB_DYDBY + DZDB_DZDBZ)*LIEG_GYZ +
+ & DYDB_DYDBZ*LIEG_GZZ
+
+ LIEG_LGZZ = DXDCG_DXDCGZZ*LIEG_BX + DYDCG_DYDCGZZ*LIEG_BY +
+ &DZDCG_DZDCGZZ*LIEG_BZ + 2*(DZDB_DZDBX*LIEG_GXZ + DZDB_DZDBY*LIEG_GYZ +
+ &DZDB_DZDBZ*LIEG_GZZ)
+
+#endif
+
+#ifdef CCODE
+
+ LIEG_LGXX = DXDCG_DXDCGXX*LIEG_BX + DYDCG_DYDCGXX*LIEG_BY +
+ DZDCG_DZDCGXX*LIEG_BZ + 2*(DXDB_DXDBX*LIEG_GXX + DXDB_DXDBY*LIEG_GXY +
+ DXDB_DXDBZ*LIEG_GZ) ;
+
+ LIEG_LGXY = DXDCG_DXDCGXY*LIEG_BX + DYDCG_DYDCGXY*LIEG_BY +
+ DZDCG_DZDCGXY*LIEG_BZ + CDYDB_CDYDBX*LIEG_GXX + (DXDB_DXDBX +
+ DYDB_DYDBY)*LIEG_GXY + DYDB_DYDBZ*LIEG_GXZ+ DXDB_DXDBY*LIEG_GYY +
+ DXDB_DXDBZ*LIEG_GYZ ;
+
+ LIEG_LGXZ = DXDCG_DXDCGXZ*LIEG_BX + DYDCG_DYDCGXZ*LIEG_BY +
+ DZDCG_DZDCGXZ*LIEG_BZ + DZDB_DZDBX*LIEG_GXX + DZDB_DZDBY*LIEG_GXY +
+ (DXDB_DXDBX + DZDB_DZDBZ)*LIEG_GXZ+ DXDB_DXDBY*LIEG_GYZ +
+ DXDB_DXDBZ*LIEG_GZZ ;
+
+ LIEG_LGYY = DXDCG_DXDCGYY*LIEG_BX + DYDCG_DYDCGYY*LIEG_BY +
+ DZDCG_DZDCGYY*LIEG_BZ + 2*(DYDB_DYDBX*LIEG_GXY + DYDB_DYDBY*LIEG_GYY +
+ DYDB_DYDBZ*LIEG_GYZ) ;
+
+ LIEG_LGYZ = DXDCG_DXDCGYZ*LIEG_BX + DYDCG_DYDCGYZ*LIEG_BY +
+ DZDCG_DZDCGYZ*LIEG_BZ + DZDB_DZDBX*LIEG_GXY + DYDB_DYDBX*LIEG_GXZ+
+ DZDB_DZDBY*LIEG_GYY + (DYDB_DYDBY + DZDB_DZDBZ)*LIEG_GYZ +
+ DYDB_DYDBZ*LIEG_GZZ ;
+
+ LIEG_LGZZ = DXDCG_DXDCGZZ*LIEG_BX + DYDCG_DYDCGZZ*LIEG_BY +
+ DZDCG_DZDCGZZ*LIEG_BZ + 2*(DZDB_DZDBX*LIEG_GXZ + DZDB_DZDBY*LIEG_GYZ +
+ DZDB_DZDBZ*LIEG_GZZ) ;
+
+#endif
+
+#endif
diff --git a/src/macro/LIEG_undefine.h b/src/macro/LIEG_undefine.h
new file mode 100644
index 0000000..99bf94a
--- /dev/null
+++ b/src/macro/LIEG_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header LIEG_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef LIEG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DB_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DG_undefine.h"
+
+
diff --git a/src/macro/LIEK_declare.h b/src/macro/LIEK_declare.h
new file mode 100644
index 0000000..7733658
--- /dev/null
+++ b/src/macro/LIEK_declare.h
@@ -0,0 +1,110 @@
+/*@@
+ @header LIEK_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the Lie derivative of the lower
+ physical metric
+
+ @enddesc
+@@*/
+
+#ifndef LIEK_DECLARE
+#define LIEK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DB_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DK_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef LIEK_BX
+#define LIEK_BX betax(i,j,k)
+#undef LIEK_BY
+#define LIEK_BY betay(i,j,k)
+#undef LIEK_BZ
+#define LIEK_BZ betaz(i,j,k)
+#undef LIEK_KXX
+#define LIEK_KXX hxx(i,j,k)
+#undef LIEK_KXY
+#define LIEK_KXY hxy(i,j,k)
+#undef LIEK_KXZ
+#define LIEK_KXZ hxz(i,j,k)
+#undef LIEK_KYY
+#define LIEK_KYY hyy(i,j,k)
+#undef LIEK_KYZ
+#define LIEK_KYZ hyz(i,j,k)
+#undef LIEK_KZZ
+#define LIEK_KZZ hzz(i,j,k)
+
+/* Output variables */
+#undef LIEK_LKXX
+#define LIEK_LKXX liek_lkxx
+#undef LIEK_LKXY
+#define LIEK_LKXY liek_lkxy
+#undef LIEK_LKXZ
+#define LIEK_LKXZ liek_lkxz
+#undef LIEK_LKYY
+#define LIEK_LKYY liek_lkyy
+#undef LIEK_LKYZ
+#define LIEK_LKYZ liek_lkyz
+#undef LIEK_LKZZ
+#define LIEK_LKZZ liek_lkzz
+
+/* Declare output variables */
+ REAL LIEK_LKXX
+ REAL LIEK_LKXY
+ REAL LIEK_LKXZ
+ REAL LIEK_LKYY
+ REAL LIEK_LKYZ
+ REAL LIEK_LKZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef LIEK_BX
+#define LIEK_BX betax[ijk]
+#undef LIEK_BY
+#define LIEK_BY betay[ijk]
+#undef LIEK_BZ
+#define LIEK_BZ betaz[ijk]
+#undef LIEK_KXX
+#define LIEK_KXX hxx[ijk]
+#undef LIEK_KXY
+#define LIEK_KXY hxy[ijk]
+#undef LIEK_KXZ
+#define LIEK_KXZ hxz[ijk]
+#undef LIEK_KYY
+#define LIEK_KYY hyy[ijk]
+#undef LIEK_KYZ
+#define LIEK_KYZ hyz[ijk]
+#undef LIEK_KZZ
+#define LIEK_KZZ hzz[ijk]
+
+/* Output variables */
+#undef LIEK_LKXX
+#define LIEK_LKXX liek_lkxx
+#undef LIEK_LKXY
+#define LIEK_LKXY liek_lkxy
+#undef LIEK_LKXZ
+#define LIEK_LKXZ liek_lkxz
+#undef LIEK_LKYY
+#define LIEK_LKYY liek_lkyy
+#undef LIEK_LKYZ
+#define LIEK_LKYZ liek_lkyz
+#undef LIEK_LKZZ
+#define LIEK_LKZZ liek_lkzz
+
+/* Declare output variables */
+ double LIEK_LKXX;
+ double LIEK_LKXY;
+ double LIEK_LKXZ;
+ double LIEK_LKYY;
+ double LIEK_LKYZ;
+ double LIEK_LKZZ;
+
+#endif
+
+#endif
diff --git a/src/macro/LIEK_guts.h b/src/macro/LIEK_guts.h
new file mode 100644
index 0000000..4f35250
--- /dev/null
+++ b/src/macro/LIEK_guts.h
@@ -0,0 +1,80 @@
+/*@@
+ @header LIEK_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the Lie derivative of the lower
+ extrinsic curvature along the shift vector
+
+ @enddesc
+@@*/
+
+#ifndef LIEK_GUTS
+#define LIEK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DB_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DK_guts.h"
+
+#ifdef FCODE
+
+ LIEK_LKXX = DXDK_DXDKXX*LIEK_BX + DYDK_DYDKXX*LIEK_BY +
+ &DZDK_DZDKXX*LIEK_BZ + 2*(DXDB_DXDBX*LIEK_KXX + DXDB_DXDBY*LIEK_KXY +
+ &DXDB_DXDBZ*LIEK_KXZ)
+
+ LIEK_LKXY = DXDK_DXDKXY*LIEK_BX + DYDK_DYDKXY*LIEK_BY +
+ &DZDK_DZDKXY*LIEK_BZ + DYDB_DYDBX*LIEK_KXX + (DXDB_DXDBX +
+ &DYDB_DYDBY)*LIEK_KXY + DYDB_DYDBZ*LIEK_KXZ + DXDB_DXDBY*LIEK_KYY +
+ &DXDB_DXDBZ*LIEK_KYZ
+
+ LIEK_LKXZ = DXDK_DXDKXZ*LIEK_BX + DYDK_DYDKXZ*LIEK_BY +
+ &DZDK_DZDKXZ*LIEK_BZ + DZDB_DZDBX*LIEK_KXX + DZDB_DZDBY*LIEK_KXY +
+ &(DXDB_DXDBX + DZDB_DZDBZ)*LIEK_KXZ + DXDB_DXDBY*LIEK_KYZ +
+ &DXDB_DXDBZ*LIEK_KZZ
+
+ LIEK_LKYY = DXDK_DXDKYY*LIEK_BX + DYDK_DYDKYY*LIEK_BY +
+ &DZDK_DZDKYY*LIEK_BZ + 2*(DYDB_DYDBX*LIEK_KXY + DYDB_DYDBY*LIEK_KYY +
+ &DYDB_DYDBZ*LIEK_KYZ)
+
+ LIEK_LKYZ = DXDK_DXDKYZ*LIEK_BX + DYDK_DYDKYZ*LIEK_BY +
+ &DZDK_DZDKYZ*LIEK_BZ + DZDB_DZDBX*LIEK_KXY + DYDB_DYDBX*LIEK_KXZ +
+ &DZDB_DZDBY*LIEK_KYY + (DYDB_DYDBY + DZDB_DZDBZ)*LIEK_KYZ +
+ &DYDB_DYDBZ*LIEK_KZZ
+
+ LIEK_LKZZ = DXDK_DXDKZZ*LIEK_BX + DYDK_DYDKZZ*LIEK_BY +
+ &DZDK_DZDKZZ*LIEK_BZ + 2*(DZDB_DZDBX*LIEK_KXZ + DZDB_DZDBY*LIEK_KYZ +
+ &DZDB_DZDBZ*LIEK_KZZ)
+
+#endif
+
+#ifdef CCODE
+
+ LIEK_LKXX = DXDK_DXDKXX*LIEK_BX + DYDK_DYDKXX*LIEK_BY +
+ DZDK_DZDKXX*LIEK_BZ + 2*(DXDB_DXDBX*LIEK_KXX + DXDB_DXDBY*LIEK_KXY +
+ DXDB_DXDBZ*LIEK_KXZ) ;
+
+ LIEK_LKXY = DXDK_DXDKXY*LIEK_BX + DYDK_DYDKXY*LIEK_BY +
+ DZDK_DZDKXY*LIEK_BZ + DYDB_DYDBX*LIEK_KXX + (DXDB_DXDBX +
+ DYDB_DYDBY)*LIEK_KXY + DYDB_DYDBZ*LIEK_KXZ + DXDB_DXDBY*LIEK_KYY +
+ DXDB_DXDBZ*LIEK_KYZ ;
+
+ LIEK_LKXZ = DXDK_DXDKXZ*LIEK_BX + DYDK_DYDKXZ*LIEK_BY +
+ DZDK_DZDKXZ*LIEK_BZ + DZDB_DZDBX*LIEK_KXX + DZDB_DZDBY*LIEK_KXY +
+ (DXDB_DXDBX + DZDB_DZDBZ)*LIEK_KXZ + DXDB_DXDBY*LIEK_KYZ +
+ DXDB_DXDBZ*LIEK_KZZ ;
+
+ LIEK_LKYY = DXDK_DXDKYY*LIEK_BX + DYDK_DYDKYY*LIEK_BY +
+ DZDK_DZDKYY*LIEK_BZ + 2*(DYDB_DYDBX*LIEK_KXY + DYDB_DYDBY*LIEK_KYY +
+ DYDB_DYDBZ*LIEK_KYZ) ;
+
+ LIEK_LKYZ = DXDK_DXDKYZ*LIEK_BX + DYDK_DYDKYZ*LIEK_BY +
+ DZDK_DZDKYZ*LIEK_BZ + DZDB_DZDB1*LIEK_KXY + DYDB_DYDBX*LIEK_KXZ +
+ DZDB_DZDBY*LIEK_KYY + (DYDB_DYDBY + DZDB_DZDBZ)*LIEK_KYZ +
+ DYDB_DYDBZ*LIEK_KZZ ;
+
+ LIEK_LKZZ = DXDK_DXDKZZ*LIEK_BX + DYDK_DYDKZZ*LIEK_BY +
+ DZDK_DZDKZZ*LIEK_BZ + 2*(DZDB_DZDBX*LIEK_KXZ + DZDB_DZDBY*LIEK_KYZ +
+ DZDB_DZDBZ*LIEK_KZZ) ;
+
+#endif
+
+#endif
diff --git a/src/macro/LIEK_undefine.h b/src/macro/LIEK_undefine.h
new file mode 100644
index 0000000..d733b27
--- /dev/null
+++ b/src/macro/LIEK_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header LIEK_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef LIEK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DB_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DK_undefine.h"
+
+
diff --git a/src/macro/MOMXADM_declare.h b/src/macro/MOMXADM_declare.h
new file mode 100644
index 0000000..21e9627
--- /dev/null
+++ b/src/macro/MOMXADM_declare.h
@@ -0,0 +1,41 @@
+/*@@
+ @header MOMXADM_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate vacuum part of
+ x-Momentum constraint
+
+ @enddesc
+@@*/
+
+#ifndef MOMXADM_DECLARE
+#define MOMXADM_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef MOMXADM_MOMXADM
+#define MOMXADM_MOMXADM momxadm_momxadm
+
+/* Declare output variables */
+ REAL MOMXADM_MOMXADM
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef MOMXADM_MOMXADM
+#define MOMXADM_MOMXADM momxadm_momxadm
+
+/* Declare output variables */
+ double MOMXADM_MOMXADM;
+
+#endif
+
+#endif
diff --git a/src/macro/MOMXADM_guts.h b/src/macro/MOMXADM_guts.h
new file mode 100644
index 0000000..a497b41
--- /dev/null
+++ b/src/macro/MOMXADM_guts.h
@@ -0,0 +1,41 @@
+/*@@
+ @header MOMXADM_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the spacetime part of the
+ x-Momentum Constraint. That is:
+
+ Del_j K_x^j - Del_x trK
+
+ @enddesc
+@@*/
+
+#ifndef MOMXADM_GUTS
+#define MOMXADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_guts.h"
+
+#ifdef FCODE
+
+ MOMXADM_MOMXADM = (-CDXCDK_CDXCDKXY + CDYCDK_CDYCDKXX)*UPPERMET_UXY
+ & + (-CDXCDK_CDXCDKXZ + CDZCDK_CDZCDKXX)*UPPERMET_UXZ +
+ & (-CDXCDK_CDXCDKYY + CDYCDK_CDYCDKXY)*UPPERMET_UYY +
+ & (-2*CDXCDK_CDXCDKYZ + CDYCDK_CDYCDKXZ + CDZCDK_CDZCDKXY)*
+ & UPPERMET_UYZ + (-CDXCDK_CDXCDKZZ + CDZCDK_CDZCDKXZ)*UPPERMET_UZZ
+
+#endif
+
+#ifdef CCODE
+
+ MOMXADM_MOMXADM = (-CDXCDK_CDXCDKXY + CDYCDK_CDYCDKXX)*UPPERMET_UXY
+ + (-CDXCDK_CDXCDKXZ + CDZCDK_CDZCDKXX)*UPPERMET_UXZ +
+ (-CDXCDK_CDXCDKYY + CDYCDK_CDYCDKXY)*UPPERMET_UYY +
+ (-2*CDXCDK_CDXCDKYZ + CDYCDK_CDYCDKXZ + CDZCDK_CDZCDKXY)*
+ UPPERMET_UYZ + (-CDXCDK_CDXCDKZZ + CDZCDK_CDZCDKXZ)*UPPERMET_UZZ;
+
+#endif
+
+#endif
+
diff --git a/src/macro/MOMXADM_undefine.h b/src/macro/MOMXADM_undefine.h
new file mode 100644
index 0000000..45309ec
--- /dev/null
+++ b/src/macro/MOMXADM_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header MOMXADM_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef MOMXADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_undefine.h"
+
+
+
+
+
diff --git a/src/macro/MOMYADM_declare.h b/src/macro/MOMYADM_declare.h
new file mode 100644
index 0000000..73682a4
--- /dev/null
+++ b/src/macro/MOMYADM_declare.h
@@ -0,0 +1,41 @@
+/*@@
+ @header MOMYADM_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate vacuum part of
+ y-Momentum constraint
+
+ @enddesc
+@@*/
+
+#ifndef MOMYADM_DECLARE
+#define MOMYADM_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef MOMYADM_MOMYADM
+#define MOMYADM_MOMYADM momyadm_momyadm
+
+/* Declare output variables */
+ REAL MOMYADM_MOMYADM
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef MOMYADM_MOMYADM
+#define MOMYADM_MOMYADM momyadm_momyadm
+
+/* Declare output variables */
+ double MOMYADM_MOMYADM;
+
+#endif
+
+#endif
diff --git a/src/macro/MOMYADM_guts.h b/src/macro/MOMYADM_guts.h
new file mode 100644
index 0000000..00e246d
--- /dev/null
+++ b/src/macro/MOMYADM_guts.h
@@ -0,0 +1,41 @@
+/*@@
+ @header MOMYADM_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the spacetime part of the
+ y-Momentum Constraint. That is:
+
+ Del_j K_y^j - Del_y trK
+
+ @enddesc
+@@*/
+
+#ifndef MOMYADM_GUTS
+#define MOMYADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_guts.h"
+
+#ifdef FCODE
+
+ MOMYADM_MOMYADM = (CDXCDK_CDXCDKXY - CDYCDK_CDYCDKXX)*UPPERMET_UXX
+ & + (CDXCDK_CDXCDKYY - CDYCDK_CDYCDKXY)*UPPERMET_UXY +
+ & (CDXCDK_CDXCDKYZ - 2*CDYCDK_CDYCDKXZ + CDZCDK_CDZCDKXY)*UPPERMET_UXZ +
+ & (-CDYCDK_CDYCDKYZ + CDZCDK_CDZCDKYY)*UPPERMET_UYZ +
+ & (-CDYCDK_CDYCDKZZ + CDZCDK_CDZCDKYZ)*UPPERMET_UZZ
+
+#endif
+
+#ifdef CCODE
+
+ MOMYADM_MOMYADM = (CDXCDK_CDXCDKXY - CDYCDK_CDYCDKXX)*UPPERMET_UXX
+ + (CDXCDK_CDXCDKYY - CDYCDK_CDYCDKXY)*UPPERMET_UXY +
+ (CDXCDK_CDXCDKYZ - 2*CDYCDK_CDYCDKXZ + CDZCDK_CDZCDKXY)*UPPERMET_UXZ +
+ (-CDYCDK_CDYCDKYZ + CDZCDK_CDZCDKYY)*UPPERMET_UYZ +
+ (-CDYCDK_CDYCDKZZ + CDZCDK_CDZCDKYZ)*UPPERMET_UZZ;
+
+#endif
+
+#endif
+
diff --git a/src/macro/MOMYADM_undefine.h b/src/macro/MOMYADM_undefine.h
new file mode 100644
index 0000000..815bc15
--- /dev/null
+++ b/src/macro/MOMYADM_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header MOMYADM_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef MOMYADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_undefine.h"
+
+
+
+
+
diff --git a/src/macro/MOMZADM_declare.h b/src/macro/MOMZADM_declare.h
new file mode 100644
index 0000000..cc91fb2
--- /dev/null
+++ b/src/macro/MOMZADM_declare.h
@@ -0,0 +1,41 @@
+/*@@
+ @header MOMZADM_declare.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate vacuum part of
+ z-Momentum constraint
+
+ @enddesc
+@@*/
+
+#ifndef MOMZADM_DECLARE
+#define MOMZADM_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef MOMZADM_MOMZADM
+#define MOMZADM_MOMZADM momzadm_momzadm
+
+/* Declare output variables */
+ REAL MOMZADM_MOMZADM
+
+#endif
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef MOMZADM_MOMZADM
+#define MOMZADM_MOMZADM momzadm_momzadm
+
+/* Declare output variables */
+ double MOMZADM_MOMZADM;
+
+#endif
+
+#endif
diff --git a/src/macro/MOMZADM_guts.h b/src/macro/MOMZADM_guts.h
new file mode 100644
index 0000000..d846cef
--- /dev/null
+++ b/src/macro/MOMZADM_guts.h
@@ -0,0 +1,39 @@
+/*@@
+ @header MOMZADM_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the spacetime part of the
+ z-Momentum Constraint. That is:
+
+ Del_j K_z^j - Del_z trK
+
+ @enddesc
+@@*/
+
+#ifndef MOMZADM_GUTS
+#define MOMZADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_guts.h"
+
+#ifdef FCODE
+
+ MOMZADM_MOMZADM = (CDXCDK_CDXCDKXZ - CDZCDK_CDZCDKXX)*UPPERMET_UXX +
+ & (CDXCDK_CDXCDKYZ + CDYCDK_CDYCDKXZ - 2*CDZCDK_CDZCDKXY)*UPPERMET_UXY +
+ & (CDXCDK_CDXCDKZZ - CDZCDK_CDZCDKXZ)*UPPERMET_UXZ + (CDYCDK_CDYCDKYZ -
+ & CDZCDK_CDZCDKYY)*UPPERMET_UYY + (CDYCDK_CDYCDKZZ - CDZCDK_CDZCDKYZ)*UPPERMET_UYZ
+
+#endif
+
+#ifdef CCODE
+
+ MOMZADM_MOMZADM = (CDXCDK_CDXCDKXZ - CDZCDK_CDZCDKXX)*UPPERMET_UXX +
+ (CDXCDK_CDXCDKYZ + CDYCDK_CDYCDKXZ - 2*CDZCDK_CDZCDKXY)*UPPERMET_UXY +
+ (CDXCDK_CDXCDKZZ - CDZCDK_CDZCDKXZ)*UPPERMET_UXZ + (CDYCDK_CDYCDKYZ -
+ CDZCDK_CDZCDKYY)*UPPERMET_UYY + (CDYCDK_CDYCDKZZ - CDZCDK_CDZCDKYZ)*UPPERMET_UYZ;
+
+#endif
+
+#endif
+
diff --git a/src/macro/MOMZADM_undefine.h b/src/macro/MOMZADM_undefine.h
new file mode 100644
index 0000000..6099bc1
--- /dev/null
+++ b/src/macro/MOMZADM_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header MOMZADM_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef MOMZADM_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDK_undefine.h"
+
+
+
+
+
diff --git a/src/macro/NABA_declare.h b/src/macro/NABA_declare.h
new file mode 100644
index 0000000..9cebbe6
--- /dev/null
+++ b/src/macro/NABA_declare.h
@@ -0,0 +1,36 @@
+/*@@
+ @header NABA_declare.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the nabla operator acting on the lapse
+
+ That is alpha_i^i
+ @enddesc
+@@*/
+
+#ifndef NABA_DECLARE
+#define NABA_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDCDA_declare.h"
+
+/* Output variables */
+#undef NABA_NABA
+#define NABA_NABA naba_naba
+
+#ifdef FCODE
+
+/* Declare output variables */
+ REAL NABA_NABA
+
+#endif
+
+#ifdef CCODE
+
+/* Declare output variables */
+ double NABA_NABA;
+
+#endif
+
+#endif
diff --git a/src/macro/NABA_guts.h b/src/macro/NABA_guts.h
new file mode 100644
index 0000000..ad44638
--- /dev/null
+++ b/src/macro/NABA_guts.h
@@ -0,0 +1,36 @@
+/*@@
+ @header NABA_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the nabla operator acting on the lapse
+
+ That is alpha_i^i
+
+ @enddesc
+@@*/
+
+#ifndef NABA_GUTS
+#define NABA_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDCDA_guts.h"
+
+#ifdef FCODE
+
+ NABA_NABA = UPPERMET_UXX*CDCDA_CDXXDA+UPPERMET_UYY*CDCDA_CDYYDA
+ & +UPPERMET_UZZ*CDCDA_CDZZDA+2*(UPPERMET_UXY*CDCDA_CDXYDA+UPPERMET_UXZ*CDCDA_CDXZDA
+ & +UPPERMET_UYZ*CDCDA_CDYZDA)
+
+#endif
+
+#ifdef CCODE
+
+ NABA_NABA = UPPERMET_UXX*CDCDA_CDXXDA+UPPERMET_UYY*CDCDA_CDYYDA
+ +UPPERMET_UZZ*CDCDA_CDZZDA+2*(UPPERMET_UXY*CDCDA_CDXYDA+UPPERMET_UXZ*CDCDA_CDXZDA
+ +UPPERMET_UYZ*CDCDA_CDYZDA);
+
+#endif
+
+#endif
+
diff --git a/src/macro/NABA_undefine.h b/src/macro/NABA_undefine.h
new file mode 100644
index 0000000..8081b5d
--- /dev/null
+++ b/src/macro/NABA_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header NABA_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef NABA_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CDCDA_undefine.h"
+
+
diff --git a/src/macro/RICCI_declare.h b/src/macro/RICCI_declare.h
new file mode 100644
index 0000000..84c68ee
--- /dev/null
+++ b/src/macro/RICCI_declare.h
@@ -0,0 +1,80 @@
+/*@@
+ @header RICCI_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the components of the Ricci tensor.
+
+ Requires: Second derivatives of physical metric
+ Christoffel symbols of first kind
+ Christoffel symbols of second kind
+ Upper physical metric
+
+ Provides: Components of the physical Ricci tensor
+
+ @enddesc
+@@*/
+
+#ifndef RICCI_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR1_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef RICCI_RXX
+#define RICCI_RXX ricci_R11
+#undef RICCI_RXY
+#define RICCI_RXY ricci_R12
+#undef RICCI_RXZ
+#define RICCI_RXZ ricci_R13
+#undef RICCI_RYY
+#define RICCI_RYY ricci_R22
+#undef RICCI_RYZ
+#define RICCI_RYZ ricci_R23
+#undef RICCI_RZZ
+#define RICCI_RZZ ricci_R33
+
+/* Declare output variables */
+ REAL RICCI_RXX
+ REAL RICCI_RXY
+ REAL RICCI_RXZ
+ REAL RICCI_RYY
+ REAL RICCI_RYZ
+ REAL RICCI_RZZ
+
+#endif
+
+#ifdef CCODE
+
+/* Output variables */
+#undef RICCI_RXX
+#define RICCI_RXX ricci_R11
+#undef RICCI_RXY
+#define RICCI_RXY ricci_R12
+#undef RICCI_RXZ
+#define RICCI_RXZ ricci_R13
+#undef RICCI_RYY
+#define RICCI_RYY ricci_R22
+#undef RICCI_RYZ
+#define RICCI_RYZ ricci_R23
+#undef RICCI_RZZ
+#define RICCI_RZZ ricci_R33
+
+/* Declare output variables */
+double RICCI_RXX;
+double RICCI_RXY;
+double RICCI_RXZ;
+double RICCI_RYY;
+double RICCI_RYZ;
+double RICCI_RZZ;
+
+#endif
+
+#define RICCI_DECLARE
+
+#endif
diff --git a/src/macro/RICCI_guts.h b/src/macro/RICCI_guts.h
new file mode 100644
index 0000000..03f7321
--- /dev/null
+++ b/src/macro/RICCI_guts.h
@@ -0,0 +1,188 @@
+/*@@
+ @header RICCI_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the components of the Ricci tensor.
+
+ Requires: Second derivatives of physical metric
+ Christoffel symbols of first kind
+ Christoffel symbols of second kind
+ Upper physical metric
+
+ Provides: Components of the physical Ricci tensor
+
+ @enddesc
+@@*/
+
+#ifndef RICCI_GUTS
+#define RICCI_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR1_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_guts.h"
+
+#ifdef FCODE
+
+ RICCI_RXX = (DXYDG_DXYDGXY+(-DXXDG_DXXDGYY-DYYDG_DYYDGXX)/2 -
+ & CHR1_XYY*CHR2_XXX +CHR1_XXY*CHR2_XXY-CHR1_YYY*CHR2_YXX +
+ & CHR1_YXY*CHR2_YXY - CHR1_ZYY*CHR2_ZXX +
+ & CHR1_ZXY*CHR2_ZXY)*UPPERMET_UYY + (-DXXDG_DXXDGYZ + DXYDG_DXYDGXZ +
+ & DXZDG_DXZDGXY - DYZDG_DYZDGXX - 2*(CHR1_YYZ*CHR2_YXX +
+ & CHR1_ZYZ*CHR2_ZXX) + 2*(-(CHR1_XYZ*CHR2_XXX) + CHR1_XXZ*CHR2_XXY +
+ & CHR1_YXZ*CHR2_YXY + CHR1_ZXZ*CHR2_ZXY))*UPPERMET_UYZ + (DXZDG_DXZDGXZ
+ & + (-DXXDG_DXXDGZZ - DZZDG_DZZDGXX)/2 - CHR1_XZZ*CHR2_XXX +
+ & CHR1_XXZ*CHR2_XXZ - CHR1_YZZ*CHR2_YXX + CHR1_YXZ*CHR2_YXZ -
+ & CHR1_ZZZ*CHR2_ZXX + CHR1_ZXZ*CHR2_ZXZ)*UPPERMET_UZZ
+
+ RICCI_RXY = (-DXYDG_DXYDGXY + (DXXDG_DXXDGYY + DYYDG_DYYDGXX)/2 +
+ & CHR1_XYY*CHR2_XXX - CHR1_XXY*CHR2_XXY + CHR1_YYY*CHR2_YXX -
+ & CHR1_YXY*CHR2_YXY + CHR1_ZYY*CHR2_ZXX -
+ & CHR1_ZXY*CHR2_ZXY)*UPPERMET_UXY + ((DXXDG_DXXDGYZ - DXYDG_DXYDGXZ -
+ & DXZDG_DXZDGXY + DYZDG_DYZDGXX)/2 + CHR1_XYZ*CHR2_XXX -
+ & CHR1_XXZ*CHR2_XXY + CHR1_YYZ*CHR2_YXX - CHR1_YXZ*CHR2_YXY +
+ & CHR1_ZYZ*CHR2_ZXX - CHR1_ZXZ*CHR2_ZXY)*UPPERMET_UXZ +
+ & ((-DXYDG_DXYDGYZ + DXZDG_DXZDGYY + DYYDG_DYYDGXZ - DYZDG_DYZDGXY)/2 -
+ & CHR1_XYZ*CHR2_XXY + CHR1_XYY*CHR2_XXZ - CHR1_YYZ*CHR2_YXY +
+ & CHR1_YYY*CHR2_YXZ - CHR1_ZYZ*CHR2_ZXY +
+ & CHR1_ZYY*CHR2_ZXZ)*UPPERMET_UYZ + ((-DXYDG_DXYDGZZ + DXZDG_DXZDGYZ +
+ & DYZDG_DYZDGXZ - DZZDG_DZZDGXY)/2 - CHR1_XZZ*CHR2_XXY +
+ & CHR1_XYZ*CHR2_XXZ - CHR1_YZZ*CHR2_YXY + CHR1_YYZ*CHR2_YXZ -
+ & CHR1_ZZZ*CHR2_ZXY + CHR1_ZYZ*CHR2_ZXZ)*UPPERMET_UZZ ;
+
+ RICCI_RXZ = ((DXXDG_DXXDGYZ - DXYDG_DXYDGXZ - DXZDG_DXZDGXY +
+ & DYZDG_DYZDGXX)/2 + CHR1_XYZ*CHR2_XXX - CHR1_XXZ*CHR2_XXY +
+ & CHR1_YYZ*CHR2_YXX - CHR1_YXZ*CHR2_YXY + CHR1_ZYZ*CHR2_ZXX -
+ & CHR1_ZXZ*CHR2_ZXY)*UPPERMET_UXY + (-DXZDG_DXZDGXZ + (DXXDG_DXXDGZZ +
+ & DZZDG_DZZDGXX)/2 + CHR1_XZZ*CHR2_XXX - CHR1_XXZ*CHR2_XXZ +
+ & CHR1_YZZ*CHR2_YXX - CHR1_YXZ*CHR2_YXZ + CHR1_ZZZ*CHR2_ZXX -
+ & CHR1_ZXZ*CHR2_ZXZ)*UPPERMET_UXZ + ((DXYDG_DXYDGYZ - DXZDG_DXZDGYY -
+ & DYYDG_DYYDGXZ + DYZDG_DYZDGXY)/2 + CHR1_XYZ*CHR2_XXY -
+ & CHR1_XYY*CHR2_XXZ + CHR1_YYZ*CHR2_YXY - CHR1_YYY*CHR2_YXZ +
+ & CHR1_ZYZ*CHR2_ZXY - CHR1_ZYY*CHR2_ZXZ)*UPPERMET_UYY + ((DXYDG_DXYDGZZ
+ & - DXZDG_DXZDGYZ - DYZDG_DYZDGXZ + DZZDG_DZZDGXY)/2 + CHR1_XZZ*CHR2_XXY
+ & - CHR1_XYZ*CHR2_XXZ + CHR1_YZZ*CHR2_YXY - CHR1_YYZ*CHR2_YXZ +
+ & CHR1_ZZZ*CHR2_ZXY - CHR1_ZYZ*CHR2_ZXZ)*UPPERMET_UYZ ;
+
+ RICCI_RYY = (DXYDG_DXYDGXY + (-DXXDG_DXXDGYY - DYYDG_DYYDGXX)/2 -
+ & CHR1_XYY*CHR2_XXX + CHR1_XXY*CHR2_XXY - CHR1_YYY*CHR2_YXX +
+ & CHR1_YXY*CHR2_YXY - CHR1_ZYY*CHR2_ZXX +
+ & CHR1_ZXY*CHR2_ZXY)*UPPERMET_UXX + (DXYDG_DXYDGYZ - DXZDG_DXZDGYY -
+ & DYYDG_DYYDGXZ + DYZDG_DYZDGXY + 2*(CHR1_XYZ*CHR2_XXY -
+ & CHR1_XYY*CHR2_XXZ + CHR1_YYZ*CHR2_YXY + CHR1_ZYZ*CHR2_ZXY) -
+ & 2*(CHR1_YYY*CHR2_YXZ + CHR1_ZYY*CHR2_ZXZ)) *UPPERMET_UXZ +
+ & (DYZDG_DYZDGYZ + (-DYYDG_DYYDGZZ - DZZDG_DZZDGYY)/2 -
+ & CHR1_XZZ*CHR2_XYY + CHR1_XYZ*CHR2_XYZ - CHR1_YZZ*CHR2_YYY +
+ & CHR1_YYZ*CHR2_YYZ - CHR1_ZZZ*CHR2_ZYY +
+ & CHR1_ZYZ*CHR2_ZYZ)*UPPERMET_UZZ ;
+
+ RICCI_RYZ = ((-DXXDG_DXXDGYZ + DXYDG_DXYDGXZ + DXZDG_DXZDGXY -
+ & DYZDG_DYZDGXX)/2 - CHR1_XYZ*CHR2_XXX + CHR1_XXZ*CHR2_XXY -
+ & CHR1_YYZ*CHR2_YXX + CHR1_YXZ*CHR2_YXY - CHR1_ZYZ*CHR2_ZXX +
+ & CHR1_ZXZ*CHR2_ZXY)*UPPERMET_UXX + ((-DXYDG_DXYDGYZ + DXZDG_DXZDGYY +
+ & DYYDG_DYYDGXZ - DYZDG_DYZDGXY)/2 - CHR1_XYZ*CHR2_XXY +
+ & CHR1_XYY*CHR2_XXZ - CHR1_YYZ*CHR2_YXY + CHR1_YYY*CHR2_YXZ -
+ & CHR1_ZYZ*CHR2_ZXY + CHR1_ZYY*CHR2_ZXZ)*UPPERMET_UXY + ((DXYDG_DXYDGZZ
+ & - DXZDG_DXZDGYZ - DYZDG_DYZDGXZ + DZZDG_DZZDGXY)/2 + CHR1_XZZ*CHR2_XXY
+ & - CHR1_XYZ*CHR2_XXZ + CHR1_YZZ*CHR2_YXY - CHR1_YYZ*CHR2_YXZ +
+ & CHR1_ZZZ*CHR2_ZXY - CHR1_ZYZ*CHR2_ZXZ)*UPPERMET_UXZ + (-DYZDG_DYZDGYZ
+ & + (DYYDG_DYYDGZZ + DZZDG_DZZDGYY)/2 + CHR1_XZZ*CHR2_XYY -
+ & CHR1_XYZ*CHR2_XYZ + CHR1_YZZ*CHR2_YYY - CHR1_YYZ*CHR2_YYZ +
+ & CHR1_ZZZ*CHR2_ZYY - CHR1_ZYZ*CHR2_ZYZ)*UPPERMET_UYZ ;
+
+ RICCI_RZZ = (DXZDG_DXZDGXZ + (-DXXDG_DXXDGZZ - DZZDG_DZZDGXX)/2 -
+ & CHR1_XZZ*CHR2_XXX + CHR1_XXZ*CHR2_XXZ - CHR1_YZZ*CHR2_YXX +
+ & CHR1_YXZ*CHR2_YXZ - CHR1_ZZZ*CHR2_ZXX +
+ & CHR1_ZXZ*CHR2_ZXZ)*UPPERMET_UXX + (-DXYDG_DXYDGZZ + DXZDG_DXZDGYZ +
+ & DYZDG_DYZDGXZ - DZZDG_DZZDGXY - 2*(CHR1_YZZ*CHR2_YXY +
+ & CHR1_ZZZ*CHR2_ZXY) + 2*(-(CHR1_XZZ*CHR2_XXY) + CHR1_XYZ*CHR2_XXZ +
+ & CHR1_YYZ*CHR2_YXZ + CHR1_ZYZ*CHR2_ZXZ))*UPPERMET_UXY + (DYZDG_DYZDGYZ
+ & + (-DYYDG_DYYDGZZ - DZZDG_DZZDGYY)/2 - CHR1_XZZ*CHR2_XYY +
+ & CHR1_XYZ*CHR2_XYZ - CHR1_YZZ*CHR2_YYY + CHR1_YYZ*CHR2_YYZ -
+ & CHR1_ZZZ*CHR2_ZYY + CHR1_ZYZ*CHR2_ZYZ)*UPPERMET_UYY ;
+
+#endif
+
+#ifdef CCODE
+
+ RICCI_RXX = (DXYDG_DXYDGXY+(-DXXDG_DXXDGYY-DYYDG_DYYDGXX)/2 -
+ CHR1_XYY*CHR2_XXX +CHR1_XXY*CHR2_XXY-CHR1_YYY*CHR2_YXX +
+ CHR1_YXY*CHR2_YXY - CHR1_ZYY*CHR2_ZXX +
+ CHR1_ZXY*CHR2_ZXY)*UPPERMET_UYY + (-DXXDG_DXXDGYZ + DXYDG_DXYDGXZ +
+ DXZDG_DXZDGXY - DYZDG_DYZDGXX - 2*(CHR1_YYZ*CHR2_YXX +
+ CHR1_ZYZ*CHR2_ZXX) + 2*(-(CHR1_XYZ*CHR2_XXX) + CHR1_XXZ*CHR2_XXY +
+ CHR1_YXZ*CHR2_YXY + CHR1_ZXZ*CHR2_ZXY))*UPPERMET_UYZ + (DXZDG_DXZDGXZ
+ + (-DXXDG_DXXDGZZ - DZZDG_DZZDGXX)/2 - CHR1_XZZ*CHR2_XXX +
+ CHR1_XXZ*CHR2_XXZ - CHR1_YZZ*CHR2_YXX + CHR1_YXZ*CHR2_YXZ -
+ CHR1_ZZZ*CHR2_ZXX + CHR1_ZXZ*CHR2_ZXZ)*UPPERMET_UZZ;
+
+ RICCI_RXY = (-DXYDG_DXYDGXY + (DXXDG_DXXDGYY + DYYDG_DYYDGXX)/2 +
+ CHR1_XYY*CHR2_XXX - CHR1_XXY*CHR2_XXY + CHR1_YYY*CHR2_YXX -
+ CHR1_YXY*CHR2_YXY + CHR1_ZYY*CHR2_ZXX -
+ CHR1_ZXY*CHR2_ZXY)*UPPERMET_UXY + ((DXXDG_DXXDGYZ - DXYDG_DXYDGXZ -
+ DXZDG_DXZDGXY + DYZDG_DYZDGXX)/2 + CHR1_XYZ*CHR2_XXX -
+ CHR1_XXZ*CHR2_XXY + CHR1_YYZ*CHR2_YXX - CHR1_YXZ*CHR2_YXY +
+ CHR1_ZYZ*CHR2_ZXX - CHR1_ZXZ*CHR2_ZXY)*UPPERMET_UXZ +
+ ((-DXYDG_DXYDGYZ + DXZDG_DXZDGYY + DYYDG_DYYDGXZ - DYZDG_DYZDGXY)/2 -
+ CHR1_XYZ*CHR2_XXY + CHR1_XYY*CHR2_XXZ - CHR1_YYZ*CHR2_YXY +
+ CHR1_YYY*CHR2_YXZ - CHR1_ZYZ*CHR2_ZXY +
+ CHR1_ZYY*CHR2_ZXZ)*UPPERMET_UYZ + ((-DXYDG_DXYDGZZ + DXZDG_DXZDGYZ +
+ DYZDG_DYZDGXZ - DZZDG_DZZDGXY)/2 - CHR1_XZZ*CHR2_XXY +
+ CHR1_XYZ*CHR2_XXZ - CHR1_YZZ*CHR2_YXY + CHR1_YYZ*CHR2_YXZ -
+ CHR1_ZZZ*CHR2_ZXY + CHR1_ZYZ*CHR2_ZXZ)*UPPERMET_UZZ ;
+
+ RICCI_RXZ = ((DXXDG_DXXDGYZ - DXYDG_DXYDGXZ - DXZDG_DXZDGXY +
+ DYZDG_DYZDGXX)/2 + CHR1_XYZ*CHR2_XXX - CHR1_XXZ*CHR2_XXY +
+ CHR1_YYZ*CHR2_YXX - CHR1_YXZ*CHR2_YXY + CHR1_ZYZ*CHR2_ZXX -
+ CHR1_ZXZ*CHR2_ZXY)*UPPERMET_UXY + (-DXZDG_DXZDGXZ + (DXXDG_DXXDGZZ +
+ DZZDG_DZZDGXX)/2 + CHR1_XZZ*CHR2_XXX - CHR1_XXZ*CHR2_XXZ +
+ CHR1_YZZ*CHR2_YXX - CHR1_YXZ*CHR2_YXZ + CHR1_ZZZ*CHR2_ZXX -
+ CHR1_ZXZ*CHR2_ZXZ)*UPPERMET_UXZ + ((DXYDG_DXYDGYZ - DXZDG_DXZDGYY -
+ DYYDG_DYYDGXZ + DYZDG_DYZDGXY)/2 + CHR1_XYZ*CHR2_XXY -
+ CHR1_XYY*CHR2_XXZ + CHR1_YYZ*CHR2_YXY - CHR1_YYY*CHR2_YXZ +
+ CHR1_ZYZ*CHR2_ZXY - CHR1_ZYY*CHR2_ZXZ)*UPPERMET_UYY + ((DXYDG_DXYDGZZ
+ - DXZDG_DXZDGYZ - DYZDG_DYZDGXZ + DZZDG_DZZDGXY)/2 + CHR1_XZZ*CHR2_XXY
+ - CHR1_XYZ*CHR2_XXZ + CHR1_YZZ*CHR2_YXY - CHR1_YYZ*CHR2_YXZ +
+ CHR1_ZZZ*CHR2_ZXY - CHR1_ZYZ*CHR2_ZXZ)*UPPERMET_UYZ ;
+
+ RICCI_RYY = (DXYDG_DXYDGXY + (-DXXDG_DXXDGYY - DYYDG_DYYDGXX)/2 -
+ CHR1_XYY*CHR2_XXX + CHR1_XXY*CHR2_XXY - CHR1_YYY*CHR2_YXX +
+ CHR1_YXY*CHR2_YXY - CHR1_ZYY*CHR2_ZXX +
+ CHR1_ZXY*CHR2_ZXY)*UPPERMET_UXX + (DXYDG_DXYDGYZ - DXZDG_DXZDGYY -
+ DYYDG_DYYDGXZ + DYZDG_DYZDGXY + 2*(CHR1_XYZ*CHR2_XXY -
+ CHR1_XYY*CHR2_XXZ + CHR1_YYZ*CHR2_YXY + CHR1_ZYZ*CHR2_ZXY) -
+ 2*(CHR1_YYY*CHR2_YXZ + CHR1_ZYY*CHR2_ZXZ)) *UPPERMET_UXZ +
+ (DYZDG_DYZDGYZ + (-DYYDG_DYYDGZZ - DZZDG_DZZDGYY)/2 -
+ CHR1_XZZ*CHR2_XYY + CHR1_XYZ*CHR2_XYZ - CHR1_YZZ*CHR2_YYY +
+ CHR1_YYZ*CHR2_YYZ - CHR1_ZZZ*CHR2_ZYY +
+ CHR1_ZYZ*CHR2_ZYZ)*UPPERMET_UZZ ;
+
+ RICCI_RYZ = ((-DXXDG_DXXDGYZ + DXYDG_DXYDGXZ + DXZDG_DXZDGXY -
+ DYZDG_DYZDGXX)/2 - CHR1_XYZ*CHR2_XXX + CHR1_XXZ*CHR2_XXY -
+ CHR1_YYZ*CHR2_YXX + CHR1_YXZ*CHR2_YXY - CHR1_ZYZ*CHR2_ZXX +
+ CHR1_ZXZ*CHR2_ZXY)*UPPERMET_UXX + ((-DXYDG_DXYDGYZ + DXZDG_DXZDGYY +
+ DYYDG_DYYDGXZ - DYZDG_DYZDGXY)/2 - CHR1_XYZ*CHR2_XXY +
+ CHR1_XYY*CHR2_XXZ - CHR1_YYZ*CHR2_YXY + CHR1_YYY*CHR2_YXZ -
+ CHR1_ZYZ*CHR2_ZXY + CHR1_ZYY*CHR2_ZXZ)*UPPERMET_UXY + ((DXYDG_DXYDGZZ
+ - DXZDG_DXZDGYZ - DYZDG_DYZDGXZ + DZZDG_DZZDGXY)/2 + CHR1_XZZ*CHR2_XXY
+ - CHR1_XYZ*CHR2_XXZ + CHR1_YZZ*CHR2_YXY - CHR1_YYZ*CHR2_YXZ +
+ CHR1_ZZZ*CHR2_ZXY - CHR1_ZYZ*CHR2_ZXZ)*UPPERMET_UXZ + (-DYZDG_DYZDGYZ
+ + (DYYDG_DYYDGZZ + DZZDG_DZZDGYY)/2 + CHR1_XZZ*CHR2_XYY -
+ CHR1_XYZ*CHR2_XYZ + CHR1_YZZ*CHR2_YYY - CHR1_YYZ*CHR2_YYZ +
+ CHR1_ZZZ*CHR2_ZYY - CHR1_ZYZ*CHR2_ZYZ)*UPPERMET_UYZ ;
+
+ RICCI_RZZ = (DXZDG_DXZDGXZ + (-DXXDG_DXXDGZZ - DZZDG_DZZDGXX)/2 -
+ CHR1_XZZ*CHR2_XXX + CHR1_XXZ*CHR2_XXZ - CHR1_YZZ*CHR2_YXX +
+ CHR1_YXZ*CHR2_YXZ - CHR1_ZZZ*CHR2_ZXX +
+ CHR1_ZXZ*CHR2_ZXZ)*UPPERMET_UXX + (-DXYDG_DXYDGZZ + DXZDG_DXZDGYZ +
+ DYZDG_DYZDGXZ - DZZDG_DZZDGXY - 2*(CHR1_YZZ*CHR2_YXY +
+ CHR1_ZZZ*CHR2_ZXY) + 2*(-(CHR1_XZZ*CHR2_XXY) + CHR1_XYZ*CHR2_XXZ +
+ CHR1_YYZ*CHR2_YXZ + CHR1_ZYZ*CHR2_ZXZ))*UPPERMET_UXY + (DYZDG_DYZDGYZ
+ + (-DYYDG_DYYDGZZ - DZZDG_DZZDGYY)/2 - CHR1_XZZ*CHR2_XYY +
+ CHR1_XYZ*CHR2_XYZ - CHR1_YZZ*CHR2_YYY + CHR1_YYZ*CHR2_YYZ -
+ CHR1_ZZZ*CHR2_ZYY + CHR1_ZYZ*CHR2_ZYZ)*UPPERMET_UYY ;
+
+#endif
+
+#endif
diff --git a/src/macro/RICCI_undefine.h b/src/macro/RICCI_undefine.h
new file mode 100644
index 0000000..f05fa3f
--- /dev/null
+++ b/src/macro/RICCI_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header RICCI_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef RICCI_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR1_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/CHR2_undefine.h"
diff --git a/src/macro/STRESSENERGY_declare.h b/src/macro/STRESSENERGY_declare.h
new file mode 100644
index 0000000..4bc2443
--- /dev/null
+++ b/src/macro/STRESSENERGY_declare.h
@@ -0,0 +1,68 @@
+/*@@
+ @header STRESSENERGY_declare.h
+ @date Nov 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the components of the stress energy
+ tensor
+ scheme
+ @enddesc
+@@*/
+
+#ifndef STRESSENERGY_DECLARE
+#define STRESSENERGY_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DETG_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRT_declare.h"
+
+#undef STRESSENERGY_TTT
+#define STRESSENERGY_TTT Ttt
+#undef STRESSENERGY_TTX
+#define STRESSENERGY_TTX Ttx
+#undef STRESSENERGY_TTY
+#define STRESSENERGY_TTY Tty
+#undef STRESSENERGY_TTZ
+#define STRESSENERGY_TTZ Ttz
+#undef STRESSENERGY_TXX
+#define STRESSENERGY_TXX Txx
+#undef STRESSENERGY_TXY
+#define STRESSENERGY_TXY Txy
+#undef STRESSENERGY_TXZ
+#define STRESSENERGY_TXZ Txz
+#undef STRESSENERGY_TYY
+#define STRESSENERGY_TYY Tyy
+#undef STRESSENERGY_TYZ
+#define STRESSENERGY_TYZ Tyz
+#undef STRESSENERGY_TZZ
+#define STRESSENERGY_TZZ Tzz
+
+/* Symmetries */
+#undef STRESSENERGY_TXT
+#define STRESSENERGY_TXT STRESSENERGY_TTX
+#undef STRESSENERGY_TYT
+#define STRESSENERGY_TYT STRESSENERGY_TTY
+#undef STRESSENERGY_TZT
+#define STRESSENERGY_TZT STRESSENERGY_TTZ
+#undef STRESSENERGY_TYX
+#define STRESSENERGY_TYX STRESSENERGY_TXY
+#undef STRESSENERGY_TZX
+#define STRESSENERGY_TZX STRESSENERGY_TXZ
+#undef STRESSENERGY_TZY
+#define STRESSENERGY_TZY STRESSENERGY_TYZ
+
+ REAL STRESSENERGY_TTT
+ REAL STRESSENERGY_TTX
+ REAL STRESSENERGY_TTY
+ REAL STRESSENERGY_TTZ
+ REAL STRESSENERGY_TXX
+ REAL STRESSENERGY_TXY
+ REAL STRESSENERGY_TXZ
+ REAL STRESSENERGY_TYY
+ REAL STRESSENERGY_TYZ
+ REAL STRESSENERGY_TZZ
+
+ REAL uxx,uxy,uxz,uyy,uyz,uzz
+ REAL detg
+
+#endif
diff --git a/src/macro/STRESSENERGY_guts.h b/src/macro/STRESSENERGY_guts.h
new file mode 100644
index 0000000..cffa42f
--- /dev/null
+++ b/src/macro/STRESSENERGY_guts.h
@@ -0,0 +1,40 @@
+/*@@
+ @header STRESSENERGY_guts.h
+ @date Nov 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the hydro quantities
+ scheme
+ @enddesc
+@@*/
+
+#ifndef STRESSENERGY_GUTS
+#define STRESSENERGY_GUTS
+
+c These geometrical quantities are supplied for CalcTmunu
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DETG_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+
+ uxx = UPPERMET_UXX; uyy = UPPERMET_UYY; uzz = UPPERMET_UZZ
+ uxy = UPPERMET_UXY; uxz = UPPERMET_UXZ; uyz = UPPERMET_UYZ
+
+ detg = DETG_DETCG
+
+c Zero the stress-energy tensor
+
+ STRESSENERGY_TTT = 0.0D0; STRESSENERGY_TTX = 0.0D0
+ STRESSENERGY_TTY = 0.0D0; STRESSENERGY_TTZ = 0.0D0
+ STRESSENERGY_TXX = 0.0D0; STRESSENERGY_TXY = 0.0D0
+ STRESSENERGY_TXZ = 0.0D0; STRESSENERGY_TYY = 0.0D0
+ STRESSENERGY_TYZ = 0.0D0; STRESSENERGY_TZZ = 0.0D0
+
+
+c Calculate the stress-energy tensor
+#include "./CalcTmunu.inc"
+
+
+c Calculate the trace of the stress-energy tensor
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRT_guts.h"
+
+#endif
diff --git a/src/macro/STRESSENERGY_undefine.h b/src/macro/STRESSENERGY_undefine.h
new file mode 100644
index 0000000..808a5e0
--- /dev/null
+++ b/src/macro/STRESSENERGY_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header STRESSENERGY_undefine.h
+ @date Nov 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate the components of the stress energy
+ tensor
+ scheme
+ @enddesc
+@@*/
+
+#undef STRESSENERGY_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DETG_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/TRT_undefine.h"
+
diff --git a/src/macro/TRKK_declare.h b/src/macro/TRKK_declare.h
new file mode 100644
index 0000000..91efa4c
--- /dev/null
+++ b/src/macro/TRKK_declare.h
@@ -0,0 +1,41 @@
+/*@@
+ @header TRKK_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate the trace of
+ K_lj K^j_i
+
+ @enddesc
+@@*/
+
+#ifndef TRKK_DECLARE
+#define TRKK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/KK_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef TRKK_TRKK
+#define TRKK_TRKK trkk_trkk
+
+/* Declare output variables */
+ REAL TRKK_TRKK
+
+#endif
+
+#ifdef CCODE
+
+/* Output variables */
+#undef TRKK_TRKK
+#define TRKK_TRKK trkk_trkk
+
+/* Declare output variables */
+double TRKK_TRKK;
+
+#endif
+
+#endif
diff --git a/src/macro/TRKK_guts.h b/src/macro/TRKK_guts.h
new file mode 100644
index 0000000..2740fcb
--- /dev/null
+++ b/src/macro/TRKK_guts.h
@@ -0,0 +1,35 @@
+/*@@
+ @header TRKK_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the trace of the K_lj K^j_i
+
+ @enddesc
+@@*/
+
+#ifndef TRKK_GUTS
+#define TRKK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/KK_guts.h"
+
+#ifdef FCODE
+
+ TRKK_TRKK = UPPERMET_UXX*KK_KKXX + UPPERMET_UYY*KK_KKYY
+ & + UPPERMET_UZZ*KK_KKZZ + 2D0*(UPPERMET_UXY*KK_KKXY
+ & + UPPERMET_UXZ*KK_KKXZ + UPPERMET_UYZ*KK_KKYZ)
+
+#endif
+
+#ifdef CCODE
+
+ TRKK_TRKK = UPPERMET_UXX*KK_KKXX + UPPERMET_UYY*KK_KKYY
+ + UPPERMET_UZZ*KK_KKZZ + 2D0*(UPPERMET_UXY*KK_KKXY
+ + UPPERMET_UXZ*KK_KKXZ + UPPERMET_UYZ*KK_KKYZ);
+
+#endif
+
+#endif
+
diff --git a/src/macro/TRKK_undefine.h b/src/macro/TRKK_undefine.h
new file mode 100644
index 0000000..5ec5ff5
--- /dev/null
+++ b/src/macro/TRKK_undefine.h
@@ -0,0 +1,15 @@
+/*@@
+ @header TRKK_undefine.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef TRKK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/KK_undefine.h"
+
+
+
diff --git a/src/macro/TRK_declare.h b/src/macro/TRK_declare.h
new file mode 100644
index 0000000..693df7c
--- /dev/null
+++ b/src/macro/TRK_declare.h
@@ -0,0 +1,68 @@
+/*@@
+ @header TRK_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate the trace of the Extrinsic
+ curvature
+
+ @enddesc
+@@*/
+
+#ifndef TRK_DECLARE
+#define TRK_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef TRK_HXX
+#define TRK_HXX hxx(i,j,k)
+#undef TRK_HXY
+#define TRK_HXY hxy(i,j,k)
+#undef TRK_HXZ
+#define TRK_HXZ hxz(i,j,k)
+#undef TRK_HYY
+#define TRK_HYY hyy(i,j,k)
+#undef TRK_HYZ
+#define TRK_HYZ hyz(i,j,k)
+#undef TRK_HZZ
+#define TRK_HZZ hzz(i,j,k)
+
+/* Output variables */
+#undef TRK_TRK
+#define TRK_TRK trk_trK
+
+/* Declare output variables */
+ REAL TRK_TRK
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef TRK_HXX
+#define TRK_HXX hxx[ijk]
+#undef TRK_HXY
+#define TRK_HXY hxy[ijk]
+#undef TRK_HXZ
+#define TRK_HXZ hxz[ijk]
+#undef TRK_HYY
+#define TRK_HYY hyy[ijk]
+#undef TRK_HYZ
+#define TRK_HYZ hyz[ijk]
+#undef TRK_HZZ
+#define TRK_HZZ hzz[ijk]
+
+/* Output variables */
+#undef TRK_TRK
+#define TRK_TRK K
+
+/* Declare output variables */
+double TRK_TRK;
+
+#endif
+
+#endif
diff --git a/src/macro/TRK_guts.h b/src/macro/TRK_guts.h
new file mode 100644
index 0000000..3b94e94
--- /dev/null
+++ b/src/macro/TRK_guts.h
@@ -0,0 +1,42 @@
+/*@@
+ @header TRK_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the trace of the extrinsic curvature
+
+ The macro is defined in terms of standard variables in
+ TRK_declare.h
+
+ Requires: Upper physical metric
+ Lower extrainsic curvature
+
+ Provides: Trace of the extrinsic curvature
+
+ @enddesc
+@@*/
+
+#ifndef TRK_GUTS
+#define TRK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+
+#ifdef FCODE
+
+ TRK_TRK = UPPERMET_UXX*TRK_HXX + UPPERMET_UYY*TRK_HYY
+ & + UPPERMET_UZZ*TRK_HZZ + 2D0*(UPPERMET_UXY*TRK_HXY
+ & + UPPERMET_UXZ*TRK_HXZ + UPPERMET_UYZ*TRK_HYZ)
+
+#endif
+
+#ifdef CCODE
+
+ TRK_TRK = UPPERMET_UXX*TRK_HXX + UPPERMET_UYY*TRK_HYY
+ + UPPERMET_UZZ*TRK_HZZ + 2*(UPPERMET_UXY*TRK_HXY
+ + UPPERMET_UXZ*TRK_HXZ + UPPERMET_UYZ*TRK_HYZ);
+
+#endif
+
+#endif
+
diff --git a/src/macro/TRK_undefine.h b/src/macro/TRK_undefine.h
new file mode 100644
index 0000000..c4a7a9f
--- /dev/null
+++ b/src/macro/TRK_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header TRK_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef TRK_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+
+
+
diff --git a/src/macro/TRRICCI_declare.h b/src/macro/TRRICCI_declare.h
new file mode 100644
index 0000000..44f96f2
--- /dev/null
+++ b/src/macro/TRRICCI_declare.h
@@ -0,0 +1,44 @@
+/*@@
+ @header TRRICCI_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate the trace of 3-Ricci tensor
+
+ @enddesc
+@@*/
+
+#ifndef TRRICCI_DECLARE
+#define TRRICCI_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/RICCI_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+
+/* Output variables */
+#undef TRRICCI_TRRICCI
+#define TRRICCI_TRRICCI trricci_trricci
+
+/* Declare output variables */
+ REAL TRRICCI_TRRICCI
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+
+/* Output variables */
+#undef TRRICCI_TRRICCI
+#define TRRICCI_TRRICCI trricci_trricci
+
+/* Declare output variables */
+double TRRICCI_TRRICCI;
+
+#endif
+
+#endif
diff --git a/src/macro/TRRICCI_guts.h b/src/macro/TRRICCI_guts.h
new file mode 100644
index 0000000..88e78df
--- /dev/null
+++ b/src/macro/TRRICCI_guts.h
@@ -0,0 +1,35 @@
+/*@@
+ @header TRRICCI_guts.h
+ @date Aug 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the trace of the 3-Ricci
+
+ @enddesc
+@@*/
+
+#ifndef TRRICCI_GUTS
+#define TRRICCI_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/RICCI_guts.h"
+
+#ifdef FCODE
+
+ TRRICCI_TRRICCI = UPPERMET_UXX*RICCI_RXX + UPPERMET_UYY*RICCI_RYY
+ & + UPPERMET_UZZ*RICCI_RZZ + 2D0*(UPPERMET_UXY*RICCI_RXY
+ & + UPPERMET_UXZ*RICCI_RXZ + UPPERMET_UYZ*RICCI_RYZ)
+
+#endif
+
+#ifdef CCODE
+
+ TRRICCI_TRRICCI = UPPERMET_UXX*RICCI_RXX + UPPERMET_UYY*RICCI_RYY
+ + UPPERMET_UZZ*RICCI_RZZ + 2D0*(UPPERMET_UXY*RICCI_RXY
+ + UPPERMET_UXZ*RICCI_RXZ + UPPERMET_UYZ*RICCI_RYZ);
+
+#endif
+
+#endif
+
diff --git a/src/macro/TRRICCI_undefine.h b/src/macro/TRRICCI_undefine.h
new file mode 100644
index 0000000..c049ad5
--- /dev/null
+++ b/src/macro/TRRICCI_undefine.h
@@ -0,0 +1,15 @@
+/*@@
+ @header TRRICCI_undefine.h
+ @date August 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef TRRICCI_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/RICCI_undefine.h"
+
+
+
diff --git a/src/macro/TRT_declare.h b/src/macro/TRT_declare.h
new file mode 100644
index 0000000..49463e3
--- /dev/null
+++ b/src/macro/TRT_declare.h
@@ -0,0 +1,114 @@
+/*@@
+ @header TRT_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Declarations for macro to calculate the trace of the
+ (4-)stress-energy tensor
+
+ @enddesc
+@@*/
+
+#ifndef TRT_DECLARE
+#define TRT_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+
+#ifdef FCODE
+
+/* Input variables */
+#undef TRT_TTT
+#define TRT_TTT Ttt
+#undef TRT_TTX
+#define TRT_TTX Ttx
+#undef TRT_TTY
+#define TRT_TTY Tty
+#undef TRT_TTZ
+#define TRT_TTZ Ttz
+#undef TRT_TXX
+#define TRT_TXX Txx
+#undef TRT_TXY
+#define TRT_TXY Txy
+#undef TRT_TXZ
+#define TRT_TXZ Txz
+#undef TRT_TYY
+#define TRT_TYY Tyy
+#undef TRT_TYZ
+#define TRT_TYZ Tyz
+#undef TRT_TZZ
+#define TRT_TZZ Tzz
+#undef TRT_ALP
+#define TRT_ALP alp(i,j,k)
+#undef TRT_BX
+#define TRT_BX betax(i,j,k)
+#undef TRT_BY
+#define TRT_BY betay(i,j,k)
+#undef TRT_BZ
+#define TRT_BZ betaz(i,j,k)
+
+/* Temporary variables */
+#undef TRT_IALP2
+#define TRT_IALP2 trt_ialp2
+
+/* Output variables */
+#undef TRT_TRT
+#define TRT_TRT trt_trt
+
+/* Declare temporary variables */
+ REAL TRT_IALP2
+
+/* Declare output variables */
+ REAL TRT_TRT
+
+#endif
+
+#ifdef CCODE
+
+/* Input variables */
+#undef TRT_TTT
+#define TRT_TTT Ttt
+#undef TRT_TTX
+#define TRT_TTX Ttx
+#undef TRT_TTY
+#define TRT_TTY Tty
+#undef TRT_TTZ
+#define TRT_TTZ Ttz
+#undef TRT_TXX
+#define TRT_TXX Txx
+#undef TRT_TXY
+#define TRT_TXY Txy
+#undef TRT_TXZ
+#define TRT_TXZ Txz
+#undef TRT_TYY
+#define TRT_TYY Tyy
+#undef TRT_TYZ
+#define TRT_TYZ Tyz
+#undef TRT_TZZ
+#define TRT_TZZ Tzz
+#undef TRT_ALP
+#define TRT_ALP alp[ijk]
+#undef TRT_BX
+#define TRT_BX betax[ijk]
+#undef TRT_BY
+#define TRT_BY betay[ijk]
+#undef TRT_BZ
+#define TRT_BZ betaz[ijk]
+
+/* Temporary variables */
+#undef TRT_IALP2
+#define TRT_IALP2 trt_ialp2
+
+/* Output variables */
+#undef TRT_TRT
+#define TRT_TRT trt_trt
+
+/* Declare temporary variables */
+ double TRT_IALP2;
+
+/* Declare output variables */
+ double TRT_TR;
+
+#endif
+
+#endif
diff --git a/src/macro/TRT_guts.h b/src/macro/TRT_guts.h
new file mode 100644
index 0000000..efda382
--- /dev/null
+++ b/src/macro/TRT_guts.h
@@ -0,0 +1,62 @@
+/*@@
+ @header TRT_guts.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+
+ Macro to calculate the trace of the (4-)stress energy tensor
+
+ @enddesc
+@@*/
+
+#ifndef TRT_GUTS
+#define TRT_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+
+#ifdef FCODE
+
+ TRT_IALP2 = 1D0/TRT_ALP**2
+
+ TRT_TRT = -TRT_TTT*TRT_IALP2+TRT_TXX*UPPERMET_UXX+
+ & TRT_TYY*UPPERMET_UYY+TRT_TZZ*UPPERMET_UZZ+2D0*(
+ & TRT_TXY*UPPERMET_UXY+TRT_TXZ*UPPERMET_UXZ+TRT_TYZ*
+ & UPPERMET_UYZ)
+
+
+ if (shift_active /= SHIFT_INACTIVE) then
+
+ TRT_TRT = TRT_TRT - TRT_IALP2*(TRT_TXX*TRT_BX*TRT_BX
+ & + TRT_TYY*TRT_BY*TRT_BY + TRT_TZZ*TRT_BZ*TRT_BZ
+ & + 2D0*(TRT_TXY*TRT_BX*TRT_BY + TRT_TXZ*TRT_BX*TRT_BZ
+ & + TRT_TYZ*TRT_BY*TRT_BZ -TRT_TTX*TRT_BX -TRT_TTY*TRT_BY
+ & -TRT_TTZ*TRT_BZ))
+
+ endif
+
+#endif
+
+#ifdef CCODE
+
+ TRT_IALP2 = 1D0/TRT_ALP**2;
+
+ TRT_TRT = -TRT_TTT*TRT_IALP2+TRT_TXX*UPPERMET_UXX+
+ TRT_TYY*UPPERMET_UYY+TRT_TZZ*UPPERMET_UZZ+2D0*(
+ TRT_TXY*UPPERMET_UXY+TRT_TXZ*UPPERMET_UXZ+TRT_TYZ*
+ UPPERMET_UYZ)
+
+
+ if (shift)
+ {
+ TRT_TRT = TRT_TRT - TRT_IALP2*(TRT_TXX*TRT_BX*TRT_BX
+ + TRT_TYY*TRT_BY*TRT_BY + TRT_TZZ*TRT_BZ*TRT_BZ
+ + 2D0*(TRT_TXY*TRT_BX*TRT_BY + TRT_TXZ*TRT_BX*TRT_BZ
+ + TRT_TYZ*TRT_BY*TRT_BZ -TRT_TTX*TRT_BX -TRT_TTY*TRT_BY
+ -TRT_TTZ*TRT_BZ))
+
+ }
+
+#endif
+
+#endif
+
diff --git a/src/macro/TRT_undefine.h b/src/macro/TRT_undefine.h
new file mode 100644
index 0000000..df2510e
--- /dev/null
+++ b/src/macro/TRT_undefine.h
@@ -0,0 +1,14 @@
+/*@@
+ @header TRT_undefine.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef TRT_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+
+
+
diff --git a/src/macro/UPPERMET_declare.h b/src/macro/UPPERMET_declare.h
new file mode 100644
index 0000000..4325939
--- /dev/null
+++ b/src/macro/UPPERMET_declare.h
@@ -0,0 +1,93 @@
+/*@@
+ @header UPPERMET_declare.h
+ @date Jun 98
+ @author Gabrielle Allen
+ @desc
+ Declarations for macro to calculate the components of the upper
+ physical metric.
+ @enddesc
+@@*/
+
+#ifndef UPPERMET_DECLARE
+#define UPPERMET_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DETG_declare.h"
+
+#ifdef FCODE
+
+/* Output variables */
+#undef UPPERMET_UXX
+#define UPPERMET_UXX uppermet_uxx
+#undef UPPERMET_UXY
+#define UPPERMET_UXY uppermet_uxy
+#undef UPPERMET_UXZ
+#define UPPERMET_UXZ uppermet_uxz
+#undef UPPERMET_UYY
+#define UPPERMET_UYY uppermet_uyy
+#undef UPPERMET_UYZ
+#define UPPERMET_UYZ uppermet_uyz
+#undef UPPERMET_UZZ
+#define UPPERMET_UZZ uppermet_uzz
+
+/* Temporary variables */
+
+#undef UPPERMET_PSI4DET
+#define UPPERMET_PSI4DET uppermet_fdet
+
+/* Declare internal variables */
+ REAL UPPERMET_PSI4DET
+
+/* Declare output variables */
+ REAL UPPERMET_UXX, UPPERMET_UXY, UPPERMET_UXZ
+ REAL UPPERMET_UYY, UPPERMET_UYZ, UPPERMET_UZZ
+
+#endif
+
+
+
+
+#ifdef CCODE
+
+/* Output variables */
+#undef UPPERMET_UXX
+#define UPPERMET_UXX uppermet_uxx
+#undef UPPERMET_UXY
+#define UPPERMET_UXY uppermet_uxy
+#undef UPPERMET_UXZ
+#define UPPERMET_UXZ uppermet_uxz
+#undef UPPERMET_UYY
+#define UPPERMET_UYY uppermet_uyy
+#undef UPPERMET_UYZ
+#define UPPERMET_UYZ uppermet_uyz
+#undef UPPERMET_UZZ
+#define UPPERMET_UZZ uppermet_uzz
+
+/* Internal variables */
+#undef UPPERMET_PSI4DET
+#define UPPERMET_PSI4DET uppermet_psi4detg
+
+/* Declare internal variables */
+double UPPERMET_PSI4DET;
+
+/* Declare output variables */
+double UPPERMET_UXX;
+double UPPERMET_UXY;
+double UPPERMET_UXZ;
+double UPPERMET_UYY;
+double UPPERMET_UYZ;
+double UPPERMET_UZZ;
+
+#endif
+
+/* Symmetries */
+#undef UPPERMET_UYX
+#define UPPERMET_UYX UPPERMET_UXY
+#undef UPPERMET_UZX
+#define UPPERMET_UZX UPPERMET_UXZ
+#undef UPPERMET_UZY
+#define UPPERMET_UZY UPPERMET_UYZ
+
+#endif
+
+
+
diff --git a/src/macro/UPPERMET_guts.h b/src/macro/UPPERMET_guts.h
new file mode 100644
index 0000000..43ceb7f
--- /dev/null
+++ b/src/macro/UPPERMET_guts.h
@@ -0,0 +1,42 @@
+/*
+UPPERMET_guts.h
+
+Macro to calculate the components of the upper physical metric,
+and as an offspin the determinant of the conformal(?) metric.
+
+Gabrielle Allen, 11th June 1998
+
+*/
+
+#ifndef UPPERMET_GUTS
+#define UPPERMET_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DETG_guts.h"
+
+#ifdef FCODE
+
+ UPPERMET_PSI4DET = DETG_PSI4*DETG_DETCG
+
+ UPPERMET_UXX = DETG_TEMPXX/UPPERMET_PSI4DET
+ UPPERMET_UXY = DETG_TEMPXY/UPPERMET_PSI4DET
+ UPPERMET_UXZ = DETG_TEMPXZ/UPPERMET_PSI4DET
+ UPPERMET_UYY = DETG_TEMPYY/UPPERMET_PSI4DET
+ UPPERMET_UYZ = DETG_TEMPYZ/UPPERMET_PSI4DET
+ UPPERMET_UZZ = DETG_TEMPZZ/UPPERMET_PSI4DET
+
+#endif
+
+#ifdef CCODE
+
+UPPERMET_PSI4DET = DETG_PSI4*DETG_DETCG;
+
+UPPERMET_UXX = DETG_TEMPXX/UPPERMET_PSI4DET;
+UPPERMET_UXY = DETG_TEMPXY/UPPERMET_PSI4DET;
+UPPERMET_UXZ = DETG_TEMPXZ/UPPERMET_PSI4DET;
+UPPERMET_UYY = DETG_TEMPYY/UPPERMET_PSI4DET;
+UPPERMET_UYZ = DETG_TEMPYZ/UPPERMET_PSI4DET;
+UPPERMET_UZZ = DETG_TEMPZZ/UPPERMET_PSI4DET;
+
+#endif
+
+#endif
diff --git a/src/macro/UPPERMET_undefine.h b/src/macro/UPPERMET_undefine.h
new file mode 100644
index 0000000..ee5e9fd
--- /dev/null
+++ b/src/macro/UPPERMET_undefine.h
@@ -0,0 +1,11 @@
+/*@@
+ @header UPPERMET_undefine.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ @enddesc
+@@*/
+
+#undef UPPERMET_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/DETG_undefine.h"
diff --git a/src/macro/WAVEG_declare.h b/src/macro/WAVEG_declare.h
new file mode 100644
index 0000000..811aa40
--- /dev/null
+++ b/src/macro/WAVEG_declare.h
@@ -0,0 +1,56 @@
+/*@@
+ @header WAVEG_declare.h
+ @date Nov 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate wave operator acting on the metric
+
+ That is g^lm g_ij,lm
+
+ @enddesc
+@@*/
+
+#ifndef WAVEG_DECLARE
+#define WAVEG_DECLARE
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_declare.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDG_declare.h"
+
+/* Output variables */
+#undef WAVEG_DDGXX
+#define WAVEG_DDGXX waveg_ddgxx
+#undef WAVEG_DDGXY
+#define WAVEG_DDGXY waveg_ddgxy
+#undef WAVEG_DDGXZ
+#define WAVEG_DDGXZ waveg_ddgxz
+#undef WAVEG_DDGYY
+#define WAVEG_DDGYY waveg_ddgyy
+#undef WAVEG_DDGYZ
+#define WAVEG_DDGYZ waveg_ddgyz
+#undef WAVEG_DDGZZ
+#define WAVEG_DDGZZ waveg_ddgzz
+
+#ifdef FCODE
+
+ REAL WAVEG_DDGXX
+ REAL WAVEG_DDGXY
+ REAL WAVEG_DDGXZ
+ REAL WAVEG_DDGYY
+ REAL WAVEG_DDGYZ
+ REAL WAVEG_DDGZZ
+
+#endif
+
+#ifdef CCODE
+
+ double WAVEG_DDGXX
+ double WAVEG_DDGXY
+ double WAVEG_DDGXZ
+ double WAVEG_DDGYY
+ double WAVEG_DDGYZ
+ double WAVEG_DDGZZ
+
+#endif
+
+#endif
+
diff --git a/src/macro/WAVEG_guts.h b/src/macro/WAVEG_guts.h
new file mode 100644
index 0000000..512daba
--- /dev/null
+++ b/src/macro/WAVEG_guts.h
@@ -0,0 +1,113 @@
+/*@@
+ @header WAVEG_guts.h
+ @date Jul 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate wave operator acting on the metric
+
+ That is g^lm g_ij,lm
+
+ @enddesc
+@@*/
+
+#ifndef WAVEG_GUTS
+#define WAVEG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_guts.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDG_guts.h"
+
+#ifdef FCODE
+
+ WAVEG_DDGXX = UPPERMET_UXX*DDG_DXXDGXX +
+ & 2D0*UPPERMET_UXY*DDG_DXYDGXX +
+ & 2D0*UPPERMET_UXZ*DDG_DXZDGXX +
+ & UPPERMET_UYY*DDG_DYYDGXX +
+ & 2D0*UPPERMET_UYZ*DDG_DYZDGXX +
+ & UPPERMET_UZZ*DDG_DZZDGXX
+
+ WAVEG_DDGXY = UPPERMET_UXX*DDG_DXXDGXY +
+ & 2D0*UPPERMET_UXY*DDG_DXYDGXY +
+ & 2D0*UPPERMET_UXZ*DDG_DXZDGXY +
+ & UPPERMET_UYY*DDG_DYYDGXY +
+ & 2D0*UPPERMET_UYZ*DDG_DYZDGXY +
+ & UPPERMET_UZZ*DDG_DZZDGXY
+
+ WAVEG_DDGXZ = UPPERMET_UXX*DDG_DXXDGXZ +
+ & 2D0*UPPERMET_UXY*DDG_DXYDGXZ +
+ & 2D0*UPPERMET_UXZ*DDG_DXZDGXZ +
+ & UPPERMET_UYY*DDG_DYYDGXZ +
+ & 2D0*UPPERMET_UYZ*DDG_DYZDGXZ +
+ & UPPERMET_UZZ*DDG_DZZDGXZ
+
+ WAVEG_DDGYY = UPPERMET_UXX*DDG_DXXDGYY +
+ & 2D0*UPPERMET_UXY*DDG_DXYDGYY +
+ & 2D0*UPPERMET_UXZ*DDG_DXZDGYY +
+ & UPPERMET_UYY*DDG_DYYDGYY +
+ & 2D0*UPPERMET_UYZ*DDG_DYZDGYY +
+ & UPPERMET_UZZ*DDG_DZZDGYY
+
+ WAVEG_DDGYZ = UPPERMET_UXX*DDG_DXXDGYZ +
+ & 2D0*UPPERMET_UXY*DDG_DXYDGYZ +
+ & 2D0*UPPERMET_UXZ*DDG_DXZDGYZ +
+ & UPPERMET_UYY*DDG_DYYDGYZ +
+ & 2D0*UPPERMET_UYZ*DDG_DYZDGYZ +
+ & UPPERMET_UZZ*DDG_DZZDGYZ
+
+ WAVEG_DDGZZ = UPPERMET_UXX*DDG_DXXDGZZ +
+ & 2D0*UPPERMET_UXY*DDG_DXYDGZZ +
+ & 2D0*UPPERMET_UXZ*DDG_DXZDGZZ +
+ & UPPERMET_UYY*DDG_DYYDGZZ +
+ & 2D0*UPPERMET_UYZ*DDG_DYZDGZZ +
+ & UPPERMET_UZZ*DDG_DZZDGZZ
+
+#endif
+
+#ifdef CCODE
+
+ WAVEG_DDGXX = UPPERMET_UXX*DDG_DXXDGXX +
+ 2*UPPERMET_UXY*DDG_DXYDGXX +
+ 2*UPPERMET_UXZ*DDG_DXZDGXX +
+ UPPERMET_UYY*DDG_DYYDGXX +
+ 2*UPPERMET_UYZ*DDG_DYZDGXX +
+ UPPERMET_UZZ*DDG_DYYDGXX;
+
+ WAVEG_DDGXY = UPPERMET_UXX*DDG_DXXDGXY +
+ 2*UPPERMET_UXY*DDG_DXYDGXY +
+ 2*UPPERMET_UXZ*DDG_DXZDGXY +
+ UPPERMET_UYY*DDG_DYYDGXY +
+ 2*UPPERMET_UYZ*DDG_DYZDGXY +
+ UPPERMET_UZZ*DDG_DYYDGXY;
+
+ WAVEG_DDGXZ = UPPERMET_UXX*DDG_DXXDGXZ +
+ 2*UPPERMET_UXY*DDG_DXYDGXZ +
+ 2*UPPERMET_UXZ*DDG_DXZDGXZ +
+ UPPERMET_UYY*DDG_DYYDGXZ +
+ 2*UPPERMET_UYZ*DDG_DYZDGXZ +
+ UPPERMET_UZZ*DDG_DYYDGXZ;
+
+ WAVEG_DDGYY = UPPERMET_UXX*DDG_DXXDGYY +
+ 2*UPPERMET_UXY*DDG_DXYDGYY +
+ 2*UPPERMET_UXZ*DDG_DXZDGYY +
+ UPPERMET_UYY*DDG_DYYDGYY +
+ 2*UPPERMET_UYZ*DDG_DYZDGYY +
+ UPPERMET_UZZ*DDG_DYYDGYY;
+
+ WAVEG_DDGYZ = UPPERMET_UXX*DDG_DXXDGYZ +
+ 2*UPPERMET_UXY*DDG_DXYDGYZ +
+ 2*UPPERMET_UXZ*DDG_DXZDGYZ +
+ UPPERMET_UYY*DDG_DYYDGYZ +
+ 2*UPPERMET_UYZ*DDG_DYZDGYZ +
+ UPPERMET_UZZ*DDG_DYYDGYZ;
+
+ WAVEG_DDGZZ = UPPERMET_UXX*DDG_DXXDGZZ +
+ 2*UPPERMET_UXY*DDG_DXYDGZZ +
+ 2*UPPERMET_UXZ*DDG_DXZDGZZ +
+ UPPERMET_UYY*DDG_DYYDGZZ +
+ 2*UPPERMET_UYZ*DDG_DYZDGZZ +
+ UPPERMET_UZZ*DDG_DYYDGZZ;
+
+
+#endif
+
+#endif
+
diff --git a/src/macro/WAVEG_undefine.h b/src/macro/WAVEG_undefine.h
new file mode 100644
index 0000000..ed2a4c0
--- /dev/null
+++ b/src/macro/WAVEG_undefine.h
@@ -0,0 +1,17 @@
+/*@@
+ @header WAVEG_undefine.h
+ @date Nov 98
+ @author Gabrielle Allen
+ @desc
+ Macro to calculate wave operator acting on the metric
+
+ That is g^lm g_ij,lm
+
+ @enddesc
+@@*/
+
+#undef WAVEG_GUTS
+
+#include "../../packages/CactusEinstein/Einstein/src/macro/UPPERMET_undefine.h"
+#include "../../packages/CactusEinstein/Einstein/src/macro/DDG_undefine.h"
+