This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
keynote:2011-lesson12 [2011/06/28 14:54] 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> | ||