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 registered IO, a reference to the associated polyMesh...
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)