Guest User

Untitled

a guest
Dec 2nd, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*--------------------------------*- C++ -*----------------------------------*\
  2. | =========                 |                                                 |
  3. | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
  4. |  \\    /   O peration     | Version:  2.2.0                                 |
  5. |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
  6. |    \\/     M anipulation  |                                                 |
  7. \*---------------------------------------------------------------------------*/
  8. FoamFile
  9. {
  10.     version     2.0;
  11.     format      ascii;
  12.     class       dictionary;
  13.     object      autoHexMeshDict;
  14. }
  15.  
  16. // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
  17. #include        "$FOAM_CASE/include/initialConditions"
  18. // Which of the steps to run
  19. castellatedMesh true;
  20. snap            true;
  21. addLayers       false;
  22.  
  23.  
  24. // Geometry. Definition of all surfaces. All surfaces are of class
  25. // searchableSurface.
  26. // Surfaces are used
  27. // - to specify refinement for any mesh cell intersecting it
  28. // - to specify refinement for any mesh cell inside/outside/near
  29. // - to 'snap' the mesh boundary to the surface
  30. geometry
  31. {
  32.     lumen.stl
  33.     {
  34.         type triSurfaceMesh;
  35.         name lumen;
  36.     }
  37.    
  38. /*    AAA
  39.     {
  40.         type searchableBox;
  41.         min (#calc "$xmin - 5E-3" #calc "$ymin - 5E-3" $zAAAmin);
  42.         max (#calc "$xmax + 5E-3" #calc "$ymax + 5E-3" $zAAAmax);
  43.     }
  44. */
  45. };
  46.  
  47.  
  48.  
  49.  
  50. // Settings for the castellatedMesh generation.
  51. castellatedMeshControls
  52. {
  53.  
  54.     // Refinement parameters
  55.     // ~~~~~~~~~~~~~~~~~~~~~
  56.  
  57.     // If local number of cells is >= maxLocalCells on any processor
  58.     // switches from from refinement followed by balancing
  59.     // (current method) to (weighted) balancing before refinement.
  60.     maxLocalCells 1000000;
  61.  
  62.     // Overall cell limit (approximately). Refinement will stop immediately
  63.     // upon reaching this number so a refinement level might not complete.
  64.     // Note that this is the number of cells before removing the part which
  65.     // is not 'visible' from the keepPoint. The final number of cells might
  66.     // actually be a lot less.
  67.     maxGlobalCells 10000000;
  68.  
  69.     // The surface refinement loop might spend lots of iterations refining just a
  70.     // few cells. This setting will cause refinement to stop if <= minimumRefine
  71.     // are selected for refinement. Note: it will at least do one iteration
  72.     // (unless the number of cells to refine is 0)
  73.     minRefinementCells 2;
  74.  
  75.     // Number of buffer layers between different levels.
  76.     // 1 means normal 2:1 refinement restriction, larger means slower
  77.     // refinement.
  78.     nCellsBetweenLevels 2;
  79.  
  80.  
  81.  
  82.     // Explicit feature edge refinement
  83.     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  84.  
  85.     // Specifies a level for any cell intersected by its edges.
  86.     // This is a featureEdgeMesh, read from constant/triSurface for now.
  87.     features
  88.     (
  89.         {
  90.             file "lumen.vtk";
  91.             levels ((0 2)(0.002 1));
  92.         }
  93.     );
  94.  
  95.  
  96.  
  97.     // Surface based refinement
  98.     // ~~~~~~~~~~~~~~~~~~~~~~~~
  99.  
  100.     // Specifies two levels for every surface. The first is the minimum level,
  101.     // every cell intersecting a surface gets refined up to the minimum level.
  102.     // The second level is the maximum level. Cells that 'see' multiple
  103.     // intersections where the intersections make an
  104.     // angle > resolveFeatureAngle get refined up to the maximum level.
  105.  
  106.     refinementSurfaces
  107.     {
  108.        "lumen_*"
  109.         {
  110.             // Surface-wise min and max refinement level
  111.             level (1 1);
  112.  
  113.         }
  114.  
  115.  
  116.     }
  117.  
  118.     resolveFeatureAngle 25;
  119.  
  120.  
  121.     // Region-wise refinement
  122.     // ~~~~~~~~~~~~~~~~~~~~~~
  123.  
  124.     // Specifies refinement level for cells in relation to a surface. One of
  125.     // three modes
  126.     // - distance. 'levels' specifies per distance to the surface the
  127.     //   wanted refinement level. The distances need to be specified in
  128.     //   descending order.
  129.     // - inside. 'levels' is only one entry and only the level is used. All
  130.     //   cells inside the surface get refined up to the level. The surface
  131.     //   needs to be closed for this to be possible.
  132.     // - outside. Same but cells outside.
  133.     refinementRegions
  134.     {
  135.   /*      AAA
  136.         {
  137.             mode inside;
  138.             levels ((1E15 1));
  139.         }
  140. */
  141.     }  
  142.  
  143.  
  144.  
  145.  
  146.     // Mesh selection
  147.     // ~~~~~~~~~~~~~~
  148.  
  149.     // After refinement patches get added for all refinementSurfaces and
  150.     // all cells intersecting the surfaces get put into these patches. The
  151.     // section reachable from the locationInMesh is kept.
  152.     // NOTE: This point should never be on a face, always inside a cell, even
  153.     // after refinement.
  154.     // This is an outside point locationInMesh (-0.033 -0.033 0.0033);
  155.       //locationInMesh (27 0 0) ;//( 0 -0.2 0.905); //fluid
  156.       locationInMesh ($locx $locy $locz); //OK
  157.       //locationInMesh ( 0.07 -0.194 0.78); //OK
  158.     // Whether any faceZones (as specified in the refinementSurfaces)
  159.     // are only on the boundary of corresponding cellZones or also allow
  160.     // free-standing zone faces. Not used if there are no faceZones.
  161.     allowFreeStandingZoneFaces true;
  162. }
  163.  
  164. // Settings for the snapping.
  165. snapControls
  166. {
  167.     //- Number of patch smoothing iterations before finding correspondence
  168.     //  to surface
  169.     nSmoothPatch 3;
  170.  
  171.     //- Relative distance for points to be attracted by surface feature point
  172.     //  or edge. True distance is this factor times local
  173.     //  maximum edge length.
  174.     tolerance 8;
  175.  
  176.     //- Number of mesh displacement relaxation iterations.
  177.     nSolveIter 30;
  178.  
  179.     //- Maximum number of snapping relaxation iterations. Should stop
  180.     //  before upon reaching a correct mesh.
  181.     nRelaxIter 5;
  182.  
  183.     // Feature snapping
  184.  
  185.         //- Number of feature edge snapping iterations.
  186.         //  Leave out altogether to disable.
  187.         nFeatureSnapIter 10;
  188.  
  189.         //- Detect (geometric) features by sampling the surface
  190.         implicitFeatureSnap false;
  191.  
  192.         //- Use castellatedMeshControls::features
  193.         explicitFeatureSnap true;
  194.  
  195.         //- Detect features between multiple surfaces
  196.         //  (only for explicitFeatureSnap, default = false)
  197.         multiRegionFeatureSnap false;
  198. }
  199.  
  200.  
  201.  
  202. // Settings for the layer addition.
  203. addLayersControls
  204. {
  205.     // Are the thickness parameters below relative to the undistorted
  206.     // size of the refined cell outside layer (true) or absolute sizes (false).
  207.     relativeSizes true;
  208.  
  209.     // Per final patch (so not geometry!) the layer information
  210.     layers
  211.     {
  212.   /*      "flange_.*"
  213.         {
  214.             nSurfaceLayers 1;
  215.         }
  216.   */  
  217.     }
  218.  
  219.     // Expansion factor for layer mesh
  220.     expansionRatio 1.0;
  221.  
  222.  
  223.     // Wanted thickness of final added cell layer. If multiple layers
  224.     // is the thickness of the layer furthest away from the wall.
  225.     // See relativeSizes parameter.
  226.     finalLayerThickness 0.3;
  227.  
  228.     // Minimum thickness of cell layer. If for any reason layer
  229.     // cannot be above minThickness do not add layer.
  230.     // See relativeSizes parameter.
  231.     minThickness 0.25;
  232.  
  233.     // If points get not extruded do nGrow layers of connected faces that are
  234.     // also not grown. This helps convergence of the layer addition process
  235.     // close to features.
  236.     nGrow 0;
  237.  
  238.  
  239.     // Advanced settings
  240.  
  241.     // When not to extrude surface. 0 is flat surface, 90 is when two faces
  242.     // are perpendicular
  243.     featureAngle 30;
  244.  
  245.     // Maximum number of snapping relaxation iterations. Should stop
  246.     // before upon reaching a correct mesh.
  247.     nRelaxIter 5;
  248.  
  249.     // Number of smoothing iterations of surface normals
  250.     nSmoothSurfaceNormals 1;
  251.  
  252.     // Number of smoothing iterations of interior mesh movement direction
  253.     nSmoothNormals 3;
  254.  
  255.     // Smooth layer thickness over surface patches
  256.     nSmoothThickness 10;
  257.  
  258.     // Stop layer growth on highly warped cells
  259.     maxFaceThicknessRatio 0.5;
  260.  
  261.     // Reduce layer growth where ratio thickness to medial
  262.     // distance is large
  263.     maxThicknessToMedialRatio 0.3;
  264.  
  265.     // Angle used to pick up medial axis points
  266.     minMedianAxisAngle 90;
  267.  
  268.     // Create buffer region for new layer terminations
  269.     nBufferCellsNoExtrude 0;
  270.  
  271.  
  272.     // Overall max number of layer addition iterations. The mesher will exit
  273.     // if it reaches this number of iterations; possibly with an illegal
  274.     // mesh.
  275.     nLayerIter 50;
  276.  
  277.     // Max number of iterations after which relaxed meshQuality controls
  278.     // get used. Up to nRelaxIter it uses the settings in meshQualityControls,
  279.     // after nRelaxIter it uses the values in meshQualityControls::relaxed.
  280.     nRelaxedIter 20;
  281. }
  282.  
  283.  
  284.  
  285. // Generic mesh quality settings. At any undoable phase these determine
  286. // where to undo.
  287. meshQualityControls
  288. {
  289.     //- Maximum non-orthogonality allowed. Set to 180 to disable.
  290.     maxNonOrtho 65;
  291.  
  292.     //- Max skewness allowed. Set to <0 to disable.
  293.     maxBoundarySkewness 20;
  294.     maxInternalSkewness 4;
  295.  
  296.     //- Max concaveness allowed. Is angle (in degrees) below which concavity
  297.     //  is allowed. 0 is straight face, <0 would be convex face.
  298.     //  Set to 180 to disable.
  299.     maxConcave 80;
  300.  
  301.     //- Minimum pyramid volume. Is absolute volume of cell pyramid.
  302.     //  Set to a sensible fraction of the smallest cell volume expected.
  303.     //  Set to very negative number (e.g. -1E30) to disable.
  304.     minVol 1e-13;
  305.  
  306.     //- Minimum quality of the tet formed by the face-centre
  307.     //  and variable base point minimum decomposition triangles and
  308.     //  the cell centre.  Set to very negative number (e.g. -1E30) to
  309.     //  disable.
  310.     //     <0 = inside out tet,
  311.     //      0 = flat tet
  312.     //      1 = regular tet
  313.     minTetQuality 1e-30;
  314.  
  315.     //- Minimum face area. Set to <0 to disable.
  316.     minArea -1;
  317.  
  318.     //- Minimum face twist. Set to <-1 to disable. dot product of face normal
  319.     //- and face centre triangles normal
  320.     minTwist 0.02;
  321.  
  322.     //- minimum normalised cell determinant
  323.     //- 1 = hex, <= 0 = folded or flattened illegal cell
  324.     minDeterminant 0.001;
  325.  
  326.     //- minFaceWeight (0 -> 0.5)
  327.     minFaceWeight 0.05;
  328.  
  329.     //- minVolRatio (0 -> 1)
  330.     minVolRatio 0.01;
  331.  
  332.     //must be >0 for Fluent compatibility
  333.     minTriangleTwist -1;
  334.  
  335.     //- if >0 : preserve single cells with all points on the surface if the
  336.     //  resulting volume after snapping (by approximation) is larger than
  337.     //  minVolCollapseRatio times old volume (i.e. not collapsed to flat cell).
  338.     //  If <0 : delete always.
  339.     //minVolCollapseRatio 0.5;
  340.  
  341.  
  342.     // Advanced
  343.  
  344.     //- Number of error distribution iterations
  345.     nSmoothScale 4;
  346.     //- amount to scale back displacement at error points
  347.     errorReduction 0.75;
  348.  
  349.  
  350.  
  351.     // Optional : some meshing phases allow usage of relaxed rules.
  352.     // See e.g. addLayersControls::nRelaxedIter.
  353.     relaxed
  354.     {
  355.         //- Maximum non-orthogonality allowed. Set to 180 to disable.
  356.         maxNonOrtho 75;
  357.     }
  358. }
  359.  
  360.  
  361. // Advanced
  362.  
  363. // Flags for optional output
  364. // 0 : only write final meshes
  365. // 1 : write intermediate meshes
  366. // 2 : write volScalarField with cellLevel for postprocessing
  367. // 4 : write current intersections as .obj files
  368. debug 0;
  369.  
  370.  
  371. // Merge tolerance. Is fraction of overall bounding box of initial mesh.
  372. // Note: the write tolerance needs to be higher than this.
  373. mergeTolerance 1E-6;
Advertisement
Add Comment
Please, Sign In to add comment