Batch constraint norm reductions
This commit is contained in:
@@ -3439,10 +3439,10 @@ void ShellPatch::write_Pablo_file_ss(int *ext, double xmin, double xmax, double
|
||||
delete[] Z;
|
||||
}
|
||||
|
||||
double ShellPatch::L2Norm(var *vf)
|
||||
{
|
||||
double tvf, dtvf = 0;
|
||||
int BDW = overghost;
|
||||
double ShellPatch::L2Norm(var *vf)
|
||||
{
|
||||
double tvf, dtvf = 0;
|
||||
int BDW = overghost;
|
||||
|
||||
MyList<ss_patch> *sPp = PatL;
|
||||
while (sPp)
|
||||
@@ -3469,13 +3469,50 @@ double ShellPatch::L2Norm(var *vf)
|
||||
MPI_Allreduce(&dtvf, &tvf, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
|
||||
|
||||
tvf = sqrt(tvf);
|
||||
|
||||
return tvf;
|
||||
}
|
||||
|
||||
// find maximum of abstract value, XX store position for maximum, Shellf store maximum themselvs
|
||||
void ShellPatch::Find_Maximum(MyList<var> *VarList, double *XX,
|
||||
double *Shellf)
|
||||
|
||||
return tvf;
|
||||
}
|
||||
void ShellPatch::L2Norm7(var **vf, double *norms)
|
||||
{
|
||||
double tvf[7], dtvf[7];
|
||||
int BDW = overghost;
|
||||
for (int i = 0; i < 7; i++)
|
||||
dtvf[i] = 0;
|
||||
|
||||
MyList<ss_patch> *sPp = PatL;
|
||||
while (sPp)
|
||||
{
|
||||
MyList<Block> *Bp = sPp->data->blb;
|
||||
while (Bp)
|
||||
{
|
||||
Block *cg = Bp->data;
|
||||
if (myrank == cg->rank)
|
||||
{
|
||||
f_l2normhelper7(cg->shape, cg->X[0], cg->X[1], cg->X[2],
|
||||
sPp->data->bbox[0], sPp->data->bbox[1], sPp->data->bbox[2],
|
||||
sPp->data->bbox[3], sPp->data->bbox[4], sPp->data->bbox[5],
|
||||
cg->fgfs[vf[0]->sgfn], cg->fgfs[vf[1]->sgfn], cg->fgfs[vf[2]->sgfn],
|
||||
cg->fgfs[vf[3]->sgfn], cg->fgfs[vf[4]->sgfn], cg->fgfs[vf[5]->sgfn],
|
||||
cg->fgfs[vf[6]->sgfn], tvf, BDW);
|
||||
for (int i = 0; i < 7; i++)
|
||||
dtvf[i] += tvf[i];
|
||||
}
|
||||
if (Bp == sPp->data->ble)
|
||||
break;
|
||||
Bp = Bp->next;
|
||||
}
|
||||
sPp = sPp->next;
|
||||
}
|
||||
|
||||
MPI_Allreduce(dtvf, tvf, 7, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
norms[i] = sqrt(tvf[i]);
|
||||
}
|
||||
|
||||
// find maximum of abstract value, XX store position for maximum, Shellf store maximum themselvs
|
||||
void ShellPatch::Find_Maximum(MyList<var> *VarList, double *XX,
|
||||
double *Shellf)
|
||||
{
|
||||
MyList<var> *varl;
|
||||
int num_var = 0;
|
||||
|
||||
Reference in New Issue
Block a user