aboutsummaryrefslogtreecommitdiff
path: root/ML_ADM/src/ML_ADM_constraints.c
diff options
context:
space:
mode:
Diffstat (limited to 'ML_ADM/src/ML_ADM_constraints.c')
-rw-r--r--ML_ADM/src/ML_ADM_constraints.c445
1 files changed, 445 insertions, 0 deletions
diff --git a/ML_ADM/src/ML_ADM_constraints.c b/ML_ADM/src/ML_ADM_constraints.c
new file mode 100644
index 0000000..f3a9296
--- /dev/null
+++ b/ML_ADM/src/ML_ADM_constraints.c
@@ -0,0 +1,445 @@
+/* File produced by user eschnett */
+/* Produced with Mathematica Version 6.0 for Mac OS X x86 (32-bit) (April 20, 2007) */
+
+/* Mathematica script written by Ian Hinder and Sascha Husa */
+
+#define KRANC_C
+
+#include <math.h>
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+#include "GenericFD.h"
+#include "Differencing.h"
+#include "loopcontrol.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define INV(x) ((1.0) / (x))
+#define SQR(x) ((x) * (x))
+#define CUB(x) ((x) * (x) * (x))
+#define QAD(x) ((x) * (x) * (x) * (x))
+
+void ML_ADM_constraints_Body(cGH *cctkGH, CCTK_INT dir, CCTK_INT face, CCTK_REAL normal[3], CCTK_REAL tangentA[3], CCTK_REAL tangentB[3], CCTK_INT min[3], CCTK_INT max[3], CCTK_INT n_subblock_gfs, CCTK_REAL *subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_PARAMETERS
+
+
+ /* Declare finite differencing variables */
+ CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE;
+ CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE;
+ CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE;
+ CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE;
+
+
+ /* Declare predefined quantities */
+ CCTK_REAL p1o12dx = INITVALUE;
+ CCTK_REAL p1o12dy = INITVALUE;
+ CCTK_REAL p1o12dz = INITVALUE;
+ CCTK_REAL p1o144dxdy = INITVALUE;
+ CCTK_REAL p1o144dxdz = INITVALUE;
+ CCTK_REAL p1o144dydz = INITVALUE;
+ CCTK_REAL pm1o12dx2 = INITVALUE;
+ CCTK_REAL pm1o12dy2 = INITVALUE;
+ CCTK_REAL pm1o12dz2 = INITVALUE;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_constraints_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_constraints_calc_every != ML_ADM_constraints_calc_offset)
+ {
+ return;
+ }
+
+ /* Include user-supplied include files */
+
+ /* Initialise finite differencing variables */
+ dx = CCTK_DELTA_SPACE(0);
+ dy = CCTK_DELTA_SPACE(1);
+ dz = CCTK_DELTA_SPACE(2);
+ dxi = 1.0 / dx;
+ dyi = 1.0 / dy;
+ dzi = 1.0 / dz;
+ khalf = 0.5;
+ kthird = 1/3.0;
+ ktwothird = 2.0/3.0;
+ kfourthird = 4.0/3.0;
+ keightthird = 8.0/3.0;
+ hdxi = 0.5 * dxi;
+ hdyi = 0.5 * dyi;
+ hdzi = 0.5 * dzi;
+
+ /* Initialize predefined quantities */
+ p1o12dx = INV(dx)/12.;
+ p1o12dy = INV(dy)/12.;
+ p1o12dz = INV(dz)/12.;
+ p1o144dxdy = (INV(dx)*INV(dy))/144.;
+ p1o144dxdz = (INV(dx)*INV(dz))/144.;
+ p1o144dydz = (INV(dy)*INV(dz))/144.;
+ pm1o12dx2 = -pow(dx,-2)/12.;
+ pm1o12dy2 = -pow(dy,-2)/12.;
+ pm1o12dz2 = -pow(dz,-2)/12.;
+
+ /* Loop over the grid points */
+ LC_LOOP3 (somename,
+ i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ max[0]-min[0],max[1]-min[1],max[2]-min[2])
+ {
+ int index = INITVALUE;
+ int subblock_index = INITVALUE;
+ index = CCTK_GFINDEX3D(cctkGH,i,j,k);
+ subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2]));
+
+ /* Declare shorthands */
+ CCTK_REAL detg = INITVALUE;
+ CCTK_REAL G111 = INITVALUE, G121 = INITVALUE, G122 = INITVALUE, G131 = INITVALUE, G132 = INITVALUE, G133 = INITVALUE;
+ CCTK_REAL G211 = INITVALUE, G221 = INITVALUE, G222 = INITVALUE, G231 = INITVALUE, G232 = INITVALUE, G233 = INITVALUE;
+ CCTK_REAL G311 = INITVALUE, G321 = INITVALUE, G322 = INITVALUE, G331 = INITVALUE, G332 = INITVALUE, G333 = INITVALUE;
+ CCTK_REAL gu11 = INITVALUE, gu12 = INITVALUE, gu13 = INITVALUE, gu22 = INITVALUE, gu23 = INITVALUE, gu33 = INITVALUE;
+ CCTK_REAL Km11 = INITVALUE, Km12 = INITVALUE, Km13 = INITVALUE, Km21 = INITVALUE, Km22 = INITVALUE, Km23 = INITVALUE;
+ CCTK_REAL Km31 = INITVALUE, Km32 = INITVALUE, Km33 = INITVALUE;
+ CCTK_REAL R11 = INITVALUE, R21 = INITVALUE, R22 = INITVALUE, R31 = INITVALUE, R32 = INITVALUE, R33 = INITVALUE;
+ CCTK_REAL trK = INITVALUE;
+ CCTK_REAL trR = INITVALUE;
+
+ /* Declare local copies of grid functions */
+ CCTK_REAL g11L = INITVALUE, g21L = INITVALUE, g22L = INITVALUE, g31L = INITVALUE, g32L = INITVALUE, g33L = INITVALUE;
+ CCTK_REAL HL = INITVALUE;
+ CCTK_REAL K11L = INITVALUE, K21L = INITVALUE, K22L = INITVALUE, K31L = INITVALUE, K32L = INITVALUE, K33L = INITVALUE;
+ CCTK_REAL M1L = INITVALUE, M2L = INITVALUE, M3L = INITVALUE;
+ /* Declare precomputed derivatives*/
+
+ /* Declare derivatives */
+ CCTK_REAL PDstandard4th1g11 = INITVALUE;
+ CCTK_REAL PDstandard4th2g11 = INITVALUE;
+ CCTK_REAL PDstandard4th3g11 = INITVALUE;
+ CCTK_REAL PDstandard4th22g11 = INITVALUE;
+ CCTK_REAL PDstandard4th33g11 = INITVALUE;
+ CCTK_REAL PDstandard4th12g11 = INITVALUE;
+ CCTK_REAL PDstandard4th13g11 = INITVALUE;
+ CCTK_REAL PDstandard4th21g11 = INITVALUE;
+ CCTK_REAL PDstandard4th23g11 = INITVALUE;
+ CCTK_REAL PDstandard4th31g11 = INITVALUE;
+ CCTK_REAL PDstandard4th32g11 = INITVALUE;
+ CCTK_REAL PDstandard4th1g21 = INITVALUE;
+ CCTK_REAL PDstandard4th2g21 = INITVALUE;
+ CCTK_REAL PDstandard4th3g21 = INITVALUE;
+ CCTK_REAL PDstandard4th33g21 = INITVALUE;
+ CCTK_REAL PDstandard4th12g21 = INITVALUE;
+ CCTK_REAL PDstandard4th13g21 = INITVALUE;
+ CCTK_REAL PDstandard4th21g21 = INITVALUE;
+ CCTK_REAL PDstandard4th23g21 = INITVALUE;
+ CCTK_REAL PDstandard4th31g21 = INITVALUE;
+ CCTK_REAL PDstandard4th32g21 = INITVALUE;
+ CCTK_REAL PDstandard4th1g22 = INITVALUE;
+ CCTK_REAL PDstandard4th2g22 = INITVALUE;
+ CCTK_REAL PDstandard4th3g22 = INITVALUE;
+ CCTK_REAL PDstandard4th11g22 = INITVALUE;
+ CCTK_REAL PDstandard4th33g22 = INITVALUE;
+ CCTK_REAL PDstandard4th12g22 = INITVALUE;
+ CCTK_REAL PDstandard4th13g22 = INITVALUE;
+ CCTK_REAL PDstandard4th21g22 = INITVALUE;
+ CCTK_REAL PDstandard4th23g22 = INITVALUE;
+ CCTK_REAL PDstandard4th31g22 = INITVALUE;
+ CCTK_REAL PDstandard4th32g22 = INITVALUE;
+ CCTK_REAL PDstandard4th1g31 = INITVALUE;
+ CCTK_REAL PDstandard4th2g31 = INITVALUE;
+ CCTK_REAL PDstandard4th3g31 = INITVALUE;
+ CCTK_REAL PDstandard4th22g31 = INITVALUE;
+ CCTK_REAL PDstandard4th12g31 = INITVALUE;
+ CCTK_REAL PDstandard4th13g31 = INITVALUE;
+ CCTK_REAL PDstandard4th21g31 = INITVALUE;
+ CCTK_REAL PDstandard4th23g31 = INITVALUE;
+ CCTK_REAL PDstandard4th31g31 = INITVALUE;
+ CCTK_REAL PDstandard4th32g31 = INITVALUE;
+ CCTK_REAL PDstandard4th1g32 = INITVALUE;
+ CCTK_REAL PDstandard4th2g32 = INITVALUE;
+ CCTK_REAL PDstandard4th3g32 = INITVALUE;
+ CCTK_REAL PDstandard4th11g32 = INITVALUE;
+ CCTK_REAL PDstandard4th12g32 = INITVALUE;
+ CCTK_REAL PDstandard4th13g32 = INITVALUE;
+ CCTK_REAL PDstandard4th21g32 = INITVALUE;
+ CCTK_REAL PDstandard4th23g32 = INITVALUE;
+ CCTK_REAL PDstandard4th31g32 = INITVALUE;
+ CCTK_REAL PDstandard4th32g32 = INITVALUE;
+ CCTK_REAL PDstandard4th1g33 = INITVALUE;
+ CCTK_REAL PDstandard4th2g33 = INITVALUE;
+ CCTK_REAL PDstandard4th3g33 = INITVALUE;
+ CCTK_REAL PDstandard4th11g33 = INITVALUE;
+ CCTK_REAL PDstandard4th22g33 = INITVALUE;
+ CCTK_REAL PDstandard4th12g33 = INITVALUE;
+ CCTK_REAL PDstandard4th13g33 = INITVALUE;
+ CCTK_REAL PDstandard4th21g33 = INITVALUE;
+ CCTK_REAL PDstandard4th23g33 = INITVALUE;
+ CCTK_REAL PDstandard4th31g33 = INITVALUE;
+ CCTK_REAL PDstandard4th32g33 = INITVALUE;
+ CCTK_REAL PDstandard4th2K11 = INITVALUE;
+ CCTK_REAL PDstandard4th3K11 = INITVALUE;
+ CCTK_REAL PDstandard4th1K21 = INITVALUE;
+ CCTK_REAL PDstandard4th2K21 = INITVALUE;
+ CCTK_REAL PDstandard4th3K21 = INITVALUE;
+ CCTK_REAL PDstandard4th1K22 = INITVALUE;
+ CCTK_REAL PDstandard4th3K22 = INITVALUE;
+ CCTK_REAL PDstandard4th1K31 = INITVALUE;
+ CCTK_REAL PDstandard4th2K31 = INITVALUE;
+ CCTK_REAL PDstandard4th3K31 = INITVALUE;
+ CCTK_REAL PDstandard4th1K32 = INITVALUE;
+ CCTK_REAL PDstandard4th2K32 = INITVALUE;
+ CCTK_REAL PDstandard4th3K32 = INITVALUE;
+ CCTK_REAL PDstandard4th1K33 = INITVALUE;
+ CCTK_REAL PDstandard4th2K33 = INITVALUE;
+
+ /* Assign local copies of grid functions */
+ g11L = g11[index];
+ g21L = g21[index];
+ g22L = g22[index];
+ g31L = g31[index];
+ g32L = g32[index];
+ g33L = g33[index];
+ K11L = K11[index];
+ K21L = K21[index];
+ K22L = K22[index];
+ K31L = K31[index];
+ K32L = K32[index];
+ K33L = K33[index];
+
+ /* Assign local copies of subblock grid functions */
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives (new style) */
+ PDstandard4th1g11 = PDstandard4th1(g11, i, j, k);
+ PDstandard4th2g11 = PDstandard4th2(g11, i, j, k);
+ PDstandard4th3g11 = PDstandard4th3(g11, i, j, k);
+ PDstandard4th22g11 = PDstandard4th22(g11, i, j, k);
+ PDstandard4th33g11 = PDstandard4th33(g11, i, j, k);
+ PDstandard4th23g11 = PDstandard4th23(g11, i, j, k);
+ PDstandard4th1g21 = PDstandard4th1(g21, i, j, k);
+ PDstandard4th2g21 = PDstandard4th2(g21, i, j, k);
+ PDstandard4th3g21 = PDstandard4th3(g21, i, j, k);
+ PDstandard4th33g21 = PDstandard4th33(g21, i, j, k);
+ PDstandard4th12g21 = PDstandard4th12(g21, i, j, k);
+ PDstandard4th13g21 = PDstandard4th13(g21, i, j, k);
+ PDstandard4th23g21 = PDstandard4th23(g21, i, j, k);
+ PDstandard4th1g22 = PDstandard4th1(g22, i, j, k);
+ PDstandard4th2g22 = PDstandard4th2(g22, i, j, k);
+ PDstandard4th3g22 = PDstandard4th3(g22, i, j, k);
+ PDstandard4th11g22 = PDstandard4th11(g22, i, j, k);
+ PDstandard4th33g22 = PDstandard4th33(g22, i, j, k);
+ PDstandard4th13g22 = PDstandard4th13(g22, i, j, k);
+ PDstandard4th1g31 = PDstandard4th1(g31, i, j, k);
+ PDstandard4th2g31 = PDstandard4th2(g31, i, j, k);
+ PDstandard4th3g31 = PDstandard4th3(g31, i, j, k);
+ PDstandard4th22g31 = PDstandard4th22(g31, i, j, k);
+ PDstandard4th12g31 = PDstandard4th12(g31, i, j, k);
+ PDstandard4th13g31 = PDstandard4th13(g31, i, j, k);
+ PDstandard4th23g31 = PDstandard4th23(g31, i, j, k);
+ PDstandard4th1g32 = PDstandard4th1(g32, i, j, k);
+ PDstandard4th2g32 = PDstandard4th2(g32, i, j, k);
+ PDstandard4th3g32 = PDstandard4th3(g32, i, j, k);
+ PDstandard4th11g32 = PDstandard4th11(g32, i, j, k);
+ PDstandard4th12g32 = PDstandard4th12(g32, i, j, k);
+ PDstandard4th13g32 = PDstandard4th13(g32, i, j, k);
+ PDstandard4th23g32 = PDstandard4th23(g32, i, j, k);
+ PDstandard4th1g33 = PDstandard4th1(g33, i, j, k);
+ PDstandard4th2g33 = PDstandard4th2(g33, i, j, k);
+ PDstandard4th3g33 = PDstandard4th3(g33, i, j, k);
+ PDstandard4th11g33 = PDstandard4th11(g33, i, j, k);
+ PDstandard4th22g33 = PDstandard4th22(g33, i, j, k);
+ PDstandard4th12g33 = PDstandard4th12(g33, i, j, k);
+ PDstandard4th2K11 = PDstandard4th2(K11, i, j, k);
+ PDstandard4th3K11 = PDstandard4th3(K11, i, j, k);
+ PDstandard4th1K21 = PDstandard4th1(K21, i, j, k);
+ PDstandard4th2K21 = PDstandard4th2(K21, i, j, k);
+ PDstandard4th3K21 = PDstandard4th3(K21, i, j, k);
+ PDstandard4th1K22 = PDstandard4th1(K22, i, j, k);
+ PDstandard4th3K22 = PDstandard4th3(K22, i, j, k);
+ PDstandard4th1K31 = PDstandard4th1(K31, i, j, k);
+ PDstandard4th2K31 = PDstandard4th2(K31, i, j, k);
+ PDstandard4th3K31 = PDstandard4th3(K31, i, j, k);
+ PDstandard4th1K32 = PDstandard4th1(K32, i, j, k);
+ PDstandard4th2K32 = PDstandard4th2(K32, i, j, k);
+ PDstandard4th3K32 = PDstandard4th3(K32, i, j, k);
+ PDstandard4th1K33 = PDstandard4th1(K33, i, j, k);
+ PDstandard4th2K33 = PDstandard4th2(K33, i, j, k);
+
+ /* Precompute derivatives (old style) */
+
+ /* Calculate temporaries and grid functions */
+ detg = 2*g21L*g31L*g32L + g33L*(g11L*g22L - SQR(g21L)) - g22L*SQR(g31L) - g11L*SQR(g32L);
+
+ gu11 = INV(detg)*(g22L*g33L - SQR(g32L));
+
+ gu12 = (g31L*g32L - g21L*g33L)*INV(detg);
+
+ gu13 = (-(g22L*g31L) + g21L*g32L)*INV(detg);
+
+ gu22 = INV(detg)*(g11L*g33L - SQR(g31L));
+
+ gu23 = (g21L*g31L - g11L*g32L)*INV(detg);
+
+ gu33 = INV(detg)*(g11L*g22L - SQR(g21L));
+
+ G111 = khalf*(gu11*PDstandard4th1g11 + 2*(gu12*PDstandard4th1g21 + gu13*PDstandard4th1g31) - gu12*PDstandard4th2g11 -
+ gu13*PDstandard4th3g11);
+
+ G211 = khalf*(gu12*PDstandard4th1g11 + 2*(gu22*PDstandard4th1g21 + gu23*PDstandard4th1g31) - gu22*PDstandard4th2g11 -
+ gu23*PDstandard4th3g11);
+
+ G311 = khalf*(gu13*PDstandard4th1g11 + 2*(gu23*PDstandard4th1g21 + gu33*PDstandard4th1g31) - gu23*PDstandard4th2g11 -
+ gu33*PDstandard4th3g11);
+
+ G121 = khalf*(gu12*PDstandard4th1g22 + gu11*PDstandard4th2g11 +
+ gu13*(PDstandard4th1g32 + PDstandard4th2g31 - PDstandard4th3g21));
+
+ G221 = khalf*(gu22*PDstandard4th1g22 + gu12*PDstandard4th2g11 +
+ gu23*(PDstandard4th1g32 + PDstandard4th2g31 - PDstandard4th3g21));
+
+ G321 = khalf*(gu23*PDstandard4th1g22 + gu13*PDstandard4th2g11 +
+ gu33*(PDstandard4th1g32 + PDstandard4th2g31 - PDstandard4th3g21));
+
+ G131 = khalf*(gu13*PDstandard4th1g33 + gu11*PDstandard4th3g11 +
+ gu12*(PDstandard4th1g32 - PDstandard4th2g31 + PDstandard4th3g21));
+
+ G231 = khalf*(gu23*PDstandard4th1g33 + gu12*PDstandard4th3g11 +
+ gu22*(PDstandard4th1g32 - PDstandard4th2g31 + PDstandard4th3g21));
+
+ G331 = khalf*(gu33*PDstandard4th1g33 + gu13*PDstandard4th3g11 +
+ gu23*(PDstandard4th1g32 - PDstandard4th2g31 + PDstandard4th3g21));
+
+ G122 = khalf*(gu11*(-PDstandard4th1g22 + 2*PDstandard4th2g21) + gu12*PDstandard4th2g22 +
+ gu13*(2*PDstandard4th2g32 - PDstandard4th3g22));
+
+ G222 = khalf*(gu12*(-PDstandard4th1g22 + 2*PDstandard4th2g21) + gu22*PDstandard4th2g22 +
+ gu23*(2*PDstandard4th2g32 - PDstandard4th3g22));
+
+ G322 = khalf*(gu13*(-PDstandard4th1g22 + 2*PDstandard4th2g21) + gu23*PDstandard4th2g22 +
+ gu33*(2*PDstandard4th2g32 - PDstandard4th3g22));
+
+ G132 = khalf*(gu13*PDstandard4th2g33 + gu11*(-PDstandard4th1g32 + PDstandard4th2g31 + PDstandard4th3g21) +
+ gu12*PDstandard4th3g22);
+
+ G232 = khalf*(gu23*PDstandard4th2g33 + gu12*(-PDstandard4th1g32 + PDstandard4th2g31 + PDstandard4th3g21) +
+ gu22*PDstandard4th3g22);
+
+ G332 = khalf*(gu33*PDstandard4th2g33 + gu13*(-PDstandard4th1g32 + PDstandard4th2g31 + PDstandard4th3g21) +
+ gu23*PDstandard4th3g22);
+
+ G133 = khalf*(-(gu11*PDstandard4th1g33) - gu12*PDstandard4th2g33 + 2*gu11*PDstandard4th3g31 +
+ 2*gu12*PDstandard4th3g32 + gu13*PDstandard4th3g33);
+
+ G233 = khalf*(-(gu12*PDstandard4th1g33) - gu22*PDstandard4th2g33 + 2*gu12*PDstandard4th3g31 +
+ 2*gu22*PDstandard4th3g32 + gu23*PDstandard4th3g33);
+
+ G333 = khalf*(-(gu13*PDstandard4th1g33) - gu23*PDstandard4th2g33 + 2*gu13*PDstandard4th3g31 +
+ 2*gu23*PDstandard4th3g32 + gu33*PDstandard4th3g33);
+
+ R11 = khalf*(-(gu22*PDstandard4th11g22) - 2*(G111*G122 + G111*G133 + G211*G222 + G211*G233 + G311*G322 + G311*G333 +
+ gu23*PDstandard4th11g32) - gu33*PDstandard4th11g33 + 2*gu22*PDstandard4th12g21 + 2*gu23*PDstandard4th12g31 +
+ 2*gu23*PDstandard4th13g21 + 2*gu33*PDstandard4th13g31 - gu22*PDstandard4th22g11 - 2*gu23*PDstandard4th23g11 -
+ gu33*PDstandard4th33g11 + 2*SQR(G121) + 2*SQR(G131) + 2*SQR(G221) + 2*SQR(G231) + 2*SQR(G321) + 2*SQR(G331));
+
+ R21 = khalf*(2*(G131*G132 + G231*G232 + G331*G332) - 2*(G121*G133 + G221*G233 + G321*G333 + gu12*PDstandard4th12g21) -
+ gu23*PDstandard4th12g32 - gu33*PDstandard4th12g33 +
+ gu13*(PDstandard4th11g32 - PDstandard4th12g31 - PDstandard4th13g21) + gu23*PDstandard4th13g22 +
+ gu33*PDstandard4th13g32 + gu12*(PDstandard4th11g22 + PDstandard4th22g11) + gu23*PDstandard4th22g31 +
+ gu13*PDstandard4th23g11 - gu23*PDstandard4th23g21 + gu33*PDstandard4th23g31 - gu33*PDstandard4th33g21);
+
+ R31 = khalf*(2*(G121*G132 + G221*G232 + G321*G332) - 2*(G122*G131 + G222*G231 + G322*G331 + gu13*PDstandard4th13g31) +
+ gu12*(PDstandard4th11g32 - PDstandard4th12g31 - PDstandard4th13g21 + PDstandard4th23g11) +
+ gu22*(PDstandard4th12g32 - PDstandard4th13g22 - PDstandard4th22g31 + PDstandard4th23g21) +
+ gu13*(PDstandard4th11g33 + PDstandard4th33g11) +
+ gu23*(PDstandard4th12g33 - PDstandard4th13g32 - PDstandard4th23g31 + PDstandard4th33g21));
+
+ R22 = khalf*(-2*(G122*(G111 + G133) + G222*(G211 + G233) + G322*(G311 + G333) + gu13*PDstandard4th13g22) +
+ gu11*(-PDstandard4th11g22 + 2*PDstandard4th12g21 - PDstandard4th22g11) +
+ gu13*(-2*PDstandard4th22g31 + 2*(PDstandard4th12g32 + PDstandard4th23g21)) +
+ gu33*(-PDstandard4th22g33 + 2*PDstandard4th23g32 - PDstandard4th33g22) +
+ 2*(SQR(G121) + SQR(G132) + SQR(G221) + SQR(G232) + SQR(G321) + SQR(G332)));
+
+ R32 = khalf*(2*(G121*G131 + G221*G231 + G321*G331) +
+ gu11*(-PDstandard4th11g32 + PDstandard4th12g31 + PDstandard4th13g21 - PDstandard4th23g11) +
+ gu12*(-PDstandard4th12g32 + PDstandard4th13g22 + PDstandard4th22g31 - PDstandard4th23g21) -
+ 2*(G111*G132 + G211*G232 + G311*G332 + gu23*PDstandard4th23g32) +
+ gu13*(PDstandard4th12g33 - PDstandard4th13g32 - PDstandard4th23g31 + PDstandard4th33g21) +
+ gu23*(PDstandard4th22g33 + PDstandard4th33g22));
+
+ R33 = khalf*(gu11*(-PDstandard4th11g33 + 2*PDstandard4th13g31 - PDstandard4th33g11) -
+ 2*((G111 + G122)*G133 + (G211 + G222)*G233 + (G311 + G322)*G333 +
+ gu12*(PDstandard4th12g33 + PDstandard4th33g21)) +
+ gu22*(-PDstandard4th22g33 + 2*PDstandard4th23g32 - PDstandard4th33g22) +
+ 2*(gu12*(PDstandard4th13g32 + PDstandard4th23g31) + SQR(G131) + SQR(G132) + SQR(G231) + SQR(G232) + SQR(G331) +
+ SQR(G332)));
+
+ trR = gu11*R11 + gu22*R22 + 2*(gu12*R21 + gu13*R31 + gu23*R32) + gu33*R33;
+
+ Km11 = gu11*K11L + gu12*K21L + gu13*K31L;
+
+ Km21 = gu12*K11L + gu22*K21L + gu23*K31L;
+
+ Km31 = gu13*K11L + gu23*K21L + gu33*K31L;
+
+ Km12 = gu11*K21L + gu12*K22L + gu13*K32L;
+
+ Km22 = gu12*K21L + gu22*K22L + gu23*K32L;
+
+ Km32 = gu13*K21L + gu23*K22L + gu33*K32L;
+
+ Km13 = gu11*K31L + gu12*K32L + gu13*K33L;
+
+ Km23 = gu12*K31L + gu22*K32L + gu23*K33L;
+
+ Km33 = gu13*K31L + gu23*K32L + gu33*K33L;
+
+ trK = Km11 + Km22 + Km33;
+
+ HL = -2*(Km12*Km21 + Km13*Km31 + Km23*Km32) + trR - SQR(Km11) - SQR(Km22) - SQR(Km33) + SQR(trK);
+
+ M1L = gu12*(-(G121*K11L) + G111*K21L - G221*K21L + G211*K22L - G321*K31L + G311*K32L - PDstandard4th1K21 +
+ PDstandard4th2K11) + gu22*(-(G122*K11L) + G121*K21L - G222*K21L + G221*K22L - G322*K31L + G321*K32L -
+ PDstandard4th1K22 + PDstandard4th2K21) + gu13*
+ (-(G131*K11L) - G231*K21L + G111*K31L - G331*K31L + G211*K32L + G311*K33L - PDstandard4th1K31 + PDstandard4th3K11)\
+ + gu23*(G131*K21L + G231*K22L + G121*K31L + (G221 + G331)*K32L + G321*K33L -
+ 2*(G132*K11L + G232*K21L + G332*K31L + PDstandard4th1K32) + PDstandard4th2K31 + PDstandard4th3K21) +
+ gu33*(-(G133*K11L) - G233*K21L + G131*K31L - G333*K31L + G231*K32L + G331*K33L - PDstandard4th1K33 +
+ PDstandard4th3K31);
+
+ M2L = gu11*(G121*K11L + (-G111 + G221)*K21L - G211*K22L + G321*K31L - G311*K32L + PDstandard4th1K21 -
+ PDstandard4th2K11) + gu12*(G122*K11L + (-G121 + G222)*K21L - G221*K22L + G322*K31L - G321*K32L +
+ PDstandard4th1K22 - PDstandard4th2K21) + gu13*
+ (G132*K11L + (-2*G131 + G232)*K21L + (G121 + G332)*K31L + G221*K32L + G321*K33L + PDstandard4th1K32 -
+ 2*(G231*K22L + G331*K32L + PDstandard4th2K31) + PDstandard4th3K21) +
+ gu23*(-(G132*K21L) - G232*K22L + G122*K31L + G222*K32L - G332*K32L + G322*K33L - PDstandard4th2K32 +
+ PDstandard4th3K22) + gu33*(-(G133*K21L) - G233*K22L + G132*K31L + G232*K32L - G333*K32L + G332*K33L -
+ PDstandard4th2K33 + PDstandard4th3K32);
+
+ M3L = gu11*(G131*K11L + G231*K21L + (-G111 + G331)*K31L - G211*K32L - G311*K33L + PDstandard4th1K31 -
+ PDstandard4th3K11) + gu12*(G132*K11L + (G131 + G232)*K21L + G231*K22L + (-2*G121 + G332)*K31L +
+ (-2*G221 + G331)*K32L + PDstandard4th1K32 + PDstandard4th2K31 - 2*(G321*K33L + PDstandard4th3K21)) +
+ gu22*(G132*K21L + G232*K22L - G122*K31L - G222*K32L + G332*K32L - G322*K33L + PDstandard4th2K32 -
+ PDstandard4th3K22) + gu13*(G133*K11L + G233*K21L + (-G131 + G333)*K31L - G231*K32L - G331*K33L +
+ PDstandard4th1K33 - PDstandard4th3K31) + gu23*
+ (G133*K21L + G233*K22L - G132*K31L - G232*K32L + G333*K32L - G332*K33L + PDstandard4th2K33 - PDstandard4th3K32);
+
+
+ /* Copy local copies back to grid functions */
+ H[index] = HL;
+ M1[index] = M1L;
+ M2[index] = M2L;
+ M3[index] = M3L;
+
+ /* Copy local copies back to subblock grid functions */
+ }
+ LC_ENDLOOP3 (somename);
+}
+
+void ML_ADM_constraints(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_PARAMETERS
+
+ GenericFD_LoopOverEverything(cctkGH, &ML_ADM_constraints_Body);
+}