User Tools

Site Tools


keynote:2011-lesson12

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
keynote:2011-lesson12 [2011/06/28 14:56]
11021072 [定义]
keynote:2011-lesson12 [2023/08/19 21:02] (current)
Line 1: Line 1:
 +====== 第十二课 水平集(二)======
 +\\
 +
 +======课程概要======
 +
 +1. Level set的基本方法
 +
 +2. Level set的数值解法
 +
 +3. Level set的建模方法与应用举例
 +
 +4. PDE方法的未来
 +\\
 +<​note>​Revised by 陈林 11021072 2011/6/28/ 16:​00</​note>​
 +======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$
 +
 +<​note>​Revised by 陈林 11021072 2011/6/28/ 16:​15</​note>​
 +======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方法本质上就是求解上述微分方程。
 +
 +<​note>​Revised by 陈林 11021072 2011/6/28/ 16:​30</​note>​
 +======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方法来求解。
 +<note important>​Revised by 张王晟 11021076</​note>​
 +
 +======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的方法。定义 ​
 +<note important>​Revised by 盛佳 11021074 2011/6/19/ 20:00</​note>​
 +
 +======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}$
 +
 +<​note>​Revised by 陈林 11021072 2011/6/28/ 22:​00</​note>​