mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: multiLevel decomposition method.
This commit is contained in:
@ -489,11 +489,17 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
autoPtr<decompositionMethod> decomposePtr = decompositionMethod::New
|
||||
(
|
||||
decomposeDict,
|
||||
mesh
|
||||
decomposeDict
|
||||
);
|
||||
|
||||
labelList cellToRegion(decomposePtr().decompose(mesh.cellCentres()));
|
||||
labelList cellToRegion
|
||||
(
|
||||
decomposePtr().decompose
|
||||
(
|
||||
mesh,
|
||||
mesh.cellCentres()
|
||||
)
|
||||
);
|
||||
|
||||
// For debugging: write out region
|
||||
{
|
||||
|
||||
@ -381,7 +381,8 @@ void subsetVolFields
|
||||
const fvMesh& mesh,
|
||||
const fvMesh& subMesh,
|
||||
const labelList& cellMap,
|
||||
const labelList& faceMap
|
||||
const labelList& faceMap,
|
||||
const labelHashSet& addedPatches
|
||||
)
|
||||
{
|
||||
const labelList patchMap(identity(mesh.boundaryMesh().size()));
|
||||
@ -412,14 +413,7 @@ void subsetVolFields
|
||||
// get initialised.
|
||||
forAll(tSubFld().boundaryField(), patchI)
|
||||
{
|
||||
const fvPatchField<typename GeoField::value_type>& pfld =
|
||||
tSubFld().boundaryField()[patchI];
|
||||
|
||||
if
|
||||
(
|
||||
isA<calculatedFvPatchField<typename GeoField::value_type> >
|
||||
(pfld)
|
||||
)
|
||||
if (addedPatches.found(patchI))
|
||||
{
|
||||
tSubFld().boundaryField()[patchI] ==
|
||||
pTraits<typename GeoField::value_type>::zero;
|
||||
@ -440,7 +434,8 @@ void subsetSurfaceFields
|
||||
(
|
||||
const fvMesh& mesh,
|
||||
const fvMesh& subMesh,
|
||||
const labelList& faceMap
|
||||
const labelList& faceMap,
|
||||
const labelHashSet& addedPatches
|
||||
)
|
||||
{
|
||||
const labelList patchMap(identity(mesh.boundaryMesh().size()));
|
||||
@ -470,14 +465,7 @@ void subsetSurfaceFields
|
||||
// get initialised.
|
||||
forAll(tSubFld().boundaryField(), patchI)
|
||||
{
|
||||
const fvsPatchField<typename GeoField::value_type>& pfld =
|
||||
tSubFld().boundaryField()[patchI];
|
||||
|
||||
if
|
||||
(
|
||||
isA<calculatedFvsPatchField<typename GeoField::value_type> >
|
||||
(pfld)
|
||||
)
|
||||
if (addedPatches.found(patchI))
|
||||
{
|
||||
tSubFld().boundaryField()[patchI] ==
|
||||
pTraits<typename GeoField::value_type>::zero;
|
||||
@ -852,6 +840,15 @@ void createAndWriteRegion
|
||||
newMesh
|
||||
);
|
||||
|
||||
|
||||
// Make map of all added patches
|
||||
labelHashSet addedPatches(2*interfaceToPatch.size());
|
||||
forAllConstIter(EdgeMap<label>, interfaceToPatch, iter)
|
||||
{
|
||||
addedPatches.insert(iter());
|
||||
addedPatches.insert(iter()+1);
|
||||
}
|
||||
|
||||
Info<< "Mapping fields" << endl;
|
||||
|
||||
// Map existing fields
|
||||
@ -863,66 +860,76 @@ void createAndWriteRegion
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().cellMap(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetVolFields<volVectorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().cellMap(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetVolFields<volSphericalTensorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().cellMap(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetVolFields<volSymmTensorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().cellMap(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetVolFields<volTensorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().cellMap(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
|
||||
subsetSurfaceFields<surfaceScalarField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetSurfaceFields<surfaceVectorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetSurfaceFields<surfaceSphericalTensorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetSurfaceFields<surfaceSymmTensorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
subsetSurfaceFields<surfaceTensorField>
|
||||
(
|
||||
mesh,
|
||||
newMesh(),
|
||||
map().faceMap()
|
||||
map().faceMap(),
|
||||
addedPatches
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user