diff --git a/src/OSspecific/Unix/fileStat.C b/src/OSspecific/Unix/fileStat.C index 678ddcac87009b16b075f8ea2777d52c51495643..9cd3207de24d9d89e3f8bd10aaa6cf546acec8a6 100644 --- a/src/OSspecific/Unix/fileStat.C +++ b/src/OSspecific/Unix/fileStat.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Wrapper for stat() system call. - \*---------------------------------------------------------------------------*/ #include "fileStat.H" @@ -35,33 +32,15 @@ Description #include <unistd.h> #include <sys/sysmacros.h> -/* -#undef major -#undef minor -#undef makedev - -# define major(dev) ((int)(((dev) >> 8) & 0xff)) -# define minor(dev) ((int)((dev) & 0xff)) -# define makedev(major, minor) ((((unsigned int) (major)) << 8) \ - | ((unsigned int) (minor))) -*/ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Construct null -fileStat::fileStat() +Foam::fileStat::fileStat() : isValid_(false) {} -// Construct from components -fileStat::fileStat(const fileName& fName, const unsigned int maxTime) +Foam::fileStat::fileStat(const fileName& fName, const unsigned int maxTime) { // Work on volatile volatile bool locIsValid = false; @@ -85,8 +64,7 @@ fileStat::fileStat(const fileName& fName, const unsigned int maxTime) } -// Construct from Istream. -fileStat::fileStat(Istream& is) +Foam::fileStat::fileStat(Istream& is) { is >> *this; } @@ -94,10 +72,9 @@ fileStat::fileStat(Istream& is) // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -// compare two fileStates for same device -bool fileStat::sameDevice(const fileStat& stat2) const +bool Foam::fileStat::sameDevice(const fileStat& stat2) const { - return + return isValid_ && ( major(status_.st_dev) == major(stat2.status().st_dev) @@ -105,14 +82,14 @@ bool fileStat::sameDevice(const fileStat& stat2) const ); } -// compare two fileStates for same Inode -bool fileStat::sameINode(const fileStat& stat2) const + +bool Foam::fileStat::sameINode(const fileStat& stat2) const { return isValid_ && (status_.st_ino == stat2.status().st_ino); } -// compare state against inode -bool fileStat::sameINode(const label iNode) const + +bool Foam::fileStat::sameINode(const label iNode) const { return isValid_ && (status_.st_ino == ino_t(iNode)); } @@ -120,13 +97,12 @@ bool fileStat::sameINode(const label iNode) const // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -// Input in list syntax -Istream& operator>>(Istream& is, fileStat& fStat) +Foam::Istream& Foam::operator>>(Istream& is, fileStat& fStat) { // Read beginning of machine info list is.readBegin("fileStat"); - label + label devMaj, devMin, ino, mode, uid, gid, rdevMaj, rdevMin, @@ -172,11 +148,10 @@ Istream& operator>>(Istream& is, fileStat& fStat) } -// Output in list syntax -Ostream& operator<<(Ostream& os, const fileStat& fStat) +Foam::Ostream& Foam::operator<<(Ostream& os, const fileStat& fStat) { - //Set precision so 32bit unsigned int can be printed -// int oldPrecision = os.precision(); + // Set precision so 32bit unsigned int can be printed + // int oldPrecision = os.precision(); int oldPrecision = 0; os.precision(10); @@ -200,8 +175,4 @@ Ostream& operator<<(Ostream& os, const fileStat& fStat) } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C index d99e56209dcb23db76a5654c4c0b7c1130f041c5..1b3bf6e19b4f4c6d5190775867b697ebd060e989 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C @@ -474,7 +474,7 @@ Foam::scalar Foam::hexRef8::getLevel0EdgeLength() const forAll(typEdgeLenSqr, levelI) { - if (typEdgeLenSqr[levelI] == GREAT2) + if (typEdgeLenSqr[levelI] == GREAT2 && maxEdgeLenSqr[levelI] >= 0) { typEdgeLenSqr[levelI] = maxEdgeLenSqr[levelI]; } @@ -496,13 +496,14 @@ Foam::scalar Foam::hexRef8::getLevel0EdgeLength() const if (lenSqr < GREAT2) { - level0Size = Foam::sqrt(lenSqr)/(1<<levelI); + level0Size = Foam::sqrt(lenSqr)*(1<<levelI); if (debug) { Pout<< "hexRef8::getLevel0EdgeLength() :" << " For level:" << levelI - << " found edgeLen:" << level0Size + << " have edgeLen:" << Foam::sqrt(lenSqr) + << " with equivalent level0 len:" << level0Size << endl; } break; diff --git a/tutorials/snappyHexMesh/iglooWithFridges/constant/dynamicMeshDict b/tutorials/snappyHexMesh/iglooWithFridges/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..20e80e0c878de827737a74b73efe6b54b2997e09 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/constant/dynamicMeshDict @@ -0,0 +1,52 @@ +// The FOAM Project // File: motionProperties +/* + +------------------------------------------------------------------------------- + ========= | dictionary + \\ / | + \\ / | Name: motionProperties + \\ / | Family: FoamX configuration file + \\/ | + F ield | FOAM version: 2.1 + O peration | Product of Nabla Ltd. + A and | + M anipulation | Email: Enquiries@Nabla.co.uk +------------------------------------------------------------------------------- +*/ +// FoamX Case Dictionary. + +version 1.0; +format ascii; + +root "/home/warhol/chris/foam/chris2.1/run/Test"; +case "movingCone"; +instance "constant"; +local ""; + +class dictionary; +form dictionary; +object motionProperties; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//motionSolverLibs ("libfvMotionSolvers.so"); +solver laplacian; +//solver componentLaplacian x; + +twoDMotion no; + +diffusivity uniform; + +//motionPlaneNormal (0 0 1); +// +//movingSurface yes; +// +//twoFluids no; +// +//normalMotionDir no; +// +//motionURF 1.0; +// +//boundaryCorrection yes; + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict b/tutorials/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..f842cbb8fd29fd29913aae1120473ae99b977a35 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict @@ -0,0 +1,82 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object blockMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +convertToMeters 1; + +vertices +( + (-2.03 -2.0 0) + ( 8.03 -2.0 0) + ( 8.03 8.0 0) + (-2.03 8.0 0) + (-2.03 -2.0 5) + ( 8.03 -2.0 5) + ( 8.03 8.0 5) + (-2.03 8.0 5) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (20 20 20) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch maxY + ( + (3 7 6 2) + ) + patch minX + ( + (0 4 7 3) + ) + patch maxX + ( + (2 6 5 1) + ) + patch minY + ( + (1 5 4 0) + ) + patch minZ + ( + (0 3 2 1) + ) + patch maxZ + ( + (4 5 6 7) + ) +); + +mergePatchPairs +( +); + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/constant/transportProperties b/tutorials/snappyHexMesh/iglooWithFridges/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..285cbf44dec66cfb171fb6d49ef207c07c9c171c --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/constant/transportProperties @@ -0,0 +1,28 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +nu nu [0 2 -1 0 0 0 0] 0.01; + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/system/controlDict b/tutorials/snappyHexMesh/iglooWithFridges/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..3303982fb7c5012c5ff147639b9f5ef100ff65b8 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/system/controlDict @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object controlDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application icoFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 1; + +writeControl timeStep; + +writeInterval 1; + +purgeWrite 0; + +//writeFormat binary; +writeFormat ascii; + +writePrecision 7; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/system/decomposeParDict b/tutorials/snappyHexMesh/iglooWithFridges/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..3b4a5b205deffab12666ad54723790dae3388298 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/system/decomposeParDict @@ -0,0 +1,66 @@ +// The FOAM Project // File: decomposeParDict +/* +------------------------------------------------------------------------------- + ========= | dictionary + \\ / | + \\ / | Name: decomposeParDict + \\ / | Family: FoamX configuration file + \\/ | + F ield | FOAM version: 2.1 + O peration | Product of Nabla Ltd. + A and | + M anipulation | Email: Enquiries@Nabla.co.uk +------------------------------------------------------------------------------- +*/ +// FoamX Case Dictionary. + +FoamFile +{ + version 2.0; + format ascii; + + root "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam"; + case "cavity"; + instance "system"; + local ""; + + class dictionary; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +arguments "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam" "cavity"; + +numberOfSubdomains 6; + +method hierarchical; +//method metis; +//method parMetis; + +simpleCoeffs +{ + n (4 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (3 2 1); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile "cellDecomposition"; +} + +metisCoeffs +{ + //n (5 1 1); + //cellWeightsFile "constant/cellWeightsFile"; +} + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/system/fvSchemes b/tutorials/snappyHexMesh/iglooWithFridges/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..b89a35be1338774431bb3d182528a0a97c25cfb3 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/system/fvSchemes @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSchemes; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; + + //snGradCorr(cellMotionU) Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(nu,U) Gauss linear corrected; + laplacian(1|A(U),p) Gauss linear corrected; + + laplacian(diffusivity,cellMotionU) Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; + interpolate(HbyA) linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p; +} + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/system/fvSolution b/tutorials/snappyHexMesh/iglooWithFridges/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..da311c99cdeb045c606d68d29bbbd1b30844fee8 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/system/fvSolution @@ -0,0 +1,45 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSolution; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + //p ICCG 1e-06 0; + p AMG 1e-06 0 10; + U BICCG 1e-05 0; + + // Meshmotion + cellMotionU ICCG 1e-6 0.0; + cellMotionUx ICCG 1e-6 0.0; +} + +PISO +{ + nCorrectors 2; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; +} + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict b/tutorials/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..3286958275ba390ebf05c410a66003cc6d3a7a64 --- /dev/null +++ b/tutorials/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict @@ -0,0 +1,338 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam"; + case "cavity"; + instance "system"; + local ""; + + class dictionary; + object autoHexMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Which of the steps to run +castellatedMesh true; +snap true; +addLayers true; + + +// Geometry. Definition of all surfaces. All surfaces are of class +// searchableSurface. +// Surfaces are used +// - to specify refinement for any mesh cell intersecting it +// - to specify refinement for any mesh cell inside/outside/near +// - to 'snap' the mesh boundary to the surface +geometry +{ + fridgeA + { + type searchableBox; + min (2 2 0); + max (3 3 2); + } + + fridgeB + { + type searchableBox; + min (3.5 3 0); + max (4.3 3.8 1.8); + } + + igloo + { + type searchableSphere; + centre (3 3 0); + radius 4; + } +}; + + + +// Settings for the castellatedMesh generation. +castellatedMeshControls +{ + + // Refinement parameters + // ~~~~~~~~~~~~~~~~~~~~~ + + // While refining maximum number of cells per processor. This is basically + // the number of cells that fit on a processor. If you choose this too small + // it will do just more refinement iterations to obtain a similar mesh. + maxLocalCells 1000000; + + // Overall cell limit (approximately). Refinement will stop immediately + // upon reaching this number so a refinement level might not complete. + // Note that this is the number of cells before removing the part which + // is not 'visible' from the keepPoint. The final number of cells might + // actually be a lot less. + maxGlobalCells 2000000; + + // The surface refinement loop might spend lots of iterations refining just a + // few cells. This setting will cause refinement to stop if <= minimumRefine + // are selected for refinement. Note: it will at least do one iteration + // (unless the number of cells to refine is 0) + minRefinementCells 0; + + // Number of buffer layers between different levels. + // 1 means normal 2:1 refinement restriction, larger means slower + // refinement. + nCellsBetweenLevels 1; + + + + // Explicit feature edge refinement + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies a level for any cell intersected by its edges. + // This is a featureEdgeMesh, read from constant/triSurface for now. + features + ( + //{ + // file "someLine.eMesh"; + // level 2; + //} + ); + + + + // Surface based refinement + // ~~~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies two levels for every surface. The first is the minimum level, + // every cell intersecting a surface gets refined up to the minimum level. + // The second level is the maximum level. Cells that 'see' multiple + // intersections where the intersections make an + // angle > resolveFeatureAngle get refined up to the maximum level. + + refinementSurfaces + { + fridgeA + { + // Surface-wise min and max refinement level + level (2 2); + } + fridgeB + { + // Surface-wise min and max refinement level + level (2 2); + } + igloo + { + // Surface-wise min and max refinement level + level (1 1); + } + } + + // Resolve sharp angles on fridges + resolveFeatureAngle 60; + + + // Region-wise refinement + // ~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies refinement level for cells in relation to a surface. One of + // three modes + // - distance. 'levels' specifies per distance to the surface the + // wanted refinement level. The distances need to be specified in + // descending order. + // - inside. 'levels' is only one entry and only the level is used. All + // cells inside the surface get refined up to the level. The surface + // needs to be closed for this to be possible. + // - outside. Same but cells outside. + + refinementRegions + { + } + + + // Mesh selection + // ~~~~~~~~~~~~~~ + + // After refinement patches get added for all refinementSurfaces and + // all cells intersecting the surfaces get put into these patches. The + // section reachable from the locationInMesh is kept. + // NOTE: This point should never be on a face, always inside a cell, even + // after refinement. + locationInMesh (3 0.28 0.43); +} + + + +// Settings for the snapping. +snapControls +{ + //- Number of patch smoothing iterations before finding correspondence + // to surface + nSmoothPatch 3; + + //- Relative distance for points to be attracted by surface feature point + // or edge. True distance is this factor times local + // maximum edge length. + tolerance 4.0; + + //- Number of mesh displacement relaxation iterations. + nSolveIter 30; + + //- Maximum number of snapping relaxation iterations. Should stop + // before upon reaching a correct mesh. + nRelaxIter 5; +} + + + +// Settings for the layer addition. +addLayersControls +{ + // Per final patch (so not geometry!) the layer information + layers + { + fridgeA_region0 + { + nSurfaceLayers 1; + } + fridgeB_region0 + { + nSurfaceLayers 1; + } + igloo_region0 + { + nSurfaceLayers 1; + } + } + + // Expansion factor for layer mesh + expansionRatio 1.0; + + //- Wanted thickness of final added cell layer. If multiple layers + // is the + // thickness of the layer furthest away from the wall. + // Relative to undistorted size of cell outside layer. + finalLayerRatio 0.5; + + //- Minimum thickness of cell layer. If for any reason layer + // cannot be above minThickness do not add layer. + // Relative to undistorted size of cell outside layer. + minThickness 0.25; + + //- If points get not extruded do nGrow layers of connected faces that are + // also not grown. This helps convergence of the layer addition process + // close to features. + nGrow 0; + + + // Advanced settings + + //- When not to extrude surface. 0 is flat surface, 90 is when two faces + // make straight angle. + featureAngle 60; + + //- Maximum number of snapping relaxation iterations. Should stop + // before upon reaching a correct mesh. + nRelaxIter 5; + + // Number of smoothing iterations of surface normals + nSmoothSurfaceNormals 1; + + // Number of smoothing iterations of interior mesh movement direction + nSmoothNormals 3; + + // Smooth layer thickness over surface patches + nSmoothThickness 10; + + // Stop layer growth on highly warped cells + maxFaceThicknessRatio 0.5; + + // Reduce layer growth where ratio thickness to medial + // distance is large + maxThicknessToMedialRatio 0.3; + + // Angle used to pick up medial axis points + minMedianAxisAngle 130; + + // Create buffer region for new layer terminations + nBufferCellsNoExtrude 0; +} + + + +// Generic mesh quality settings. At any undoable phase these determine +// where to undo. +meshQualityControls +{ + //- Maximum non-orthogonality allowed. Set to 180 to disable. + maxNonOrtho 65; + + //- Max skewness allowed. Set to <0 to disable. + maxBoundarySkewness 20; + maxInternalSkewness 4; + + //- Max concaveness allowed. Is angle (in degrees) below which concavity + // is allowed. 0 is straight face, <0 would be convex face. + // Set to 180 to disable. + maxConcave 80; + + //- Minimum projected area v.s. actual area. Set to -1 to disable. + minFlatness 0.5; + + //- Minimum pyramid volume. Is absolute volume of cell pyramid. + // Set to very negative number (e.g. -1E30) to disable. + minVol 1e-13; + + //- Minimum face area. Set to <0 to disable. + minArea -1; + + //- Minimum face twist. Set to <-1 to disable. dot product of face normal + //- and face centre triangles normal + minTwist 0.05; + + //- minimum normalised cell determinant + //- 1 = hex, <= 0 = folded or flattened illegal cell + minDeterminant 0.001; + + //- minFaceWeight (0 -> 0.5) + minFaceWeight 0.05; + + //- minVolRatio (0 -> 1) + minVolRatio 0.01; + + //must be >0 for Fluent compatibility + minTriangleTwist -1; + + + // Advanced + + //- Number of error distribution iterations + nSmoothScale 4; + //- amount to scale back displacement at error points + errorReduction 0.75; +} + + +// Advanced + +// Flags for optional output +// 0 : only write final meshes +// 1 : write intermediate meshes +// 2 : write volScalarField with cellLevel for postprocessing +// 4 : write current intersections as .obj files +debug 0; + + +// Merge tolerance. Is fraction of overall bounding box of initial mesh. +// Note: the write tolerance needs to be higher than this. +mergeTolerance 1E-6; + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/constant/dynamicMeshDict b/tutorials/snappyHexMesh/motorBike/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..20e80e0c878de827737a74b73efe6b54b2997e09 --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/constant/dynamicMeshDict @@ -0,0 +1,52 @@ +// The FOAM Project // File: motionProperties +/* + +------------------------------------------------------------------------------- + ========= | dictionary + \\ / | + \\ / | Name: motionProperties + \\ / | Family: FoamX configuration file + \\/ | + F ield | FOAM version: 2.1 + O peration | Product of Nabla Ltd. + A and | + M anipulation | Email: Enquiries@Nabla.co.uk +------------------------------------------------------------------------------- +*/ +// FoamX Case Dictionary. + +version 1.0; +format ascii; + +root "/home/warhol/chris/foam/chris2.1/run/Test"; +case "movingCone"; +instance "constant"; +local ""; + +class dictionary; +form dictionary; +object motionProperties; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//motionSolverLibs ("libfvMotionSolvers.so"); +solver laplacian; +//solver componentLaplacian x; + +twoDMotion no; + +diffusivity uniform; + +//motionPlaneNormal (0 0 1); +// +//movingSurface yes; +// +//twoFluids no; +// +//normalMotionDir no; +// +//motionURF 1.0; +// +//boundaryCorrection yes; + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/constant/polyMesh/blockMeshDict b/tutorials/snappyHexMesh/motorBike/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..ec09ef5e88716142e00b669e4438a3a42f17e5f4 --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/constant/polyMesh/blockMeshDict @@ -0,0 +1,82 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object blockMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +convertToMeters 1; + +vertices +( + (-20.29 -10 -4.232e-05) + ( 41.71 -10 -4.232e-05) + ( 41.71 10 -4.232e-05) + (-20.29 10 -4.232e-05) + (-20.29 -10 20) + ( 41.71 -10 20) + ( 41.71 10 20) + (-20.29 10 20) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (60 20 20) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch maxY + ( + (3 7 6 2) + ) + patch minX + ( + (0 4 7 3) + ) + patch maxX + ( + (2 6 5 1) + ) + patch minY + ( + (1 5 4 0) + ) + patch minZ + ( + (0 3 2 1) + ) + patch maxZ + ( + (4 5 6 7) + ) +); + +mergePatchPairs +( +); + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/constant/transportProperties b/tutorials/snappyHexMesh/motorBike/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..285cbf44dec66cfb171fb6d49ef207c07c9c171c --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/constant/transportProperties @@ -0,0 +1,28 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object transportProperties; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +nu nu [0 2 -1 0 0 0 0] 0.01; + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/constant/triSurface/motorBike.stl b/tutorials/snappyHexMesh/motorBike/constant/triSurface/motorBike.stl new file mode 100644 index 0000000000000000000000000000000000000000..ea9666fcf2db9cb1f0237ee80849acabf6b67dcf Binary files /dev/null and b/tutorials/snappyHexMesh/motorBike/constant/triSurface/motorBike.stl differ diff --git a/tutorials/snappyHexMesh/motorBike/system/controlDict b/tutorials/snappyHexMesh/motorBike/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..3303982fb7c5012c5ff147639b9f5ef100ff65b8 --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/system/controlDict @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object controlDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application icoFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 1; + +writeControl timeStep; + +writeInterval 1; + +purgeWrite 0; + +//writeFormat binary; +writeFormat ascii; + +writePrecision 7; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/system/decomposeParDict b/tutorials/snappyHexMesh/motorBike/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..3b4a5b205deffab12666ad54723790dae3388298 --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/system/decomposeParDict @@ -0,0 +1,66 @@ +// The FOAM Project // File: decomposeParDict +/* +------------------------------------------------------------------------------- + ========= | dictionary + \\ / | + \\ / | Name: decomposeParDict + \\ / | Family: FoamX configuration file + \\/ | + F ield | FOAM version: 2.1 + O peration | Product of Nabla Ltd. + A and | + M anipulation | Email: Enquiries@Nabla.co.uk +------------------------------------------------------------------------------- +*/ +// FoamX Case Dictionary. + +FoamFile +{ + version 2.0; + format ascii; + + root "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam"; + case "cavity"; + instance "system"; + local ""; + + class dictionary; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +arguments "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam" "cavity"; + +numberOfSubdomains 6; + +method hierarchical; +//method metis; +//method parMetis; + +simpleCoeffs +{ + n (4 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (3 2 1); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile "cellDecomposition"; +} + +metisCoeffs +{ + //n (5 1 1); + //cellWeightsFile "constant/cellWeightsFile"; +} + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/system/fvSchemes b/tutorials/snappyHexMesh/motorBike/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..b89a35be1338774431bb3d182528a0a97c25cfb3 --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/system/fvSchemes @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSchemes; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; + + //snGradCorr(cellMotionU) Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(nu,U) Gauss linear corrected; + laplacian(1|A(U),p) Gauss linear corrected; + + laplacian(diffusivity,cellMotionU) Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; + interpolate(HbyA) linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p; +} + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/system/fvSolution b/tutorials/snappyHexMesh/motorBike/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..da311c99cdeb045c606d68d29bbbd1b30844fee8 --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/system/fvSolution @@ -0,0 +1,45 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSolution; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + //p ICCG 1e-06 0; + p AMG 1e-06 0 10; + U BICCG 1e-05 0; + + // Meshmotion + cellMotionU ICCG 1e-6 0.0; + cellMotionUx ICCG 1e-6 0.0; +} + +PISO +{ + nCorrectors 2; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; +} + + +// ************************************************************************* // diff --git a/tutorials/snappyHexMesh/motorBike/system/snappyHexMeshDict b/tutorials/snappyHexMesh/motorBike/system/snappyHexMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..5e206f019fbcf678879318406b14e14f58e5492a --- /dev/null +++ b/tutorials/snappyHexMesh/motorBike/system/snappyHexMeshDict @@ -0,0 +1,585 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.0 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam"; + case "cavity"; + instance "system"; + local ""; + + class dictionary; + object autoHexMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Which of the steps to run +castellatedMesh true; +snap true; +addLayers true; + + +// Geometry. Definition of all surfaces. All surfaces are of class +// searchableSurface. +// Surfaces are used +// - to specify refinement for any mesh cell intersecting it +// - to specify refinement for any mesh cell inside/outside/near +// - to 'snap' the mesh boundary to the surface +geometry +{ + motorBike.stl + { + type triSurfaceMesh; + name motorBike; + } + + refinementBox + { + type searchableBox; + min (-0.3 -0.4 -0.1); + max ( 3.0 0.4 1.4); + } +}; + + + +// Settings for the castellatedMesh generation. +castellatedMeshControls +{ + + // Refinement parameters + // ~~~~~~~~~~~~~~~~~~~~~ + + // While refining maximum number of cells per processor. This is basically + // the number of cells that fit on a processor. If you choose this too small + // it will do just more refinement iterations to obtain a similar mesh. + maxLocalCells 1000000; + + // Overall cell limit (approximately). Refinement will stop immediately + // upon reaching this number so a refinement level might not complete. + // Note that this is the number of cells before removing the part which + // is not 'visible' from the keepPoint. The final number of cells might + // actually be a lot less. + maxGlobalCells 2000000; + + // The surface refinement loop might spend lots of iterations refining just a + // few cells. This setting will cause refinement to stop if <= minimumRefine + // are selected for refinement. Note: it will at least do one iteration + // (unless the number of cells to refine is 0) + minRefinementCells 10; + + // Number of buffer layers between different levels. + // 1 means normal 2:1 refinement restriction, larger means slower + // refinement. + nCellsBetweenLevels 2; + + + + // Explicit feature edge refinement + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies a level for any cell intersected by its edges. + // This is a featureEdgeMesh, read from constant/triSurface for now. + features + ( + //{ + // file "someLine.eMesh"; + // level 2; + //} + ); + + + + // Surface based refinement + // ~~~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies two levels for every surface. The first is the minimum level, + // every cell intersecting a surface gets refined up to the minimum level. + // The second level is the maximum level. Cells that 'see' multiple + // intersections where the intersections make an + // angle > resolveFeatureAngle get refined up to the maximum level. + + refinementSurfaces + { + motorBike + { + // Surface-wise min and max refinement level + level (5 6); + } + } + + // Resolve sharp angles + resolveFeatureAngle 30; + + + // Region-wise refinement + // ~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies refinement level for cells in relation to a surface. One of + // three modes + // - distance. 'levels' specifies per distance to the surface the + // wanted refinement level. The distances need to be specified in + // descending order. + // - inside. 'levels' is only one entry and only the level is used. All + // cells inside the surface get refined up to the level. The surface + // needs to be closed for this to be possible. + // - outside. Same but cells outside. + + refinementRegions + { + refinementBox + { + mode inside; + levels ((1E15 4)); + } + } + + + // Mesh selection + // ~~~~~~~~~~~~~~ + + // After refinement patches get added for all refinementSurfaces and + // all cells intersecting the surfaces get put into these patches. The + // section reachable from the locationInMesh is kept. + // NOTE: This point should never be on a face, always inside a cell, even + // after refinement. + locationInMesh (3 3 0.43); +} + + + +// Settings for the snapping. +snapControls +{ + //- Number of patch smoothing iterations before finding correspondence + // to surface + nSmoothPatch 3; + + //- Relative distance for points to be attracted by surface feature point + // or edge. True distance is this factor times local + // maximum edge length. + tolerance 4.0; + + //- Number of mesh displacement relaxation iterations. + nSolveIter 30; + + //- Maximum number of snapping relaxation iterations. Should stop + // before upon reaching a correct mesh. + nRelaxIter 5; +} + + + +// Settings for the layer addition. +addLayersControls +{ + // Per final patch (so not geometry!) the layer information + layers + { + minZ + { + nSurfaceLayers 1; + } + motorBike_frt-fairing:001%1 + { + nSurfaceLayers 1; + } + motorBike_windshield:002%2 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-rim:005%5 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-rim:010%10 + { + nSurfaceLayers 1; + } + motorBike_fr-wh-rim:011%11 + { + nSurfaceLayers 1; + } + motorBike_fr-wh-brake-disk:012%12 + { + nSurfaceLayers 1; + } + motorBike_frame:016-shadow%13 + { + nSurfaceLayers 1; + } + motorBike_rear-susp:014%14 + { + nSurfaceLayers 1; + } + motorBike_rear-susp:014-shadow%15 + { + nSurfaceLayers 1; + } + motorBike_frame:016%16 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-rim:005-shadow%17 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-chain-hub:022%22 + { + nSurfaceLayers 1; + } + motorBike_rearseat%24 + { + nSurfaceLayers 1; + } + motorBike_frt-fairing%25 + { + nSurfaceLayers 1; + } + motorBike_windshield%26 + { + nSurfaceLayers 1; + } + motorBike_headlights%27 + { + nSurfaceLayers 1; + } + motorBike_driversseat%28 + { + nSurfaceLayers 1; + } + motorBike_rear-body%29 + { + nSurfaceLayers 1; + } + motorBike_fuel-tank%30 + { + nSurfaceLayers 1; + } + motorBike_exhaust%31 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-rim%32 + { + nSurfaceLayers 1; + } + motorBike_fr-mud-guard%33 + { + nSurfaceLayers 1; + } + motorBike_fr-wh-rim%34 + { + nSurfaceLayers 1; + } + motorBike_fr-wh-brake-disk%35 + { + nSurfaceLayers 1; + } + motorBike_fr-brake-caliper%36 + { + nSurfaceLayers 1; + } + motorBike_fr-wh-tyre%37 + { + nSurfaceLayers 1; + } + motorBike_hbars%38 + { + nSurfaceLayers 1; + } + motorBike_fr-forks%39 + { + nSurfaceLayers 1; + } + motorBike_chain%40 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-tyre%41 + { + nSurfaceLayers 1; + } + motorBike_square-dial%42 + { + nSurfaceLayers 1; + } + motorBike_round-dial%43 + { + nSurfaceLayers 1; + } + motorBike_dial-holder%44 + { + nSurfaceLayers 1; + } + motorBike_rear-susp%45 + { + nSurfaceLayers 1; + } + motorBike_rear-brake-lights%46 + { + nSurfaceLayers 1; + } + motorBike_rear-light-bracket%47 + { + nSurfaceLayers 1; + } + motorBike_frame%48 + { + nSurfaceLayers 1; + } + motorBike_rear-mud-guard%49 + { + nSurfaceLayers 1; + } + motorBike_rear-susp-spring-damp%50 + { + nSurfaceLayers 1; + } + motorBike_fairing-inner-plate%51 + { + nSurfaceLayers 1; + } + motorBike_clutch-housing%52 + { + nSurfaceLayers 1; + } + motorBike_radiator%53 + { + nSurfaceLayers 1; + } + motorBike_water-pipe%54 + { + nSurfaceLayers 1; + } + motorBike_water-pump%55 + { + nSurfaceLayers 1; + } + motorBike_engine%56 + { + nSurfaceLayers 1; + } + motorBike_rear-shock-link%57 + { + nSurfaceLayers 1; + } + motorBike_rear-brake-fluid-pot-bracket%58 + { + nSurfaceLayers 1; + } + motorBike_rear-brake-fluid-pot%59 + { + nSurfaceLayers 1; + } + motorBike_footpeg%60 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-chain-hub%61 + { + nSurfaceLayers 1; + } + motorBike_rear-brake-caliper%62 + { + nSurfaceLayers 1; + } + motorBike_rider-helmet%65 + { + nSurfaceLayers 1; + } + motorBike_rider-visor%66 + { + nSurfaceLayers 1; + } + motorBike_rider-boots%67 + { + nSurfaceLayers 1; + } + motorBike_rider-gloves%68 + { + nSurfaceLayers 1; + } + motorBike_rider-body%69 + { + nSurfaceLayers 1; + } + motorBike_frame:0%70 + { + nSurfaceLayers 1; + } + motorBike_frt-fairing:001-shadow%74 + { + nSurfaceLayers 1; + } + motorBike_windshield-shadow%75 + { + nSurfaceLayers 1; + } + motorBike_fr-mud-guard-shadow%81 + { + nSurfaceLayers 1; + } + motorBike_fr-wh-brake-disk-shadow%83 + { + nSurfaceLayers 1; + } + motorBike_rear-mud-guard-shadow%84 + { + nSurfaceLayers 1; + } + motorBike_rear-susp-spring-damp-shadow%85 + { + nSurfaceLayers 1; + } + motorBike_radiator-shadow%86 + { + nSurfaceLayers 1; + } + motorBike_rear-shock-link-shadow%87 + { + nSurfaceLayers 1; + } + motorBike_rear-brake-fluid-pot-bracket-shadow%88 + { + nSurfaceLayers 1; + } + motorBike_rr-wh-chain-hub-shadow%89 + { + nSurfaceLayers 1; + } + } + + // Expansion factor for layer mesh + expansionRatio 1.0; + + //- Wanted thickness of final added cell layer. If multiple layers + // is the + // thickness of the layer furthest away from the wall. + // Relative to undistorted size of cell outside layer. + finalLayerRatio 0.3; + + //- Minimum thickness of cell layer. If for any reason layer + // cannot be above minThickness do not add layer. + // Relative to undistorted size of cell outside layer. + minThickness 0.1; + + //- If points get not extruded do nGrow layers of connected faces that are + // also not grown. This helps convergence of the layer addition process + // close to features. + nGrow 1; + + + // Advanced settings + + //- When not to extrude surface. 0 is flat surface, 90 is when two faces + // make straight angle. + featureAngle 30; + + //- Maximum number of snapping relaxation iterations. Should stop + // before upon reaching a correct mesh. + nRelaxIter 3; + + // Number of smoothing iterations of surface normals + nSmoothSurfaceNormals 1; + + // Number of smoothing iterations of interior mesh movement direction + nSmoothNormals 3; + + // Smooth layer thickness over surface patches + nSmoothThickness 10; + + // Stop layer growth on highly warped cells + maxFaceThicknessRatio 0.5; + + // Reduce layer growth where ratio thickness to medial + // distance is large + maxThicknessToMedialRatio 0.3; + + // Angle used to pick up medial axis points + minMedianAxisAngle 130; + + // Create buffer region for new layer terminations + nBufferCellsNoExtrude 0; +} + + + +// Generic mesh quality settings. At any undoable phase these determine +// where to undo. +meshQualityControls +{ + //- Maximum non-orthogonality allowed. Set to 180 to disable. + maxNonOrtho 65; + + //- Max skewness allowed. Set to <0 to disable. + maxBoundarySkewness 20; + maxInternalSkewness 4; + + //- Max concaveness allowed. Is angle (in degrees) below which concavity + // is allowed. 0 is straight face, <0 would be convex face. + // Set to 180 to disable. + maxConcave 80; + + //- Minimum projected area v.s. actual area. Set to -1 to disable. + minFlatness 0.5; + + //- Minimum pyramid volume. Is absolute volume of cell pyramid. + // Set to very negative number (e.g. -1E30) to disable. + minVol 1e-13; + + //- Minimum face area. Set to <0 to disable. + minArea -1; + + //- Minimum face twist. Set to <-1 to disable. dot product of face normal + //- and face centre triangles normal + minTwist 0.02; + + //- minimum normalised cell determinant + //- 1 = hex, <= 0 = folded or flattened illegal cell + minDeterminant 0.001; + + //- minFaceWeight (0 -> 0.5) + minFaceWeight 0.02; + + //- minVolRatio (0 -> 1) + minVolRatio 0.01; + + //must be >0 for Fluent compatibility + minTriangleTwist -1; + + + // Advanced + + //- Number of error distribution iterations + nSmoothScale 4; + //- amount to scale back displacement at error points + errorReduction 0.75; +} + + +// Advanced + +// Flags for optional output +// 0 : only write final meshes +// 1 : write intermediate meshes +// 2 : write volScalarField with cellLevel for postprocessing +// 4 : write current intersections as .obj files +debug 0; + + +// Merge tolerance. Is fraction of overall bounding box of initial mesh. +// Note: the write tolerance needs to be higher than this. +mergeTolerance 1E-6; + + +// ************************************************************************* //