aboutsummaryrefslogtreecommitdiff
path: root/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc')
-rw-r--r--ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc27
1 files changed, 19 insertions, 8 deletions
diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc b/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
index 693b384..eff3b7f 100644
--- a/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
+++ b/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
@@ -473,15 +473,26 @@ static void ML_BSSN_convertFromADMBaseGamma_Body(const cGH* restrict const cctkG
CCTK_BUILTIN_UNREACHABLE();
}
- double xx = x[index];
- int origin = fabs(xx) < 1e-8;
+ CCTK_REAL_VEC kzero = ToReal(0.0);
+ CCTK_REAL_VEC kone = ToReal(1.0);
+ CCTK_REAL_VEC ktwo = ToReal(2.0);
+ CCTK_REAL_VEC xx = vec_load(x[index]);
+ CCTK_REAL_VEC x2 = kmul(xx, xx);
- PDstandardNth2gt11 = 0;
- PDstandardNth2gt12 = origin ? PDstandardNth1gt11 - PDstandardNth1gt22 : (gt11[index] - gt22[index]) / xx;
- PDstandardNth2gt13 = 0;
- PDstandardNth2gt22 = 0;
- PDstandardNth2gt23 = origin ? PDstandardNth1gt13 : gt13[index] / xx;
- PDstandardNth2gt33 = 0;
+ CCTK_REAL_VEC xinv = kdiv(kone, xx);
+ CCTK_REAL_VEC x2inv = kdiv(kone, x2);
+
+ CCTK_REAL_VEC absx = kfabs(xx);
+ CCTK_REAL_VEC eps = ToReal(1e-8);
+ CCTK_BOOLEAN_VEC origin = kcmplt(absx, eps);
+
+ PDstandardNth2gt11 = kzero;
+ PDstandardNth2gt12 = kifthen(origin, ksub(PDstandardNth1gt11, PDstandardNth1gt22),
+ kmul(ksub(gt11L, gt22L), xinv));
+ PDstandardNth2gt13 = kzero;
+ PDstandardNth2gt22 = kzero;
+ PDstandardNth2gt23 = kifthen(origin, PDstandardNth1gt13, kmul(gt13L, xinv));
+ PDstandardNth2gt33 = kzero;
/* Calculate temporaries and grid functions */
ptrdiff_t dir1 CCTK_ATTRIBUTE_UNUSED = kisgn(beta1L);