资源求助,interfoam加上传热得代码(of5.x)

想学习interfoam在气液之间得传热,该如何在interfoam上面添加传热来实现这个求解器,多谢各位了

不知道其他同学有没有现成的代码,不过,我可以提供给你基本流程:

  1. 假设数学公式是这样的
\frac{\partial T}{\partial t} + \nabla\cdot(UT) = \nabla^2 (\alpha_T T)
  1. 创建一个场,具体可以参照 interFoam 里面的 createFields.H,这里的 T 就是公式中的 T
    volScalarField T
    (
        IOobject
        (
            "T",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh
    );
  1. 读取所需的系数 alphaT
  2. 将数学模型翻译成 OpenFOAM 能识别的方程
        solve
        (
            fvm::ddt(T)
          + fvm::div(phi, T)          // phi 为 U 在面上的通量
          - fvm::laplacian(DT, T)     // DT 为公式中的 alpha
        );
  1. 将第三步的代码插入 interFoam 相应位置,一般是在 U、p 计算完之后
  2. 如果 U 方程里面有涉及到的 T 变量项,可以将其列入,比如
        fvVectorMatrix UEqn
        (
            fvm::ddt(U)
          + fvm::div(phi, U)
          - fvm::laplacian(nu, U)
         ==
           -beta*(T - T0)*g
        );

只是其中的 beta T0 g 需要从文件中读取
7. 编译可以了。如果有问题再改。

由于是 interFoam ,所以你里面的一些系数都是两份,要注意读取方面的问题。

,前辈,我按照您这个方法编译完成但是在计算得时候,我已经在constant里面定义DT,却显示未定义

是怎么定义的?在程序中又是怎样读取的?

image image
就是这样定义得和读取得,前辈您看看

这个读取是直接在 transport 里面操作,而不是相的属性,你需要的是读取相的属性。

这样读比较好

    IOdictionary transportProperties
    (
        IOobject
        (
            "transportProperties",
            runTime.constant(),
            mesh,
            IOobject::MUST_READ,
            IOobject::NO_WRITE
        )
    );

dimensionedScalar DT1(transportProperties.subDict("water").lookup("DT"));
dimensionedScalar DT2(transportProperties.subDict("air").lookup("DT"));

    volScalarField DT
    (
        IOobject
        (
            "DT",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        alpha1*DT1 + (1-alpha1)*DT2
    );

记得把版本写在你前面的帖子上。

前辈我在编译时候保证这个统一把(1-alpha1)写成alpha2,编译可以但是还是constant里面怎么都有错误 开始这样写image 后来改成image 。还是报错

DT 这样写

DT      DT [0 2 -1 0 0 0 0] 0.59;

好的,已经可以计算了,我在再添加一些其他得热特性试试,谢谢前辈,太麻烦您了。前辈如果想再加上一个粘度随温度变化,这个有没有好的思路,我想直接添加粘度随温度变化的函数这个想法可以吗

因为你使用的是 interFoam,其粘度是两相迭加的,即

\eta = \alpha_1 \eta_{10} + \alpha_2\eta_{20}

是封装在两相流模型里面的,所以不能直接应用,而是需要更深层一点的库的改写。

\eta = \alpha_1 \eta_1(T) + \alpha_2\eta_2(T)

好的,谢谢前辈,那就是我可以找到粘度的src文件在里面进行修改么

前辈,我在这个输运模型下面看不可压缩里面有粘度模型,两相流框架下没找到粘度相关的

Sorry, 这几天有点忙,才上来。

两相流的粘度是两个相的组合,实际上应该到不可压缩里面找 viscosityModels

没事的,谢谢前辈哈,前辈我这样处理您觉得行吗,就是不管之前的粘度我重新声明一个粘度加到动量方程在laplac里面替换之前的nu,然后给这个新的粘度定义成为image ,这样行么

这样做也是可以的,就是新建一个场。

好的,谢谢前辈,前辈您对这个vof界面的重构有研究吗