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. icoFoam求解器解析中问题。

icoFoam求解器解析中问题。

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

    大家好,在icoFoam解析中

            volScalarField rAU(1.0/UEqn.A());
            volVectorField HbyA("HbyA", U);
            HbyA = rAU*UEqn.H();//公式(15)
    

    UEqn.A()、UEqn.H()是什么意思?

    OF界的小学生

    C 1 条回复 最后回复
  • C 离线
    C 离线
    CFD中文网
    在 中回复了 OF九月九 最后由 编辑
    #2

    @OF九月九 在 [icoFoam求解器解析中问题。]

    \begin{equation}
    UEqn.A() = \frac{1}{{{A_\mathrm{p}}}}
    \end{equation}

    \begin{equation}
    UEqn.H() = \left( { - \sum {{A_\mathrm{n}}u_n^r} + E_\mathrm{p}^r} \right)
    \end{equation}

    Clear?

    :sunglasses:

    CFD中国标准用户测试帐号
    目前由徐笑笑登录

    张某人张 1 条回复 最后回复
  • O 离线
    O 离线
    OF九月九
    写于 最后由 编辑
    #3

    我知道是这个,我以为.A()和.H()包含什么重要东西呢。谢了!:happy:

    OF界的小学生

    1 条回复 最后回复
  • 张某人张 离线
    张某人张 离线
    张某人
    在 中回复了 CFD中文网 最后由 编辑
    #4

    @cfd中文网 你好,不过似乎UEqn.A()应该等于Ap吧。按你给出的定义,rAU*UEqn.H()就等于Ap*UEqn.H()了,这和HbyA的定义不一致了。

    让回流区再发展一会儿~

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

    是的,你说的正确,UEqn.A()等于Ap。

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

    1 条回复 最后回复
  • M 离线
    M 离线
    maoyanjun_dut
    写于 最后由 编辑
    #6

    if (nonOrth == nNonOrthCorr)
    {
    phi = phiHbyA - pEqn.flux();
    //使用求解的压力场修正通量场,在最后一次修正的时候通量守恒,Issa指出,大约需要2-3次内循环步。
    //对应方程(26),pEqn.flux()返回方程(26)方程右边第二项,也为fvc::interpolate(rUA)*fvc::snGrad(p)*mag(mesh.Sf())。
    //某些可压缩求解器其中的pEqn.flux()可能为+号,即为phi = phiHbyA + pEqn.flux()。这是因为pEqn中的laplacian项为−号
    }
    @东岳 做个勘误,注释中的 fvc::interpolate(rUA)*fvc::snGrad§*mag(mesh.Sf()) 似乎应该是 rAU

    还行麻烦解释一下

    surfaceScalarField phiHbyA
                (
                    "phiHbyA",
                    (fvc::interpolate(HbyA) & mesh.Sf())
                    //此处依据Rhie-chow插值原理,HbyA使用线性插值得到,
                    //即需要在算例中设定interpolate(HbyA)的格式
                  + fvc::interpolate(rAU)*fvc::ddtCorr(U, phi)
                );
    

    里面的 fvc::interpolate(rAU)*fvc::ddtCorr(U, phi) 的 意思。谢谢啦。

    Blog:http://maoyanjun.top
    厚德如海,纳川有藏。上善若水,利物不张。大哉斯言,勤勉勿忘。

    1 条回复 最后回复
  • 张某人张 离线
    张某人张 离线
    张某人
    写于 最后由 编辑
    #7

    @东岳 李老师,您好。个人认为icoFoam解析中公式(22)->(23)推导过程中,(22)式等号右侧高斯积分中的1/Ap,f在(23)式中应该变成散度项里的1/Ap。

    让回流区再发展一会儿~

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

    @张某人 多谢,已更新
    @maoyanjun_dut 有空我研究研究

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

    winsway_zeroW 1 条回复 最后回复
  • winsway_zeroW 离线
    winsway_zeroW 离线
    winsway_zero
    在 中回复了 李东岳 最后由 编辑
    #9

    @李东岳 李老师,您好。volScalarField rAU(1.0/UEqn.A());这个重理论上分析应该是矢量才对,但是细节上的操作确实做成了体标量场。

     template<class Type>
     Foam::tmp<Foam::volScalarField> Foam::fvMatrix<Type>::A() const
     {
         tmp<volScalarField> tAphi
         (
             volScalarField::New
             (
                 "A("+psi_.name()+')',
                 psi_.mesh(),
                 dimensions_/psi_.dimensions()/dimVol,
                 extrapolatedCalculatedFvPatchScalarField::typeName
             )
         );
     
         tAphi.ref().primitiveFieldRef() = D()/psi_.mesh().V();
         tAphi.ref().correctBoundaryConditions();
     
         return tAphi;
     }
    

    $ A=\frac{A_p}{\Delta V}$
    在计算系数Diag的过程中,将边界对主对角线的系数进行了平均更新:

     template<class Type>
     Foam::tmp<Foam::scalarField> Foam::fvMatrix<Type>::D() const
     {
         tmp<scalarField> tdiag(new scalarField(diag()));
         //这里进行了平均处理并修正了主对角线系数。
         addCmptAvBoundaryDiag(tdiag.ref());
         return tdiag;
     }
    

    为什么这样操作呢?这样会使得系数矩阵不一样了!

    1 条回复 最后回复

  • 登录

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