Skip to content
  • CFD青年成长支持计划(2022)

    公告
    87
    0 赞同
    87 帖子
    216k 浏览

    我是南京航空航天大学航空学院2022级硕士研究生吴祥清,跟随张老师链接文本从事CFD研究,本人的主要研究方向为高速出入水,初步学习商软入门CFD现在准备编程写算法。查找学习资料了解到CFD中文网以及老师,所以想申请2022CFD青年成长支持计划,我目前正在使用LS-DYNA软件进行垂直破冰仿真,开始着手发相关论文。在本科期间接触流体力学便想深入了解这个专业,也申请了这个方向的研究生,如果论文写作顺利,便会在研究生二年级申请硕博连读,为国家军事建设贡献自己的一份力量。目前在上课之余也开始着手C++入门。但是CFD学习之路道阻且长,希望可以得到老师资助来更好的学习CFD。

  • 0 赞同
    1 帖子
    1k 浏览
    S

    有个问题想问问大伙,如题

  • 关于MRF方法的理解的疑问

    Algorithm
    3
    0 赞同
    3 帖子
    5k 浏览
    Q

    86f6fd36-007a-42a5-b105-de5d4fcefffa-image.png
    cited:http://openfoamwiki.net/index.php/See_the_MRF_development

    图为在旋转坐标系内解绝对速度的控制方程,其中 \vec \omega \times \vec U_i 这项称为科氏力,旋转坐标系内独有的力。他的效果如下面这个视频所示https://haokan.baidu.com/v?vid=4227630901810560602&pd=bjh&fr=bjhauthor&type=video
    我的理解是可以将上面的式子理解为绝对速度产生组成的动量的输运方程,其中的通量是相对通量(\vec U_R \vec U_I),同时由于动量是一个矢量,因此在旋转坐标系中还受到科氏力的作用。等式坐标是压力的贡献,和由于运输的物理量U_I的扩散贡献。

    因此,我在思考是不是诸如湍动能,湍流耗散率这些标量,也可以认为在旋转坐标系内,运输物理量为湍动能,湍流耗散率这些标量,通量为相对速度的通量,但是由于这些量都是标量,因此没有多的项需要添加。另外比如SA模型中的发生项需要计算到voricity的大小,此处的voricity是不是也应该用相对速度?

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

    用旧版本的paraview可以,我现在用新版的也有这个问题。paraFoam确实慢。
    没有解决办法,只能心中自有云图咯 :mihu:

  • snappyHexMesh的网格加密问题。

    Meshy
    17
    0 赞同
    17 帖子
    11k 浏览
    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

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

  • 求做空气动力学的大佬解答两个问题

    Algorithm
    1
    0 赞同
    1 帖子
    2k 浏览
    X

    最近要做一些跨临界的问题,但是在跨临界中,如下图,由于伪沸腾的影响,流体的热力学性质会在伪沸腾区呈现剧烈的变化,形成类似于激波的区域。但是在亚临界区域,压力对密度的变化极为敏感,所以传统的全守恒格式会引起压力震荡。很多研究者针对这个问题做了很多修正。比如:求解压力传播方程并加入人工扩散、计算左右通量求黎曼解并对最后的结果熵修正。但是目前的算法总体来说很繁琐,且由于通过压力反推能量会引起能量不守恒。主要有两个问题,非常感谢您的解答:

    求解压力传播方程的那个算法很类似simple算法的pressure based方法,为什么现在几乎所有的计算空气动力学论文里面几乎没有使用过simple算法,更倾向于TVD RK这种显示迭代? 显式格式很适合GPU加速计算,想开发一套GPU的代码用来计算。但是GPU对双精度计算的支持很差。当在激波附近使用高阶离散格式的时候如果使用单精度浮点数计算,截断误差是否会对计算结果产生比较大的影响?
    3.png
  • 算例并行计算

    OpenFOAM
    4
    0 赞同
    4 帖子
    5k 浏览
    李东岳

    需要上床,不能粘贴~

  • 关于OpenFOAM矩阵求解器

    Algorithm
    9
    0 赞同
    9 帖子
    17k 浏览

    @micro 网格数量越多,网格尺度越小,计算肯定更加不稳定,您可以查一下CFL数

  • snappy加边界层

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

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

  • Fluent-DPM颗粒流sample采样报错

    Fluent
    1
    0 赞同
    1 帖子
    2k 浏览
    L

    Hi 各位大佬,
    请教一个问题,我在使用DPM颗粒流模型模拟烟气扩散的过程中,计算时只要进行sample采样就会报如下错误,导致无法开始计算,不进行sample采样就能正常计算,请问是什么原因呢?如何解决?希望各位大佬能答疑一下,谢谢!
    73db66a8-1cd7-4487-a31e-70b1eb15929d-image.png

  • Implement a new turbulence model in OpenFOAM

    OpenFOAM
    5
    0 赞同
    5 帖子
    6k 浏览
    李东岳

    静候大作!

  • 尖角附近的网格过度

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

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

  • 求推荐多相流的有限体积法教材

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

    多相流的有限体积法跟单相流没什么区别啊

  • 0 赞同
    26 帖子
    32k 浏览

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

  • 0 赞同
    4 帖子
    6k 浏览
    drink waterD

    0_1533986941754_2018-08-11 19-28-30屏幕截图.png 貌似有答案了。。。。

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

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

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

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

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

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

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

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

  • CFD中文网月浏览量破百万咯

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

    捕获.JPG

    最近一个月浏览量1076980

  • 0 赞同
    13 帖子
    20k 浏览
    W

    @李东岳 哦哦,没问题了。:142: