Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. Simple算法中通量phi的计算

Simple算法中通量phi的计算

已定时 已固定 已锁定 已移动 OpenFOAM
16 帖子 5 发布者 13.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • D 离线
    D 离线
    dzw05 超神
    写于 最后由 编辑
    #1

    多数求解器都采用的是simple类方法,以icoFoam为例,压力方程求解过程中更新phi的语句为 phi = phiHbyA - pEqn.flux(),然后又用 U = HbyA - rAU*fvc::grad(p)更新了速度;速度更新之后,又用U.correctBoundaryConditions()修正速度的边界条件。
    但问题是,自始至终程序也没有对通量phi进行修正,也就是说在边界处phi是不正确的。不知道是我没有找到phi边界修正,还是程序中就是没有这项?@东岳

    自主匠心,普惠仿真。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #2

    也就是说在边界处phi是不正确的。不知道是我没有找到phi边界修正,

    边界处的phi不需要计算,是用户给的。加入速度1m/s,乘以网格边界面积,就是phi啊,并且不变。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    D Q 2 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 李东岳 最后由 编辑
    #3

    @东岳 边界条件只是给了变量本身,并没有计算通量吧。

    自主匠心,普惠仿真。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #4

    给了速度,通量补救顺其自然的确定了么

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    D 1 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 李东岳 最后由 编辑
    #5

    @东岳 代码中用 phi = phiHbyA - pEqn.flux()求通量,而不是通过U求通量。在边界条件中并没有找到显式通过U修正边界通量的语句。

    自主匠心,普惠仿真。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #6

    phi = phiHbyA - pEqn.flux()是对phi内部面的赋值,phi的边界面给定U,phi边界面自动确定

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    D 1 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 李东岳 最后由 编辑
    #7

    @东岳 额,我现在的问题,就是不知道Phi的边界面在哪里自动确定的:(,在进行哪一步操作的时候确定的呢?

    自主匠心,普惠仿真。

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 dzw05 最后由 编辑
    #8

    @dzw05 phi是surfaceScalarField,是没有boundary face的。

    D 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #9
    surfaceScalarField phi
    (
        IOobject
        (
            "phi",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        linearInterpolate(U) & mesh.Sf()
    );
    

    https://coding.net/u/dyfluid/p/OpenFOAM-1.6/git/blob/master/src/finiteVolume/cfdTools/incompressible/createPhi.H

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 wwzhao 最后由 编辑
    #10

    @wwzhao 其实也是有boundaryface的,在phi文件中,是会出现boundaryField的。

    自主匠心,普惠仿真。

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 dzw05 最后由 编辑
    #11

    @dzw05 surfaceScalarField的boundary field总是calculated或empty,所以相当于没有。此外,surfaceScalarField的嵌套类Boundary没有initEvaluate和evaluate两个函数,所以调用surfaceScalarField的correctBoundaryConditions时会编译报错不通过。

    D 1 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 wwzhao 最后由 编辑
    #12

    @wwzhao 对于boundary field这里明白了,多谢。但回到我帖子的问题,也就是说phi的boundary field没有进行显式的更新,那么以icoFoam为例,压力方程求解过程中更新phi的语句为 phi = phiHbyA - pEqn.flux(),这里求得的通量phi的边界是怎么保证正确的呢?尤其是对于wall边界条件,通量应该是零。

    自主匠心,普惠仿真。

    1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    写于 最后由 编辑
    #13

    @dzw05

    对流项的离散需要用到通量,internal face上的通量即为phi,而boundary face上的通量则通过U计算得到。

    用PISO/SIMPLE算法得到的速度场是天然守恒的,所以boundary face上的通量肯定没有问题。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #14

    :chouchou:

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • D 离线
    D 离线
    dabiu
    写于 最后由 dabiu 编辑
    #15

    我同样有个问题就是通量是用phi = phiHbyA - pEqn.flux()修正 ,为什么不直接在下面这条语句的后面直接用phi = fvc::flux(U)来更新呢,这样直接顺带把边界也更新了?

    U = HbyA - rAU*fvc::grad(p);
    U.correctBoundaryConditions();
    

    @dzw05 @李东岳 @wwzhao

    1 条回复 最后回复
  • Q 离线
    Q 离线
    qingdong_wang
    在 中回复了 李东岳 最后由 编辑
    #16

    @李东岳 在 Simple算法中通量phi的计算 中说:

    也就是说在边界处phi是不正确的。不知道是我没有找到phi边界修正,

    边界处的phi不需要计算,是用户给的。加入速度1m/s,乘以网格边界面积,就是phi啊,并且不变。

    如果是pressureInletVelocity 边界呢? 代码里可以看出pressureInletVelocity 需要用边界上的phi来更新出新的边界速度。如果是这种边界边界上的phi又应该如何确认呢?

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]