diff options
Diffstat (limited to 'src/psi4_calc_4th.cc')
-rw-r--r-- | src/psi4_calc_4th.cc | 78 |
1 files changed, 27 insertions, 51 deletions
diff --git a/src/psi4_calc_4th.cc b/src/psi4_calc_4th.cc index 628e7bb..284a741 100644 --- a/src/psi4_calc_4th.cc +++ b/src/psi4_calc_4th.cc @@ -12,6 +12,7 @@ #include "cctk_Parameters.h" #include "GenericFD.h" #include "Differencing.h" +#include "cctk_Loop.h" #include "loopcontrol.h" #include "vectors.h" @@ -43,8 +44,6 @@ static void psi4_calc_4th_Body(cGH const * restrict const cctkGH, int const dir, DECLARE_CCTK_PARAMETERS; - /* Declare finite differencing variables */ - /* Include user-supplied include files */ /* Initialise finite differencing variables */ @@ -75,30 +74,30 @@ static void psi4_calc_4th_Body(cGH const * restrict const cctkGH, int const dir, CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333)); CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333)); CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333)); - CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444))); - CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444))); - CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444))); + CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444)); + CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444)); + CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444)); CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556)); CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556)); CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556)); CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5)); CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5)); CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5)); - CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778))); - CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778))); - CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778))); - CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25))); - CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25))); - CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25))); + CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778)); + CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778)); + CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778)); + CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25)); + CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25)); + CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25)); CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413)); CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413)); CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413)); CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667)); CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667)); CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667)); - CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6))); - CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6))); - CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6))); + CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6)); + CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6)); + CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6)); CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048)); CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048)); CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048)); @@ -164,7 +163,7 @@ static void psi4_calc_4th_Body(cGH const * restrict const cctkGH, int const dir, /* Loop over the grid points */ #pragma omp parallel - LC_LOOP3VEC (psi4_calc_4th, + LC_LOOP3VEC(psi4_calc_4th, i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2], cctk_lsh[0],cctk_lsh[1],cctk_lsh[2], CCTK_REAL_VEC_SIZE) @@ -1837,45 +1836,17 @@ static void psi4_calc_4th_Body(cGH const * restrict const cctkGH, int const dir, kmadd(gInv13,R3133,kmadd(gInv23,R3233,kmadd(gInv31,R3331,kmadd(gInv32,R3332,kmadd(gInv33,R3333,kmadd(gInv12,kmadd(kxyL,kzzL,knmsub(kxzL,kyzL,R3132)),kmadd(gInv21,kmadd(kxyL,kzzL,knmsub(kxzL,kyzL,R3231)),kmadd(gInv11,kmadd(kxxL,kzzL,ksub(R3131,SQR(kxzL))),kmul(gInv22,kmadd(kyyL,kzzL,ksub(R3232,SQR(kyzL)))))))))))); CCTK_REAL_VEC Psi4rL = - kmadd(R4p1112,kmul(rmbar1,kmul(rmbar2,SQR(n1))),kmadd(R4p1211,kmul(rmbar1,kmul(rmbar2,SQR(n1))),kmadd(R4p1113,kmul(rmbar1,kmul(rmbar3,SQR(n1))),kmadd(R4p1311,kmul(rmbar1,kmul(rmbar3,SQR(n1))),kmadd(R4p1213,kmul(rmbar2,kmul(rmbar3,SQR(n1))),kmadd(R4p1312,kmul(rmbar2,kmul(rmbar3,SQR(n1))),kmadd(R4p2122,kmul(rmbar1,kmul(rmbar2,SQR(n2))),kmadd(R4p2221,kmul(rmbar1,kmul(rmbar2,SQR(n2))),kmadd(R4p2123,kmul(rmbar1,kmul(rmbar3,SQR(n2))),kmadd(R4p2321,kmul(rmbar1,kmul(rmbar3,SQR(n2))),kmadd(R4p2223,kmul(rmbar2,kmul(rmbar3,SQR(n2))),kmadd(R4p2322,kmul(rmbar2,kmul(rmbar3,SQR(n2))),kmadd(R4p3132,kmul(rmbar1,kmul(rmbar2,SQR(n3))),kmadd(R4p3231,kmul(rmbar1,kmul(rmbar2,SQR(n3))),kmadd(R4p3133,kmul(rmbar1,kmul(rmbar3,SQR(n3))),kmadd(R4p3331,kmul(rmbar1,kmul(rmbar3,SQR(n3))),kmadd(R4p3233,kmul(rmbar2,kmul(rmbar3,SQR(n3))),kmadd(R4p3332,kmul(rmbar2,kmul(rmbar3,SQR(n3))),kmadd(rmbar1,kmul(rmbar2,kmul(Rojo12,SQR(nn))),kmadd(rmbar1,kmul(rmbar3,kmul(Rojo13,SQR(nn))),kmadd(rmbar1,kmul(rmbar2,kmul(Rojo21,SQR(nn))),kmadd(rmbar2,kmul(rmbar3,kmul(Rojo23,SQR(nn))),kmadd(rmbar1,kmul(rmbar3,kmul(Rojo31,SQR(nn))),kmadd(rmbar2,kmul(rmbar3,kmul(Rojo32,SQR(nn))),kmadd(n1,kmul(n2,kmul(R4p1121,SQR(rmbar1))),kmadd(n1,kmul(n3,kmul(R4p1131,SQR(rmbar1))),kmadd(n1,kmul(n2,kmul(R4p2111,SQR(rmbar1))),kmadd(n2,kmul(n3,kmul(R4p2131,SQR(rmbar1))),kmadd(n1,kmul(n3,kmul(R4p3111,SQR(rmbar1))),kmadd(n2,kmul(n3,kmul(R4p3121,SQR(rmbar1))),kmadd(R4p1111,kmul(SQR(n1),SQR(rmbar1)),kmadd(R4p2121,kmul(SQR(n2),SQR(rmbar1)),kmadd(R4p3131,kmul(SQR(n3),SQR(rmbar1)),kmadd(Rojo11,kmul(SQR(nn),SQR(rmbar1)),kmadd(n1,kmul(n2,kmul(R4p1222,SQR(rmbar2))),kmadd(n1,kmul(n3,kmul(R4p1232,SQR(rmbar2))),kmadd(n1,kmul(n2,kmul(R4p2212,SQR(rmbar2))),kmadd(n2,kmul(n3,kmul(R4p2232,SQR(rmbar2))),kmadd(n1,kmul(n3,kmul(R4p3212,SQR(rmbar2))),kmadd(n2,kmul(n3,kmul(R4p3222,SQR(rmbar2))),kmadd(R4p1212,kmul(SQR(n1),SQR(rmbar2)),kmadd(R4p2222,kmul(SQR(n2),SQR(rmbar2)),kmadd(R4p3232,kmul(SQR(n3),SQR(rmbar2)),kmadd(Rojo22,kmul(SQR(nn),SQR(rmbar2)),kmadd(n1,kmul(n2,kmul(R4p1323,SQR(rmbar3))),kmadd(n1,kmul(n3,kmul(R4p1333,SQR(rmbar3))),kmadd(n1,kmul(n2,kmul(R4p2313,SQR(rmbar3))),kmadd(n2,kmul(n3,kmul(R4p2333,SQR(rmbar3))),kmadd(n1,kmul(n3,kmul(R4p3313,SQR(rmbar3))),kmadd(n2,kmul(n3,kmul(R4p3323,SQR(rmbar3))),kmadd(R4p1313,kmul(SQR(n1),SQR(rmbar3)),kmadd(R4p2323,kmul(SQR(n2),SQR(rmbar3)),kmadd(R4p3333,kmul(SQR(n3),SQR(rmbar3)),kmadd(Rojo33,kmul(SQR(nn),SQR(rmbar3)),knmsub(n3,kmul(SQR(imbar3),kmadd(n1,R4p3313,kmul(n2,R4p2333))),kmadd(SQR(imbar3),kmsub(n2,kmul(nn,kmul(Ro323,ToReal(-2))),kmul(R4p2323,SQR(n2))),kmadd(SQR(imbar3),kmsub(n3,kmul(nn,kmul(Ro333,ToReal(-2))),kmul(R4p3333,SQR(n3))),kmadd(SQR(imbar3),kmsub(n1,kmul(nn,kmul(Ro313,ToReal(-2))),kmadd(n2,kmul(n3,R4p3323),kmadd(Rojo33,SQR(nn),kmul(R4p1313,SQR(n1))))),kmadd(n1,kmul(nn,kmul(Ro111,kmul(SQR(rmbar1),ToReal(2)))),kmadd(n2,kmul(nn,kmul(Ro121,kmul(SQR(rmbar1),ToReal(2)))),kmadd(n3,kmul(nn,kmul(Ro131,kmul(SQR(rmbar1),ToReal(2)))),kmadd(n1,kmul(nn,kmul(Ro212,kmul(SQR(rmbar2),ToReal(2)))),kmadd(n2,kmul(nn,kmul(Ro222,kmul(SQR(rmbar2),ToReal(2)))),kmadd(n3,kmul(nn,kmul(Ro232,kmul(SQR(rmbar2),ToReal(2)))),kmadd(n1,kmul(nn,kmul(Ro313,kmul(SQR(rmbar3),ToReal(2)))),kmadd(n2,kmul(nn,kmul(Ro323,kmul(SQR(rmbar3),ToReal(2)))),kmadd(n3,kmul(nn,kmul(Ro333,kmul(SQR(rmbar3),ToReal(2)))),kmadd(n1,kmadd(n3,kmul(R4p1132,kmul(rmbar1,rmbar2)),kmadd(n2,kmul(R4p1221,kmul(rmbar1,rmbar2)),kmadd(n3,kmul(R4p1231,kmul(rmbar1,rmbar2)),kmadd(n2,kmul(R4p1123,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p1331,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p2113,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p1233,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p1322,kmul(rmbar2,rmbar3)),kmadd(n3,kmul(R4p1332,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p2213,kmul(rmbar2,rmbar3)),kmadd(n2,kmsub(R4p1122,kmul(rmbar1,rmbar2),kmul(R4p1323,SQR(imbar3))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro112,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro113,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro211,ToReal(2)))),kmadd(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro213,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro311,ToReal(2)))),kmul(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro312,ToReal(2))))))))))))))))))))),kmadd(n2,kmadd(n3,kmul(R4p2132,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p2211,kmul(rmbar1,rmbar2)),kmadd(n3,kmul(R4p2231,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p1321,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p2133,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p2311,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p3321,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p1223,kmul(rmbar2,rmbar3)),kmadd(n3,kmul(R4p2233,kmul(rmbar2,rmbar3)),kmadd(n1,kmul(R4p2312,kmul(rmbar2,rmbar3)),kmadd(n1,kmsub(R4p2112,kmul(rmbar1,rmbar2),kmul(R4p2313,SQR(imbar3))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro122,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro123,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro221,ToReal(2)))),kmadd(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro223,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro321,ToReal(2)))),kmul(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro322,ToReal(2))))))))))))))))))))),kmsub(n3,kmadd(n2,kmul(R4p3122,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p3211,kmul(rmbar1,rmbar2)),kmadd(n2,kmul(R4p3221,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p1133,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p2331,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p3113,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p3123,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p3311,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p2332,kmul(rmbar2,rmbar3)),kmadd(n1,kmul(R4p3213,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p3223,kmul(rmbar2,rmbar3)),kmadd(n1,kmul(R4p3312,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p3322,kmul(rmbar2,rmbar3)),kmadd(n1,kmsub(R4p3112,kmul(rmbar1,rmbar2),kmul(R4p1333,SQR(imbar3))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro132,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro133,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro231,ToReal(2)))),kmadd(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro233,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro331,ToReal(2)))),kmul(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro332,ToReal(2)))))))))))))))))))))))),kmadd(SQR(imbar1),kmadd(n2,kmul(n3,R4p2131),kmadd(n2,kmul(n3,R4p3121),kmadd(R4p1111,SQR(n1),kmadd(R4p2121,SQR(n2),kmadd(R4p3131,SQR(n3),kmadd(Rojo11,SQR(nn),kmadd(n2,kmul(nn,kmul(Ro121,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro131,ToReal(2))),kmul(n1,kmadd(n2,kadd(R4p1121,R4p2111),kmadd(n3,kadd(R4p1131,R4p3111),kmul(nn,kmul(Ro111,ToReal(2)))))))))))))),kmadd(SQR(imbar2),kmadd(n2,kmul(n3,R4p2232),kmadd(n2,kmul(n3,R4p3222),kmadd(R4p1212,SQR(n1),kmadd(R4p2222,SQR(n2),kmadd(R4p3232,SQR(n3),kmadd(Rojo22,SQR(nn),kmadd(n2,kmul(nn,kmul(Ro222,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro232,ToReal(2))),kmul(n1,kmadd(n2,kadd(R4p1222,R4p2212),kmadd(n3,kadd(R4p1232,R4p3212),kmul(nn,kmul(Ro212,ToReal(2)))))))))))))),kmadd(imbar2,kmul(imbar3,kmadd(kadd(R4p1213,R4p1312),SQR(n1),kmadd(kadd(R4p2223,R4p2322),SQR(n2),kmadd(R4p3233,SQR(n3),kmadd(R4p3332,SQR(n3),kmadd(Rojo23,SQR(nn),kmadd(Rojo32,SQR(nn),kmadd(n3,kmul(nn,kmul(Ro233,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro332,ToReal(2))),kmadd(n1,kmadd(n2,kadd(R4p1223,kadd(R4p1322,kadd(R4p2213,R4p2312))),kmadd(n3,kadd(R4p1233,kadd(R4p1332,kadd(R4p3213,R4p3312))),kmul(nn,kmul(kadd(Ro213,Ro312),ToReal(2))))),kmul(n2,kmadd(n3,kadd(R4p2233,kadd(R4p2332,kadd(R4p3223,R4p3322))),kmul(nn,kmul(kadd(Ro223,Ro322),ToReal(2))))))))))))))),kmul(imbar1,kmadd(imbar2,kmadd(kadd(R4p1112,R4p1211),SQR(n1),kmadd(kadd(R4p2122,R4p2221),SQR(n2),kmadd(R4p3132,SQR(n3),kmadd(R4p3231,SQR(n3),kmadd(Rojo12,SQR(nn),kmadd(Rojo21,SQR(nn),kmadd(n3,kmul(nn,kmul(Ro132,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro231,ToReal(2))),kmadd(n1,kmadd(n2,kadd(R4p1122,kadd(R4p1221,kadd(R4p2112,R4p2211))),kmadd(n3,kadd(R4p1132,kadd(R4p1231,kadd(R4p3112,R4p3211))),kmul(nn,kmul(kadd(Ro112,Ro211),ToReal(2))))),kmul(n2,kmadd(n3,kadd(R4p2132,kadd(R4p2231,kadd(R4p3122,R4p3221))),kmul(nn,kmul(kadd(Ro122,Ro221),ToReal(2)))))))))))))),kmul(imbar3,kmadd(kadd(R4p1113,R4p1311),SQR(n1),kmadd(kadd(R4p2123,R4p2321),SQR(n2),kmadd(R4p3133,SQR(n3),kmadd(R4p3331,SQR(n3),kmadd(Rojo13,SQR(nn),kmadd(Rojo31,SQR(nn),kmadd(n3,kmul(nn,kmul(Ro133,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro331,ToReal(2))),kmadd(n1,kmadd(n2,kadd(R4p1123,kadd(R4p1321,kadd(R4p2113,R4p2311))),kmadd(n3,kadd(R4p1133,kadd(R4p1331,kadd(R4p3113,R4p3311))),kmul(nn,kmul(kadd(Ro113,Ro311),ToReal(2))))),kmul(n2,kmadd(n3,kadd(R4p2133,kadd(R4p2331,kadd(R4p3123,R4p3321))),kmul(nn,kmul(kadd(Ro123,Ro321),ToReal(2)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + kmadd(R4p1112,kmul(rmbar1,kmul(rmbar2,SQR(n1))),kmadd(R4p1211,kmul(rmbar1,kmul(rmbar2,SQR(n1))),kmadd(R4p1113,kmul(rmbar1,kmul(rmbar3,SQR(n1))),kmadd(R4p1311,kmul(rmbar1,kmul(rmbar3,SQR(n1))),kmadd(R4p1213,kmul(rmbar2,kmul(rmbar3,SQR(n1))),kmadd(R4p1312,kmul(rmbar2,kmul(rmbar3,SQR(n1))),kmadd(R4p2122,kmul(rmbar1,kmul(rmbar2,SQR(n2))),kmadd(R4p2221,kmul(rmbar1,kmul(rmbar2,SQR(n2))),kmadd(R4p2123,kmul(rmbar1,kmul(rmbar3,SQR(n2))),kmadd(R4p2321,kmul(rmbar1,kmul(rmbar3,SQR(n2))),kmadd(R4p2223,kmul(rmbar2,kmul(rmbar3,SQR(n2))),kmadd(R4p2322,kmul(rmbar2,kmul(rmbar3,SQR(n2))),kmadd(R4p3132,kmul(rmbar1,kmul(rmbar2,SQR(n3))),kmadd(R4p3231,kmul(rmbar1,kmul(rmbar2,SQR(n3))),kmadd(R4p3133,kmul(rmbar1,kmul(rmbar3,SQR(n3))),kmadd(R4p3331,kmul(rmbar1,kmul(rmbar3,SQR(n3))),kmadd(R4p3233,kmul(rmbar2,kmul(rmbar3,SQR(n3))),kmadd(R4p3332,kmul(rmbar2,kmul(rmbar3,SQR(n3))),kmadd(rmbar1,kmul(rmbar2,kmul(Rojo12,SQR(nn))),kmadd(rmbar1,kmul(rmbar3,kmul(Rojo13,SQR(nn))),kmadd(rmbar1,kmul(rmbar2,kmul(Rojo21,SQR(nn))),kmadd(rmbar2,kmul(rmbar3,kmul(Rojo23,SQR(nn))),kmadd(rmbar1,kmul(rmbar3,kmul(Rojo31,SQR(nn))),kmadd(rmbar2,kmul(rmbar3,kmul(Rojo32,SQR(nn))),kmadd(n1,kmul(n2,kmul(R4p1121,SQR(rmbar1))),kmadd(n1,kmul(n3,kmul(R4p1131,SQR(rmbar1))),kmadd(n1,kmul(n2,kmul(R4p2111,SQR(rmbar1))),kmadd(n2,kmul(n3,kmul(R4p2131,SQR(rmbar1))),kmadd(n1,kmul(n3,kmul(R4p3111,SQR(rmbar1))),kmadd(n2,kmul(n3,kmul(R4p3121,SQR(rmbar1))),kmadd(R4p1111,SQR(kmul(n1,rmbar1)),kmadd(R4p2121,SQR(kmul(n2,rmbar1)),kmadd(R4p3131,SQR(kmul(n3,rmbar1)),kmadd(Rojo11,SQR(kmul(nn,rmbar1)),kmadd(n1,kmul(n2,kmul(R4p1222,SQR(rmbar2))),kmadd(n1,kmul(n3,kmul(R4p1232,SQR(rmbar2))),kmadd(n1,kmul(n2,kmul(R4p2212,SQR(rmbar2))),kmadd(n2,kmul(n3,kmul(R4p2232,SQR(rmbar2))),kmadd(n1,kmul(n3,kmul(R4p3212,SQR(rmbar2))),kmadd(n2,kmul(n3,kmul(R4p3222,SQR(rmbar2))),kmadd(R4p1212,SQR(kmul(n1,rmbar2)),kmadd(R4p2222,SQR(kmul(n2,rmbar2)),kmadd(R4p3232,SQR(kmul(n3,rmbar2)),kmadd(Rojo22,SQR(kmul(nn,rmbar2)),kmadd(n1,kmul(n2,kmul(R4p1323,SQR(rmbar3))),kmadd(n1,kmul(n3,kmul(R4p1333,SQR(rmbar3))),kmadd(n1,kmul(n2,kmul(R4p2313,SQR(rmbar3))),kmadd(n2,kmul(n3,kmul(R4p2333,SQR(rmbar3))),kmadd(n1,kmul(n3,kmul(R4p3313,SQR(rmbar3))),kmadd(n2,kmul(n3,kmul(R4p3323,SQR(rmbar3))),kmadd(n2,kmul(nn,kmul(Ro323,kmul(SQR(imbar3),ToReal(-2)))),kmadd(n3,kmul(nn,kmul(Ro333,kmul(SQR(imbar3),ToReal(-2)))),knmsub(n3,kmul(SQR(imbar3),kmadd(n1,R4p3313,kmul(n2,R4p2333))),kmadd(SQR(imbar3),kmsub(n1,kmul(nn,kmul(Ro313,ToReal(-2))),kmul(n2,kmul(n3,R4p3323))),kmadd(R4p1313,ksub(SQR(kmul(n1,rmbar3)),SQR(kmul(imbar3,n1))),kmadd(R4p2323,ksub(SQR(kmul(n2,rmbar3)),SQR(kmul(imbar3,n2))),kmadd(R4p3333,ksub(SQR(kmul(n3,rmbar3)),SQR(kmul(imbar3,n3))),kmadd(Rojo33,ksub(SQR(kmul(nn,rmbar3)),SQR(kmul(imbar3,nn))),kmadd(n1,kmul(nn,kmul(Ro111,kmul(SQR(rmbar1),ToReal(2)))),kmadd(n2,kmul(nn,kmul(Ro121,kmul(SQR(rmbar1),ToReal(2)))),kmadd(n3,kmul(nn,kmul(Ro131,kmul(SQR(rmbar1),ToReal(2)))),kmadd(n1,kmul(nn,kmul(Ro212,kmul(SQR(rmbar2),ToReal(2)))),kmadd(n2,kmul(nn,kmul(Ro222,kmul(SQR(rmbar2),ToReal(2)))),kmadd(n3,kmul(nn,kmul(Ro232,kmul(SQR(rmbar2),ToReal(2)))),kmadd(n1,kmul(nn,kmul(Ro313,kmul(SQR(rmbar3),ToReal(2)))),kmadd(n2,kmul(nn,kmul(Ro323,kmul(SQR(rmbar3),ToReal(2)))),kmadd(n3,kmul(nn,kmul(Ro333,kmul(SQR(rmbar3),ToReal(2)))),kmadd(n1,kmadd(n3,kmul(R4p1132,kmul(rmbar1,rmbar2)),kmadd(n2,kmul(R4p1221,kmul(rmbar1,rmbar2)),kmadd(n3,kmul(R4p1231,kmul(rmbar1,rmbar2)),kmadd(n2,kmul(R4p1123,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p1331,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p2113,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p1233,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p1322,kmul(rmbar2,rmbar3)),kmadd(n3,kmul(R4p1332,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p2213,kmul(rmbar2,rmbar3)),kmadd(n2,kmsub(R4p1122,kmul(rmbar1,rmbar2),kmul(R4p1323,SQR(imbar3))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro112,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro113,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro211,ToReal(2)))),kmadd(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro213,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro311,ToReal(2)))),kmul(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro312,ToReal(2))))))))))))))))))))),kmadd(n2,kmadd(n3,kmul(R4p2132,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p2211,kmul(rmbar1,rmbar2)),kmadd(n3,kmul(R4p2231,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p1321,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p2133,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p2311,kmul(rmbar1,rmbar3)),kmadd(n3,kmul(R4p3321,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p1223,kmul(rmbar2,rmbar3)),kmadd(n3,kmul(R4p2233,kmul(rmbar2,rmbar3)),kmadd(n1,kmul(R4p2312,kmul(rmbar2,rmbar3)),kmadd(n1,kmsub(R4p2112,kmul(rmbar1,rmbar2),kmul(R4p2313,SQR(imbar3))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro122,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro123,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro221,ToReal(2)))),kmadd(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro223,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro321,ToReal(2)))),kmul(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro322,ToReal(2))))))))))))))))))))),kmsub(n3,kmadd(n2,kmul(R4p3122,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p3211,kmul(rmbar1,rmbar2)),kmadd(n2,kmul(R4p3221,kmul(rmbar1,rmbar2)),kmadd(n1,kmul(R4p1133,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p2331,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p3113,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p3123,kmul(rmbar1,rmbar3)),kmadd(n1,kmul(R4p3311,kmul(rmbar1,rmbar3)),kmadd(n2,kmul(R4p2332,kmul(rmbar2,rmbar3)),kmadd(n1,kmul(R4p3213,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p3223,kmul(rmbar2,rmbar3)),kmadd(n1,kmul(R4p3312,kmul(rmbar2,rmbar3)),kmadd(n2,kmul(R4p3322,kmul(rmbar2,rmbar3)),kmadd(n1,kmsub(R4p3112,kmul(rmbar1,rmbar2),kmul(R4p1333,SQR(imbar3))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro132,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro133,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar2,kmul(Ro231,ToReal(2)))),kmadd(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro233,ToReal(2)))),kmadd(nn,kmul(rmbar1,kmul(rmbar3,kmul(Ro331,ToReal(2)))),kmul(nn,kmul(rmbar2,kmul(rmbar3,kmul(Ro332,ToReal(2)))))))))))))))))))))))),kmadd(SQR(imbar1),kmadd(n2,kmul(n3,R4p2131),kmadd(n2,kmul(n3,R4p3121),kmadd(R4p1111,SQR(n1),kmadd(R4p2121,SQR(n2),kmadd(R4p3131,SQR(n3),kmadd(Rojo11,SQR(nn),kmadd(n2,kmul(nn,kmul(Ro121,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro131,ToReal(2))),kmul(n1,kmadd(n2,kadd(R4p1121,R4p2111),kmadd(n3,kadd(R4p1131,R4p3111),kmul(nn,kmul(Ro111,ToReal(2)))))))))))))),kmadd(SQR(imbar2),kmadd(n2,kmul(n3,R4p2232),kmadd(n2,kmul(n3,R4p3222),kmadd(R4p1212,SQR(n1),kmadd(R4p2222,SQR(n2),kmadd(R4p3232,SQR(n3),kmadd(Rojo22,SQR(nn),kmadd(n2,kmul(nn,kmul(Ro222,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro232,ToReal(2))),kmul(n1,kmadd(n2,kadd(R4p1222,R4p2212),kmadd(n3,kadd(R4p1232,R4p3212),kmul(nn,kmul(Ro212,ToReal(2)))))))))))))),kmadd(imbar2,kmul(imbar3,kmadd(kadd(R4p1213,R4p1312),SQR(n1),kmadd(kadd(R4p2223,R4p2322),SQR(n2),kmadd(R4p3233,SQR(n3),kmadd(R4p3332,SQR(n3),kmadd(Rojo23,SQR(nn),kmadd(Rojo32,SQR(nn),kmadd(n3,kmul(nn,kmul(Ro233,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro332,ToReal(2))),kmadd(n1,kmadd(n2,kadd(R4p1223,kadd(R4p1322,kadd(R4p2213,R4p2312))),kmadd(n3,kadd(R4p1233,kadd(R4p1332,kadd(R4p3213,R4p3312))),kmul(nn,kmul(kadd(Ro213,Ro312),ToReal(2))))),kmul(n2,kmadd(n3,kadd(R4p2233,kadd(R4p2332,kadd(R4p3223,R4p3322))),kmul(nn,kmul(kadd(Ro223,Ro322),ToReal(2))))))))))))))),kmul(imbar1,kmadd(imbar2,kmadd(kadd(R4p1112,R4p1211),SQR(n1),kmadd(kadd(R4p2122,R4p2221),SQR(n2),kmadd(R4p3132,SQR(n3),kmadd(R4p3231,SQR(n3),kmadd(Rojo12,SQR(nn),kmadd(Rojo21,SQR(nn),kmadd(n3,kmul(nn,kmul(Ro132,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro231,ToReal(2))),kmadd(n1,kmadd(n2,kadd(R4p1122,kadd(R4p1221,kadd(R4p2112,R4p2211))),kmadd(n3,kadd(R4p1132,kadd(R4p1231,kadd(R4p3112,R4p3211))),kmul(nn,kmul(kadd(Ro112,Ro211),ToReal(2))))),kmul(n2,kmadd(n3,kadd(R4p2132,kadd(R4p2231,kadd(R4p3122,R4p3221))),kmul(nn,kmul(kadd(Ro122,Ro221),ToReal(2)))))))))))))),kmul(imbar3,kmadd(kadd(R4p1113,R4p1311),SQR(n1),kmadd(kadd(R4p2123,R4p2321),SQR(n2),kmadd(R4p3133,SQR(n3),kmadd(R4p3331,SQR(n3),kmadd(Rojo13,SQR(nn),kmadd(Rojo31,SQR(nn),kmadd(n3,kmul(nn,kmul(Ro133,ToReal(2))),kmadd(n3,kmul(nn,kmul(Ro331,ToReal(2))),kmadd(n1,kmadd(n2,kadd(R4p1123,kadd(R4p1321,kadd(R4p2113,R4p2311))),kmadd(n3,kadd(R4p1133,kadd(R4p1331,kadd(R4p3113,R4p3311))),kmul(nn,kmul(kadd(Ro113,Ro311),ToReal(2))))),kmul(n2,kmadd(n3,kadd(R4p2133,kadd(R4p2331,kadd(R4p3123,R4p3321))),kmul(nn,kmul(kadd(Ro123,Ro321),ToReal(2)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); CCTK_REAL_VEC Psi4iL = knmadd(im1,kmadd(R4p3132,kmul(rm2,SQR(n3)),kmadd(R4p3231,kmul(rm2,SQR(n3)),kmadd(R4p3133,kmul(rm3,SQR(n3)),kmadd(R4p3331,kmul(rm3,SQR(n3)),kmadd(rm2,kmul(Rojo12,SQR(nn)),kmadd(rm3,kmul(Rojo13,SQR(nn)),kmadd(rm2,kmul(Rojo21,SQR(nn)),kmadd(rm3,kmul(Rojo31,SQR(nn)),kmadd(n3,kmul(nn,kmul(rm2,kmul(Ro132,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm3,kmul(Ro133,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm2,kmul(Ro231,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm3,kmul(Ro331,ToReal(2)))),kmadd(R4p3131,kmul(rm1,kmul(SQR(n3),ToReal(2))),kmadd(rm1,kmul(Rojo11,kmul(SQR(nn),ToReal(2))),kmadd(SQR(n1),kmadd(R4p1112,rm2,kmadd(R4p1211,rm2,kmadd(R4p1113,rm3,kmadd(R4p1311,rm3,kmul(R4p1111,kmul(rm1,ToReal(2))))))),kmadd(SQR(n2),kmadd(R4p2122,rm2,kmadd(R4p2221,rm2,kmadd(R4p2123,rm3,kmadd(R4p2321,rm3,kmul(R4p2121,kmul(rm1,ToReal(2))))))),kmadd(n1,kmadd(n2,kmadd(R4p1122,rm2,kmadd(R4p1221,rm2,kmadd(R4p2112,rm2,kmadd(R4p2211,rm2,kmadd(R4p1123,rm3,kmadd(R4p1321,rm3,kmadd(R4p2113,rm3,kmadd(R4p2311,rm3,kmadd(R4p1121,kmul(rm1,ToReal(2)),kmul(R4p2111,kmul(rm1,ToReal(2)))))))))))),kmadd(n3,kmadd(R4p1132,rm2,kmadd(R4p1231,rm2,kmadd(R4p3112,rm2,kmadd(R4p3211,rm2,kmadd(R4p1133,rm3,kmadd(R4p1331,rm3,kmadd(R4p3113,rm3,kmadd(R4p3311,rm3,kmadd(R4p1131,kmul(rm1,ToReal(2)),kmul(R4p3111,kmul(rm1,ToReal(2)))))))))))),kmul(nn,kmul(ToReal(2),kmadd(rm2,kadd(Ro112,Ro211),kmadd(rm3,kadd(Ro113,Ro311),kmul(rm1,kmul(Ro111,ToReal(2))))))))),kmadd(n2,kmadd(n3,kmadd(R4p2132,rm2,kmadd(R4p2231,rm2,kmadd(R4p3122,rm2,kmadd(R4p3221,rm2,kmadd(R4p2133,rm3,kmadd(R4p2331,rm3,kmadd(R4p3123,rm3,kmadd(R4p3321,rm3,kmadd(R4p2131,kmul(rm1,ToReal(2)),kmul(R4p3121,kmul(rm1,ToReal(2)))))))))))),kmul(nn,kmul(ToReal(2),kmadd(rm2,kadd(Ro122,Ro221),kmadd(rm3,kadd(Ro123,Ro321),kmul(rm1,kmul(Ro121,ToReal(2)))))))),kmul(n3,kmul(nn,kmul(rm1,kmul(Ro131,ToReal(4))))))))))))))))))))))),kmadd(im3,kmadd(R4p3133,kmul(rm1,SQR(n3)),kmadd(R4p3331,kmul(rm1,SQR(n3)),kmadd(R4p3233,kmul(rm2,SQR(n3)),kmadd(R4p3332,kmul(rm2,SQR(n3)),kmadd(rm1,kmul(Rojo13,SQR(nn)),kmadd(rm2,kmul(Rojo23,SQR(nn)),kmadd(rm1,kmul(Rojo31,SQR(nn)),kmadd(rm2,kmul(Rojo32,SQR(nn)),kmadd(n3,kmul(nn,kmul(rm1,kmul(Ro133,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm2,kmul(Ro233,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm1,kmul(Ro331,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm2,kmul(Ro332,ToReal(2)))),kmadd(R4p3333,kmul(rm3,kmul(SQR(n3),ToReal(2))),kmadd(rm3,kmul(Rojo33,kmul(SQR(nn),ToReal(2))),kmadd(SQR(n1),kmadd(R4p1113,rm1,kmadd(R4p1311,rm1,kmadd(R4p1213,rm2,kmadd(R4p1312,rm2,kmul(R4p1313,kmul(rm3,ToReal(2))))))),kmadd(SQR(n2),kmadd(R4p2123,rm1,kmadd(R4p2321,rm1,kmadd(R4p2223,rm2,kmadd(R4p2322,rm2,kmul(R4p2323,kmul(rm3,ToReal(2))))))),kmadd(n1,kmadd(n2,kmadd(R4p1123,rm1,kmadd(R4p1321,rm1,kmadd(R4p2113,rm1,kmadd(R4p2311,rm1,kmadd(R4p1223,rm2,kmadd(R4p1322,rm2,kmadd(R4p2213,rm2,kmadd(R4p2312,rm2,kmadd(R4p1323,kmul(rm3,ToReal(2)),kmul(R4p2313,kmul(rm3,ToReal(2)))))))))))),kmadd(n3,kmadd(R4p1133,rm1,kmadd(R4p1331,rm1,kmadd(R4p3113,rm1,kmadd(R4p3311,rm1,kmadd(R4p1233,rm2,kmadd(R4p1332,rm2,kmadd(R4p3213,rm2,kmadd(R4p3312,rm2,kmadd(R4p1333,kmul(rm3,ToReal(2)),kmul(R4p3313,kmul(rm3,ToReal(2)))))))))))),kmul(nn,kmul(ToReal(2),kmadd(rm1,kadd(Ro113,Ro311),kmadd(rm2,kadd(Ro213,Ro312),kmul(rm3,kmul(Ro313,ToReal(2))))))))),kmadd(n2,kmadd(n3,kmadd(R4p2133,rm1,kmadd(R4p2331,rm1,kmadd(R4p3123,rm1,kmadd(R4p3321,rm1,kmadd(R4p2233,rm2,kmadd(R4p2332,rm2,kmadd(R4p3223,rm2,kmadd(R4p3322,rm2,kmadd(R4p2333,kmul(rm3,ToReal(2)),kmul(R4p3323,kmul(rm3,ToReal(2)))))))))))),kmul(nn,kmul(ToReal(2),kmadd(rm1,kadd(Ro123,Ro321),kmadd(rm2,kadd(Ro223,Ro322),kmul(rm3,kmul(Ro323,ToReal(2)))))))),kmul(n3,kmul(nn,kmul(rm3,kmul(Ro333,ToReal(4))))))))))))))))))))))),kmul(im2,kmadd(R4p3132,kmul(rm1,SQR(n3)),kmadd(R4p3231,kmul(rm1,SQR(n3)),kmadd(R4p3233,kmul(rm3,SQR(n3)),kmadd(R4p3332,kmul(rm3,SQR(n3)),kmadd(rm1,kmul(Rojo12,SQR(nn)),kmadd(rm1,kmul(Rojo21,SQR(nn)),kmadd(rm3,kmul(Rojo23,SQR(nn)),kmadd(rm3,kmul(Rojo32,SQR(nn)),kmadd(n3,kmul(nn,kmul(rm1,kmul(Ro132,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm1,kmul(Ro231,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm3,kmul(Ro233,ToReal(2)))),kmadd(n3,kmul(nn,kmul(rm3,kmul(Ro332,ToReal(2)))),kmadd(R4p3232,kmul(rm2,kmul(SQR(n3),ToReal(2))),kmadd(rm2,kmul(Rojo22,kmul(SQR(nn),ToReal(2))),kmadd(SQR(n1),kmadd(R4p1112,rm1,kmadd(R4p1211,rm1,kmadd(R4p1213,rm3,kmadd(R4p1312,rm3,kmul(R4p1212,kmul(rm2,ToReal(2))))))),kmadd(SQR(n2),kmadd(R4p2122,rm1,kmadd(R4p2221,rm1,kmadd(R4p2223,rm3,kmadd(R4p2322,rm3,kmul(R4p2222,kmul(rm2,ToReal(2))))))),kmadd(n1,kmadd(n2,kmadd(R4p1122,rm1,kmadd(R4p1221,rm1,kmadd(R4p2112,rm1,kmadd(R4p2211,rm1,kmadd(R4p1223,rm3,kmadd(R4p1322,rm3,kmadd(R4p2213,rm3,kmadd(R4p2312,rm3,kmadd(R4p1222,kmul(rm2,ToReal(2)),kmul(R4p2212,kmul(rm2,ToReal(2)))))))))))),kmadd(n3,kmadd(R4p1132,rm1,kmadd(R4p1231,rm1,kmadd(R4p3112,rm1,kmadd(R4p3211,rm1,kmadd(R4p1233,rm3,kmadd(R4p1332,rm3,kmadd(R4p3213,rm3,kmadd(R4p3312,rm3,kmadd(R4p1232,kmul(rm2,ToReal(2)),kmul(R4p3212,kmul(rm2,ToReal(2)))))))))))),kmul(nn,kmul(ToReal(2),kmadd(rm1,kadd(Ro112,Ro211),kmadd(rm3,kadd(Ro213,Ro312),kmul(rm2,kmul(Ro212,ToReal(2))))))))),kmadd(n2,kmadd(n3,kmadd(R4p2132,rm1,kmadd(R4p2231,rm1,kmadd(R4p3122,rm1,kmadd(R4p3221,rm1,kmadd(R4p2233,rm3,kmadd(R4p2332,rm3,kmadd(R4p3223,rm3,kmadd(R4p3322,rm3,kmadd(R4p2232,kmul(rm2,ToReal(2)),kmul(R4p3222,kmul(rm2,ToReal(2)))))))))))),kmul(nn,kmul(ToReal(2),kmadd(rm1,kadd(Ro122,Ro221),kmadd(rm3,kadd(Ro223,Ro322),kmul(rm2,kmul(Ro222,ToReal(2)))))))),kmul(n3,kmul(nn,kmul(rm2,kmul(Ro232,ToReal(4)))))))))))))))))))))))))); - /* If necessary, store only partial vectors after the first iteration */ - - if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0)) - { - ptrdiff_t const elt_count_lo = lc_imin-i; - ptrdiff_t const elt_count_hi = lc_imax-i; - vec_store_nta_partial_mid(Psi4i[index],Psi4iL,elt_count_lo,elt_count_hi); - vec_store_nta_partial_mid(Psi4r[index],Psi4rL,elt_count_lo,elt_count_hi); - break; - } - - /* If necessary, store only partial vectors after the first iteration */ - - if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0)) - { - ptrdiff_t const elt_count = lc_imin-i; - vec_store_nta_partial_hi(Psi4i[index],Psi4iL,elt_count); - vec_store_nta_partial_hi(Psi4r[index],Psi4rL,elt_count); - continue; - } - - /* If necessary, store only partial vectors after the last iteration */ - - if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0)) - { - ptrdiff_t const elt_count = lc_imax-i; - vec_store_nta_partial_lo(Psi4i[index],Psi4iL,elt_count); - vec_store_nta_partial_lo(Psi4r[index],Psi4rL,elt_count); - break; - } - vec_store_nta(Psi4i[index],Psi4iL); - vec_store_nta(Psi4r[index],Psi4rL); + /* Copy local copies back to grid functions */ + vec_store_partial_prepare(i,lc_imin,lc_imax); + vec_store_nta_partial(Psi4i[index],Psi4iL); + vec_store_nta_partial(Psi4r[index],Psi4rL); } - LC_ENDLOOP3VEC (psi4_calc_4th); + LC_ENDLOOP3VEC(psi4_calc_4th); } extern "C" void psi4_calc_4th(CCTK_ARGUMENTS) @@ -1894,7 +1865,12 @@ extern "C" void psi4_calc_4th(CCTK_ARGUMENTS) return; } - const char *groups[] = {"admbase::curv","admbase::metric","grid::coordinates","WeylScal4::Psi4i_group","WeylScal4::Psi4r_group"}; + const char *const groups[] = { + "admbase::curv", + "admbase::metric", + "grid::coordinates", + "WeylScal4::Psi4i_group", + "WeylScal4::Psi4r_group"}; GenericFD_AssertGroupStorage(cctkGH, "psi4_calc_4th", 5, groups); switch(fdOrder) @@ -1916,7 +1892,7 @@ extern "C" void psi4_calc_4th(CCTK_ARGUMENTS) break; } - GenericFD_LoopOverInterior(cctkGH, &psi4_calc_4th_Body); + GenericFD_LoopOverInterior(cctkGH, psi4_calc_4th_Body); if (verbose > 1) { |