User Tools

Site Tools


keynote:2011-lesson12

第十二课 水平集(二)


课程概要

1. Level set的基本方法

2. Level set的数值解法

3. Level set的建模方法与应用举例

4. PDE方法的未来

Revised by 陈林 11021072 2011/6/28/ 16:00

Level set的基本概念

定义

假设隐函数\phi(x,t)表示一个高维空间的方程,其在低维空间上的接触面为\phi(x,t)=0,其中

x=(x_1,x_2,\cdots,x_n)\in R^n,则level set方程 \Gamma(t) 有如下的性质,其中接触面表示为

\phi(x,t)<0 for x\in \Omega

\phi(x,t)>0 for x\not\in \Omega

\phi(x,t)=0 for x\in \partial\Omega

Revised by 陈林 11021072 2011/6/28/ 16:15

Level set的求解

Level set的运动可以表示为

\frac{\partial\phi}{\partial t}+v\cdot \nabla\phi=0

若设 v_{N}=v\cdot \frac{\partial \phi}{|\partial \phi|} 则有

\frac{\partial\phi}{\partial t}+v_{N}\cdot|\nabla\phi|=0

因此Level set方法本质上就是求解上述微分方程。

Revised by 陈林 11021072 2011/6/28/ 16:30

Level set求解的目标

如何列出有意义的方程求解实际问题

如何能快速、稳定地求出方程的数值解

Level set的常用数值解法

Upwind 差分法

Hamilton-Jacobi ENO

Hamilton-Jacobi WENO

TVD Runge-Kutta

求解Level set的数值方法一般分为3步:

1.用ENO,WENO或upwind方法求解对流项。 2.用中心差分的方法估算曲率。 3.用TVD RK方法来求解。

Revised by 张王晟 11021076

Upwind 差分

  假设t^n=n∆t
  ∂φ/∂t+v.∇φ=0=>(φ^(n+1)-φ^n)/∆t+v^n.∇φ^n=0
  根据CIR格式,先考虑一维的情况,当v^n>0时,曲线从左往右移动,所以要用到φ_i^n 左边的值,即用向后差分来估计∇φ^n . 同理,当v^n<0时,用向前差分。
  算法的精度 O(∆x)
  算法的稳定条件 ∆t max{|v_x |/Δx+|v_y |/Δy+|v_z |/Δz}∈(0,1)
  可见upwind差分法虽然简单,但是精度不高,计算速度慢

Hamilton-Jacobi ENO 方法

  ENO: Essentially Nonoscillatory(不波动,不摇动)  

 基本思想:用尽量光滑的多项式插值φ然后再求解φ_x。用HJ ENO方法可以更精确地估计φ_x^+或者φ_x^-。

  定义算子 D_i^0=φ_i
         D_(i+1/2)^1 φ=(D_(i+1)^0 φ-D_i^0 φ)/Δx 
         D_i^2 φ=(D_(i+1/2)^1 φ-D_(i-1/2)^1 φ)/2Δx
  WENO:  Weighted ENO 

 当计算〖(φ_x^-)〗_i时,三阶精度的HJ ENO算法需要知道{φ_(i-3),φ_(i-2),φ_(i-1),φ_i,φ_(i+1),φ_(i+2)}的值,共有3种HJ ENO估计〖(φ_x^-)〗_i的方法。定义

Revised by 盛佳 11021074 2011/6/19/ 20:00

TVD Runge-Kutta方法

TVD: total variation diminishing

优势:

1. 更高阶的精度

2. 更加一般的算法

一阶TVD RK就是向前Euler算法

二阶TVD RK和二阶RK算法相似

三阶TVD RK算法简介

\frac{\phi^{n+1}-\phi^n}{\Delta t}+v^n\cdot\nabla\phi^n=0

\frac{\phi^{n+2}-\phi^{n+1}}{\Delta t}+v^{n+1}\cdot\nabla\phi^{n+1}=0

\phi^{n+1/2}=3/4\phi^{n+1}+1/4\phi^{n+2}

\frac{\phi^{n+3/2}-\phi^{n+1/2}}{\Delta t}+v^{n+1/2}\cdot\nabla\phi^{n+1}=0

\phi^{n+1}=1/3\phi^n+2/3\phi^{n+3/2}

Revised by 陈林 11021072 2011/6/28/ 22:00

keynote/2011-lesson12.txt · Last modified: 2023/08/19 21:02 (external edit)