OpenFOAM中圆柱体的二维画法

本文移植自博主以前的新浪博客,原文发表于 (2014-12-25 10:22:36)。

使用的方法是 makeAxialMesh,最初来自于 openfoamwiki
我将其移植到了最新的 OpenFOAM-7:https://github.com/ZhangYanTJU/makeAxialMesh,并且附有算例。

首先来张 UserGuide 上的插图
在OpenFOAM(其他平台不知道)中,圆柱体的二维表现为一个夹角不超过5度的楔形。那么怎样把这个楔形画出来呢?
在 system 文件夹下,需要两个文件,rotationDict and collapseDict

// ************************rotationDict************************************** //
// Use the same parameters as from the command line
// makeAxialOldMode 1;

// used in old and in new mode
makeAxialAxisPatch center;
makeAxialWedgePatch frontAndBack;

// used only in old mode
makeAxialOffset 0.01;

// used only in new mode
rotationVector (0 1 0);
originVector (0 0 0); //offset
// originVector (0 0 0); // origin

wedgeAngle 5;

// revolve option
// 0 = old and default mode, points are projected on wedges
// 1 = points are revolved
revolve 0;

// ************************************************************************* //
// * * * * * * * * * * * * *collapseDict* * * * * * * * * * * * * * * * * * //

// If on, after collapsing check the quality of the mesh. If bad faces are
// generated then redo the collapsing with stricter filtering.


collapseEdgesCoeffs
{
// Edges shorter than this absolute value will be merged
minimumEdgeLength 1e-6;

// The maximum angle between two edges that share a point attached to
// no other edges
maximumMergeAngle 179;
}


// ************************************************************************* //

在blockMeshDict文件中,网格照常定义。只是需要注意一下几点:

  • 把需要坍塌的那个面(此面合并成一条线,即圆柱体的轴线),定义为center , type symmetryPlane(定义边界条件是也用此type)。
  • 需要frontAndBack。
  • 生成楔形网格后,frontAndBack会变成两个 frontAndBack_pos, frontAndBack_neg。定义边界条件时,用wedge类型。


然后,按如下指令操作:

blockMesh
makeAxialMesh -overwrite
collapseEdges -overwrite
checkMesh

PS:

  • 只有一个网格的那个维度,需要与 0 对称分布:

    (0 0 -0.05)
    (1 0 -0.05)
    (1 1 -0.05)
    (0 1 -0.05)
    (0 0 0.05)
    (1 0 0.05)
    (1 1 0.05)
    (0 1 0.05)
  • 如果在执行 collapseEdges -overwrite 的时候遇到以下问题:

    --> FOAM Warning :
    From function void Foam::wedgePolyPatch::calcGeometry(Foam::PstreamBuffers &)
    in file meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C at line 70
    Wedge patch 'frontAndBack_neg' is not planar.
    At local face at (0.0975 0.0925 -0.00250811) the normal (0 0.0435766 -0.99905) differs from the average normal (-4.23114e-19 0.043578 -0.99905) by 1.95256e-12
    Either correct the patch or split it into planar parts

    可以执行以下代码,然后 goto 这里重新画网格!

    foamDictionary -entry writeFormat -set binary system/controlDict
  • 如果使用 OF-2.1.x,需要使用: collapseEdges -overwrite 1e-6 179

文章作者: Yan Zhang
文章链接: https://openfoam.top/axialMesh/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 OpenFOAM 成长之路
微信打赏给博主更多动力吧~