37namespace decompositionConstraints
59 patches_(coeffDict_.get<
wordRes>(
"patches"))
61 if (decompositionConstraint::debug)
64 <<
" : adding constraints to keep owner and (coupled) neighbour"
65 <<
" of faces in patches " << patches_
66 <<
" on same processor. This only makes sense for cyclics"
67 <<
" and cyclicAMI." <<
endl;
80 if (decompositionConstraint::debug)
83 <<
" : adding constraints to keep owner and (coupled) neighbour"
84 <<
" of faces in patches " << patches_
85 <<
" on same processor. This only makes sense for cyclics"
86 <<
" and cyclicAMI." <<
endl;
108 label nUnblocked = 0;
110 for (
const label patchi : patchIDs)
116 const label meshFacei = pp.
start() + i;
118 if (blockedFace[meshFacei])
120 blockedFace[meshFacei] =
false;
126 if (decompositionConstraint::debug & 2)
129 Info<<
type() <<
" : unblocked " << nUnblocked <<
" faces" <<
endl;
163 getMinBoundaryValue(
mesh, decomposition, destProc);
170 for (
const label patchi : patchIDs)
178 const label bFacei = pp.
offset()+i;
179 if (destProc[bFacei] < decomposition[
faceCells[i]])
181 decomposition[
faceCells[i]] = destProc[bFacei];
189 if (decompositionConstraint::debug & 2)
191 Info<<
type() <<
" : changed decomposition on " << nChanged
195 }
while (nChanged > 0);
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
List< Key > sortedToc() const
The table of contents (the keys) in sorted order.
void resize(const label len)
Adjust allocated size of list.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
virtual void apply()=0
Apply bins.
Abstract class for handling decomposition constraints.
Constraint to keep owner and neighbour of (cyclic) patch on same processor.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Smooth ATC in cells next to a set of patches supplied by type.
Sums a given list of (at least two or more) fields and outputs the result into a new field,...
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
labelHashSet patchSet(const UList< wordRe > &patchNames, const bool warnNotFound=true, const bool useGroups=true) const
Return the set of patch IDs corresponding to the given names.
Mesh consisting of general polyhedral cells.
A patch is a list of labels that address the faces in the global face list.
label offset() const
The offset where this patch starts in the boundary face list.
label start() const
Return start label of this patch in the polyMesh face list.
const labelUList & faceCells() const
Return face-cell addressing.
A List of wordRe with additional matching capabilities.
#define defineTypeName(Type)
Define the typeName.
const polyBoundaryMesh & patches
messageStream Info
Information stream (stdout output on master, null elsewhere)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void reduce(const List< UPstream::commsStruct > &comms, T &value, const BinaryOp &bop, const int tag, const label comm)
#define forAll(list, i)
Loop across all elements in list.