20190802个人笔记(川大)

官网课程视频地址

笔记主页

复习回顾

{ut+f(u)x=0u(x,0)=u0(x) \begin{cases} u_t + f(u)_x = 0\\[1em] u(x,0) = u^0(x) \end{cases}

Limiter格式1

k=0情形

k=0k=0
uˉjn+1=uˉjnλ(f^Rf^L)=Hλ(uˉj1n,uˉjn,uˉj+1n). \bar u^{n+1}_j = \bar u^n_j - \lambda(\hat f_R - \hat f_L) = H_\lambda(\bar u^n_{j-1}, \bar u^n_{j}, \bar u^n_{j+1}).

容易验证HλH_\lambda关于每个变量都是增函数。

如果muˉjn+1Mm \leq \bar u_j^{n+1} \leq M,很显然有

Hλ(uˉj1n,uˉjn,uˉj+1n)Hλ(m,m,m). H_\lambda(\bar u^n_{j-1}, \bar u^n_{j}, \bar u^n_{j+1}) \geq H_\lambda(m,m,m).

k>0情形

k>0k>0

uˉjn+1=uˉjnλ(f^(uRj,uLj+1),f^(uRj1,uLj)) \bar u^{n+1}_j = \bar u^n_j - \lambda( \hat f(u^j_R, u_L^{j+1}), - \hat f(u^{j-1}_R, u_L^{j}))

此时
uˉjn+1=Gλ(uˉjn,uRj,uLj,uRj1,uLj1). \bar u^{n+1}_j = G_\lambda(\bar u^n_{j}, u^j_R, u^j_L,u_R^{j-1}, u^{j-1}_L).

希望GλG_\lambda关于第1,3,4个变量为增函数,关于第2,5个变量为减函数。

uˉjn+1\bar u^{n+1}_j采用高斯-洛巴托{xlj,wl}l=0m\{x^j_l,w_l\}_{l=0}^m积分,把两端点和中点的值分开,然后逐项分析

当满足两条件

uˉjn+1[m,M] \bar u^{n+1}_j \in [m, M]

为了保证第一个条件,我们只需要把多项式限制一下,
θj(P(x)uˉj)+uˉj,θj[0,1] \theta_j (P(x) - \bar u_j) + \bar u_j, \quad \theta_j \in [0,1]
θj=0\theta_j =0一定保证第一个条件,但这种结构完全改变了原函数形态。当θj=1\theta_j=1相当于不做处理。因此总会有个最佳θj\theta_j,它刚好满足第一个条件。

下面分析这种对函数的修正对精度的影响。

定理

如果P(x)u(x)Chk+1|P(x) - u(x)| \leq Ch^{k+1},则有
Plim(x)u(x)C1hk+1. |P^{\lim}(x) - u(x)| \leq C_1 h^{k+1}.
定理表明对函数做修正不影响精度

注:这种格式可以和TVD结合使用

注: 该工作主要有由 X.Zhang
笔记主页

Limiter格式2

WENO(weight essentially non-oscillatory) limiter

有个非线性的动作

参考:

二阶方程

ut=uxx,u(x,0)=u0(x)=sinx u_t = u_{xx}, \quad u(x,0)=u^0(x) =\sin x
准确解:u=etsinxu = e^{-t}\sin x

可以改写为
ut+f(u)x=0 u_t + f(u)_x = 0
其中f(u)=uxf(u) = -u_x

于是有离散格式:
uhVhu_h \in V_h使得对vVh\forall v\in V_h.
((uh)t,v)j(f(uh),vx)j+f^j+12Vj+12f^j12Vj12+=0 ((u_h)_t, v)_j - (f(u_h), v_x)_j + \widehat{f}_{j+\frac{1}{2}} V^-_{j+\frac{1}{2}}- \widehat{f}_{j-\frac{1}{2}} V^+_{j-\frac{1}{2}}=0
这里取f^j+12\widehat{f}_{j+\frac{1}{2}}为平均值

分析稳定性:

un+1=Gun u^{n+1} = \mathbb G u^n

已有结论表明GCh||\mathbb G||\backsim\frac{C}{h}.因此它是不好的格式,说明这种格式有 局限性.

既然原来的方法只是针对一阶导数,那么可以把二阶方程变成只有一阶导数的情形,也就是下面的LDG方法

LDG

Bassi-Rebay

utuxx=0u_t - u_{xx} = 0拆开成
{utvx=0vux=0 \begin{cases} u_t - v_x = 0 \\ v - u_x = 0\\ \end{cases}
uh,vhVhu_h, v_h\in V_h,使得对wh,zhVh\forall w_h, z_h\in V_h
{((uh)t,w)j+(vh,wx)+V^RjWRjV^LjwLj=0(vh,z)j+(uh,zx)+U^RjZRjU^LjZLj=0 \begin{cases} ((u_h)_t, w)_j + (v_h, w_x) + \hat V_R^jW_R^j - \hat V_L^j w_L^j = 0\\[1em] (v_h, z)_j + (u_h, z_x) + \hat U_R^jZ_R^j - \hat U_L^j Z_L^j = 0\\ \end{cases}

如果都取均值通量,对于奇数次会掉阶。

稳定性

w=uhVhz=vhVhw=u_h\in V_h, z=v_h\in V_h

把两个式子合并起来,积分项放一起,边界项放一起

困难之处在于两个积分项

(vh,(uh)x)j,(uh,(vh)x)j, (v_h, (u_h)_x)_j, (u_h, (v_h)_x)_j,

它们都关联两个变量,还有导数积分,所以要想办法把它处理掉,处理的思路是把它们合并起来,变成边界项。

如果通量取
U^Rj=URj,V^Rj=VLj+1, \hat U^j_R = U^j_R, \quad \hat V^j_R = V^{j+1}_L,
很多边界项就可以很容易抵消掉,当然对于均值通量也是成立的。

作业

作业1

用坏格式编写ut=uxxu_t = u_{xx},初值u(x,0)=sinxu(x,0)=\sin x,T=1T=1
绘制误差图uuhu-u_h,以及uhu2hu_h - u_{2h}.

作业2

LDG格式求解。

作业3

换数值通量