Skip to content
  • fluent中的抑制回流

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

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

  • 几何模型

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

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

  • 计算作用于cellZone上的压力和剪切力

    OpenFOAM
    12
    0 赞同
    12 帖子
    5k 浏览
    liujmL

    @Linzd 多孔介质区域在toposet的时候本身只是选中了cell集合,只有在壁面上才能通过原始代码计算法向力和切向力。

  • 爆炸计算压力震荡

    OpenFOAM
    2
    0 赞同
    2 帖子
    352 浏览

    Kurganov改成HLLCP试试看

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

    OpenFOAM
    1
    0 赞同
    1 帖子
    34 浏览
    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 帖子
    34 浏览

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

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

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

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

  • 0 赞同
    143 帖子
    583k 浏览
    C

    @chon01 NUMERICAL SIMULATIONS ON FLOW AROUND AN INCLINED CIRCULAR CYLINDER AT HIGH REYNOLDS NUMBER

  • paraview后处理.vtp文件

    OpenFOAM
    1
    0 赞同
    1 帖子
    21 浏览
    X

    d5736c60-cc3d-43e4-b7ea-972ee720849d-image.png 由于我的时间步比较小,会生成许多的.vtp文件,最少得有1000个,有没有能够批量处理vtp文件的方法呢

  • triSurfaceMesh对象切割cell单元

    OpenFOAM
    2
    0 赞同
    2 帖子
    144 浏览
    A

    是想用基于cut CELL的浸没边界法? 可以参考FOAM Extend 4.1 之后的做法, 找ibPatch

  • 求助centos安装openfoam

    OpenFOAM
    2
    0 赞同
    2 帖子
    104 浏览
    A

    CentOS 7 上是能无root权限安装OpenFOAM的, 就是需要自己编译某些依赖, 比如说flex, bison之类的. 主要看想要安装OpenFOAM的哪些版本吧, 毕竟G++可能需要不同的版本

  • 关于wave2foam造波问题

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

    @liujm 对的,通常我们计算整个风机都是采用komegaSST湍流模型,毕竟这个湍流模型基本上是做风机的都会用的,很少用其他湍流模型。

  • 0 赞同
    1 帖子
    51 浏览
    R

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

  • 离散伴随和连续伴随的优劣

    Algorithm
    8
    0 赞同
    8 帖子
    8k 浏览
    N

    @木木枭 我在做离散伴随,大佬有机会的话交流哇

  • 请教大佬们关于后处理中的阻力计算

    OpenFOAM
    9
    0 赞同
    9 帖子
    283 浏览
    N

    @xpqiu 感谢感谢

  • 网格y+求助

    OpenFOAM
    2
    0 赞同
    2 帖子
    112 浏览
    C

    网格只是全都正交的空计算域网格,还是有放几何的网格。记得之前用ICEM的 o-block 画的方柱网格,看起来质量还行,其实网格质量很差,用fluent的PISO求解器都发散

  • ubuntu 24 使用OF4

    OpenFOAM
    4
    0 赞同
    4 帖子
    393 浏览

    @Noob 这个要看你超算的singularity设置了。这个超算不是我们搞得,所以不太清楚,至少目前一个node是没问题的。
    不过我在运行的时候提示过inifiniteband 相关的library缺失。

    我不确定你的情况,具体你得问超算admin怎么设置singularity的。理论上应该是没问题的

  • 0 赞同
    1 帖子
    81 浏览

    近期尝试使用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 赞同
    2 帖子
    143 浏览

    我现在想明白了,我要自定义的热流条件是基于流固界面两侧物理量的,也就是说在不coupled的条件下,也体现了高温风流对低温相变板的加热作用,此时流体一侧的shadow面绝热是没有问题的,湿空气与相变板之间传热的相互作用体现在两者温差上。

  • 0 赞同
    4 帖子
    3k 浏览
    WeakFormW

    我参考HZDR的代码弄了个setbubble小工具,让气泡初始化就是圆的:5be8a963-f837-4652-9c92-a44ffd016afd-image.png
    但是我的问题是进行计算之后貌似界面的细化很差,很多界面细化网格级别没达到最低,不知道您怎么解决的这个问题:
    2964e223-615d-4d60-81f0-7a70f7db825d-image.png

  • 0 赞同
    1 帖子
    98 浏览

    非均匀温度边界条件可以通过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; } #};
京ICP备15017992号-2