diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C index 66a1f0357a..e56cecd6f5 100644 --- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C +++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C @@ -34,8 +34,12 @@ Description - any face inbetween differing cellZones (-cellZones) Output is: - - volScalarField with regions as different scalars (-detectOnly) or - - mesh with multiple regions or + - volScalarField with regions as different scalars (-detectOnly) + or + - mesh with multiple regions and directMapped patches. These patches + either cover the whole interface between two region (default) or + only part according to faceZones (-useFaceZones) + or - mesh with cells put into cellZones (-makeCellZones) Note: @@ -495,18 +499,70 @@ labelList getNonRegionCells(const labelList& cellRegion, const label regionI) } -// Get per region-region interface the sizes. If sumParallel sums sizes. +void addToInterface +( + const polyMesh& mesh, + const label zoneID, + const label ownRegion, + const label neiRegion, + EdgeMap >& regionsToSize +) +{ + edge interface + ( + min(ownRegion, neiRegion), + max(ownRegion, neiRegion) + ); + + EdgeMap >::iterator iter = regionsToSize.find + ( + interface + ); + + if (iter != regionsToSize.end()) + { + // Check if zone present + Map