diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict index 99d1d5dcfb..f2a52c2e5b 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict @@ -337,55 +337,75 @@ addLayersControls // Advanced settings - // When not to extrude surface. 0 is flat surface, 90 is when two faces - // are perpendicular - featureAngle 60; - // At non-patched sides allow mesh to slip if extrusion direction makes - // angle larger than slipFeatureAngle. - slipFeatureAngle 30; + // Static analysis of starting mesh - // Maximum number of snapping relaxation iterations. Should stop - // before upon reaching a correct mesh. - nRelaxIter 5; + // When not to extrude surface. 0 is flat surface, 90 is when two faces + // are perpendicular + featureAngle 130; - // Number of smoothing iterations of surface normals - nSmoothSurfaceNormals 1; + // Stop layer growth on highly warped cells + maxFaceThicknessRatio 0.5; - // Number of smoothing iterations of interior mesh movement direction - nSmoothNormals 3; - // Smooth layer thickness over surface patches - nSmoothThickness 10; + // Patch displacement - // Stop layer growth on highly warped cells - maxFaceThicknessRatio 0.5; + // Number of smoothing iterations of surface normals + nSmoothSurfaceNormals 1; - // Reduce layer growth where ratio thickness to medial - // distance is large - maxThicknessToMedialRatio 0.3; + // Smooth layer thickness over surface patches + nSmoothThickness 10; - // Angle used to pick up medial axis points - // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x. - minMedianAxisAngle 90; - // Create buffer region for new layer terminations - nBufferCellsNoExtrude 0; - // Overall max number of layer addition iterations. The mesher will exit - // if it reaches this number of iterations; possibly with an illegal - // mesh. - nLayerIter 50; + // Medial axis analysis - // Max number of iterations after which relaxed meshQuality controls - // get used. Up to nRelaxIter it uses the settings in meshQualityControls, - // after nRelaxIter it uses the values in meshQualityControls::relaxed. - nRelaxedIter 20; + // Angle used to pick up medial axis points + // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 + // in 17x. + minMedianAxisAngle 90; - // Additional reporting: if there are just a few faces where there - // are mesh errors (after adding the layers) print their face centres. - // This helps in tracking down problematic mesh areas. - //additionalReporting true; + // Reduce layer growth where ratio thickness to medial + // distance is large + maxThicknessToMedialRatio 0.3; + + // Number of smoothing iterations of interior mesh movement direction + nSmoothNormals 3; + + // Optional: smooth displacement after medial axis determination. + // default is 0. + nSmoothDisplacement 90; + + + // Mesh shrinking + + // Optional: at non-patched sides allow mesh to slip if extrusion + // direction makes angle larger than slipFeatureAngle. Default is + // 0.5*featureAngle. + slipFeatureAngle 30; + + // Maximum number of snapping relaxation iterations. Should stop + // before upon reaching a correct mesh. + nRelaxIter 5; + + // Create buffer region for new layer terminations + nBufferCellsNoExtrude 0; + + // Overall max number of layer addition iterations. The mesher will + // exit if it reaches this number of iterations; possibly with an + // illegal mesh. + nLayerIter 50; + + // Max number of iterations after which relaxed meshQuality controls + // get used. Up to nRelaxIter it uses the settings in + // meshQualityControls, + // after nRelaxIter it uses the values in meshQualityControls::relaxed. + nRelaxedIter 20; + + // Additional reporting: if there are just a few faces where there + // are mesh errors (after adding the layers) print their face centres. + // This helps in tracking down problematic mesh areas. + //additionalReporting true; } // Generic mesh quality settings. At any undoable phase these determine diff --git a/applications/utilities/mesh/manipulation/createBaffles/faceSelection/searchableSurfaceSelection.C b/applications/utilities/mesh/manipulation/createBaffles/faceSelection/searchableSurfaceSelection.C index 1dbaaafaf8..04dbe07929 100644 --- a/applications/utilities/mesh/manipulation/createBaffles/faceSelection/searchableSurfaceSelection.C +++ b/applications/utilities/mesh/manipulation/createBaffles/faceSelection/searchableSurfaceSelection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -97,7 +97,7 @@ void Foam::faceSelections::searchableSurfaceSelection::select // Boundary faces vectorField neighbourCellCentres; - syncTools::swapBoundaryCellList + syncTools::swapBoundaryCellPositions ( mesh_, mesh_.cellCentres(), diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C index 7c6d3a46ac..9771757c9e 100644 --- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C +++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C @@ -1404,6 +1404,7 @@ int main(int argc, char *argv[]) ( "splits mesh into multiple regions (detected by walking across faces)" ); +# include "addRegionOption.H" #include "addOverwriteOption.H" argList::addBoolOption ( @@ -1467,7 +1468,7 @@ int main(int argc, char *argv[]) #include "setRootCase.H" #include "createTime.H" runTime.functionObjects().off(); - #include "createMesh.H" + #include "createNamedMesh.H" const word oldInstance = mesh.pointsInstance(); word blockedFacesName; diff --git a/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchTools.H b/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchTools.H index 439c120b45..36e792326d 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchTools.H +++ b/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchTools.H @@ -254,8 +254,8 @@ public: ); - //- Gather points and faces onto master and merge (geometrically) into - // single patch. + //- Gather points and faces onto master and merge into single patch. + // Note: uses faces/points, not localFaces/localPoints. template < class Face, diff --git a/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C b/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C index 89ffdec2ae..ee47e50a85 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C +++ b/src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsGatherAndMerge.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,7 +52,8 @@ void Foam::PatchTools::gatherAndMerge labelList pointSizes; { List > gatheredPoints(Pstream::nProcs()); - gatheredPoints[Pstream::myProcNo()] = p.localPoints(); + gatheredPoints[Pstream::myProcNo()] = p.points(); + Pstream::gatherList(gatheredPoints); if (Pstream::master()) @@ -75,7 +76,7 @@ void Foam::PatchTools::gatherAndMerge // gathered points { List > gatheredFaces(Pstream::nProcs()); - gatheredFaces[Pstream::myProcNo()] = p.localFaces(); + gatheredFaces[Pstream::myProcNo()] = p; Pstream::gatherList(gatheredFaces); if (Pstream::master()) diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C index f7b2e7fafd..0178c13875 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C @@ -1529,13 +1529,18 @@ void Foam::autoSnapDriver::doSnap if (!meshOk) { - Info<< "Did not succesfully snap mesh. Giving up." - << nl << endl; - - // Use current mesh as base mesh - meshMover.correct(); - - break; + WarningIn("autoSnapDriver::doSnap(..)") + << "Did not succesfully snap mesh." + << " Continuing to snap to resolve easy surfaces but the" + << " resulting mesh will not satisfy your quality" + << " constraints" << nl << endl; + //Info<< "Did not succesfully snap mesh. Giving up." + // << nl << endl; + // + //// Use current mesh as base mesh + //meshMover.correct(); + // + //break; } if (debug&meshRefinement::MESH) diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/controlDict b/tutorials/incompressible/simpleFoam/motorBike/system/controlDict index 2a774d0a59..553c603b44 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/system/controlDict +++ b/tutorials/incompressible/simpleFoam/motorBike/system/controlDict @@ -40,17 +40,17 @@ writeInterval 100; purgeWrite 0; -//- Have regular restart files -secondaryWriteControl cpuTime; -secondaryWriteInterval 3600; -secondaryPurgeWrite 1; +//- Uncomment to have regular (every 2 hours of run time) restart files +//secondaryWriteControl cpuTime; // runtime +//secondaryWriteInterval 7200; // seconds +//secondaryPurgeWrite 1; // keep all but last dump -writeFormat ascii; +writeFormat binary; writePrecision 6; -writeCompression compressed; +writeCompression uncompressed; timeFormat general; diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs b/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs index 75d414718e..e4977a21d6 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs +++ b/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs @@ -9,8 +9,12 @@ forceCoeffs1 { type forceCoeffs; + functionObjectLibs ( "libforces.so" ); - outputControl outputTime; + + outputControl timeStep; + outputInterval 1; + log yes; patches ( "motorBike.*" );