Reuse mass integrand across detector radii
(cherry picked from commit 4b10519876)
This commit is contained in:
@@ -7622,6 +7622,10 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
IP = new double[NN];
|
IP = new double[NN];
|
||||||
RoutMAP = new double[7];
|
RoutMAP = new double[7];
|
||||||
double Rex = maxrex;
|
double Rex = maxrex;
|
||||||
|
bool patch_mass_prepared = false;
|
||||||
|
#ifdef WithShell
|
||||||
|
bool shell_mass_prepared = false;
|
||||||
|
#endif
|
||||||
for (int i = 0; i < decn; i++)
|
for (int i = 0; i < decn; i++)
|
||||||
{
|
{
|
||||||
#ifdef Point_Psi4
|
#ifdef Point_Psi4
|
||||||
@@ -7649,7 +7653,8 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor);
|
RoutMAP, ErrorMonitor, !patch_mass_prepared);
|
||||||
|
patch_mass_prepared = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -7657,14 +7662,16 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor);
|
RoutMAP, ErrorMonitor, !shell_mass_prepared);
|
||||||
|
shell_mass_prepared = true;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
Waveshell->surf_MassPAng(Rex, lev, GH, phi0, trK0,
|
Waveshell->surf_MassPAng(Rex, lev, GH, phi0, trK0,
|
||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor);
|
RoutMAP, ErrorMonitor, !patch_mass_prepared);
|
||||||
|
patch_mass_prepared = true;
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
// misc::tillherecheck(GH->Commlev[lev],GH->start_rank[lev],"before surface integral");
|
// misc::tillherecheck(GH->Commlev[lev],GH->start_rank[lev],"before surface integral");
|
||||||
@@ -7676,7 +7683,8 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor);
|
RoutMAP, ErrorMonitor, !patch_mass_prepared);
|
||||||
|
patch_mass_prepared = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -7685,7 +7693,8 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor);
|
RoutMAP, ErrorMonitor, !shell_mass_prepared);
|
||||||
|
shell_mass_prepared = true;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#if (PSTR == 0)
|
#if (PSTR == 0)
|
||||||
@@ -7694,7 +7703,8 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor);
|
RoutMAP, ErrorMonitor, !patch_mass_prepared);
|
||||||
|
patch_mass_prepared = true;
|
||||||
#elif (PSTR == 1 || PSTR == 2)
|
#elif (PSTR == 1 || PSTR == 2)
|
||||||
Waveshell->surf_Wave(Rex, lev, GH, Rpsi4, Ipsi4, 2, maxl, NN, RP, IP, ErrorMonitor, GH->Commlev[lev]);
|
Waveshell->surf_Wave(Rex, lev, GH, Rpsi4, Ipsi4, 2, maxl, NN, RP, IP, ErrorMonitor, GH->Commlev[lev]);
|
||||||
// misc::tillherecheck(GH->Commlev[lev],GH->start_rank[lev],"after surf_Wave");
|
// misc::tillherecheck(GH->Commlev[lev],GH->start_rank[lev],"after surf_Wave");
|
||||||
@@ -7702,7 +7712,8 @@ void bssn_class::AnalysisStuff(int lev, double dT_lev)
|
|||||||
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
gxx0, gxy0, gxz0, gyy0, gyz0, gzz0,
|
||||||
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
Axx0, Axy0, Axz0, Ayy0, Ayz0, Azz0,
|
||||||
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
Gmx0, Gmy0, Gmz0, Sfx1, Sfy1, Sfz1, // here we can not touch rhs variables, but 1 variables
|
||||||
RoutMAP, ErrorMonitor, GH->Commlev[lev]);
|
RoutMAP, ErrorMonitor, GH->Commlev[lev], !patch_mass_prepared);
|
||||||
|
patch_mass_prepared = true;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
// misc::tillherecheck(GH->Commlev[lev],GH->start_rank[lev],"end surface integral");
|
// misc::tillherecheck(GH->Commlev[lev],GH->start_rank[lev],"end surface integral");
|
||||||
|
|||||||
@@ -2314,44 +2314,47 @@ void surface_integral::surf_Wave(double rex, int lev, NullShellPatch *GH, var *R
|
|||||||
//| ADM mass, linear momentum and angular momentum
|
//| ADM mass, linear momentum and angular momentum
|
||||||
//|
|
//|
|
||||||
//|----------------------------------------------------
|
//|----------------------------------------------------
|
||||||
void surface_integral::surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
void surface_integral::surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
||||||
var *Gmx, var *Gmy, var *Gmz,
|
var *Gmx, var *Gmy, var *Gmz,
|
||||||
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
||||||
double *Rout, monitor *Monitor)
|
double *Rout, monitor *Monitor, bool refresh_mass_fields)
|
||||||
{
|
{
|
||||||
if (myrank == 0 && GH->grids[lev] != 1)
|
if (myrank == 0 && GH->grids[lev] != 1)
|
||||||
if (Monitor && Monitor->outfile)
|
if (Monitor && Monitor->outfile)
|
||||||
Monitor->outfile << "WARNING: surface integral on multipatches" << endl;
|
Monitor->outfile << "WARNING: surface integral on multipatches" << endl;
|
||||||
else
|
else
|
||||||
cout << "WARNING: surface integral on multipatches" << endl;
|
cout << "WARNING: surface integral on multipatches" << endl;
|
||||||
|
|
||||||
double mass, px, py, pz, sx, sy, sz;
|
double mass, px, py, pz, sx, sy, sz;
|
||||||
|
|
||||||
MyList<Patch> *Pp = GH->PatL[lev];
|
if (refresh_mass_fields)
|
||||||
while (Pp)
|
{
|
||||||
{
|
MyList<Patch> *Pp = GH->PatL[lev];
|
||||||
MyList<Block> *BP = Pp->data->blb;
|
while (Pp)
|
||||||
while (BP)
|
{
|
||||||
{
|
MyList<Block> *BP = Pp->data->blb;
|
||||||
Block *cg = BP->data;
|
while (BP)
|
||||||
if (myrank == cg->rank)
|
{
|
||||||
{
|
Block *cg = BP->data;
|
||||||
f_admmass_bssn(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
if (myrank == cg->rank)
|
||||||
cg->fgfs[chi->sgfn], cg->fgfs[trK->sgfn],
|
{
|
||||||
cg->fgfs[gxx->sgfn], cg->fgfs[gxy->sgfn], cg->fgfs[gxz->sgfn], cg->fgfs[gyy->sgfn], cg->fgfs[gyz->sgfn], cg->fgfs[gzz->sgfn],
|
f_admmass_bssn(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
||||||
cg->fgfs[Axx->sgfn], cg->fgfs[Axy->sgfn], cg->fgfs[Axz->sgfn], cg->fgfs[Ayy->sgfn], cg->fgfs[Ayz->sgfn], cg->fgfs[Azz->sgfn],
|
cg->fgfs[chi->sgfn], cg->fgfs[trK->sgfn],
|
||||||
cg->fgfs[Gmx->sgfn], cg->fgfs[Gmy->sgfn], cg->fgfs[Gmz->sgfn],
|
cg->fgfs[gxx->sgfn], cg->fgfs[gxy->sgfn], cg->fgfs[gxz->sgfn], cg->fgfs[gyy->sgfn], cg->fgfs[gyz->sgfn], cg->fgfs[gzz->sgfn],
|
||||||
cg->fgfs[Sfx_rhs->sgfn], cg->fgfs[Sfy_rhs->sgfn], cg->fgfs[Sfz_rhs->sgfn],
|
cg->fgfs[Axx->sgfn], cg->fgfs[Axy->sgfn], cg->fgfs[Axz->sgfn], cg->fgfs[Ayy->sgfn], cg->fgfs[Ayz->sgfn], cg->fgfs[Azz->sgfn],
|
||||||
Symmetry);
|
cg->fgfs[Gmx->sgfn], cg->fgfs[Gmy->sgfn], cg->fgfs[Gmz->sgfn],
|
||||||
}
|
cg->fgfs[Sfx_rhs->sgfn], cg->fgfs[Sfy_rhs->sgfn], cg->fgfs[Sfz_rhs->sgfn],
|
||||||
if (BP == Pp->data->ble)
|
Symmetry);
|
||||||
break;
|
}
|
||||||
BP = BP->next;
|
if (BP == Pp->data->ble)
|
||||||
}
|
break;
|
||||||
Pp = Pp->next;
|
BP = BP->next;
|
||||||
}
|
}
|
||||||
|
Pp = Pp->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const int InList = 17;
|
const int InList = 17;
|
||||||
|
|
||||||
@@ -2576,46 +2579,49 @@ void surface_integral::surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var
|
|||||||
delete[] shellf;
|
delete[] shellf;
|
||||||
DG_List->clearList();
|
DG_List->clearList();
|
||||||
}
|
}
|
||||||
void surface_integral::surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
void surface_integral::surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
||||||
var *Gmx, var *Gmy, var *Gmz,
|
var *Gmx, var *Gmy, var *Gmz,
|
||||||
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
||||||
double *Rout, monitor *Monitor, MPI_Comm Comm_here)
|
double *Rout, monitor *Monitor, MPI_Comm Comm_here, bool refresh_mass_fields)
|
||||||
{
|
{
|
||||||
int lmyrank;
|
int lmyrank;
|
||||||
MPI_Comm_rank(Comm_here, &lmyrank);
|
MPI_Comm_rank(Comm_here, &lmyrank);
|
||||||
if (lmyrank == 0 && GH->grids[lev] != 1)
|
if (lmyrank == 0 && GH->grids[lev] != 1)
|
||||||
if (Monitor && Monitor->outfile)
|
if (Monitor && Monitor->outfile)
|
||||||
Monitor->outfile << "WARNING: surface integral on multipatches" << endl;
|
Monitor->outfile << "WARNING: surface integral on multipatches" << endl;
|
||||||
else
|
else
|
||||||
cout << "WARNING: surface integral on multipatches" << endl;
|
cout << "WARNING: surface integral on multipatches" << endl;
|
||||||
|
|
||||||
double mass, px, py, pz, sx, sy, sz;
|
double mass, px, py, pz, sx, sy, sz;
|
||||||
|
|
||||||
MyList<Patch> *Pp = GH->PatL[lev];
|
if (refresh_mass_fields)
|
||||||
while (Pp)
|
{
|
||||||
{
|
MyList<Patch> *Pp = GH->PatL[lev];
|
||||||
MyList<Block> *BP = Pp->data->blb;
|
while (Pp)
|
||||||
while (BP)
|
{
|
||||||
{
|
MyList<Block> *BP = Pp->data->blb;
|
||||||
Block *cg = BP->data;
|
while (BP)
|
||||||
if (myrank == cg->rank)
|
{
|
||||||
{
|
Block *cg = BP->data;
|
||||||
f_admmass_bssn(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
if (myrank == cg->rank)
|
||||||
cg->fgfs[chi->sgfn], cg->fgfs[trK->sgfn],
|
{
|
||||||
cg->fgfs[gxx->sgfn], cg->fgfs[gxy->sgfn], cg->fgfs[gxz->sgfn], cg->fgfs[gyy->sgfn], cg->fgfs[gyz->sgfn], cg->fgfs[gzz->sgfn],
|
f_admmass_bssn(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
||||||
cg->fgfs[Axx->sgfn], cg->fgfs[Axy->sgfn], cg->fgfs[Axz->sgfn], cg->fgfs[Ayy->sgfn], cg->fgfs[Ayz->sgfn], cg->fgfs[Azz->sgfn],
|
cg->fgfs[chi->sgfn], cg->fgfs[trK->sgfn],
|
||||||
cg->fgfs[Gmx->sgfn], cg->fgfs[Gmy->sgfn], cg->fgfs[Gmz->sgfn],
|
cg->fgfs[gxx->sgfn], cg->fgfs[gxy->sgfn], cg->fgfs[gxz->sgfn], cg->fgfs[gyy->sgfn], cg->fgfs[gyz->sgfn], cg->fgfs[gzz->sgfn],
|
||||||
cg->fgfs[Sfx_rhs->sgfn], cg->fgfs[Sfy_rhs->sgfn], cg->fgfs[Sfz_rhs->sgfn],
|
cg->fgfs[Axx->sgfn], cg->fgfs[Axy->sgfn], cg->fgfs[Axz->sgfn], cg->fgfs[Ayy->sgfn], cg->fgfs[Ayz->sgfn], cg->fgfs[Azz->sgfn],
|
||||||
Symmetry);
|
cg->fgfs[Gmx->sgfn], cg->fgfs[Gmy->sgfn], cg->fgfs[Gmz->sgfn],
|
||||||
}
|
cg->fgfs[Sfx_rhs->sgfn], cg->fgfs[Sfy_rhs->sgfn], cg->fgfs[Sfz_rhs->sgfn],
|
||||||
if (BP == Pp->data->ble)
|
Symmetry);
|
||||||
break;
|
}
|
||||||
BP = BP->next;
|
if (BP == Pp->data->ble)
|
||||||
}
|
break;
|
||||||
Pp = Pp->next;
|
BP = BP->next;
|
||||||
}
|
}
|
||||||
|
Pp = Pp->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const int InList = 17;
|
const int InList = 17;
|
||||||
|
|
||||||
@@ -2848,15 +2854,15 @@ void surface_integral::surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var
|
|||||||
//|----------------------------------------------------------------
|
//|----------------------------------------------------------------
|
||||||
// for shell patch
|
// for shell patch
|
||||||
//|----------------------------------------------------------------
|
//|----------------------------------------------------------------
|
||||||
void surface_integral::surf_MassPAng(double rex, int lev, ShellPatch *GH, var *chi, var *trK,
|
void surface_integral::surf_MassPAng(double rex, int lev, ShellPatch *GH, var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
||||||
var *Gmx, var *Gmy, var *Gmz,
|
var *Gmx, var *Gmy, var *Gmz,
|
||||||
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
||||||
double *Rout, monitor *Monitor)
|
double *Rout, monitor *Monitor, bool refresh_mass_fields)
|
||||||
{
|
{
|
||||||
if (lev != 0)
|
if (lev != 0)
|
||||||
{
|
{
|
||||||
if (myrank == 0)
|
if (myrank == 0)
|
||||||
{
|
{
|
||||||
if (Monitor && Monitor->outfile)
|
if (Monitor && Monitor->outfile)
|
||||||
@@ -2866,43 +2872,46 @@ void surface_integral::surf_MassPAng(double rex, int lev, ShellPatch *GH, var *c
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
double mass, px, py, pz, sx, sy, sz;
|
double mass, px, py, pz, sx, sy, sz;
|
||||||
|
|
||||||
MyList<ss_patch> *Pp = GH->PatL;
|
if (refresh_mass_fields)
|
||||||
while (Pp)
|
{
|
||||||
{
|
MyList<ss_patch> *Pp = GH->PatL;
|
||||||
MyList<Block> *BL = Pp->data->blb;
|
while (Pp)
|
||||||
int fngfs = Pp->data->fngfs;
|
{
|
||||||
while (BL)
|
MyList<Block> *BL = Pp->data->blb;
|
||||||
{
|
int fngfs = Pp->data->fngfs;
|
||||||
Block *cg = BL->data;
|
while (BL)
|
||||||
if (myrank == cg->rank)
|
{
|
||||||
{
|
Block *cg = BL->data;
|
||||||
f_admmass_bssn_ss(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
if (myrank == cg->rank)
|
||||||
cg->fgfs[fngfs + ShellPatch::gx], cg->fgfs[fngfs + ShellPatch::gy], cg->fgfs[fngfs + ShellPatch::gz],
|
{
|
||||||
cg->fgfs[fngfs + ShellPatch::drhodx], cg->fgfs[fngfs + ShellPatch::drhody], cg->fgfs[fngfs + ShellPatch::drhodz],
|
f_admmass_bssn_ss(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
||||||
cg->fgfs[fngfs + ShellPatch::dsigmadx], cg->fgfs[fngfs + ShellPatch::dsigmady], cg->fgfs[fngfs + ShellPatch::dsigmadz],
|
cg->fgfs[fngfs + ShellPatch::gx], cg->fgfs[fngfs + ShellPatch::gy], cg->fgfs[fngfs + ShellPatch::gz],
|
||||||
cg->fgfs[fngfs + ShellPatch::dRdx], cg->fgfs[fngfs + ShellPatch::dRdy], cg->fgfs[fngfs + ShellPatch::dRdz],
|
cg->fgfs[fngfs + ShellPatch::drhodx], cg->fgfs[fngfs + ShellPatch::drhody], cg->fgfs[fngfs + ShellPatch::drhodz],
|
||||||
cg->fgfs[fngfs + ShellPatch::drhodxx], cg->fgfs[fngfs + ShellPatch::drhodxy], cg->fgfs[fngfs + ShellPatch::drhodxz],
|
cg->fgfs[fngfs + ShellPatch::dsigmadx], cg->fgfs[fngfs + ShellPatch::dsigmady], cg->fgfs[fngfs + ShellPatch::dsigmadz],
|
||||||
cg->fgfs[fngfs + ShellPatch::drhodyy], cg->fgfs[fngfs + ShellPatch::drhodyz], cg->fgfs[fngfs + ShellPatch::drhodzz],
|
cg->fgfs[fngfs + ShellPatch::dRdx], cg->fgfs[fngfs + ShellPatch::dRdy], cg->fgfs[fngfs + ShellPatch::dRdz],
|
||||||
cg->fgfs[fngfs + ShellPatch::dsigmadxx], cg->fgfs[fngfs + ShellPatch::dsigmadxy], cg->fgfs[fngfs + ShellPatch::dsigmadxz],
|
cg->fgfs[fngfs + ShellPatch::drhodxx], cg->fgfs[fngfs + ShellPatch::drhodxy], cg->fgfs[fngfs + ShellPatch::drhodxz],
|
||||||
cg->fgfs[fngfs + ShellPatch::dsigmadyy], cg->fgfs[fngfs + ShellPatch::dsigmadyz], cg->fgfs[fngfs + ShellPatch::dsigmadzz],
|
cg->fgfs[fngfs + ShellPatch::drhodyy], cg->fgfs[fngfs + ShellPatch::drhodyz], cg->fgfs[fngfs + ShellPatch::drhodzz],
|
||||||
cg->fgfs[fngfs + ShellPatch::dRdxx], cg->fgfs[fngfs + ShellPatch::dRdxy], cg->fgfs[fngfs + ShellPatch::dRdxz],
|
cg->fgfs[fngfs + ShellPatch::dsigmadxx], cg->fgfs[fngfs + ShellPatch::dsigmadxy], cg->fgfs[fngfs + ShellPatch::dsigmadxz],
|
||||||
cg->fgfs[fngfs + ShellPatch::dRdyy], cg->fgfs[fngfs + ShellPatch::dRdyz], cg->fgfs[fngfs + ShellPatch::dRdzz],
|
cg->fgfs[fngfs + ShellPatch::dsigmadyy], cg->fgfs[fngfs + ShellPatch::dsigmadyz], cg->fgfs[fngfs + ShellPatch::dsigmadzz],
|
||||||
cg->fgfs[chi->sgfn], cg->fgfs[trK->sgfn],
|
cg->fgfs[fngfs + ShellPatch::dRdxx], cg->fgfs[fngfs + ShellPatch::dRdxy], cg->fgfs[fngfs + ShellPatch::dRdxz],
|
||||||
cg->fgfs[gxx->sgfn], cg->fgfs[gxy->sgfn], cg->fgfs[gxz->sgfn], cg->fgfs[gyy->sgfn], cg->fgfs[gyz->sgfn], cg->fgfs[gzz->sgfn],
|
cg->fgfs[fngfs + ShellPatch::dRdyy], cg->fgfs[fngfs + ShellPatch::dRdyz], cg->fgfs[fngfs + ShellPatch::dRdzz],
|
||||||
cg->fgfs[Axx->sgfn], cg->fgfs[Axy->sgfn], cg->fgfs[Axz->sgfn], cg->fgfs[Ayy->sgfn], cg->fgfs[Ayz->sgfn], cg->fgfs[Azz->sgfn],
|
cg->fgfs[chi->sgfn], cg->fgfs[trK->sgfn],
|
||||||
cg->fgfs[Gmx->sgfn], cg->fgfs[Gmy->sgfn], cg->fgfs[Gmz->sgfn],
|
cg->fgfs[gxx->sgfn], cg->fgfs[gxy->sgfn], cg->fgfs[gxz->sgfn], cg->fgfs[gyy->sgfn], cg->fgfs[gyz->sgfn], cg->fgfs[gzz->sgfn],
|
||||||
cg->fgfs[Sfx_rhs->sgfn], cg->fgfs[Sfy_rhs->sgfn], cg->fgfs[Sfz_rhs->sgfn],
|
cg->fgfs[Axx->sgfn], cg->fgfs[Axy->sgfn], cg->fgfs[Axz->sgfn], cg->fgfs[Ayy->sgfn], cg->fgfs[Ayz->sgfn], cg->fgfs[Azz->sgfn],
|
||||||
Symmetry, Pp->data->sst);
|
cg->fgfs[Gmx->sgfn], cg->fgfs[Gmy->sgfn], cg->fgfs[Gmz->sgfn],
|
||||||
}
|
cg->fgfs[Sfx_rhs->sgfn], cg->fgfs[Sfy_rhs->sgfn], cg->fgfs[Sfz_rhs->sgfn],
|
||||||
if (BL == Pp->data->ble)
|
Symmetry, Pp->data->sst);
|
||||||
break;
|
}
|
||||||
BL = BL->next;
|
if (BL == Pp->data->ble)
|
||||||
}
|
break;
|
||||||
Pp = Pp->next;
|
BL = BL->next;
|
||||||
}
|
}
|
||||||
|
Pp = Pp->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const int InList = 17;
|
const int InList = 17;
|
||||||
|
|
||||||
|
|||||||
@@ -77,18 +77,18 @@ public:
|
|||||||
double &, double &, double &, double &, double &, double &, double &,
|
double &, double &, double &, double &, double &, double &, double &,
|
||||||
double &, double &, double &, double &, double &, double &,
|
double &, double &, double &, double &, double &, double &,
|
||||||
double &, double &)); // NN is the length of RP and IP
|
double &, double &)); // NN is the length of RP and IP
|
||||||
void surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
void surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
||||||
var *Gmx, var *Gmy, var *Gmz,
|
var *Gmx, var *Gmy, var *Gmz,
|
||||||
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs,
|
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs,
|
||||||
double *Rout, monitor *Monitor);
|
double *Rout, monitor *Monitor, bool refresh_mass_fields = true);
|
||||||
void surf_MassPAng(double rex, int lev, ShellPatch *GH, var *chi, var *trK,
|
void surf_MassPAng(double rex, int lev, ShellPatch *GH, var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
||||||
var *Gmx, var *Gmy, var *Gmz,
|
var *Gmx, var *Gmy, var *Gmz,
|
||||||
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs,
|
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs,
|
||||||
double *Rout, monitor *Monitor);
|
double *Rout, monitor *Monitor, bool refresh_mass_fields = true);
|
||||||
void surf_Wave(double rex, cgh *GH, ShellPatch *SH,
|
void surf_Wave(double rex, cgh *GH, ShellPatch *SH,
|
||||||
var *chi, var *trK,
|
var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
@@ -110,12 +110,12 @@ public:
|
|||||||
bool SR_Interp_Points(MyList<var> *VarList, cgh *GH, ShellPatch *SH,
|
bool SR_Interp_Points(MyList<var> *VarList, cgh *GH, ShellPatch *SH,
|
||||||
int NN, double **XX, double *Shellf);
|
int NN, double **XX, double *Shellf);
|
||||||
|
|
||||||
void surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
void surf_MassPAng(double rex, int lev, cgh *GH, var *chi, var *trK,
|
||||||
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
var *gxx, var *gxy, var *gxz, var *gyy, var *gyz, var *gzz,
|
||||||
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
var *Axx, var *Axy, var *Axz, var *Ayy, var *Ayz, var *Azz,
|
||||||
var *Gmx, var *Gmy, var *Gmz,
|
var *Gmx, var *Gmy, var *Gmz,
|
||||||
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
var *Sfx_rhs, var *Sfy_rhs, var *Sfz_rhs, // temparay memory for mass^i
|
||||||
double *Rout, monitor *Monitor, MPI_Comm Comm_here);
|
double *Rout, monitor *Monitor, MPI_Comm Comm_here, bool refresh_mass_fields = true);
|
||||||
void surf_Wave(double rex, int lev, cgh *GH, var *Rpsi4, var *Ipsi4,
|
void surf_Wave(double rex, int lev, cgh *GH, var *Rpsi4, var *Ipsi4,
|
||||||
int spinw, int maxl, int NN, double *RP, double *IP,
|
int spinw, int maxl, int NN, double *RP, double *IP,
|
||||||
monitor *Monitor, MPI_Comm Comm_here);
|
monitor *Monitor, MPI_Comm Comm_here);
|
||||||
|
|||||||
Reference in New Issue
Block a user