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. bug in constrainPressure

bug in constrainPressure

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

    constrainPressure主要是更新压力第二类边界条件,公式如下:

    \begin{equation}
    \left( \nabla p_{rgh} \right)_f \cdot\bfn_f=
    \frac{\left(\mathbf{HbyA}_f^{*}- \frac{1}{{{A^n_{\mathrm{P},f}}}}(\bfg\cdot\bfh\nabla\rho)_f - \mathbf{U}_f \right)\cdot\bfS_f}
    {
    |\bfS_f|
    \frac{1}{{{A^n_{\mathrm{P},f}}}}
    }
    \end{equation}
    上述公式与代码并不一致。在OpenFOAM中,constrainPressure为

    forAll(pBf, patchi)
        {
            if (isA<fixedFluxPressureFvPatchScalarField>(pBf[patchi]))
            {
                refCast<fixedFluxPressureFvPatchScalarField>
                (
                    pBf[patchi]
                ).updateCoeffs
                (
                    (
                        phiHbyABf[patchi]
                      - rho.boundaryField()[patchi]
                       *MRF.relative(SfBf[patchi] & UBf[patchi], patchi)
                    )
                   /(magSfBf[patchi]*rhorAUBf[patchi])
                );
            }
        }
    

    多乘了一个密度。应该改为:

    forAll(pBf, patchi)
        {
            if (isA<fixedFluxPressureFvPatchScalarField>(pBf[patchi]))
            {
                refCast<fixedFluxPressureFvPatchScalarField>
                (
                    pBf[patchi]
                ).updateCoeffs
                (
                    (
                        phiHbyABf[patchi]
                      - MRF.relative(SfBf[patchi] & UBf[patchi], patchi)
                    )
                   /(magSfBf[patchi]*rhorAUBf[patchi]/rho.boundaryField()[patchi])
                );
            }
        }
    

    在非常老的OpenFOAM版本中,看起来是正确的,与公式一致

    setSnGrad<fixedFluxPressureFvPatchScalarField>
        (
            p_rgh.boundaryField(),
            (
                phiHbyA.boundaryField()
              - fvOptions.relative(mesh.Sf().boundaryField() & U.boundaryField())
            )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
        );
    

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复

  • 登录

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