From 6493101ca030fb77d85076456c6430a3a1a0409f Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Sat, 28 Feb 2026 16:34:23 +0800 Subject: [PATCH] bssn_rhs_c: recompute contracted Gamma terms to remove temp arrays --- AMSS_NCKU_source/bssn_rhs_c.C | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/AMSS_NCKU_source/bssn_rhs_c.C b/AMSS_NCKU_source/bssn_rhs_c.C index 9bba3ca..1848543 100644 --- a/AMSS_NCKU_source/bssn_rhs_c.C +++ b/AMSS_NCKU_source/bssn_rhs_c.C @@ -52,7 +52,7 @@ int f_compute_rhs_bssn(int *ex, double &T, double Gamzx[all],Gamzy[all],Gamzz[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 Gamxa[all], Gamya[all], Gamza[all], alpn1[all], chin1[all]; + double alpn1[all], chin1[all]; double gupxx[all], gupxy[all], gupxz[all]; double gupyy[all], gupyz[all], gupzz[all]; 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] ); 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] ); - Gamxa[i] = gxa; Gamya[i] = gya; Gamza[i] = gza; - Gamx_rhs[i] = Gamx_rhs[i] + F2o3 * gxa * divb - gxa * betaxx[i] - gya * betaxy[i] - gza * betaxz[i] @@ -432,10 +430,17 @@ int f_compute_rhs_bssn(int *ex, double &T, // 14ms // /* 假设 all = ex1*ex2*ex3,所有量都是 length=all 的 double 数组(已按同一扁平化规则排布) */ 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] = -HALF * Rxx[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] * ( 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]) @@ -470,7 +475,7 @@ int f_compute_rhs_bssn(int *ex, double &T, Ryy[i] = -HALF * Ryy[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] * ( 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]) @@ -505,7 +510,7 @@ int f_compute_rhs_bssn(int *ex, double &T, Rzz[i] = -HALF * Rzz[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] * ( 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]) @@ -542,8 +547,8 @@ int f_compute_rhs_bssn(int *ex, double &T, -Rxy[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] - + Gamxa[i] * gxyx[i] + Gamya[i] * gyyx[i] + Gamza[i] * gyzx[i] - + Gamxa[i] * gxxy[i] + Gamya[i] * gxyy[i] + Gamza[i] * gxzy[i] + + gxa * gxyx[i] + gya * gyyx[i] + gza * gyzx[i] + + gxa * gxxy[i] + gya * gxyy[i] + gza * gxzy[i] ) + gupxx[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] + (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] - + Gamxa[i] * gxzx[i] + Gamya[i] * gyzx[i] + Gamza[i] * gzzx[i] - + Gamxa[i] * gxxz[i] + Gamya[i] * gxyz[i] + Gamza[i] * gxzz[i] + + gxa * gxzx[i] + gya * gyzx[i] + gza * gzzx[i] + + gxa * gxxz[i] + gya * gxyz[i] + gza * gxzz[i] ) + gupxx[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] + 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] - + Gamxa[i] * gxzy[i] + Gamya[i] * gyzy[i] + Gamza[i] * gzzy[i] - + Gamxa[i] * gxyz[i] + Gamya[i] * gyyz[i] + Gamza[i] * gyzz[i] + + gxa * gxzy[i] + gya * gyzy[i] + gza * gzzy[i] + + gxa * gxyz[i] + gya * gyyz[i] + gza * gyzz[i] ) + gupxx[i] * ( Gamxxy[i] * gxxz[i] + Gamyxy[i] * gxyz[i] + Gamzxy[i] * gxzz[i]