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. fvm::ddt(rho, T)与rho*fvm::ddt(T)的区别

fvm::ddt(rho, T)与rho*fvm::ddt(T)的区别

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

    假设我又一个这样的方程:
    $$\frac{\partial( \rho T)}{\partial t} = -\nabla \cdot (\vec{U}\rho T)$$

    其中$\rho$表示流体(比如水)的密度,根据状态方程及p,T计算出来。请问在离散的时候下面这两种写法的结果有什么区别?

    1. fvm::ddt(rho, T) == -fvm::div(phi,T);

    2. rho*fvm::ddt(T) == -fvm::div(phi,T);

    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #2

    区别应该在于密度是否可压吧

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

    fvm::ddt(rho,T) = $\frac{\p \rho T}{\p t}$, rho*fvm::ddt(T) = $\rho\frac{\p T}{\p t}$

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

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

    我最近在更新rhoFoam系列求解器,做了更深的工作,发现ddt这一项还有点意思,假设$t$为当前时间步,欧拉格式:

    • 在runTime++之前,fvc:ddt(T) = $\frac{T^t-T^{t-\Delta t}}{\Delta t}$;

    • 在runTime++之后,如果T进行TEqn.solve()更新,fvc:ddt(T) = $\frac{T^{t+\Delta t}-T^{t}}{\Delta t}$

    • 在runTime++之后,如果T没有进行TEqn.solve()之类的更新,fvc:ddt(T) = 0,因为$T^{t+\Delta t}=T^t$, 同时T.oldTime()也是$T^t$。,

    主要是代码中的vf,vf.oldTime()需要跟时间步对一下。

    所以fvm::ddt(rho, T)还需要考虑rhoEqn是否更新:

    • 如果在runTime++之后,进行了rhoEqn.solve(),那么fvm::ddt(rho, T) = $\frac{\rho^{t+\Delta t} T^{t+\Delta t}-\rho^{t} T^{t}}{\Delta t}$

    • 如果在runTime++之后,没有进行rhoEqn.solve(),那么fvm::ddt(rho, T) = $\frac{\rho^{t} T^{t+\Delta t}-\rho^{t-\Delta t} T^{t}}{\Delta t}$

    • 前者看起来更耦合在一起

    二者都不同于rho*fvm::ddt(T),因为其等于$\rho^{t+\dt}\frac{ T^{t+\Delta t}-T^{t}}{\Delta t}$(进行了rhoEqn.solve()),或$\rho^{t} \frac{T^{t+\Delta t}- T^{t}}{\Delta t}$(没进行rhoEqn.solve())

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

    闻 1 条回复 最后回复
  • C 离线
    C 离线
    ChimneyFoam
    写于 最后由 编辑
    #5

    @东岳 太感谢了!您这次来了一个非常透彻的分析,我的疑问已全部被解决。

    1 条回复 最后回复
  • 闻 离线
    闻 离线
    闻久STU
    在 中回复了 李东岳 最后由 编辑
    #6

    @李东岳 哇!!!透彻!!mark了,非常感谢

    1 条回复 最后回复
  • K 离线
    K 离线
    Krasus
    写于 最后由 编辑
    #7

    感谢解读,学习到了@李东岳

    1 条回复 最后回复
  • 李东岳李 李东岳 被引用 于这个主题
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #8

    我在无痛苦ns方程笔记里面增加了对这一行代码的解释:

    fvScalarMatrix alpha1Eqn
    (
        fvm::ddt(alpha1) - fvc::ddt(alpha1) // WHY???
      - fvm::laplacian(alpha1alpha2f()*pPrimeByA_(), alpha1)
    );
    
    alpha1Eqn.relax();
    alpha1Eqn.solve();
    

    尤其是其中的

     fvm::ddt(alpha1) - fvc::ddt(alpha1) // WHY???
    

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

    1 条回复 最后回复

  • 登录

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