diff --git a/AMSS_NCKU_source/bssn_rhs_c.C b/AMSS_NCKU_source/bssn_rhs_c.C index 52995a8..1086026 100644 --- a/AMSS_NCKU_source/bssn_rhs_c.C +++ b/AMSS_NCKU_source/bssn_rhs_c.C @@ -70,10 +70,34 @@ int f_compute_rhs_bssn(int *ex, double &T, const double FF = 0.75, eta = 2.0; const double F1o3 = 1.0/3.0, F2o3 = 2.0/3.0, F3o2 = 1.5, F1o6 = 1.0/6.0; const double F16 = 16.0, F8 = 8.0; - #if (GAUGE == 2 || GAUGE == 3 || GAUGE == 4 || GAUGE == 5) + #if (GAUGE == 2 || GAUGE == 3 || GAUGE == 4 || GAUGE == 5 || GAUGE == 6 || GAUGE == 7) double reta[all]; /* 使用时:reta[idx],其中 idx = i + nx*(j + ny*k) (Fortran列主序) */ #endif + + #if (GAUGE == 6 || GAUGE == 7) + int BHN = 0; + double Porg[9] = {0.0}; + double Mass[3] = {0.0}; + + extern "C" { + #ifdef fortran1 + void getpbh(int &, double *, double *); + #elif defined(fortran2) + void GETPBH(int &, double *, double *); + #else + void getpbh_(int &, double *, double *); + #endif + } + + #ifdef fortran1 + getpbh(BHN, Porg, Mass); + #elif defined(fortran2) + GETPBH(BHN, Porg, Mass); + #else + getpbh_(BHN, Porg, Mass); + #endif + #endif PI = acos(-1.0); dX = X[1] - X[0]; dY = Y[1] - Y[0]; @@ -966,11 +990,67 @@ int f_compute_rhs_bssn(int *ex, double &T, } // 1ms // - for(int i=0;i