Batch constraint norm reductions
This commit is contained in:
@@ -7422,41 +7422,24 @@ void bssn_class::Constraint_Out()
|
||||
#endif
|
||||
|
||||
double ConV[7];
|
||||
#if (PSTR == 1 || PSTR == 2)
|
||||
double ConV_h[7];
|
||||
#endif
|
||||
|
||||
#ifdef WithShell
|
||||
ConV[0] = SH->L2Norm(Cons_Ham);
|
||||
ConV[1] = SH->L2Norm(Cons_Px);
|
||||
ConV[2] = SH->L2Norm(Cons_Py);
|
||||
ConV[3] = SH->L2Norm(Cons_Pz);
|
||||
ConV[4] = SH->L2Norm(Cons_Gx);
|
||||
ConV[5] = SH->L2Norm(Cons_Gy);
|
||||
ConV[6] = SH->L2Norm(Cons_Gz);
|
||||
ConVMonitor->writefile(PhysTime, 7, ConV);
|
||||
#endif
|
||||
for (int levi = 0; levi < GH->levels; levi++)
|
||||
{
|
||||
#if (PSTR == 0)
|
||||
ConV[0] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Ham);
|
||||
ConV[1] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Px);
|
||||
ConV[2] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Py);
|
||||
ConV[3] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Pz);
|
||||
ConV[4] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Gx);
|
||||
ConV[5] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Gy);
|
||||
ConV[6] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Gz);
|
||||
#elif (PSTR == 1 || PSTR == 2)
|
||||
ConV[0] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Ham, GH->Commlev[levi]);
|
||||
ConV[1] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Px, GH->Commlev[levi]);
|
||||
ConV[2] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Py, GH->Commlev[levi]);
|
||||
ConV[3] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Pz, GH->Commlev[levi]);
|
||||
ConV[4] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Gx, GH->Commlev[levi]);
|
||||
ConV[5] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Gy, GH->Commlev[levi]);
|
||||
ConV[6] = Parallel::L2Norm(GH->PatL[levi]->data, Cons_Gz, GH->Commlev[levi]);
|
||||
// misc::tillherecheck("before collect data to cpu0");
|
||||
// MPI_ALLREDUCE( sendbuf, recvbuf, count, datatype, op, comm), sendbu and recvbuf must be different
|
||||
if (levi > 0)
|
||||
#if (PSTR == 1 || PSTR == 2)
|
||||
double ConV_h[7];
|
||||
#endif
|
||||
var *ConstraintVars[7] = {Cons_Ham, Cons_Px, Cons_Py, Cons_Pz, Cons_Gx, Cons_Gy, Cons_Gz};
|
||||
|
||||
#ifdef WithShell
|
||||
SH->L2Norm7(ConstraintVars, ConV);
|
||||
ConVMonitor->writefile(PhysTime, 7, ConV);
|
||||
#endif
|
||||
for (int levi = 0; levi < GH->levels; levi++)
|
||||
{
|
||||
#if (PSTR == 0)
|
||||
Parallel::L2Norm7(GH->PatL[levi]->data, ConstraintVars, ConV);
|
||||
#elif (PSTR == 1 || PSTR == 2)
|
||||
Parallel::L2Norm7(GH->PatL[levi]->data, ConstraintVars, ConV, GH->Commlev[levi]);
|
||||
// misc::tillherecheck("before collect data to cpu0");
|
||||
// MPI_ALLREDUCE( sendbuf, recvbuf, count, datatype, op, comm), sendbu and recvbuf must be different
|
||||
if (levi > 0)
|
||||
{
|
||||
if (GH->mylev == levi && myrank == GH->start_rank[levi])
|
||||
for (int i = 0; i < 7; i++)
|
||||
|
||||
Reference in New Issue
Block a user