Skip to content
  • 热压通风p_rgh边界条件设置

    OpenFOAM
    1
    0 赞同
    1 帖子
    2 浏览
    K

    各位大佬,小白请教(Openfoam org V12):
    想问一下在设置热压通风下的缝隙开孔渗透风时,我采用了prghTotalPressure边界,设定:

    room_window { type prghTotalPressure; p0 uniform 0; }

    设定pRef在文件constant/pRef
    为101325

    问题在于如此计算的渗透风速过高 不符合常理,1.2高差的窗户居然上边缘风速有3.5m/s。

    初步排查因该确认为 prghTotalPressure中的p0为固定值pRef,外界压力没有随高差下降,导致流域内的p_rgh全为正值,且不同高度处的 p_rgh差值近似为 rg*高差

    所以想要请教一下各位前辈:
    1.是否是我的边界设置错误
    2.如果是p0的问题 我该如何设置随高度变化的外部压力呢(用ai帮忙写的压力边界会使计算直接发散,如下):

    room_window { type codedFixedValue; value $internalField; name simplePrghPressure; code #{ // 简化版本 - 手动指定重力 const vector g(0, -9.81, 0); // 重力矢量 // 硬编码字段名 const word rhoName = "rho"; const word UName = "U"; // 获取边界场 const fvPatchScalarField& rhoBoundary = patch().lookupPatchField<volScalarField, scalar>(rhoName); const fvPatchVectorField& UBoundary = patch().lookupPatchField<volVectorField, vector>(UName); // 获取坐标 const vectorField& C = patch().Cf(); scalarField p0(C.size()); // 参考参数 const scalar p0_ref = 0; // 参考压力 const scalar H_ref = 0; // 参考高度 const scalar rho_ref = 1.2; // 参考密度 (kg/m³) // 线性压力分布 forAll(C, i) { scalar h = C[i].y() - H_ref; p0[i] = p0_ref - rho_ref * mag(g) * h; } // 计算prghTotalPressure vectorField hVector(C.size()); forAll(C, i) { hVector[i] = vector(0, C[i].y() - H_ref, 0); } operator== ( p0 - 0.5*rhoBoundary*magSqr(UBoundary) - rhoBoundary*(g & hVector) ); #}; // 必需字段 rho rho; U U; }
  • OpenFOAM编译时内部编译器出错

    OpenFOAM
    19
    0 赞同
    19 帖子
    63 浏览
    A

    @李东岳 我只复制了0 constant system,里面都是数字啊 会有问题吗

  • 0 赞同
    7 帖子
    92 浏览
    X

    @HaoC51547 不需要 原来是多少就是多少

  • tecplot Linux版安装

    OpenFOAM
    5
    0 赞同
    5 帖子
    2k 浏览
    A

    @陶震 谷歌搜一下tecplot 360 ex 和关键字SSQ, SSQ是破解组的名字

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

    @我爱仿真 网上运营9年了。还没有人这样来发广告。请不要明目张胆的发广告。

  • 加密网格周围的结果不连续

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

    160万太难debug。你可以用2D网格,做个3000-5000的,然后也是类似这种非均一细化。看看有没有问题。

  • interIsofoam射流问题

    OpenFOAM
    3
    0 赞同
    3 帖子
    31 浏览
    X

    @李东岳 感谢东岳老师的回复,设置我也贴一下:

    FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { "alpha.phase1.*" { nAlphaCorr 3; nAlphaSubCycles 1; alphaOuterCorrectors yes; cAlpha 0; isoFaceTol 1e-6; surfCellTol 1e-6; nAlphaBounds 3; snapTol 1e-12; clip true; gardAlphaNormal false; MULESCorr yes; nLimiterIter 3; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-8; relTol 0; orientationMethod LS; //RDF splitWarpedFace false; writePlicFields false; mapAlphaField true; nAlphaSubCycles 1; cAlpha 1; } "pcorr.*" { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rgh { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rghFinal { $p_rgh; relTol 0; tolerance 1e-9; } U { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-07; relTol 0; } UFinal { $U; tolerance 1e-06; relTol 0; } kFinal { $k; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } epsilonFinal { $epsilon; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } epsilon { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } k { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } } PIMPLE { momentumPredictor yes; nOuterCorrectors 3; nCorrectors 5; nNonOrthogonalCorrectors 1; pRefPoint (0.01 0.01 0.01); pRefValue 0; } reconstructionSchemes { alpha.phase1 { method isoAlpha; isoAlphaMethod isoAlpha; alpha alpha.phase1; isoValue 0.5; surfaceCellSize 0; linearCorrection true; smoothNormals true; nSmoothNormals 3; cellNormalMethod corrected; faceNormalMethod corrected; } } relaxationFactors { fields { } equations { ".*" 1; } } FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default CrankNicolson 1; } gradSchemes { default Gauss linear ; } divSchemes { div(Phi,U) Gauss linearUpwind grad(U); div(rhoPhi,U) Gauss limitedLinearV 1; div(phi,alpha.phase1) Gauss interfaceCompression vanLeer 3; div(phirb,alpha) Gauss interfaceCompression; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div((muEff*dev(T(grad(U))))) Gauss linear; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } interfaceCompression { cAlpha 2; } wallDist { method meshWave; } fluxRequired { default no; p_rgh; pcorr; alpha.phase1; } FoamFile { version 2.0; format ascii; class dictionary; location "system"; object setFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // defaultFieldValues ( volScalarFieldValue alpha.phase1 1 ); regions ( cylinderToCell { p1 (0 0 0); p2 (0 0 0.004); radius 0.0003925; fieldValues ( volScalarFieldValue alpha.phase1 0 ); } ); FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application interIsoFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 0.2; deltaT 0.0001; writeControl adjustableRunTime; writeInterval 0.005; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes; adjustTimeStep yes; maxCo 5; maxAlphaCo 1; maxDeltaT 0.01; libs ("libfiniteVolume.so" "libsampling.so"); functions { bubbleTracking { type surfaces; libs ("libsampling.so"); surfaceFormat vtk; fields (alpha.phase1 U); surfaces ( bubbleSurface { type isoSurface; isoField alpha.phase1; isoValue 0.5; interpolate true; } ); executionInterval 5; } gasVolumeFraction { type volFieldValue; libs ("libfieldFunctionObjects.so"); enabled true; operation average; fields (alpha.phase1); mean on; base time; writeControl timeStep; writeInterval 1; log true; valueOutput true; writeFields false; surfaceFormat none; format csv; } FoamFile { format ascii; class volScalarField; location "0"; object epsilon; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -3 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type zeroGradient; } inlet { type fixedValue; value uniform 1.04e5; } nozzlewall { type epsilonWallFunction; value uniform 1e-6; } bottom { type epsilonWallFunction; value uniform 1e-6; } pipewall { type epsilonWallFunction; value uniform 1e-6; } } FoamFile { version 2.0; format ascii; class volScalarField; object k; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type zeroGradient; } inlet { type fixedValue; value uniform 11.34; } nozzlewall { type kqRWallFunction; value uniform 1e-6; } bottom { type kqRWallFunction; value uniform 1e-6; } pipewall { type kqRWallFunction; value uniform 1e-6; } } FoamFile { version 2.0; format ascii; class volScalarField; object nut; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type calculated; value uniform 0; } inlet { type calculated; value uniform 0; } nozzlewall { type nutkWallFunction; value uniform 0; } bottom { type nutkWallFunction; value $internalField; } pipewall { type nutkWallFunction; value uniform 0; } } FoamFile { version 2.0; format ascii; class volScalarField; object p_rgh; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; internalField uniform 0; boundaryField { outlet { type totalPressure; p0 uniform 0; } inlet { type fixedFluxPressure; value uniform 0; } nozzlewall { type fixedFluxPressure; value uniform 0; } bottom { type fixedFluxPressure; value uniform 0; } pipewall { type fixedFluxPressure; value uniform 0; } }

    具体就是这样,设定喷气体,容器里面充满液体,改了一个月也没怎么收敛,头大得很,之前画了个200w的网格,△t很小就调粗网格了,能够调成功的话打算在捕获相界面的方法上下点功夫。

  • 湍流普朗特数

    Fluent
    2
    0 赞同
    2 帖子
    2k 浏览
    M

    哥们你好,请问这个问题你解决了吗,谢谢你

  • 基于PIMPLE算流固耦合的数值方法优化

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

    一般情况,如果可以的话,piso+小Co更好一些。PIMPLE适合小Co算的时间步实在太长了难以忍受那种。

    你的初始残差什么样的。把你log贴一下

  • 单空泡溃灭

    OpenFOAM
    8
    0 赞同
    8 帖子
    1k 浏览
    S

    @李东岳 在 单空泡溃灭 中说:

    bubbleCollapse.tar.gz

    适配openfoam10

    @李东岳 在 单空泡溃灭 中说:

    bubbleCollapse.tar.gz

    适配openfoam10

    非常感谢

  • 0 赞同
    5 帖子
    78 浏览
    C

    假如约束太弱的话,就是会漂出去一段距离,也和实际情况相符。可以提高约束刚度试试。

  • 0 赞同
    15 帖子
    3k 浏览
    C

    @Prometheus10 对,“界面褶皱”的问题一直存在的,加密三相接触线附近网格会好一些,但是不能完全祛除,原因未知。

  • Openfoam虚拟机全系列压缩包损坏

    OpenFOAM
    4
    0 赞同
    4 帖子
    63 浏览
    C

    好嘞谢谢您

  • CFD算法编程课 买家秀

    CFD彩虹条
    24
    0 赞同
    24 帖子
    62k 浏览
    李东岳
    差评获奖感言

    5d92bd29-ea41-4f41-abb9-d497c5fb5c53-image.png

    之前我有一个朋友,聘用了一个月嫂。他们对月嫂的评价,并不是很好。但是他们还发现,之前还有人给月嫂送锦旗。朋友很难理解,为什么有人送锦旗,有人还嫌弃?我当时跟朋友说,每个家的情况不同,因此每个月嫂对每家的适用情况不一样,因此褒贬不一,这很正常

    产品褒贬不一,这在世界上所有的产品都存在的。顺丰有理赔,小米汽车有索赔,华为手机有粉有黑,就算是货币,在汇率低的时候都会被卖。我从来没见过任何一个产品,具有100%的好评。

    我自己非常能够理解产品的好评差评一定是共生的。然而自己的产品设计,遇到不好的评价,要用一生去治愈。

    捕获.JPG

    这个老铁23年9月来的。10月份回去后私下还微信问我几个问题。后来好像把我删了,公众号也没关注,上面是他唯一一条留言。不过他的评论,应该是真实的。

    除了这个课之外,我写的CFD公众号、《无痛苦ns方程笔记》、包括 dyfluid.com, 甚至 cfd-china.com ,也有人褒贬不一。尤其是CFD界公众号,隔三差五就有人骂人。骂人的我直接删了,感觉素质特别低。

    顺着这个话题,我们从技术的问题上,讨论一下潜在的差评来源。

    我的原因 课程没有PPT 课程不承诺给代码 课程结构设计 教室环境

    我的解决方案:

    没有PPT没有解决方法。我只能手推方程。想看PPT,我的课不合适。

    今年会给出一个方案。实在写不出来,你可以迂回的拿走源代码。但课程不给代码的原因,是我要让你们去写代码,而不是我给你们代码!!这个我强调很多遍了。要别人的代码不是学CFD的态度。方程你要自己推,代码你要自己写!

    我每年都会投入非常多的时间去课程设计。但众口难调。我这面风格非常严重。比如方程就是要手推,代码就是要你们自己写。如果你们想直接看方程,直接要能用的代码。我的课不适合你。

    针对教室环境这个。每年会议室都要花个几万块钱,这已经很贵了。我尽力找性价比高的

    学生的原因 本身主动性比较低

    主动性比较低。遇到卡壳你不问我,你就会跟不上。跟不上效果就会很差。

    我一直都在回答各种代码的问题,协助解决。但是有一些人真的是也不听我讲课,自己做跟课程完全无关的事情。因为我一直在教室下面来回走,有人举手我就解决,我能看到大家都在干什么。这我怎么说,我说你为什么不听课?我不可能说。

    主动性低可能有很多原因,一些可能是导师让来的,自己也不太愿意学(我见过一些)。一些可能是感觉学着学着感觉太难了,后面放弃了(较少)。

    最后说一个奇怪的现象

    另外,做这么10多年来,我见过2个课堂上睡觉的。

    只有2个。印象太深了。一个是北京某高校做可压缩的老铁。一个是青岛某研究院的老铁。青岛的老铁拿了个摄像机来录制。我阻止后,后续就趴桌子睡觉不听了。

    我也想不太明白。你花了这么多钱,为什么要来课堂上睡觉?这个我也不好处理,让他们走?人家花钱了。那咋整,那就睡吧。

    之前还有一次课程占了1天中秋假期。有学生留下匿名差评,说课程不考虑假期竟然安排在中秋节,谁中秋节还学习? 这种我属实控制不了。有些时候课程的时间不太好安排,只能这样了。

    正常的课堂效果

    正常的参加我的课程之后,你的效果应该是:

    之前学习OpenFOAM一年了感觉也不会编程,算法也看不太明白。课程5天时间里,主流的CFD算法也能听懂个80%。对算法有全局到细节的认识,一些东西可能还不是很懂,这需要回去消化。代码方面,你能写出来课堂上90%的求解器。虽然一些求解器没跟上。但自己写的时候遇到了上百个bug,问老师后都解决了。5天时间之后,自信心爆棚!回去跃跃欲试想自己植入自己的算法。

    另外,每个求解器,只要写出来的,我都会发礼品。因此我大体知道有多少人能写出来。那种热身的,基本都能写出来。

    复杂的求解器,估计有30%-50%的人能写出来。那剩下的人没写出来,一些人去做自己的不相关的科研去了,一些人临时有事,一些人纯主动性不足不想写这个特定的求解器。

    只要你主动的去吸收,主动问我,100%都能给你解决各种bug,所有求解器都能写出来

    在高中,流弊的老师,带100个学生,考上清华也只有2个。一个班级同样有排名靠后的。要做成任何一件事,都需要双方的努力。我好好备课,你好好去学。才能获得最好的效果。缺一不可。

  • 三维圆柱绕流案例

    OpenFOAM
    6
    0 赞同
    6 帖子
    103 浏览
    P

    @李东岳 好的 那我换个版本吧

  • snappy画船体网格

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

    是的

  • vmware虚拟机 复制粘贴不成功

    OpenFOAM
    4
    0 赞同
    4 帖子
    116 浏览
    C

    东岳老师,我之前电脑坏了现在电脑在重新下载Openfoam虚拟机全系列,发现你那个保存到百度网盘上的虚拟机全系列好像坏了,您能再上传一下吗,我解压的时候说压缩包已损坏

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

    @liuyk 神医啊,关闭超线程马上就解决了

  • 0 赞同
    8 帖子
    3k 浏览
    R

    或许可以在createClouds.H中声明多个basicSprayCloud对象,并将相应的源项添加进去

  • OpenFoam柴油机模拟求指导

    OpenFOAM
    8
    0 赞同
    8 帖子
    175 浏览
    L

    @李东岳 感谢老师,我已在那个帖子上上传了