From d8c1aa3afd45990ee7ca21fd46c44aad9342f121 Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 30 Mar 2010 21:49:37 +0100 Subject: [PATCH] BUG: nGrow of layer disabling not handled correctly. Now also moved to within layer iteration loop. --- .../autoHexMeshDriver/autoLayerDriver.C | 51 +++++++++++++++---- .../autoHexMeshDriver/autoLayerDriver.H | 4 +- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C index 021568e461..4841b49b96 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C @@ -1376,7 +1376,7 @@ void Foam::autoLayerDriver::growNoExtrusion pointField& patchDisp, labelList& patchNLayers, List& extrudeStatus -) +) const { Info<< nl << "Growing non-extrusion points by one layer ..." << endl; @@ -1407,7 +1407,7 @@ void Foam::autoLayerDriver::growNoExtrusion { if ( - extrudeStatus[f[fp]] == NOEXTRUDE + extrudeStatus[f[fp]] == EXTRUDE && grownExtrudeStatus[f[fp]] != NOEXTRUDE ) { @@ -1420,6 +1420,31 @@ void Foam::autoLayerDriver::growNoExtrusion extrudeStatus.transfer(grownExtrudeStatus); + + // Synchronise since might get called multiple times. + // Use the fact that NOEXTRUDE is the minimum value. + { + labelList status(extrudeStatus.size()); + forAll(status, i) + { + status[i] = extrudeStatus[i]; + } + syncTools::syncPointList + ( + meshRefiner_.mesh(), + pp.meshPoints(), + status, + minEqOp