CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    带源项的相方程离散疑问

    OpenFOAM
    3
    6
    1350
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小
      小考拉 最后由 编辑

      老铁们好!

      今天在研究interPhaseChangeFoam求解器中alphaEqn.H代码时,里面的一部分代码自己很困惑,,代码如下:

       if (MULESCorr)
          {
              fvScalarMatrix alpha1Eqn
              (
                  fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alpha1)
                + fv::gaussConvectionScheme<scalar>
                  (
                      mesh,
                      phi,
                      upwind<scalar>(mesh, phi)
                  ).fvmDiv(phi, alpha1)
                - fvm::Sp(divU, alpha1)
               ==
                  fvm::Sp(vDotvmcAlphal, alpha1)
                + vDotcAlphal
              );
      
              alpha1Eqn.solve();
      
              Info<< "Phase-1 volume fraction = "
                  << alpha1.weightedAverage(mesh.Vsc()).value()
                  << "  Min(" << alpha1.name() << ") = " << min(alpha1).value()
                  << "  Max(" << alpha1.name() << ") = " << max(alpha1).value()
                  << endl;
      
              talphaPhi = alpha1Eqn.flux();
          }
      

      这段代码是MULES 第一步 预测alphal的代码,其中一段代码(如下):

        fvm::Sp(vDotvmcAlphal, alpha1)
                + vDotcAlphal
      

      这个应该是离散源项的代码,在原始公式中对应为11111111111.png
      我又查找了对应的离散公式,感觉是这样的:222222.png
      我不明白:
      1.为什么要这样离散呢?
      2.222222.png 这两项对应的含义分别是什么呢?

      希望大家能够解答一下,也随时欢迎大家与我交流

      谢谢!

      1 条回复 最后回复 回复 引用
      • B
        BlookCFD 最后由 编辑

        因为在右端源项里面含有未知数alpha_l,为保证系数矩阵对角占优,当源项大于0时,一般直接做显式处理,而源项小于0时,做隐式处理。

        具体到这里,就是为了拆出小于0的隐式项和大于0的显式项。

        小 1 条回复 最后回复 回复 引用
        • 小
          小考拉 @BlookCFD 最后由 编辑

          @BlookCFD 多谢前辈指点:chitang:

          1 条回复 最后回复 回复 引用
          • 沐
            沐风 最后由 编辑

            同学,你好。很高兴发现你也从事interPhaseChangeFoam求解器相关研究工作。我想问一下,在interPhaseChangeFoam求解器主程序中,在pimple.loop()每次循环中中为什么要声明创建surfaceScalarField rhoPhi场,这样做的目的是什么?

            B 1 条回复 最后回复 回复 引用
            • B
              BlookCFD @沐风 最后由 编辑

              @沐风 没有什么特别的目的,就是写法问题,当然你也可以把它放到整个循环外面,只创建一次。

              沐 1 条回复 最后回复 回复 引用
              • 沐
                沐风 @BlookCFD 最后由 编辑

                @BlookCFD 谢谢,这个问题已解决,这个主要涉及到interFoam系列算法子循环求解相连续性方程并修正质量流率,可以将surfaceScalarField rhoPhi在循环外声明创建,但是循环内部每次循环初始值要赋0.

                1 条回复 最后回复 回复 引用
                • First post
                  Last post