From 0efa54821a3fc41eca27f392ff7ba039a40d727d Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Thu, 25 Nov 2010 13:03:11 +0100 Subject: [PATCH] ENH: support regions for PV3blockMeshReader --- .../vtkPV3blockMesh/vtkPV3blockMesh.C | 28 +++++++++++++++++-- .../vtkPV3blockMesh/vtkPV3blockMesh.H | 6 ++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C index f64f43b5420..da1573bf77c 100644 --- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C +++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C @@ -148,6 +148,8 @@ Foam::vtkPV3blockMesh::vtkPV3blockMesh reader_(reader), dbPtr_(NULL), meshPtr_(NULL), + meshRegion_(polyMesh::defaultRegion), + meshDir_(polyMesh::meshSubDir), arrayRangeBlocks_("block"), arrayRangeEdges_("edges"), arrayRangeCorners_("corners") @@ -188,6 +190,28 @@ Foam::vtkPV3blockMesh::vtkPV3blockMesh // could be stringent and insist the prefix match the directory name... // Note: cannot use fileName::name() due to the embedded '{}' string caseName(fileName(FileName).lessExt()); + string::size_type beg = caseName.find_last_of("/{"); + string::size_type end = caseName.find('}', beg); + + if + ( + beg != string::npos && caseName[beg] == '{' + && end != string::npos && end == caseName.size()-1 + ) + { + meshRegion_ = caseName.substr(beg+1, end-beg-1); + + // some safety + if (meshRegion_.empty()) + { + meshRegion_ = polyMesh::defaultRegion; + } + + if (meshRegion_ != polyMesh::defaultRegion) + { + meshDir_ = meshRegion_/polyMesh::meshSubDir; + } + } if (debug) { @@ -313,7 +337,7 @@ void Foam::vtkPV3blockMesh::updateFoamMesh() ( "blockMeshDict", dbPtr_().constant(), - polyMesh::meshSubDir, + meshDir_, dbPtr_(), IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE, @@ -321,7 +345,7 @@ void Foam::vtkPV3blockMesh::updateFoamMesh() ) ); - meshPtr_ = new blockMesh(meshDict, polyMesh::defaultRegion); + meshPtr_ = new blockMesh(meshDict, meshRegion_); } diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H index 33ed976bb81..cdbf4ad434a 100644 --- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H +++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H @@ -173,6 +173,12 @@ class vtkPV3blockMesh //- OpenFOAM mesh blockMesh* meshPtr_; + //- The mesh region + word meshRegion_; + + //- The mesh directory for the region + fileName meshDir_; + //- Selected geometrical parts boolList blockStatus_; -- GitLab