Skip to content
  • 0 赞同
    3 帖子
    4k 浏览
    FluidGaoF

    @东岳 那请问东岳老师,在t=0,和t=1时刻,这个函数返回的值是什么意义呢?

  • 大家发朋友圈越来越少了

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

    @李东岳 这两年的学生真的是过的没劲。。

  • 0 赞同
    1 帖子
    2k 浏览
    五好青年

    如题,想用Foam-extend里的浸没边界法(Immersed Boundary Method)求解器,解决水与弹性杆的流固耦合数值模拟,有人有这方面经验吗?

  • 0 赞同
    3 帖子
    5k 浏览
    J

    请问像这种狭窄处要划分边界层,怎样处理能保证网格高质量呢

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

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

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

  • 0 赞同
    26 帖子
    34k 浏览

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

  • UDF宏自变量命名问题

    Fluent
    5
    0 赞同
    5 帖子
    6k 浏览
    E

    @深蓝 嗯嗯,现在已经明白了,谢谢 :xiezuoye:

  • 一个非守恒的连续性方程

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

    @东岳 谢谢李老师的回复!
    我看了下跟公式(7)到(8)的过程很相似,但是为什么公式7到公式8的过程中将公式7左边第四项给略去呢?

  • 0 赞同
    2 帖子
    3k 浏览
    bestucanB

    速度的物质倒数两端乘以密度,再化简,就是时间项和对流项加在一起。

    密度就是单位体积的质量,速度的物质导数就是加速度。
    所以时间项和对流项加在一起就是单位体积内的$F=ma$,即$F=\rho a$。这就是惯性力吧?

    力分为体积力和表面力,本来表面力应该是产生相对于体心的力矩。但是无限小体积的情况下把力臂忽略了(我猜的),力矩造成的转动靠物理规则演化出来而不故意设计出来。所以左边是流体微元变化需要的力,右边是流体微元真实受到的力,两者相等,就推出来流体微元怎么变化的了。

    物理意义有助于了解方程怎么来的,但是后来方程形式因为代换化简早没有了当初的模样,只能从大概上理解。像广义的源项,这个和运输方程放在一起好理解。NS方程化简到最后是三个运输方程,运输的物理量分别是密度、速度、熵还是啥。源项,就像一个无源封闭体内进来多少就出去多少,但是有了源,就兴许进来的少出去的多。就是对运输产生了扰动。

    要是搁到动量方程上,比如加个源项,磁流体在磁场中受电磁力,或者离心机里受额外的等效重力。

    另外粘性造成的应力是和速度有关系的吧?叫本构关系,用来区别牛顿和非牛顿流体的。系数小不打紧,只要湍流涡够多,速度够快。耗散能量的能力就很强。

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

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

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

  • 0 赞同
    4 帖子
    5k 浏览
    H

    想了解一下,fluent中做的湍流生成程序类似CDRFG的方法,在OpenFOAM中文件改动会很大吗。本人做的是风荷载模拟,基于课题组基础上做的课题,课题组有师姐在fluent上做的湍流风入口,对课题了解还处于小白阶段。

  • 什么是薄层粘性假设?

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

    @东岳 Thin-Layer Navier—Stokes Approximation

  • 0 赞同
    23 帖子
    30k 浏览
    C

    @五好青年 所以他们真的是套OpenFOAM吗?有接触过么。纯好奇

  • STAR-CCM齿轮箱齿轮带油仿真

    Fluent
    4
    0 赞同
    4 帖子
    5k 浏览
    E

    @bestucan 感谢大佬:xinxin:

  • 关于paraview显示分辨率的问题

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

    图挂了

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

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

  • entropy function的一个问题

    Algorithm
    4
    0 赞同
    4 帖子
    6k 浏览
    李东岳

    $\epsilon \rightarrow 0$ 并不是$\epsilon = 0$,否则不会有...if $u$ is smooth at $x_1$ and $x_2$...。在粘度趋向于很小的时候,不连续变成具备一定厚度的光滑解,同样承认有厚度的激波。所以
    $$
    \epsilon\int_\Omega\frac{\p}{\p u}\left(\frac{\p \eta}{\p u}\right)\left(\frac{\p u}{\p x}\right)^2\rd x\rd t \geq 0
    $$
    另外,
    \begin{equation}
    \int_{x_2}^{x_1}\left(\epsilon(\eta_q q_x)_x\rd x -\epsilon\eta(\eta_q)_q q_x^2\right)\rd x=\epsilon\left(\eta_q q_x|_{x=x_1}-\eta_q q_x|_{x=x_2}\right)-\epsilon\eta(\eta_q)_q q_x^2\Delta x
    \end{equation}
    考虑一个非常小的$\epsilon=1e-10$,在控制体内$\epsilon\left(\eta_q q_x|_{x=x_1}-\eta_q q_x|_{x=x_2}\right)\rightarrow 0$,$\epsilon\eta(\eta_q)_q q_x^2\Delta x$还是大于0.

  • 0 赞同
    16 帖子
    16k 浏览
    R

    @李东岳 , 李老师您好,我已经在chtMultiRegionFoam中植入了第一张图所示的拉普拉斯及泊松方程,

    QQ截图20210619102650.jpg

    QQ截图20210619102636.jpg

    实现了对电势在流固区域的耦合求解,但电荷的求解似乎不对,然后电场力的求解结果也和参考文章里面差的太多,但我边界设置理论上是符合文章要求的,第二张图和第三张图是我和参考文章计算结果的对比。参考文章及我的算例和编译的求解器链接放在这里:https://pan.baidu.com/s/1U8NBBon8CFVvDoF9Fsi9UA 提取码:mppz
    麻烦李老师能抽空看一下,检查一下问题,不胜感激。一个头俩大:136: :136:

    QQ截图20210619095212.jpg QQ截图20210619095249.jpg

  • 关于codedFixedValue使用

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

    @chengan-wang 在 关于codedFixedValue使用 中说:

    我定义了ymax,之后如果我使用if ( Cf[faceI].y() > ymax ) 设置相分数,时间步长越来越小。但如果改成if ( Cf[faceI].y() > 0.1 ) 一个具体数值,情况就好很多。我的使用方法是否有问题呢?

    理论上不应该有任何问题 :jingya:

  • 粒子穿过可变形界面的问题

    CFD彩虹条
    3
    0 赞同
    3 帖子
    4k 浏览
    凤雏岂能消逝

    @bestucan 真的非常感谢您的建议。对于二维的case尝试了一下,我设置一个不变形的界面,进入filter区域的粒子数量大约是等同于流通量。但我手上的计算资源和代码的优化方面并不乐观,耗时久。如果界面变成可变形的情况,计算时间应该会加倍,时间上等不起。