算子分裂算法介绍(Introduction to Operator Splitting algorithms)

算子分裂(operator splitting algorithm). 考虑 不可压缩NS方程, 包含非线性对流项,粘性扩散项,压力梯度项。如果采用一个算子描述这三项,那么该算子会有非常多限制,不便计算。而考虑将这三项拆开,那么将得到三个基本方程(对流方程,波松方程,拉普拉斯方程),而且基本方程的数值算法可选项非常丰富。这就是算子分裂的意义。当然,拆分后的算子与原算子到底在多大程度上一致,也是该类算法的一个问题。


  1 经典算子分裂算法

  举例, 方程 du/dt = (A + B) u

  1.1 Lie - Troter 分裂  --  基于初始条件的分裂考虑

  step 1 :  solve dv/dt = A * v  with I.V.  v(t^n) = u(t^n)

  step2:   solve du/dt = B * w with I.V.  u(t^n) = v(t^(n+1)),  where  v( t^(n+1)) coming from step 1

  step3:  update  u(t^n) = u(t^(n+1)) and goto step 1


  1.2 Strang-Marchuk 分裂

  step 1:  solve dv/dt = A * v with I.V.  v(t^n) = u(t^n)

  step 2:  solve dw/dt = B * w with I.V. w(t^n) = v(t^(n+1/2)), coming from step 1

  step 3:  solve du/dt = A * u  with  I. V.   u(t^(n+1/2)) = w(t^(n+1))

  step 4 :  update  u(t^n) =  u(t^(n+1))


   1.3 Chorin's 投影法(very common, seen in mit-8086 nssolver.m

    step 1 :  explicit convection solver,   u* - u^t = dt * A * u^t

    step 2:   implicit diffusion solver,  u** - u* = dt * D * u**  

    step 3:   Implicit Pressure Solver,  laplace(p^(n+1)) =  - rho/dt * div(u**)

    step 4:   Velocity Correction,  u^(t+1) = u** - dt/rho * grad(p^(n+1)) 


   2  ADI 格式的算子分裂

   2.1  PR分裂

   step 1 : (u^(n+1/2) - u^n) / (dt/2) = A u^(n+1/2) + B u^n

   step 2:  ( u^(n+1) - u^(n+1/2)) / (dt/2) =  A u^(n+1/2) + B u^(n+1)


   2.2  DR 分裂

   step 1:   ( u* - u^n) / dt = A u* + B u^n

   step 2:   (u^(n+1) - u*) / dt = A u* + B u^(n+1)

   ADI 格式:首先,矩阵A, B都是三对角,计算方法很多,但ADI格式精度最高不超过2阶...


   3  迭代格式的算子分裂 (构造不动点迭代)

  step 1:  du^n/dt = A u^n + B u^(n-1)

  step 2:  du^(n+1) / dt = A u^n + B u^(n+1)

  迭代格式:可以实现任意精度

 

  

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值