CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    shm生成边界层没有完全覆盖

    Meshy
    2
    4
    941
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      Samuel-Tu 最后由 编辑

      我感觉的我模型其实不复杂,但是边界层生成的时候缺有点问题,请大家帮忙看一下如何改进比较好
      下图是shm第二步snap后的图:
      111.png
      感觉吻合的还可以的。
      然后加边界层后发现夹角处的边界层出了问题:
      222.png
      我shm中对边界层的控制如下:

      /*--------------------------------*- C++ -*----------------------------------*\
      | =========                 |                                                 |
      | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
      |  \\    /   O peration     | Version:  v1806                                 |
      |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
      |    \\/     M anipulation  |                                                 |
      \*---------------------------------------------------------------------------*/
      FoamFile
      {
          version     2.0;
          format      ascii;
          class       dictionary;
          object      snappyHexMeshDict;
      }
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      
      // 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
      {
          flatRoof.stl
          {
              type triSurfaceMesh;
              name roof;
          }
      
          refinementBox
          {
              type searchableBox;
              min (20 0 0);
              max (80   1.0 8);
          }
      };
      
      
      
      // Settings for the castellatedMesh generation.
      castellatedMeshControls
      {
      
          // Refinement parameters
          // ~~~~~~~~~~~~~~~~~~~~~
      
          // If local number of cells is >= maxLocalCells on any processor
          // switches from from refinement followed by balancing
          // (current method) to (weighted) balancing before refinement.
          maxLocalCells 100000;
      
          // 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;
      
          // Allow a certain level of imbalance during refining
          // (since balancing is quite expensive)
          // Expressed as fraction of perfect balance (= overall number of cells /
          // nProcs). 0=balance always.
          maxLoadUnbalance 0.10;
      
      
          // Number of buffer layers between different levels.
          // 1 means normal 2:1 refinement restriction, larger means slower
          // refinement.
          nCellsBetweenLevels 3;
      
      
      
          // 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
          (
          );
      
      
      
          // 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
          {
              roof
              {
                  // Surface-wise min and max refinement level
                  level (1 1);
      
                  // Optional specification of patch type (default is wall). No
                  // constraint types (cyclic, symmetry) etc. are allowed.
                  patchInfo
                  {
                      type wall;
                      inGroups (roof);
                  }
              }
          }
      
          // 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 1));
              }
          }
      
      
          // 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 (0.5 0.5 0.5);
      
      
          // Whether any faceZones (as specified in the refinementSurfaces)
          // are only on the boundary of corresponding cellZones or also allow
          // free-standing zone faces. Not used if there are no faceZones.
          allowFreeStandingZoneFaces true;
      }
      
      
      
      // 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 2.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;
      
          // Feature snapping
      
              //- Number of feature edge snapping iterations.
              //  Leave out altogether to disable.
              nFeatureSnapIter 10;
      
              //- Detect (geometric only) features by sampling the surface
              //  (default=false).
              implicitFeatureSnap false;
      
              //- Use castellatedMeshControls::features (default = true)
              explicitFeatureSnap true;
      
              //- Detect points on multiple surfaces (only for explicitFeatureSnap)
              multiRegionFeatureSnap false;
      }
      
      
      
      // Settings for the layer addition.
      addLayersControls
      {
          // Are the thickness parameters below relative to the undistorted
          // size of the refined cell outside layer (true) or absolute sizes (false).
          relativeSizes true;
      
          // Per final patch (so not geometry!) the layer information
          layers
          {
              "roof"
              {
                  nSurfaceLayers 2;
              }
          }
      
          // Expansion factor for layer mesh
          expansionRatio 1.2;
      
          // 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.
          // See relativeSizes parameter.
          //finalLayerThickness 1.0;
          firstLayerThickness 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.3;
      
          // 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.
          // Note: changed(corrected) w.r.t 1.7.x! (didn't do anything in 1.7.x)
          nGrow 0;
      
          // 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;
      
          // 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
          // Note: changed(corrected) w.r.t 1.7.x! 90 degrees corresponds to 130
          // in 1.7.x.
          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;
      }
      
      
      
      // Generic mesh quality settings. At any undoable phase these determine
      // where to undo.
      meshQualityControls
      {
          #include "meshQualityDict"
      
      
          // Advanced
      
          //- Number of error distribution iterations
          nSmoothScale 4;
          //- Amount to scale back displacement at error points
          errorReduction 0.75;
      }
      
      
      // Advanced
      
      // Write flags
      writeFlags
      (
          scalarLevels
          layerSets
          layerFields     // write volScalarField for layer coverage
      );
      
      
      // Merge tolerance. Is fraction of overall bounding box of initial mesh.
      // Note: the write tolerance needs to be higher than this.
      mergeTolerance 1e-6;
      
      
      // ************************************************************************* //
      
      

      大家有什么建议么?提高一下边界层的质量

      1 条回复 最后回复 回复 引用
      • S
        Samuel-Tu 最后由 编辑

        找到解决办法了,在addLayersControls里把featureAngle从60改成90就行

        1 条回复 最后回复 回复 引用
        • S
          Samuel-Tu 最后由 编辑

          修改后边角处边界层也加上了:
          111.png
          但是在加密交界面网格很畸形:
          222.png
          这是什么导致的呢?有没有改进办法

          S 1 条回复 最后回复 回复 引用
          • S
            Stan同学 @Samuel-Tu 最后由 编辑

            @samuel-tu
            前辈好,请问交界面网格畸形的问题您是否解决了?我也遇到了类似的问题:135:

            1 条回复 最后回复 回复 引用
            • First post
              Last post