bssn_rhs_c: recompute contracted Gamma terms to remove temp arrays

This commit is contained in:
2026-02-28 16:34:23 +08:00
parent 169986cde1
commit 6493101ca0

View File

@@ -52,7 +52,7 @@ int f_compute_rhs_bssn(int *ex, double &T,
double Gamzx[all],Gamzy[all],Gamzz[all]; double Gamzx[all],Gamzy[all],Gamzz[all];
double Kx[all], Ky[all], Kz[all], S[all]; double Kx[all], Ky[all], Kz[all], S[all];
double f[all], fxx[all], fxy[all], fxz[all], fyy[all], fyz[all], fzz[all]; double f[all], fxx[all], fxy[all], fxz[all], fyy[all], fyz[all], fzz[all];
double Gamxa[all], Gamya[all], Gamza[all], alpn1[all], chin1[all]; double alpn1[all], chin1[all];
double gupxx[all], gupxy[all], gupxz[all]; double gupxx[all], gupxy[all], gupxz[all];
double gupyy[all], gupyz[all], gupzz[all]; double gupyy[all], gupyz[all], gupzz[all];
double SSS[3] = { 1.0, 1.0, 1.0}; double SSS[3] = { 1.0, 1.0, 1.0};
@@ -340,8 +340,6 @@ int f_compute_rhs_bssn(int *ex, double &T,
+ TWO * ( gupxy[i]*Gamyxy[i] + gupxz[i]*Gamyxz[i] + gupyz[i]*Gamyyz[i] ); + TWO * ( gupxy[i]*Gamyxy[i] + gupxz[i]*Gamyxz[i] + gupyz[i]*Gamyyz[i] );
double gza = gupxx[i]*Gamzxx[i] + gupyy[i]*Gamzyy[i] + gupzz[i]*Gamzzz[i] double gza = gupxx[i]*Gamzxx[i] + gupyy[i]*Gamzyy[i] + gupzz[i]*Gamzzz[i]
+ TWO * ( gupxy[i]*Gamzxy[i] + gupxz[i]*Gamzxz[i] + gupyz[i]*Gamzyz[i] ); + TWO * ( gupxy[i]*Gamzxy[i] + gupxz[i]*Gamzxz[i] + gupyz[i]*Gamzyz[i] );
Gamxa[i] = gxa; Gamya[i] = gya; Gamza[i] = gza;
Gamx_rhs[i] = Gamx_rhs[i] Gamx_rhs[i] = Gamx_rhs[i]
+ F2o3 * gxa * divb + F2o3 * gxa * divb
- gxa * betaxx[i] - gya * betaxy[i] - gza * betaxz[i] - gxa * betaxx[i] - gya * betaxy[i] - gza * betaxz[i]
@@ -432,10 +430,17 @@ int f_compute_rhs_bssn(int *ex, double &T,
// 14ms // // 14ms //
/* 假设 all = ex1*ex2*ex3所有量都是 length=all 的 double 数组(已按同一扁平化规则排布) */ /* 假设 all = ex1*ex2*ex3所有量都是 length=all 的 double 数组(已按同一扁平化规则排布) */
for (int i = 0; i < all; i += 1) { for (int i = 0; i < all; i += 1) {
const double gxa = gupxx[i]*Gamxxx[i] + gupyy[i]*Gamxyy[i] + gupzz[i]*Gamxzz[i]
+ TWO * ( gupxy[i]*Gamxxy[i] + gupxz[i]*Gamxxz[i] + gupyz[i]*Gamxyz[i] );
const double gya = gupxx[i]*Gamyxx[i] + gupyy[i]*Gamyyy[i] + gupzz[i]*Gamyzz[i]
+ TWO * ( gupxy[i]*Gamyxy[i] + gupxz[i]*Gamyxz[i] + gupyz[i]*Gamyyz[i] );
const double gza = gupxx[i]*Gamzxx[i] + gupyy[i]*Gamzyy[i] + gupzz[i]*Gamzzz[i]
+ TWO * ( gupxy[i]*Gamzxy[i] + gupxz[i]*Gamzxz[i] + gupyz[i]*Gamzyz[i] );
Rxx[i] = Rxx[i] =
-HALF * Rxx[i] -HALF * Rxx[i]
+ (dxx[i] + ONE) * Gamxx[i] + gxy[i] * Gamyx[i] + gxz[i] * Gamzx[i] + (dxx[i] + ONE) * Gamxx[i] + gxy[i] * Gamyx[i] + gxz[i] * Gamzx[i]
+ Gamxa[i] * gxxx[i] + Gamya[i] * gxyx[i] + Gamza[i] * gxzx[i] + gxa * gxxx[i] + gya * gxyx[i] + gza * gxzx[i]
+ gupxx[i] * ( + gupxx[i] * (
TWO * (Gamxxx[i] * gxxx[i] + Gamyxx[i] * gxyx[i] + Gamzxx[i] * gxzx[i]) + TWO * (Gamxxx[i] * gxxx[i] + Gamyxx[i] * gxyx[i] + Gamzxx[i] * gxzx[i]) +
(Gamxxx[i] * gxxx[i] + Gamyxx[i] * gxxy[i] + Gamzxx[i] * gxxz[i]) (Gamxxx[i] * gxxx[i] + Gamyxx[i] * gxxy[i] + Gamzxx[i] * gxxz[i])
@@ -470,7 +475,7 @@ int f_compute_rhs_bssn(int *ex, double &T,
Ryy[i] = Ryy[i] =
-HALF * Ryy[i] -HALF * Ryy[i]
+ gxy[i] * Gamxy[i] + (dyy[i] + ONE) * Gamyy[i] + gyz[i] * Gamzy[i] + gxy[i] * Gamxy[i] + (dyy[i] + ONE) * Gamyy[i] + gyz[i] * Gamzy[i]
+ Gamxa[i] * gxyy[i] + Gamya[i] * gyyy[i] + Gamza[i] * gyzy[i] + gxa * gxyy[i] + gya * gyyy[i] + gza * gyzy[i]
+ gupxx[i] * ( + gupxx[i] * (
TWO * (Gamxxy[i] * gxxy[i] + Gamyxy[i] * gxyy[i] + Gamzxy[i] * gxzy[i]) + TWO * (Gamxxy[i] * gxxy[i] + Gamyxy[i] * gxyy[i] + Gamzxy[i] * gxzy[i]) +
(Gamxxy[i] * gxyx[i] + Gamyxy[i] * gxyy[i] + Gamzxy[i] * gxyz[i]) (Gamxxy[i] * gxyx[i] + Gamyxy[i] * gxyy[i] + Gamzxy[i] * gxyz[i])
@@ -505,7 +510,7 @@ int f_compute_rhs_bssn(int *ex, double &T,
Rzz[i] = Rzz[i] =
-HALF * Rzz[i] -HALF * Rzz[i]
+ gxz[i] * Gamxz[i] + gyz[i] * Gamyz[i] + (dzz[i] + ONE) * Gamzz[i] + gxz[i] * Gamxz[i] + gyz[i] * Gamyz[i] + (dzz[i] + ONE) * Gamzz[i]
+ Gamxa[i] * gxzz[i] + Gamya[i] * gyzz[i] + Gamza[i] * gzzz[i] + gxa * gxzz[i] + gya * gyzz[i] + gza * gzzz[i]
+ gupxx[i] * ( + gupxx[i] * (
TWO * (Gamxxz[i] * gxxz[i] + Gamyxz[i] * gxyz[i] + Gamzxz[i] * gxzz[i]) + TWO * (Gamxxz[i] * gxxz[i] + Gamyxz[i] * gxyz[i] + Gamzxz[i] * gxzz[i]) +
(Gamxxz[i] * gxzx[i] + Gamyxz[i] * gxzy[i] + Gamzxz[i] * gxzz[i]) (Gamxxz[i] * gxzx[i] + Gamyxz[i] * gxzy[i] + Gamzxz[i] * gxzz[i])
@@ -542,8 +547,8 @@ int f_compute_rhs_bssn(int *ex, double &T,
-Rxy[i] -Rxy[i]
+ (dxx[i] + ONE) * Gamxy[i] + gxy[i] * Gamyy[i] + gxz[i] * Gamzy[i] + (dxx[i] + ONE) * Gamxy[i] + gxy[i] * Gamyy[i] + gxz[i] * Gamzy[i]
+ gxy[i] * Gamxx[i] + (dyy[i] + ONE) * Gamyx[i] + gyz[i] * Gamzx[i] + gxy[i] * Gamxx[i] + (dyy[i] + ONE) * Gamyx[i] + gyz[i] * Gamzx[i]
+ Gamxa[i] * gxyx[i] + Gamya[i] * gyyx[i] + Gamza[i] * gyzx[i] + gxa * gxyx[i] + gya * gyyx[i] + gza * gyzx[i]
+ Gamxa[i] * gxxy[i] + Gamya[i] * gxyy[i] + Gamza[i] * gxzy[i] + gxa * gxxy[i] + gya * gxyy[i] + gza * gxzy[i]
) )
+ gupxx[i] * ( + gupxx[i] * (
Gamxxx[i] * gxxy[i] + Gamyxx[i] * gxyy[i] + Gamzxx[i] * gxzy[i] Gamxxx[i] * gxxy[i] + Gamyxx[i] * gxyy[i] + Gamzxx[i] * gxzy[i]
@@ -590,8 +595,8 @@ int f_compute_rhs_bssn(int *ex, double &T,
-Rxz[i] -Rxz[i]
+ (dxx[i] + ONE) * Gamxz[i] + gxy[i] * Gamyz[i] + gxz[i] * Gamzz[i] + (dxx[i] + ONE) * Gamxz[i] + gxy[i] * Gamyz[i] + gxz[i] * Gamzz[i]
+ gxz[i] * Gamxx[i] + gyz[i] * Gamyx[i] + (dzz[i] + ONE) * Gamzx[i] + gxz[i] * Gamxx[i] + gyz[i] * Gamyx[i] + (dzz[i] + ONE) * Gamzx[i]
+ Gamxa[i] * gxzx[i] + Gamya[i] * gyzx[i] + Gamza[i] * gzzx[i] + gxa * gxzx[i] + gya * gyzx[i] + gza * gzzx[i]
+ Gamxa[i] * gxxz[i] + Gamya[i] * gxyz[i] + Gamza[i] * gxzz[i] + gxa * gxxz[i] + gya * gxyz[i] + gza * gxzz[i]
) )
+ gupxx[i] * ( + gupxx[i] * (
Gamxxx[i] * gxxz[i] + Gamyxx[i] * gxyz[i] + Gamzxx[i] * gxzz[i] Gamxxx[i] * gxxz[i] + Gamyxx[i] * gxyz[i] + Gamzxx[i] * gxzz[i]
@@ -638,8 +643,8 @@ int f_compute_rhs_bssn(int *ex, double &T,
-Ryz[i] -Ryz[i]
+ gxy[i] * Gamxz[i] + (dyy[i] + ONE) * Gamyz[i] + gyz[i] * Gamzz[i] + gxy[i] * Gamxz[i] + (dyy[i] + ONE) * Gamyz[i] + gyz[i] * Gamzz[i]
+ gxz[i] * Gamxy[i] + gyz[i] * Gamyy[i] + (dzz[i] + ONE) * Gamzy[i] + gxz[i] * Gamxy[i] + gyz[i] * Gamyy[i] + (dzz[i] + ONE) * Gamzy[i]
+ Gamxa[i] * gxzy[i] + Gamya[i] * gyzy[i] + Gamza[i] * gzzy[i] + gxa * gxzy[i] + gya * gyzy[i] + gza * gzzy[i]
+ Gamxa[i] * gxyz[i] + Gamya[i] * gyyz[i] + Gamza[i] * gyzz[i] + gxa * gxyz[i] + gya * gyyz[i] + gza * gyzz[i]
) )
+ gupxx[i] * ( + gupxx[i] * (
Gamxxy[i] * gxxz[i] + Gamyxy[i] * gxyz[i] + Gamzxy[i] * gxzz[i] Gamxxy[i] * gxxz[i] + Gamyxy[i] * gxyz[i] + Gamzxy[i] * gxzz[i]