Skip to content
  • 老版本OpenFOAM E-L多cloud的解决方式

    OpenFOAM
    1
    0 赞同
    1 帖子
    897 浏览

    参考coalChemistryFoam(OpenFOAM4)即可。
    注意在修改cloud的名称,引用,以及在各个方程中添加对应的源项。

    需要注意的是引用顺序,一定要在求解flow之前,不然两个cloud见到的Euler场是变化的。
    尤其在2-way coupling中非常重要。不然第二个cloud见到的flow是被改变的。

    同时,这个方法也有一个问题,也就是两个cloud相互之间是不可见的。
    如果考虑4-way的话,或者涉及到考虑整个cell中的theta()的话,这个方法是不正确的。
    因为两个cloud是相互独立的,求解的受力也都是独立的。

  • fluent中的抑制回流

    Fluent
    1
    0 赞同
    1 帖子
    2k 浏览
    齐彦鹏

    各位大佬,我想请教一个问题,我现在在研究压气机出口存在反传压力波的情况,这道波强度比较大,需要进行瞬态模拟,那我在fluent中数值模拟的时候,出口的抑制回流应该打开还是关闭

  • 几何模型

    Fluent
    1
    0 赞同
    1 帖子
    768 浏览
    W

    怎么在斜面上画出竖直的几何微信图片_20251012093941.jpg

  • codedfixedvalue实现运动边界速度的指定

    OpenFOAM
    1
    0 赞同
    1 帖子
    1k 浏览
    J
    type codedFixedValue; value uniform (0 0 0); // 初始速度 name UM2; // 自定义边界条件名称 codeInclude #{ #include "fvMesh.H" #include "polyPatch.H" #include "fvcMeshPhi.H" #include "addToRunTimeSelectionTable.H" #}; code #{ // 避免重复计算 if (this->updated()) { return; } // 获取网格和边界数据 const fvPatch& p = patch(); const polyPatch& pp = p.patch(); const fvMesh& mesh = internalField().mesh(); // 仅在网格运动时计算(静态网格跳过) if (mesh.moving()) { // 1. 计算上一时刻的面中心坐标 const pointField& oldPoints = mesh.oldPoints(); vectorField oldFc(pp.size()); forAll(oldFc, i) { oldFc[i] = pp[i].centre(oldPoints); // 基于上一时刻节点坐标 } // 2. 计算几何速度(位置变化/时间步长) scalar deltaT = mesh.time().deltaTValue(); vectorField Up = (pp.faceCentres() - oldFc) / deltaT; // 3. 通量修正确保连续性 const volVectorField& U = static_cast<const volVectorField&>(internalField()); scalarField phip = fvc::meshPhi(U, p.index()); // 网格运动产生的通量 vectorField n = p.nf(); // 边界法向量 scalarField magSf = p.magSf(); // 面面积 tmp<scalarField> Un = phip / (magSf + vSmall); // 通量对应的法向速度 // 4. 合成最终速度:几何速度 + 法向修正 // 公式:修正速度 = 原始速度 + 法向*(通量法向速度 - 原始法向分量) vectorField::operator=(Up + n*(Un() - (n & Up))); } // 调用父类方法完成更新 fixedValueFvPatchVectorField::updateCoeffs(); #}; codeOptions #{ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude #}; codeLibs #{ -lfiniteVolume \ -lmeshTools #};

    请教一下各位大佬,我想要通过codedfixedvalue实现movingwallvelocity这个边界条件的效果,这个代码是我仿照movingwallvelocity边界条件弄得,我用自己写的这个边界条件算了涡激振动,算出来的结果和movingwallvelocity结果几乎没有差别。计算完成后,我将输出结果导入tecplot,可以正常导入,但是切片时会出现以下报错,目前没有找到问题出在哪儿,应该是我写的这个边界条件tecplot无法识别导致的,但我不知道问题出在哪儿。
    641bf902-dad9-4f14-91ab-7f5bc7eda851-QQ20251011-140535.png

  • 0 赞同
    1 帖子
    860 浏览

    在V2412中,我的原始case是计算自由液面上漂浮的物体,可以正常运行。但是一改变浮体的尺寸(对应的质量和惯性矩都改好了,水的密度和粘性不变)就会发散。

    之后尝试了修改dynamicMesh里面的accelerationRelaxtion和accelerationDamp,发现修改后者到0.3以下才能正常运行算例
    然而当阻尼这么大时已经不符合真实情况了,浮体的运动受影响了。

    Github上有一个模组认为FloatingObject算例的added mass instability会造成这种发散:https://github.com/FloatStepper/FloatStepper但其不支持重叠网格。

    目前打算从OpenFOAM本身解决该问题,但无从下手...

  • 0 赞同
    1 帖子
    621 浏览
    R

    大家晚上好
    1136009f-4795-4f3b-8f6f-9fdd3b5900fa-image.png
    图中红线对应的是thermicity peak,类似的我想实时获得每个y对应的热释率最大值所在的位置,想问一下有没有大佬有经验呀!

  • 0 赞同
    1 帖子
    1k 浏览

    近期尝试使用compressibleInterDyMFoam计算近壁面空化泡的溃灭,但在计算一定时间后出现了一些与实际不符的现象。
    算例设置如下:
    初始气泡半径R0=0.1mm,距离壁面距离λ=2,原计算域大小为5mm5mm1mm,实际计算域取其1/4。草图如下:
    1265c60d-3e45-457e-84df-081f40874abd-image.png
    初始网格密度为Δx=Δy=Δz=0.025mm。后续用自适应网格进行加密,dynamicMeshDict:

    FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object dynamicMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dynamicFvMesh dynamicRefineFvMesh; //dynamicFvMesh staticFvMesh; dynamicRefineFvMeshCoeffs { // How often to refine refineInterval 1; // Field to be refinement on field alpha.water; // Refine field inbetween lower..upper lowerRefineLevel 0; upperRefineLevel 0.999; // If value &lt; unrefineLevel unrefine unrefineLevel 10; // Have slower than 2:1 refinement nBufferLayers 3; // Refine cells only up to maxRefinement levels maxRefinement 5; // Stop refinement if maxCells reached maxCells 6000000; // Flux field and corresponding velocity field. Fluxes on changed // faces get recalculated by interpolating the velocity. Use 'none' // on surfaceScalarFields that do not need to be reinterpolated. correctFluxes ( (phi none) (nHatf none) (rhoPhi none) (alphaPhi none) (alphaPhiUn none) (alphaPhi10 none) (alphaPhi1Corr0 none) (ghf none) ); // Write the refinement level as a volScalarField dumpLevel true; }

    计算到10.2μs后,气泡突然从溃灭状重新开始增大,而并没有完全溃灭,如图所示。
    10.2μs:
    a833b3e2-ebc9-43b4-8363-d153ec8db0e0-10.2um.png
    10.4μs:
    e248f2ea-78d2-4100-a3a9-551f88c499e3-10.4um.png

    想问问大家这是什么原因所导致的,可能会是初始场设置不合理或是边界条件设置不合理?
    初始场由于初始网格较疏以及后续加密的缘故,几个时间步后会变成这样:
    170ce1d8-861d-4cfb-857b-2e2da4ed06eb-初始场.png

    边界条件如下所示:
    alpha.water:

    boundaryField { wall { type zeroGradient; } outlet { type zeroGradient; } symmetry { type symmetry; } }

    p:

    boundaryField { wall { type calculated; value uniform 100000; } outlet { type calculated; value uniform 100000; } symmetry { type symmetry; } }

    p_rgh:

    boundaryField { wall { type fixedFluxPressure; gradient uniform 0; value uniform 100000; } outlet { type fixedFluxPressure; gradient uniform 0; value uniform 100000; } symmetry { type symmetry; } }

    T:

    boundaryField { wall { type zeroGradient; } outlet { type zeroGradient; } symmetry { type symmetry; } }

    T.air:

    boundaryField { wall { type zeroGradient; } outlet { type zeroGradient; } symmetry { type symmetry; } }

    T.water:

    boundaryField { wall { type zeroGradient; } outlet { type zeroGradient; } symmetry { type symmetry; } }

    U:

    boundaryField { wall { type noSlip; } outlet { type zeroGradient; value uniform (0 0 0); } symmetry { type symmetry; } }
  • 0 赞同
    1 帖子
    853 浏览

    非均匀温度边界条件可以通过codedFixedValue轻松实现,
    带壁厚的温度边界条件可以通过externalWallHeatFluxTemperture实现。
    如代码所示:

    \\非均匀温度边界条件 wall { type codedFixedValue; name dummy; code #{ const vectorField& Cf = patch().Cf(); const scalar a0 = 0.1; forAll(Cf, faceI) { const scalar y = Cf[faceI].y(); (*this)[faceI] = a0*y; } #}; } \\薄壁温度条件 wall { type externalWallHeatFluxTemperature; mode coefficient; h uniform 1e10; Ta 1620; thicknessLayers (0.015); kappaLayers (4); kappaMethod fluidThermo; value $internalField; }

    但是,当我想像下面这样编程使Ta为非均匀值时,会报错,即使我使用了codeInclude codeOptions codeLibs之后,仍会报错 ‘patch’ was not declared in this scope,似乎在externalWallHeatFluxTemperature中,无法访问到网格信息。请问各位大佬有解决办法吗?或者有没有别的办法实现带薄壁的非均匀温度边界呢?

    ‘vectorField’ does not name a type ‘Cf’ was not declared in this scope Ta coded; code #{ const vectorField& Cf = patch().Cf(); const scalar a0 = 0.1; forAll(Cf, faceI) { const scalar y = Cf[faceI].y(); (*this)[faceI] = a0*y; } #};
  • fluidsolver和isothermalfluid的继承关系问题

    OpenFOAM
    1
    0 赞同
    1 帖子
    780 浏览
    M

    各位老师好,之前我都在of10中修改求解器,但最近换到了of13,我希望去更改buossinesq假设时的求解器代码,但是对于fluidsolver和isothermalfluid的继承感到困惑,在官网看到fluidsolver继承isothermalfluid,但在fluidsolver中我并未找到相关代码,因此想请教各位在模块化代码下要怎么去修改求解器,谢谢大家!

  • 两相流自由液面处速度场异常

    OpenFOAM
    1
    0 赞同
    1 帖子
    975 浏览
    liujmL

    各位老师好,

    最近在使用K-omega SST湍流模型处理两相流的时候发现自由液面处的速度异常,但是不影响波面,如图所示。请问,这种情况是什么引起的,会影响计算结果吗?要如何解决?

    万分感谢!

    662a54c8-2f33-4bff-ac92-c8c5059e396d-image.png

  • 如何验证网格的二阶收敛精度

    OpenFOAM
    1
    0 赞同
    1 帖子
    891 浏览
    L

    simpleFoam求解的定常问题,用的空间离散格式都是二阶的,审稿人让验证网格的二阶收敛精度。不知有没有人用过paraview将稀网格数据插值到密网格上并算过残差E和收敛阶次p?另外对于很复杂的三维网格,网格的非均匀性对收敛阶次公式的计算又该如何考虑呢?
    35fb0dd0-05d4-4fcf-b850-3b3e8d317042-image.png

    be5eddf7-3dd1-41c7-b320-e9fa9531fffc-image.png

  • PIMPLE发散, PISO就发散

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

    Hi,

    我这现在在做欧拉拉格朗日模拟,2-way。然后在模拟中途就爆掉了。。检查了一下flow,发现整个flow都乱掉了,因为parcel的聚集,毕竟两者是相互影响的。

    但是神奇的是,同事把PIMPLE改为了PISO就过了。
    理解不了为什么。

    flow.0068.png

    flow.0069.png

    flow.0070.png

    flow.0071.png

    flow.0072.png

    flow.0073.png

    下面两个图是根据log文件画的,pimple 的拟合造成了温度场和压力场的变化?理解不了?求解惑

    WhatsApp Image 2025-09-25 at 12.08.19.jpeg

    WhatsApp Image 2025-09-25 at 12.08.07.jpeg

  • rhoCentralFoam求解器有没有更新MRF

    OpenFOAM
    1
    0 赞同
    1 帖子
    837 浏览
    Y

    rhoCetralFoam求解器可不可以增加MRF功能。目前,有没有哪个版本做出更新,希望知道的大佬能给点提示

  • Rheointerfoam求解不稳定

    OpenFOAM
    1
    0 赞同
    1 帖子
    860 浏览
    WeakFormW

    目前在用open foam9版本的rheotool求解粘弹性单气泡上升问题,
    使用PPTLog模型或者FENE-CRLog模型稳定性都很差,Co数缩小到0.05依然发散,GiesekusLog模型能够收敛但是气液界面看起来很怪,不是光滑的水滴型。
    a3619796-3abb-4e40-9a05-b1c5fb886877-image.png
    仿真主要设置参考的官方case,即theta的散度离散采用高阶形式,
    PPT模型和fene模型主要发散都发生在theta计算特征值或者计算应力时候发散,使用clipping办法限制相关量的范围也没有取得很好的效果
    各位前辈有没有好的建议

  • OF13 源代码编译 找不到scotch.h

    OpenFOAM
    1
    0 赞同
    1 帖子
    757 浏览

    ubuntu 24.04 OF13 编译 找不到scotch.h
    解决办法:https://bugs.openfoam.org/view.php?id=4270
    安装bison

  • 求教:畸形波模拟的方法。

    OpenFOAM
    1
    0 赞同
    1 帖子
    935 浏览
    hanxiaoruiniuH

    畸形波无论是在fluent还是在openfoam中模拟方法都未有明确作法,请大家指导一下模拟方法。

  • buoyantFoam代码问题求助

    OpenFOAM
    1
    0 赞同
    1 帖子
    843 浏览
    M

    在pEqn.H中对U进行更新时有

    const surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);

    我想请问其中的p_rghEqn.flux()代表什么意思,以及为什么phig中要先乘rhorAUf再在U中除以rhorAUf;
    以及之后的根据密度差判断收敛性中,我发现compressibleContinuityErrs.H代码如下,只计算了误差值,但没有判断是否符合要求,想请问各位大佬是在哪里判断的呢

    dimensionedScalar totalMass = fvc::domainIntegrate(rho); scalar sumLocalContErr = (fvc::domainIntegrate(mag(rho - thermo.rho()))/totalMass).value(); scalar globalContErr = (fvc::domainIntegrate(rho - thermo.rho())/totalMass).value(); cumulativeContErr += globalContErr; Info<< "time step continuity errors : sum local = " << sumLocalContErr << ", global = " << globalContErr << ", cumulative = " << cumulativeContErr << endl; }

    谢谢大家!

  • spaceclaim里面两个紧贴的体无法合并

    Meshy
    1
    0 赞同
    1 帖子
    1k 浏览
    Y

    这俩体明明是有接触的,但就是合并不了0f0e9e47-e759-425d-890a-5397db277833-image.png

  • 0 赞同
    1 帖子
    897 浏览
    R

    求助各位大佬们,我计算了一个冷态的流场,中心氮气携带颗粒,周围为旋转流入的氧气。在计算一段时间后,我想用setFields进行点火。一开始尝试给到1800K,但很快发散了。目前尝试先加到600K。
    但是在测试中,会出现奇怪的升温(关闭了combustion、chemistry)。之后会一直升温,直到温度超出物理限制后报错。测试了很多方面也不知道是为什么。我观测到的是,这个升温的区域和速度场有一些近似,但不知道有没有什么关系。求助各位老师同学们指点一下迷津,实在是想不明白了ToT。

    冷态流场速度图:
    0234e30a-07ff-4e2e-be53-71bf8ed6a5fb-image.png
    全场升到600K后,计算一步的温度图(入口和壁面温度边界都给的300K;出口给的zeroGradient但出口在很下游,图中并未截取到):
    5cc79fe6-f5c3-429a-97cf-1b13101abad9-image.png

  • ICEM 延伸切报错,提示找不到edge

    Meshy
    1
    0 赞同
    1 帖子
    898 浏览
    iimp271I

    如图,报错提示找不到edge213 214
    b0083f92-0d11-4f6c-a54c-5290161735a9-380e52f758ab5917db2f5c22ab1bf81a.png

    但我选择的edge编号是213 214-1
    a7290fc7-3e13-4f61-a2c0-91abfa977032-a1c5e1665748315b0eba74a5a64ffe9a.png

京ICP备15017992号-2