38#ifndef Foam_pairPatchAgglomeration_H
39#define Foam_pairPatchAgglomeration_H
55class pairPatchAgglomeration
100 bool agglomeratePatch
104 const label fineLevelIndex,
109 bool isSingleEdgeLoop
119 label maxValidNeighbour
121 const bool addToCluster,
136 void combineLevels(
const label curLevel);
139 void compactLevels(
const label fineLevelIndex);
142 bool continueAgglomerating
145 const label nLocalOld,
146 const label nMarkedEdges
150 void setEdgeWeights(
const label indexLevel);
153 void setLevel0EdgeWeights();
156 void mapBaseToTopAgglom(
const label fineLevelIndex);
159 pairPatchAgglomeration(
const pairPatchAgglomeration&) =
delete;
162 void operator=(
const pairPatchAgglomeration&) =
delete;
174 pairPatchAgglomeration
182 pairPatchAgglomeration
186 const label mergeLevels,
187 const label maxLevels,
188 const label nFacesInCoarsestLevel,
189 const label nGlobalFacesInCoarsestLevel,
190 const scalar featureAngle = 0
235 const Field<Type>& ff,
236 const label fineLevelIndex
244 const Field<Type>& cf,
245 const label coarseLevelIndex
Map from edge (expressed as its endpoints) to value. Hashing (and ==) on an edge is symmetric.
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
A list of faces which address into the list of points.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
void prolongField(Field< Type > &ff, const Field< Type > &cf, const label coarseLevelIndex) const
Prolong (interpolate by injection) cell field.
void restrictField(Field< Type > &cf, const Field< Type > &ff, const label fineLevelIndex) const
Restrict (integrate by summation) cell field.
virtual ~pairPatchAgglomeration()
const labelList & restrictTopBottomAddressing() const
Return restriction from top level to bottom level.
TypeName("pairPatch")
Runtime type information.
PtrList< bPatch > patchLevels_
Hierarchy of patch addressing.
labelList nFaces_
The number of faces in each level.
const bPatch & patchLevel(const label leveli) const
Return primitivePatch of given level.
void agglomerate()
Agglomerate patch.
EdgeMap< scalar > facePairWeight_
Edge weights.
label mergeLevels_
Number of levels to merge, 1 = don't merge, 2 = merge pairs etc.
scalar featureAngle_
Feature angle.
label size() const
Return size.
label maxLevels_
Max number of levels.
label nFacesInCoarsestLevel_
Number of faces in coarsest level.
PtrList< labelField > restrictAddressing_
Cell restriction addressing array.
const labelField & restrictAddressing(const label leveli) const
Return cell restrict addressing of given level.
PrimitivePatch< List< face >, const pointField > bPatch
label nGlobalFacesInCoarsestLevel_
Global number of faces in coarsest level.
labelList restrictTopBottomAddressing_
Maps from finest to coarsest.
A class for managing temporary objects.
runTime controlDict().readEntry("adjustTimeStep"
List< label > labelList
A List of labels.
List< face > faceList
List of faces.
Field< label > labelField
Specialisation of Field<T> for label.
PrimitivePatch<::Foam::List< face >, const pointField > bPatch
vectorField pointField
pointField is a vectorField.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.