Skip to content
  • 关于谱元法和有限体积需求网格的区别

    Meshy
    4
    0 赞同
    4 帖子
    5k 浏览
    S

    @XieXiaoyang 好文章,我去研究研究

  • 这么多人在线

    CFD彩虹条
    6
    0 赞同
    6 帖子
    10k 浏览
    S

    没币发帖

  • 求教怎么使用CRW模型

    Fluent
    11
    0 赞同
    11 帖子
    13k 浏览
    李东岳

    @楞严一笑 不能,需要植入,我在考虑呢 :duang:

  • 尖角附近的网格过度

    Meshy
    11
    0 赞同
    11 帖子
    13k 浏览
    I

    @HITSC30 icem不是很熟练,我去试一下

  • 什么是averaging turbulence?

    Algorithm
    6
    0 赞同
    6 帖子
    12k 浏览
    .J..

    @showhand 多谢大神回复!

  • pointwise输出二维网格到openfoam无法计算

    Meshy
    4
    0 赞同
    4 帖子
    7k 浏览
    A

    @zzcfd 改fvSolution,把p改成这个solver PCG; preconditioner DIC;试试

  • 关于lagrange粒子注入问题

    OpenFOAM
    1
    0 赞同
    1 帖子
    1k 浏览
    A

    各位老哥好,有个小问题,我目前现在计算域中取一个矩形平面区域,这个矩形平面用于注入粒子,有没有相关的InjectionModel呢?

  • 有没有推荐的数值计算方法的书籍

    CFD彩虹条
    2
    0 赞同
    2 帖子
    3k 浏览
    李东岳

    数值计算方法

    具体是什么,解PDE么,还是什么

  • STAR-CCM+网格转换后,checkMesh报错

    Meshy
    2
    0 赞同
    2 帖子
    3k 浏览
    I

    1.我猜是symmetry这个边界条件,试一下改成wall,然后在0文件夹里自己定义上下的slip边界条件。openfoam会对生成的网格编号进行检查,外部软件的网格节点编号和blockMesh的逻辑不一样。
    2.可能是前后的empty边界问题,你可以在starccm里生成3D网格后,重新在openfoam里extrude来生成前后empty边界
    类似这样
    constructFrom patch;
    sourceCase "../w3-d_hc1-3";
    sourcePatches (symFront);

    // If construct from patch: patch to use for back (can be same as sourcePatch)
    exposedPatchName symBack;

    // Flip surface normals before usage. Valid only for extrude from surface or
    // patch.
    flipNormals false;

    //- Linear extrusion in point-normal direction
    extrudeModel linearNormal;

    nLayers 1;

    expansionRatio 1.0;

    linearNormalCoeffs
    {
    thickness 1;
    }

    // Do front and back need to be merged? Usually only makes sense for 360
    // degree wedges.
    mergeFaces false; //true;

    // Merge small edges. Fraction of bounding box.
    mergeTol 0;

  • snappyHexMesh的网格加密问题。

    Meshy
    17
    0 赞同
    17 帖子
    18k 浏览
    G

    感谢大佬,我解决了问题,但似乎又出现了新的问题。起因是我希望用snap来加密多孔介质,但是我不知道为什么突然多了stl中不存在的部分。如下图,第一张图是cellZone,第二个是用来生成cellZone的stl文件。我在最下面贴出了我的snap设置。这让我十分困惑,我不理解为什么会出现这种情况。

    image.png

    image.png
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: 2.2.0 |
    | \ / A nd | Web: www.OpenFOAM.org |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class dictionary;
    object snappyHexMeshDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    // Which of the steps to run
    castellatedMesh true; // make basic mesh ?
    snap true; // decide to snap back to surface ?
    addLayers false; // decide to add viscous layers ?

    geometry // 录入STL文件
    {

    side_mesh_0_45.stl {type triSurfaceMesh; name side_0;} side_mesh_45_90.stl {type triSurfaceMesh; name side_1;} side_mesh_90_135.stl {type triSurfaceMesh; name side_2;} side_mesh_135_180.stl {type triSurfaceMesh; name side_3;} side_mesh_180_225.stl {type triSurfaceMesh; name side_4;} side_mesh_225_270.stl {type triSurfaceMesh; name side_5;} side_mesh_270_315.stl {type triSurfaceMesh; name side_6;} side_mesh_315_360.stl {type triSurfaceMesh; name side_7;} top_mesh.stl {type triSurfaceMesh; name top;} building.stl {type triSurfaceMesh; name building;} grassland.stl {type triSurfaceMesh; name grassland;} ground.stl {type triSurfaceMesh; name ground;} water.stl {type triSurfaceMesh; name water;} tree.stl {type triSurfaceMesh; name tree;} refinementBox_building { type searchableBox; min ( 720 -600 15); max ( 2250 860 280); }

    };

    castellatedMeshControls
    {
    maxLocalCells 2000000; // 每个 CPU 核心允许使用的最大网格单元数,避免某个核心负载过重
    maxGlobalCells 20000000; // 全局允许的最大网格单元数,在细化阶段如果超过这个数量,系统将触发删除操作,防止内存溢出
    maxRefinementIterations 5; // 有效地限制整体迭代次数
    minRefinementCells 10; // 提高触发终止的阈值 maxLoadUnbalance 0.10; // 允许的最大负载不平衡度,表示各个 CPU 核心之间的工作负载差异最多为 10%,确保负载均衡
    nCellsBetweenLevels 3; // 不同细化等级之间的网格扩展因子,设置为 1 表示高细化区域与低细化区域之间的过渡最平滑
    maxShellRefinementIter 10;
    // 边缘特征细化程度
    features
    (
    {file "building.eMesh"; level 2;}
    {file "tree.eMesh"; level 1;}
    );

    refinementSurfaces { building { level (2 3); patchInfo { type wall; inGroups (building); } } tree { // level (minLevel maxLevel) level (2 3); // 例:最少细 3 级、必要时再细 1 级 faceZone treeFZ; // 可省;若想留出面区可保留 cellZone treeZone; // 关键:让 snappy 直接生成 treeZone cellZoneInside inside; // inside = STL 内部全进 cellZone patchInfo{ type patch; inGroups (treeSurf); } } side_0 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_1 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_2 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_3 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_4 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_5 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_6 { level (0 0); patchInfo{ type patch; inGroups (side); } } side_7 { level (0 0); patchInfo{ type patch; inGroups (side); } } top { level (0 0); patchInfo { type patch; inGroups (top); } } grassland { level (0 1); patchInfo { type wall; inGroups (ground); } } ground { level (0 1); patchInfo { type wall; inGroups (ground); } } water { level (0 1); patchInfo { type wall; inGroups (ground); } } } resolveFeatureAngle 60; // 特征边缘角度,小于这个角度的边缘将被忽略 refinementRegions { refinementBox_building { mode inside; levels ((1 2)); } tree { mode inside; // STL 内部 levels ((2 3)); // 在 level 3–4 的基础上再加 1 级 } } // {wholeDomain {mode inside; levels ((0 0));}} // 细化区域,mode 为细化模式,levels 为细化等级 // {building {mode distance; levels ((1 2) (3 1));}} // 细化区域,mode 为细化模式,levels 为细化等级mode 为细化模式(包括inside对内部网格进行细化 outside distance根据距表面网格距离进行细化),levels 为细化等级 locationInMesh (100 100 100); //规定哪边网格是流域 allowFreeStandingZoneFaces true; // 允许自由区域面

    }

    snapControls
    {
    nSmoothPatch 3; // 平滑次数
    tolerance 0.5; // 两个网格点之间的最大距离
    nSolveIter 50; // 迭代次数
    nRelaxIter 8; // 松弛次数
    nFeatureSnapIter 10; // 特征边缘迭代次数
    implicitFeatureSnap true; // 隐式特征边缘
    explicitFeatureSnap true; // 显式特征边缘
    multiRegionFeatureSnap false; // 多区域特征边缘
    }

    addLayersControls
    {
    relativeSizes false; // 相对大小/绝对大小
    layers
    {
    building {nSurfaceLayers 1;}
    }

    expansionRatio 1; // 扩展比例 finalLayerThickness 0.3; // 最外层厚度 minThickness 0.001; // 最小厚度 nGrow 0; // 增长层数 // 高级设置: featureAngle 80; // 表面层生成的特征角度。0 表示平面,90 表示直角。如果几何表面的角度超过 80 度,则停止挤出层。 nRelaxIter 5; // 层生成过程中,最大允许的松弛迭代次数。用于平滑网格,防止扭曲或变形。 nSmoothSurfaceNormals 1; // 对表面法线的平滑处理次数,用于减少表面网格的尖锐突变。 nSmoothNormals 5; // 对网格内部运动方向的平滑处理迭代次数,确保网格平滑地向外扩展。 nSmoothThickness 10; // 平滑表面层厚度的迭代次数,数值越大,厚度分布越均匀。 maxFaceThicknessRatio 0.5; // 如果网格面太过扭曲(厚度超过此比值),则停止层生长。防止生成变形严重的网格。 maxThicknessToMedialRatio 0.3; // 层厚度与中线距离的比值,防止厚度过大时停止层的生长。 minMedianAxisAngle 130; // 中线轴的最小角度。如果角度过小,可能会跳过层生成。通常用于复杂几何体的细化。 nBufferCellsNoExtrude 0; // 用于新层终止时创建的缓冲区单元数,防止层过度扩展。 nLayerIter 50; // 添加层的最大迭代次数,限制网格生成过程中层生长的迭代次数

    }
    // 控制网格质量的设置。任何无法处理的阶段将根据这些设置回退操作。
    meshQualityControls
    {
    maxNonOrtho 65; // 允许的最大非正交角(度数),控制网格的正交性。
    maxBoundarySkewness 4; // 网格边界倾斜度的最大允许值。
    maxInternalSkewness 4; // 内部网格单元的最大倾斜度。
    maxConcave 80; // 允许的最大凹角(度数),控制网格单元的形状。
    maxFaceDiff 2;
    minFlatness 0.5; // 允许的最小平面度,确保网格面不过于扭曲。
    minVol 1e-13; // 允许的最小单元体积,避免生成过小的网格单元。
    minTetQuality 1e-8; // 四面体网格单元的最小质量。
    minArea -1; // 最小网格面面积,-1 表示忽略此限制。
    minTwist 0.02; // 网格单元的最小扭曲度,确保网格质量。
    minDeterminant 0.001; // 网格最小行列式值,衡量网格形状的质量。
    minFaceWeight 0.02; // 网格面权重的最小值,用于衡量网格面质量。
    minVolRatio 0.01; // 最小网格体积比,衡量相邻单元的体积差异。
    minTriangleTwist -1; // 最小三角形扭曲度,-1 表示忽略此限制。

    // 高级设置: nSmoothScale 5; // 控制网格平滑的比例,数值越大,网格越平整。 errorReduction 0.75; // 错误减少系数,控制每次迭代中如何减少网格问题。

    }

    // 高级设置:是否启用调试信息
    debug 0; // 设置为 0 表示关闭调试信息。

    // 网格合并容差。相邻网格单元如果在此容差范围内,将被合并。
    // 容差值是初始网格边界框尺寸的一个分数。
    mergeTolerance 1E-5; // 合并容差,值越大,网格越容易被合并。

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

  • interFoam + 周期边界条件的压力问题

    OpenFOAM
    13
    0 赞同
    13 帖子
    18k 浏览
    学流体的小明

    平均流速就是用瞬时的流场速度U进行三维空间上的积分。可以看看代码
    https://develop.openfoam.com/Development/openfoam/blob/OpenFOAM-v2012/src/fvOptions/sources/derived/meanVelocityForce/meanVelocityForce.C

    和重力不挂勾的,重力产生的加速度是它自己的效果,记为A;这个体积源项本身会产生一个加速度,记为B。
    A不变,B会一直变化以使得平均速度保持为你设定的那个值。

  • 流固耦合、气膜冷却

    OpenFOAM
    1
    0 赞同
    1 帖子
    1k 浏览
    W

    请问有前辈用 OpenFOAM 计算过叶片冷却、气膜冷却吗,想交流一下
    图片1.png

  • 蓝威的EasyCAE平台怎么样?

    Fluent
    2
    0 赞同
    2 帖子
    4k 浏览
    zhijieZ

    用过,一般般,20核的速度和一般几万的工作站速度相当,上次客服回访说他们最多可以用2000核,大客户可以定制之类。官网下面有qq群,建议去那里咨询资深客服,充钱有折扣。

  • snappy加边界层

    Meshy
    4
    0 赞同
    4 帖子
    3k 浏览
    李东岳

    这个基本没有一针见血的办法,shm生成边界层已经是老大难了

  • 0 赞同
    9 帖子
    13k 浏览
    Y

    @hhj0219 您好,请问你用fluent算完LES后,怎么分析时均特征的? 导入tecplot吗?(如何导入呢,要把不同时刻的dat文件导入吗? 这样操作方便吗?感觉一下导入成千上万个dat,有点不敢想象)
    还是使用自带的sampling,自带的sampling编辑一些公式很不方便

    希望能交流下!谢谢

  • 0 赞同
    5 帖子
    8k 浏览
    zzkluckZ

    说一点我的看法,不一定对,仅供参考:

    non-orthogonality

    dca809a8-9cd5-4f74-9329-6d8459966264-image.png

    non-orthogonality由snappyHexMeshDict.meshQualityControls.maxNonOrtho直接控制,你的snappyHexMeshDict里这个值是45,这个值一般不需要控制的这么小,65是更常见的配置值。

    另外,你的snappyHexMeshDict里,relaxed.maxNonOrtho给的是75,这个值通常是和maxNonOrtho = 65相配合的。如果你真的要把maxNonOrtho设为45,按逻辑来说relaxed.maxNonOrtho也应该相应的减少一点。

    网格纵横比

    这里截取你的背景网格配置:

    vertices ( (-340 -302 -3) // Slightly smaller than the STL model bounds (332 -302 -3) (332 341 -3) (-340 341 -3) (-340 -302 95) // Slightly larger than the STL model bounds (332 -302 95) (332 341 95) (-340 341 95) ); blocks ( hex (0 1 2 3 4 5 6 7) (100 100 100) simpleGrading (1 1 1) // Adjust mesh density as needed );

    如上面B老师所说,你网格的大纵横比就是这里导致的。如果不是有意要在Z方向上做加密的话没必要这么分块,我口算一下,大概(70 65 10)就可以。

    castellate

    从上面可以看到,你背景网格的量级是100 * 100 * 100 = 1,000,000;而你SHM的maxGlobalCells给了2,000,000。这看起来不太对,这几乎没给SHM进一步细分的空间,从结果来看也是这样,网格划分的不够细。

    另外,截取一段level的配置:

    features ( { file "building.eMesh"; level 3; } ...... ); refinementSurfaces { building { level (3 4); } ...... }

    我理解features的level应该不低于Surface的。

    胡乱写了一些个人看法,希望能有所帮助。

  • 0 赞同
    2 帖子
    6k 浏览
    李东岳

    没想到图越来越多。手机看的注意了。我这个图多。

    结构网格的拥护者简单说一下为什么我喜欢结构网格。以下只针对简单几何以及不是太复杂的几何。复杂到不行的网格我选择混合网格。我自己做的算例不用纯四面体网格。

    六面体网格具有以下优点:

    非矩形网格的歪斜(skewness)严重
    这需要做面法相梯度计算修正。稍微增加计算步骤。著名的CFD非矩形修正因此而来

    截面重构不光顺
    举例,一个正方盒子,一半是水,我们用矩形网格重构的气液截面是这样的:
    alt text
    黄色为一相,白色为一相。即使网格很糙,我们的截面也是平的。下图为三角形非结构网格:
    alt text
    可见糙网格下界面不平。这导致后处理需要耗费精力。

    高度非线性物理问题影响矩阵对角占优
    这也是非线性动力学,例如金属撞击、生物力学分析中结构网格肆虐的原因。(这个我没有测试,之前在网上看到的结论,来自链接文本

    非结构网格数量更多增加计算资源
    网格单元的面越多网格越少。六面体网格并不是数量最少的。数量最少的是多面体网格(star推荐的?)如下图
    alt text
    再看这个情况对比:只有第一个是结构网格,第二个网格多。第三个第四个和均为非正交且和流线不贴合
    alt text
    alt text
    因此目前自动生成的非结构网格一般数量是即为巨大的。计算的时间会超过你花一星期做结构网格的时间。另外,万一中途发散了怎么办。

    费结构网格高度不可控
    几何稍微一点点的变化会导致全场四面体网格做位移。结构网格(ICEMblock切出来的)具有即为即为高度可控性。可以对基本所有的网格单元进行控制。俩者区别天差地别。

    我了解的所有的离散格式对结构网格适应性更强
    也就是说结构网格对流场具有强的多的顺应性。例如旋转机械,结构网格和速度流线高度贴合。

    矩形网格对边界更好的捕获
    为何非结构网格要添加边界层网格?矩形网格对壁面贴合更好。

    复杂CFD模型在结构网格上收敛更强
    个人经验。比如双流体模型,LTS局部时间步框架下的模型,激波捕获等。当然那种不可压缩单相流不算

    太多就不写了...

    引用从业CFD27年OpenFOAM创始人Henry的一段话:

    hex and polyhedral cells are generally superior to tet cells in finite-volume and the difference in both accuracy and convergence behaviour can be large. However, it also depends on the quality of the hex and tet cells and many of the problems with tet meshes stem from the poor quality of some tets produced by many automatic tet mesh generators. In order to really appreciate the difference it might be a good idea for you to try both for your problems. For VOF calculations I would expect the solution on hex/poly cell meshes to be dramatically better.

    大意为:

    在有限体积中,六面体和多面体网格相对于四面体网格优势明显。主要在精度和收敛上。对于VOF(我上文提及的第2点),结构网格的优势是大大的。

    最后,需要耗费大量时间生成的六面体网格至今没有消失,必然有存在的道理。

  • 论坛能不能开放私信功能呢~

    CFD彩虹条
    3
    0 赞同
    3 帖子
    5k 浏览
    bestucanB

    来 irc ……
    freenode 节点上有个 OpenFOAM 的非官方频道。

    最大的缺点就是不在线时的信息,上线了也收不到。除非使用付费第三方。
    优点就是使用门槛太高以至于没有墙的必要,可以说是没梯子情况下的世界之窗。
    注册配置比较麻烦但可以跳过。

    日常会有几个人闲聊

    Screenshot from 2020-11-28 16-34-15.png

    每个人都可以新建频道,频道就像个群组。

  • 为什么LES具有随机性?

    Algorithm
    2
    0 赞同
    2 帖子
    5k 浏览
    S

    这个问题也可以参考我之前的回答:

    http://120.25.245.130:4567/topic/94/les和rans中-离散的对象是相同的吗/3

  • Fluent双欧拉模型固固相间曳力的计算

    Fluent
    1
    0 赞同
    1 帖子
    3k 浏览

    尊敬的各位老师,向大家请教一个问题,Fluent采用双欧拉模型计算双组份鼓泡流化床,选择Syamlal-Obrien-Symmetric模型计算固固相间曳力,颗粒间摩擦因数Fluent里默认是0,我想设置为0.05,0.1,0.15,请问具体该怎么操作?
    截图.png