Go to the documentation of this file.
40 #ifndef GAMGAgglomeration_H
41 #define GAMGAgglomeration_H
59 class GAMGProcAgglomeration;
67 public MeshObject<lduMesh, GeometricMeshObject, GAMGAgglomeration>
161 const label nCoarseCells
193 const label allMeshComm,
194 const label levelIndex
205 const label levelIndex
368 label
nCells(
const label leveli)
const
374 label
nFaces(
const label leveli)
const
394 const Field<Type>&
ff,
395 const label fineLevelIndex,
396 const bool procAgglom
404 const Field<Type>&
ff,
405 const label fineLevelIndex
413 const Field<Type>&
ff,
422 const Field<Type>& cf,
423 const label coarseLevelIndex,
424 const bool procAgglom
The class contains the addressing required by the lduMatrix: upper, lower and losort.
List< label > labelList
A List of labels.
PtrList< labelListList > procFaceMap_
const labelList & faceRestrictAddressing(const label leveli) const
autoPtr< GAMGProcAgglomeration > procAgglomeratorPtr_
declareRunTimeSelectionTable(autoPtr, GAMGAgglomeration, lduMesh,(const lduMesh &mesh, const dictionary &controlDict),(mesh, controlDict))
Geometric agglomerated algebraic multigrid agglomeration class.
label nFaces(const label leveli) const
void procAgglomerateRestrictAddressing(const label comm, const labelList &procIDs, const label levelIndex)
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
const lduMesh & meshLevel(const label leveli) const
const labelListList & patchFaceRestrictAddressing(const label leveli) const
const labelListList & faceMap(const label fineLeveli) const
void operator=(const GAMGAgglomeration &)=delete
PtrList< labelList > faceRestrictAddressing_
bool hasMeshLevel(const label leveli) const
PtrList< lduPrimitiveMesh > meshLevels_
Specialisations of Field<T> for scalar, vector and tensor.
PtrList< labelField > restrictAddressing_
const labelList & cellOffsets(const label fineLeveli) const
void agglomerateLduAddressing(const label fineLevelIndex)
const boolList & faceFlipMap(const label leveli) const
const labelList & agglomProcIDs(const label fineLeveli) const
static void calculateRegionMaster(const label comm, const labelList &procAgglomMap, labelList &masterProcs, List< label > &agglomProcIDs)
const labelField & restrictAddressing(const label leveli) const
const lduInterfacePtrsList meshInterfaces_
const labelListList & boundaryMap(const label fineLeveli) const
label nCellsInCoarsestLevel_
Generic templated field type.
GAMGAgglomeration(const GAMGAgglomeration &)=delete
const lduMesh & mesh() const
void restrictFaceField(Field< Type > &cf, const Field< Type > &ff, const label fineLevelIndex) const
runTime controlDict().readEntry("adjustTimeStep"
void clearLevel(const label leveli)
A list of pointers to objects of type <T>, without allocation/deallocation management of the pointers...
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
static bool checkRestriction(labelList &newRestrict, label &nNewCoarse, const lduAddressing &fineAddressing, const labelUList &restriction, const label nCoarse)
static void gatherList(const label comm, const labelList &procIDs, const Type &myVal, List< Type > &allVals, const int tag=Pstream::msgType())
PtrList< labelList > nPatchFaces_
const labelList & nPatchFaces(const label leveli) const
void combineLevels(const label curLevel)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
PtrList< labelList > procAgglomMap_
TypeName("GAMGAgglomeration")
static const GAMGAgglomeration & New(const lduMesh &mesh, const dictionary &controlDict)
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
const FieldField< fvPatchField, Type > & ff(const FieldField< fvPatchField, Type > &bf)
static int & msgType() noexcept
const labelList & procAgglomMap(const label fineLeveli) const
Macros to ease declaration of run-time selection tables.
void restrictField(Field< Type > &cf, const Field< Type > &ff, const label fineLevelIndex, const bool procAgglom) const
const lduInterfacePtrsList & interfaceLevel(const label leveli) const
PtrList< labelListList > procBoundaryMap_
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
void compactLevels(const label nCreatedLevels)
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
const labelListListList & boundaryFaceMap(const label fineLeveli) const
void prolongField(Field< Type > &ff, const Field< Type > &cf, const label coarseLevelIndex, const bool procAgglom) const
Templated abstract base-class for optional mesh objects used to automate their allocation to the mesh...
bool hasProcMesh(const label fineLeveli) const
void procAgglomerateLduAddressing(const label comm, const labelList &procAgglomMap, const labelList &procIDs, const label allMeshComm, const label levelIndex)
Processor agglomeration of GAMGAgglomerations.
label procCommunicator(const label fineLeveli) const
label nCells(const label leveli) const
PtrList< boolList > faceFlipMap_
PtrList< labelListListList > procBoundaryFaceMap_
PtrList< labelListList > patchFaceRestrictAddressing_
PtrList< labelList > procCellOffsets_
bool processorAgglomerate() const
PtrList< labelList > agglomProcIDs_
Abstract base class for meshes which provide LDU addressing for the construction of lduMatrix and LDU...
bool continueAgglomerating(const label nCells, const label nCoarseCells) const
labelList procCommunicator_