====== 第十二课 水平集(二)======
\\
======课程概要======
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