39 MGridGenGAMGAgglomeration,
47 Foam::MGridGenGAMGAgglomeration::MGridGenGAMGAgglomeration
53 GAMGAgglomeration(mesh, controlDict),
54 fvMesh_(
refCast<const fvMesh>(mesh))
57 label minSize(readLabel(controlDict.lookup(
"minSize")));
58 label maxSize(readLabel(controlDict.lookup(
"maxSize")));
78 const labelList& own = fvMesh_.faceOwner();
83 if (!fvMesh_.isInternalFace(facei))
85 Sb[own[facei]] +=
mag(Sf[facei]);
94 label nCreatedLevels = 0;
96 while (nCreatedLevels < maxLevels_ - 1)
98 label nCoarseCells = -1;
100 tmp<labelField> finalAgglomPtr = agglomerate
105 meshLevel(nCreatedLevels).lduAddr(),
111 if (continueAgglomerating(nCoarseCells))
113 nCells_[nCreatedLevels] = nCoarseCells;
114 restrictAddressing_.set(nCreatedLevels, finalAgglomPtr);
121 agglomerateLduAddressing(nCreatedLevels);
130 restrictField(*aggVPtr, *VPtr, nCreatedLevels);
146 meshLevels_[nCreatedLevels].upperAddr().
size(),
151 restrictFaceField(*aggSfPtr, *SfPtr, nCreatedLevels);
168 restrictField(*aggSbPtr, *SbPtr, nCreatedLevels);
178 compactLevels(nCreatedLevels);