58 methodDict_(findCoeffsDict(typeName +
"Coeffs", selectionType::MANDATORY)),
70 return method_().parallelAware();
94 patchCells.insert(
pbm[patchi].faceCells());
98 fvMeshSubset subsetter
100 dynamic_cast<const fvMesh&>(
mesh),
103 const fvMesh& subMesh = subsetter.subMesh();
108 subWeights =
scalarField(cWeights, subsetter.cellMap());
112 labelList subDecomp(method_().decompose(subMesh, subCc, subWeights));
119 finalDecomp[subsetter.cellMap()[i]] = subDecomp[i];
123 List<topoDistanceData<label>> cellData(
mesh.
nCells());
124 List<topoDistanceData<label>> faceData(
mesh.
nFaces());
128 List<topoDistanceData<label>> patchData(nFaces);
132 const polyPatch&
pp =
pbm[patchi];
136 patchFaces[nFaces] =
pp.start()+i;
137 patchData[nFaces] = topoDistanceData<label>(0, finalDecomp[fc[i]]);
143 FaceCellWave<topoDistanceData<label>> deltaCalc
154 bool haveWarned =
false;
155 forAll(finalDecomp, celli)
157 if (!cellData[celli].valid(deltaCalc.data()))
162 <<
"Did not visit some cells, e.g. cell " << celli
164 <<
"Assigning these cells to domain 0." <<
endl;
167 finalDecomp[celli] = 0;
171 finalDecomp[celli] = cellData[celli].data();
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
List of values generated by applying the access operation to each list item.
const labelList patchIDs(pbm.indices(polyPatchNames, true))
const polyBoundaryMesh & pbm
virtual labelList decompose(const polyMesh &mesh, const pointField &points, const scalarField &pointWeights=scalarField::null()) const
Return for every coordinate the wanted processor number.
void size(const label n)
Older name for setAddressableSize.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
labelHashSet patchSet(const UList< wordRe > &select, const bool warnNotFound=true, const bool useGroups=true) const
Return the set of patch IDs corresponding to the given names.
constexpr char nl
The newline '\n' character (0x0a)
Ostream & endl(Ostream &os)
Add newline and flush stream.
label nFaces() const noexcept
Number of mesh faces.
Macros for easy insertion into run-time selection tables.
UList< label > labelUList
A UList of labels.
structuredDecomp(const structuredDecomp &)=delete
No copy construct.
#define forAll(list, i)
Loop across all elements in list.
HashSet< label, Hash< label > > labelHashSet
A HashSet of labels, uses label hasher.
vectorField pointField
pointField is a vectorField.
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundary mesh.
A class for handling words, derived from Foam::string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
label size() const noexcept
The number of entries in the list.
A List of wordRe with additional matching capabilities.
const globalMeshData & globalData() const
Return parallel info (demand-driven)
Abstract base class for domain decomposition.
const vectorField & cellCentres() const
label nDomains() const noexcept
Number of domains.
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO...
virtual bool parallelAware() const
Is method parallel aware.
defineTypeNameAndDebug(combustionModel, 0)
label nTotalCells() const noexcept
Total global number of mesh cells.
static autoPtr< decompositionMethod > New(const dictionary &decompDict, const word ®ionName="")
Return a reference to the selected decomposition method, optionally region-specific.
#define WarningInFunction
Report a warning using Foam::Warning.
Foam::word regionName(args.getOrDefault< word >("region", Foam::polyMesh::defaultRegion))
label nCells() const noexcept
Number of mesh cells.
Mesh consisting of general polyhedral cells.
entry * set(entry *entryPtr)
Assign a new entry, overwriting any existing entry.
List< label > labelList
A List of labels.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)