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