CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    Operator Splitting跨越两个时间步长么?

    Algorithm
    3
    4
    2536
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 李东岳
      李东岳 管理员 最后由 李东岳 编辑

      有意思的小问题

      考虑有源项的对流方程
      \begin{equation}
      \frac{\p\phi}{\p t}+u\frac{\p \phi}{\p x}=-\beta\phi
      \end{equation}
      Operator Splitting的策略是首先步进纯对流问题(时间间隔$\Delta t$)
      \begin{equation}\label{div}
      \frac{\p\phi}{\p t}+u\frac{\p \phi}{\p x}=0
      \end{equation}
      其解为(显性,迎风)
      \begin{equation}\label{divSolution}
      \phi_i^{t+\Delta t}=\phi_i^{t}-\frac{u\Delta t}{\Delta x}\left(\phi^t_i-\phi^t_{i-1}\right)
      \end{equation}
      然后求解源项问题(时间间隔$\Delta t$)
      \begin{equation}\label{s}
      \frac{\p\phi}{\p t}=-\beta\phi
      \end{equation}
      解为(欧拉显性)
      \begin{equation}\label{sSolution}
      \phi^{t+\Delta t+\Delta t}_i=(1-\beta\Delta t)\phi_i^{t+\Delta t}
      \end{equation}
      那么,Operator Splitting是否步进了两个时间步长呢?在时间间隔$\Delta t$下,最终的解是$\phi^{t+\Delta t+\Delta t}$?

      答案

      并没有。很简单,如果将方程\eqref{divSolution}代入到\eqref{sSolution}有
      \begin{equation}\label{finalSolution}
      \phi_i^{t+\Delta t+\Delta t}=(1-\beta\Delta t)\left(\phi_i^{t}-\frac{u\Delta t}{\Delta x}\left(\phi^t_i-\phi^t_{i-1}\right) \right) \\
      =\phi_i^t-\frac{u\Delta t}{\Delta x}\left(\phi_i^t-\phi_{i-1}^t\right)-\beta\Delta t\phi_i^t+\frac{u\beta\Delta t^2}{\Delta x}\left(\phi_i^t-\phi_{i-1}^t\right)
      \end{equation}
      上面的方程,$\Delta t$如果很小,最后一项可以忽略,就是一个时间步啦

      :xiabanle: :xiabanle: :xiabanle: :xiabanle: :xiabanle:

      CFD高性能服务器 http://dyfluid.com/servers.html
      2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 李东岳 编辑

        另外一种Operator Splitting是对于方向的,考虑方程
        \begin{equation}
        \frac{\p\phi}{\p t}+\frac{\p u\phi}{\p x}+\frac{\p v\phi}{\p y}=0
        \end{equation}
        如果顺序先求解x,再求解y,What do you think ? :mianmo:

        CFD高性能服务器 http://dyfluid.com/servers.html
        2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

        1 条回复 最后回复 回复 引用
        • H
          Hungryandfool 最后由 编辑

          为什么这个要交opeartor splitting呢?没理解。

          Q 1 条回复 最后回复 回复 引用
          • Q
            Qing @Hungryandfool 最后由 编辑

            @Hungryandfool
            Operator 翻译过来叫做 ”算子“,也就是说,微分方程的空间项可以看作是不同的算子,比如 “对流”(散度),“扩散”(梯度);
            Splitting 的意义在于不同项可以相对独立的去求解,甚至采用完全不同的求解器,这样有利于提高计算效率,减小计算复杂性

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