Skip to content
  • 0 赞同
    2 帖子
    3k 浏览
    李东岳

    这个要是openfaom的网格,就好处理了。2亿网格确实太多了,icem我也只画过最多几百万的网格。卡的都不行。你这2亿网格太疯狂了,机器内存应该很大。

  • 0 赞同
    3 帖子
    6k 浏览
    S

    @cfd-china :sunglasses: ,其实我也懒得搞了。。我就问问:cheeky:

  • 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 帖子
    12k 浏览
    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; // 合并容差,值越大,网格越容易被合并。

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

  • CFD巨著开始印刷!

    CFD彩虹条
    7
    0 赞同
    7 帖子
    10k 浏览
    sr0922mscS

    @李东岳 有没有其他方式参考赠书呀?五行缺书~

  • converge cfd 理论手册

    OpenFOAM
    6
    1 赞同
    6 帖子
    10k 浏览

    感谢,好人一生平安

  • twoPhaseEulerFoam 热传递

    OpenFOAM
    21
    0 赞同
    21 帖子
    32k 浏览
    F

    @王孟飞 这个问题我也遇到了,不知道怎么解决

  • 0 赞同
    4 帖子
    5k 浏览

    @cfd-china 谢谢管理员!好人一生平安!

  • 改写interFoam中的ghf

    OpenFOAM
    3
    0 赞同
    3 帖子
    4k 浏览
    D

    @东岳 万分感谢!

  • CFD-DEM coupling时流体的求解器设置

    已移动 Algorithm
    1
    0 赞同
    1 帖子
    3k 浏览
    T

    各位大佬,请问CFD-DEM coupling时,流体的控制方程组求解,用耦合式解法还是分离式解法?
    非常感谢!

  • Centroid怎么翻译成中文

    Algorithm
    10
    0 赞同
    10 帖子
    13k 浏览
    李东岳

    https://www.wikiwand.com/en/Centroid

    While in geometry the word barycenter is a synonym for centroid, in astrophysics and astronomy, the barycenter is the center of mass of two or more bodies that orbit each other. In physics, the center of mass is the arithmetic mean of all points weighted by the local density or specific weight. If a physical object has uniform density, its center of mass is the same as the centroid of its shape.

  • 0 赞同
    3 帖子
    4k 浏览

    @bestucan 非常感谢老师指导:xinxin: 我回去试一试

  • 0 赞同
    6 帖子
    8k 浏览

    @cccrrryyy 感谢大佬答疑解惑,也谢谢您的分享:140:

  • CFD国内就业贴

    CFD彩虹条
    36
    0 赞同
    36 帖子
    46k 浏览
    李东岳

    @evensun 能在高校待时间长的,必然都有外快。各有各的路子,有些大家能看见,有些大家看不见。否则待个5 6年必然就走了。

  • 0 赞同
    6 帖子
    12k 浏览
    S

    @huoyanxiadebing 在 说实话,根本不知道选择什么湍流模型 中说:

    看到你的帖子,发现你做的都是外流场,对于外部流动,沿表面位置分布的雷诺数大于500000时,通常认为流动状态为湍流;沿障碍物的雷诺数大于20000时认为流动状态为湍流,如果你的模型中雷诺数不是很大的话,你用层流模型计算即可,这就是有时候你用层流模型算的比较准确的原因;对于雷诺数的计算,最重要的一点就是你要选好特征长度,对于没有结构物时,你要以水槽的长度或高度来算雷诺数,加上了结构物,就要判断是否产生了湍流现象,以结构物的某个长度及其附近的速度来计算雷诺数。

    前辈您好,请问这里提到的两个临界值是否有相应文献的支撑?

    如果要计算防波堤(例如沉箱防波堤和水下防波堤)附近的雷诺数来选取相应的湍流模型(适用于低雷诺数或高雷诺数的),这个特征长度应该取防波堤的高度吗?对于二维和三维情况,特征长度的选取是否有不同呢?

    另外,结构物附近的速度是否有较为通用的估算方式?对于防波堤附近的速度,能否用基于浅水波理论的公式Uh=cη进行估算呢(水深h,波速c,自由面高度η)?

  • 0 赞同
    72 帖子
    204k 浏览

    @Foamer24 +1

  • 0 赞同
    26 帖子
    34k 浏览

    @King_RVM 你好,使用starCCM绘制网格,然后导入到openFoam里面跑算例,计算结果会出现质量不好的情况么?请教一下~

  • CFD青年成长支持计划(2021)

    公告
    137
    0 赞同
    137 帖子
    165k 浏览
    F

    想问一下李老师这个计划还有吗!!很想要这本湍流模型:mianmo:

  • 讨论Fluent中的各种压力

    Fluent
    3
    0 赞同
    3 帖子
    8k 浏览
    S

    @cfd-china 哈哈,没有多久不见吧:cheeky:

    操作压力(operating pressure)是不是就是参考压力? 0_1466035493090_2016-06-16_080420.png 我在模拟的时候,都把操作压力设置成了零,这样得到的压力都是绝对压力?不用怎么换算了,这样没事吧:confused: 《ANSYS Fluent理论指南》已完成约90%,同步校对中什么时候能够完稿呢?
  • 请教网格无关性验证方面问题

    Fluent
    7
    0 赞同
    7 帖子
    15k 浏览
    S

    @手艺白胶
    立方式的加倍?是怎么加倍的?:confused: