From 805b45e88a0fa670e763b70a6730a0fc45f46d88 Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 21 Oct 2008 21:38:43 +0100 Subject: [PATCH] dumping redistributed surfaces --- .../autoHexMeshDriver/autoHexMeshDriver.C | 2 +- .../autoHexMeshDriver/autoRefineDriver.C | 12 ++++--- .../meshRefinement/meshRefinement.C | 35 +++++++++++++++++++ .../distributedTriSurfaceMesh.C | 1 + 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C index de6ee7c894..950e1a3145 100644 --- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C +++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C @@ -230,7 +230,7 @@ Foam::autoHexMeshDriver::autoHexMeshDriver IOobject ( "abc", // dummy name - mesh_.time().constant(), // directory + mesh_.time().timeName(), // directory "triSurface", // instance mesh_.time(), // registry IOobject::MUST_READ, diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C index 57a4cb5b64..ed9fd05808 100644 --- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C +++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C @@ -242,6 +242,8 @@ Foam::label Foam::autoRefineDriver::surfaceOnlyRefine // Only look at surface intersections (minLevel and surface curvature), // do not do internal refinement (refinementShells) + const PtrList dummyFeatures; + labelList candidateCells ( meshRefiner_.refineCandidates @@ -249,8 +251,8 @@ Foam::label Foam::autoRefineDriver::surfaceOnlyRefine refineParams.keepPoints()[0], refineParams.curvature(), - PtrList(), // dummy featureMeshes; - labelList(0), // dummy featureLevels; + dummyFeatures, // dummy featureMeshes; + labelList(0), // dummy featureLevels; false, // featureRefinement false, // internalRefinement @@ -383,6 +385,8 @@ Foam::label Foam::autoRefineDriver::shellRefine << "----------------------------" << nl << endl; + const PtrList dummyFeatures; + labelList candidateCells ( meshRefiner_.refineCandidates @@ -390,8 +394,8 @@ Foam::label Foam::autoRefineDriver::shellRefine refineParams.keepPoints()[0], refineParams.curvature(), - PtrList(), // dummy featureMeshes; - labelList(0), // dummy featureLevels; + dummyFeatures, // dummy featureMeshes; + labelList(0), // dummy featureLevels; false, // featureRefinement true, // internalRefinement diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C index 93e37f1932..6d98bdfebc 100644 --- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C +++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C @@ -1776,6 +1776,13 @@ void Foam::meshRefinement::distribute(const mapDistributePolyMesh& map) faceMap, pointMap ); + + if (faceMap.valid()) + { + // (ab)use the instance() to signal current modification time + geometry[i].instance() = geometry[i].time().timeName(); + } + faceMap.clear(); pointMap.clear(); } @@ -1914,6 +1921,34 @@ bool Foam::meshRefinement::write() const && meshCutter_.write() && surfaceIndex_.write(); + + // Make sure that any distributed surfaces (so ones which probably have + // been changed) get written as well. + // Note: should ideally have some 'modified' flag to say whether it + // has been changed or not. + searchableSurfaces& geometry = + const_cast(surfaces_.geometry()); + + forAll(geometry, i) + { + searchableSurface& s = geometry[i]; + + // Check if instance() of surface is not constant or system. + // Is good hint that surface is distributed. + if + ( + s.instance() != s.time().system() + && s.instance() != s.time().caseSystem() + && s.instance() != s.time().constant() + && s.instance() != s.time().caseConstant() + ) + { + // Make sure it gets written to current time, not constant. + s.instance() = s.time().timeName(); + writeOk = writeOk && s.write(); + } + } + return writeOk; } diff --git a/src/meshTools/searchableSurface/distributedTriSurfaceMesh.C b/src/meshTools/searchableSurface/distributedTriSurfaceMesh.C index 0b2d8d1bde..a42408e9bc 100644 --- a/src/meshTools/searchableSurface/distributedTriSurfaceMesh.C +++ b/src/meshTools/searchableSurface/distributedTriSurfaceMesh.C @@ -1904,6 +1904,7 @@ void Foam::distributedTriSurfaceMesh::distribute } else { + dict_.set("bounds", procBb_[Pstream::myProcNo()]); procBb_.transfer(newProcBb); } }