50#ifndef decompositionGAMGAgglomeration_H
51#define decompositionGAMGAgglomeration_H
72 const bool doRenumber_;
74 const bool forceConnected_;
76 mutable autoPtr<decompositionMethod> decomposerPtr_;
78 const label clusterSize_;
80 mutable bool hasWarned_;
96 const bool partByPart,
97 const label nCoarseCells,
109 static bitSet blockedFaces
115 static bool checkRestriction
124 static void coarseCellCells
162 virtual void agglomerate
164 const label nCellsInCoarsestLevel,
165 const label startLevel,
167 const bool doProcessorAgglomerate =
true
196 #include "decompositionGAMGAgglomerationTemplates.txx"
Info<< nl;Info<< "Write faMesh in vtk format:"<< nl;{ vtk::uindirectPatchWriter writer(aMesh.patch(), fileName(aMesh.time().globalPath()/vtkBaseFileName));writer.writeGeometry();globalIndex procAddr(aMesh.nFaces());labelList cellIDs;if(UPstream::master()) { cellIDs.resize(procAddr.totalSize());for(const labelRange &range :procAddr.ranges()) { auto slice=cellIDs.slice(range);slice=identity(range);} } writer.beginCellData(4);writer.writeProcIDs();writer.write("cellID", cellIDs);writer.write("area", aMesh.S().field());writer.write("normal", aMesh.faceAreaNormals());writer.beginPointData(1);writer.write("normal", aMesh.pointAreaNormals());Info<< " "<< writer.output().name()<< nl;}{ vtk::lineWriter writer(aMesh.points(), aMesh.edges(), fileName(aMesh.time().globalPath()/(vtkBaseFileName+"-edges")));writer.writeGeometry();writer.beginCellData(4);writer.writeProcIDs();{ Field< scalar > fld(faMeshTools::flattenEdgeField(aMesh.magLe(), true))
A packed storage of objects of type <T> using an offset table for access.
Geometric agglomerated algebraic multigrid agglomeration class.
GAMGAgglomeration(const GAMGAgglomeration &)=delete
No copy construct.
const lduMesh & mesh() const noexcept
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
Agglomerate using the decomposition algorithm.
TypeName("decomposition")
Runtime type information.
decompositionGAMGAgglomeration(const lduMesh &mesh, const dictionary &controlDict)
Construct given mesh and controls.
static void localCellCells(const lduAddressing &addr, const bitSet &isBlockedFace, CompactListList< label > &cellCells)
Abstract base class for domain decomposition.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
The class contains the addressing required by the lduMatrix: upper, lower and losort.
Abstract base class for meshes which provide LDU addressing for the construction of lduMatrix and LDU...
A class for managing temporary objects.
runTime controlDict().readEntry("adjustTimeStep"
const bitSet isBlockedFace(intersectedFaces())
List< label > labelList
A List of labels.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Field< vector > vectorField
Specialisation of Field<T> for vector.
vectorField pointField
pointField is a vectorField.
UList< label > labelUList
A UList of labels.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.