模型降阶方法之张量方法应用举例
序章
POD 方法参考:
https://blog.csdn.net/lusongno1/article/details/125944587
DEIM 方法参考:
https://blog.csdn.net/lusongno1/article/details/125955245
张量方法参考:
https://blog.csdn.net/lusongno1/article/details/126013084
很多同学看完了张量方法表示,算法流程是 clear 的,但是并不知道怎么应用。这里举两个简单的例子,热传导方程和对流扩散方程。
我们可以看到,张量方法是应用于 ODEs 的,那么如果从 PDE 得到 ODEs 呢?简单地说, PDE 在空间上做离散,比如说有限元离散或者有限差分离散,那么就把问题转为了向量值 ODEs,就可以用 ROMs 方法去处理。 如果用的是有限元方法处理的,那么向量值解的每个分量其实就表示每个基函数前面的系数(自由度)。如果是用有限差分方法处理的,那么向量值解的每个分量其实就表示每个节点上的值。
下面我们考虑这两个例子。有一些符号的含义是显而易见的,所以就不多加解释了。
热传导方程
方法
考虑热传导方程,
w t = Δ w w_{t}=\Delta w wt=Δw
它的边界条件是,
( n ⋅ ∇ w + q ( x , α ) w ) ∣ ∂ Ω = g ( x , α ) \left.(\mathbf{n} \cdot \nabla w+q(\mathbf{x}, \boldsymbol{\alpha}) w)\right|_{\partial \Omega}=g(\mathbf{x}, \boldsymbol{\alpha}) (n⋅∇w+q(x,α)w)∣∂Ω=g(x,α)
其中, α ∈ R 4 \boldsymbol{\alpha} \in \mathbb{R}^{4} α∈R4 是个四维的参数。这里的求解区域为长方形挖三个洞,
用标准的有限元方法,在空间上做离散,就得到这样一个时间连续的方程,
M u t + ( K + Q ( α ) ) u = g ( α ) \mathrm{M} \mathbf{u}_{t}+(\mathrm{K}+\mathrm{Q}(\boldsymbol{\alpha})) \mathbf{u}=\mathbf{g}(\boldsymbol{\alpha}) Mut+(K+Q(α))u=g(α)
其中, M M M 是质量矩阵, K K K 是刚度矩阵,
( Q ) i j ( α ) = ∫ ∂ Ω q ( x , α ) θ j ( x ) θ i ( x ) d s x , ( g ) j ( α ) = ∫ ∂ Ω g ( x , α ) θ j ( x ) d s x , (\mathrm{Q})_{i j}(\boldsymbol{\alpha})=\int_{\partial \Omega} q(\mathbf{x}, \boldsymbol{\alpha}) \theta_{j}(\mathbf{x}) \theta_{i}(\mathbf{x}) d s_{\mathbf{x}}, \quad(\mathbf{g})_{j}(\boldsymbol{\alpha})=\int_{\partial \Omega} g(\mathbf{x}, \boldsymbol{\alpha}) \theta_{j}(\mathbf{x}) d s_{\mathbf{x}}, (Q)ij(α)=∫∂Ωq(x,α)θj(x)θi(x)dsx,(g)j(α)=∫∂Ωg(x,α)θj(x)dsx,
那么,我们就可以将其写的 ODEs 的形式,
u t = F ( t , u , α ) \mathbf{u}_{t}=F(t, \mathbf{u}, \boldsymbol{\alpha}) ut=F(t,u,α)
其中,
F ( t , u , α ) = − M − 1 ( K + Q ( α ) ) u + M − 1 g ( α ) F(t, \mathbf{u}, \boldsymbol{\alpha})=-\mathrm{M}^{-1}(\mathrm{~K}+\mathrm{Q}(\boldsymbol{\alpha})) \mathbf{u}+\mathrm{M}^{-1} \mathbf{g}(\boldsymbol{\alpha}) F(t,u,α)=−M−1( K+Q(α))u+M−1g(α)
有了这个,我们就可以用所谓的张量方法来寻求 reduced basis 了。首先,我们用 CN 格式得到一些快照,
ϕ k = u ( t k , α ) \boldsymbol{\phi}_{k}=\mathbf{u}\left(t_{k}, \boldsymbol{\alpha}\right) ϕk=u(tk,α)
函数解事实上可由解向量表示出来,即
w ( t k , x , α ) = Θ ( x ) u ( t k , α ) w\left(t_{k}, \mathbf{x}, \boldsymbol{\alpha}\right)=\Theta(\mathbf{x}) \mathbf{u}\left(t_{k}, \boldsymbol{\alpha}\right) w(tk,x,α)=Θ(x)u(tk,α)
用之前提到的张量方法(不管是 CP、HOSVD 还是 TT),一波操作之后,我们便得到了一组 reduced 基,
Z = [ z 1 , … , z n ] ∈ R M × n \mathrm{Z}=\left[\mathbf{z}_{1}, \ldots, \mathbf{z}_{n}\right] \in \mathbb{R}^{M \times n} Z=[z1,…,zn]∈RM×n
不清楚怎么得到的,回看张量方法。事实上, Z = U U c \mathrm{Z}=\mathrm{UU}_{c} Z=UUc, U c \mathrm{U}_{c} Uc 取的是左奇异向量的前几列。
接着,类似于 POD 方法的投影方式,我们可以把这个方程投影到低阶的子空间中去做,得到
M ~ u ~ t + ( K ~ + Q ~ ( α ) ) u ~ = g ~ ( α ) \widetilde{\mathrm{M}} \widetilde{\mathbf{u}}_{t}+(\widetilde{\mathrm{K}}+\widetilde{\mathrm{Q}}(\boldsymbol{\alpha})) \widetilde{\mathbf{u}}=\widetilde{\mathbf{g}}(\boldsymbol{\alpha}) M
u
t+(K
+Q
(α))u
=g
(α)
其中,
M ~ = Z T M Z ∈ R n × n , K ~ = Z T K Z ∈ R n × n , Q ~ ( α ) = Z T Q ( α ) Z ∈ R n × n , g ~ ( α ) = Z T g ( α ) ∈ R n , \begin{aligned} &\widetilde{\mathrm{M}}=\mathrm{Z}^{T} \mathrm{MZ} \in \mathbb{R}^{n \times n}, \quad \widetilde{\mathrm{K}}=\mathrm{Z}^{T} \mathrm{KZ} \in \mathbb{R}^{n \times n} \text {, }\\ &\widetilde{\mathrm{Q}}(\boldsymbol{\alpha})=\mathrm{Z}^{T} \mathrm{Q}(\boldsymbol{\alpha}) \mathrm{Z} \in \mathbb{R}^{n \times n}, \quad \widetilde{\mathbf{g}}(\boldsymbol{\alpha})=\mathrm{Z}^{T} \mathbf{g}(\boldsymbol{\alpha}) \in \mathbb{R}^{n} \text {, } \end{aligned} M
=ZTMZ∈Rn×n,K
=ZTKZ∈Rn×n, Q
(α)=ZTQ(α)Z∈Rn×n,g
(α)=ZTg(α)∈Rn,
这个问题就被简化了,得到了低维空间的解,要恢复原来的函数,可以这样做:
w ~ ( t k , x , α ) = Θ ( x ) Z u ~ ( t k , α ) ≈ w ( t k , x , α ) \widetilde{w}\left(t_{k}, \mathbf{x}, \boldsymbol{\alpha}\right)=\Theta(\mathbf{x}) \mathrm{Z} \widetilde{\mathbf{u}}\left(t_{k}, \boldsymbol{\alpha}\right) \approx w\left(t_{k}, \mathbf{x}, \boldsymbol{\alpha}\right) w
(tk,x,α)=Θ(x)Zu
(tk,α)≈w(tk,x,α)
数值结果
下面几乎不加解释变量定义(下同)地 post 一些数值实验的结果,变量感兴趣的同学可以参考论文:
Mamonov A V, Olshanskii M A. Interpolatory tensorial reduced order models for parametric dynamical systems[J]. Computer Methods in Applied Mechanics and Engineering, 2022, 397: 115122.
这两个例子都是从这篇论文中抄出来的。
上述的误差定义为:
E L 2 ( A ^ ) = ( 1 M N K ∑ j = 1 K ∥ ( I − Z Z T ) Φ e ( α ^ j ) ∥ F 2 ) 1 / 2 E_{L^{2}(\widehat{\mathcal{A}})}=\left(\frac{1}{M N K} \sum_{j=1}^{K}\left\|\left(\mathrm{I}-\mathrm{ZZ}^{T}\right) \Phi_{e}\left(\widehat{\boldsymbol{\alpha}}_{j}\right)\right\|_{F}^{2}\right)^{1 / 2} EL2(A
)=(MNK1j=1∑K∥
∥(I−ZZT)Φe(α
j)∥
∥F2)1/2
E L ∞ ( A ) = sup α ∈ A ( 1 M N ∥ ( I − Z Z T ) Φ e ( α ) ∥ F 2 ) 1 / 2 E_{L^{\infty}(\mathcal{A})}=\sup _{\boldsymbol{\alpha} \in \mathcal{A}}\left(\frac{1}{M N}\left\|\left(\mathrm{I}-\mathrm{ZZ}^{T}\right) \Phi_{e}(\boldsymbol{\alpha})\right\|_{F}^{2}\right)^{1 / 2} EL∞(A)=α∈Asup(MN1∥
∥(I−ZZT)Φe(α)∥
∥F2)1/2
压缩因子 CF 的定义为,
C F = # ( Φ ) # ( online ( Φ ~ ) ) \mathrm{CF}=\frac{\#(\boldsymbol{\Phi})}{\#(\text { online }(\widetilde{\boldsymbol{\Phi}}))} CF=#( online (Φ
))#(Φ)
# \# # 指代的是存储所需要的浮点数目。别的就,hmm,看文章,文章里面写得很清楚。
简单地说,TABLE 5.1~5.2 笛卡尔网格方法和通常参数采样方法的投影误差和离线在线阶段需要传输的内存衡量的。
FIG 5.2 说的是各种方法下(不同分解、笛卡尔网格和通常参数)压缩因子 CF 和 canonical 秩随着分解 tolerance 的变化而变化的图。
FIG 5.3 说的是样本外预测的投影误差随着 reduced basis 的个数、参数的采样间隔、张量分解精度的变化而变化的情况。这里的 p p p 表示的是选择该维度上最靠近采样点的 p p p 个点。
TABLE 5.3-5.5 不同的参数离散、不同的 reduced basis 维数、不同的投影方式下,不同方法的相对增益,相对增益指的是相对于 POD 而言的相对误差,
G X ( r ) = R P O D ( α ( r ) ) R X ( α ( r ) ) , r = 1 , 2 , … , N r G_{\mathrm{X}}^{(r)}=\frac{R_{\mathrm{POD}}\left(\boldsymbol{\alpha}^{(r)}\right)}{R_{\mathrm{X}}\left(\boldsymbol{\alpha}^{(r)}\right)}, \quad r=1,2, \ldots, N_{r} GX(r)=RX(α(r))RPOD(α(r)),r=1,2,…,Nr
而相对误差不再是投影的误差,而是回复到原来的函数解所定义的误差,
R X ( α ) = max k = 1 , … , N ∥ w ~ ( t k , x , α ) − w ( t k , x , α ) ∥ L 2 ( Ω ) max k = 1 , … , N ∥ w ( t k , x , α ) ∥ L 2 ( Ω ) ≈ sup t ∈ [ 0 , T ] ∥ w ~ ( t , x , α ) − w ( t , x , α ) ∥ L 2 ( Ω ) sup t ∈ [ 0 , T ] ∥ w ( t , x , α ) ∥ L 2 ( Ω ) \begin{aligned} R_{X}(\boldsymbol{\alpha}) &=\frac{\max _{k=1, \ldots, N}\left\|\widetilde{w}\left(t_{k}, \mathbf{x}, \boldsymbol{\alpha}\right)-w\left(t_{k}, \mathbf{x}, \boldsymbol{\alpha}\right)\right\|_{L^{2}(\Omega)}}{\max _{k=1, \ldots, N}\left\|w\left(t_{k}, \mathbf{x}, \boldsymbol{\alpha}\right)\right\|_{L^{2}(\Omega)}} \\ & \approx \frac{\sup _{t \in[0, T]}\|\widetilde{w}(t, \mathbf{x}, \boldsymbol{\alpha})-w(t, \mathbf{x}, \boldsymbol{\alpha})\|_{L^{2}(\Omega)}}{\sup _{t \in[0, T]}\|w(t, \mathbf{x}, \boldsymbol{\alpha})\|_{L^{2}(\Omega)}} \end{aligned} RX(α)=maxk=1,…,N∥w(tk,x,α)∥L2(Ω)maxk=1,…,N∥w
(tk,x,α)−w(tk,x,α)∥L2(Ω)≈supt∈[0,T]∥w(t,x,α)∥L2(Ω)supt∈[0,T]∥w
(t,x,α)−w(t,x,α)∥L2(Ω)
一般我们考虑投影误差,或者恢复出来的函数误差就可以了。更多细节处的解释,建议读论文。
对流扩散方程
方法
类似于热传导方程,我们下面考虑对流扩散方程,
w t = ν Δ w − η ( x , α ) ⋅ ∇ w + f ( x ) w_{t}=\nu \Delta w-\boldsymbol{\eta}(\mathbf{x}, \boldsymbol{\alpha}) \cdot \nabla w+f(\mathbf{x}) wt=νΔw−η(x,α)⋅∇w+f(x)
其中,
f ( x ) = 1 2 π σ s 2 exp ( − ( x 1 − x 1 s ) 2 + ( x 2 − x 2 s ) 2 2 σ s 2 ) f(\mathbf{x})=\frac{1}{2 \pi \sigma_{s}^{2}} \exp \left(-\frac{\left(x_{1}-x_{1}^{s}\right)^{2}+\left(x_{2}-x_{2}^{s}\right)^{2}}{2 \sigma_{s}^{2}}\right) f(x)=2πσs21exp(−2σs2(x1−x1s)2+(x2−x2s)2)
求解区域,
Ω = [ 0 , 1 ] × [ 0 , 1 ] ⊂ R 2 \Omega=[0,1] \times[0,1] \subset \mathbb{R}^{2} Ω=[0,1]×[0,1]⊂R2
初边值条件,
( n ⋅ ∇ w ) ∣ ∂ Ω = 0 , w ( 0 , x , α ) = 0 \left.(\mathbf{n} \cdot \nabla w)\right|_{\partial \Omega}=0, \quad w(0, \mathbf{x}, \boldsymbol{\alpha})=0 (n⋅∇w)∣∂Ω=0,w(0,x,α)=0
η ( x , α ) = ( η 1 ( x , α ) η 2 ( x , α ) ) = ( cos α 9 sin α 9 ) + 1 π ( ∂ x 2 h ( x , α ) − ∂ x 1 h ( x , α ) ) \boldsymbol{\eta}(\mathbf{x}, \boldsymbol{\alpha})=\left(\begin{array}{c} \eta_{1}(\mathbf{x}, \boldsymbol{\alpha}) \\ \eta_{2}(\mathbf{x}, \boldsymbol{\alpha}) \end{array}\right)=\left(\begin{array}{c} \cos \alpha_{9} \\ \sin \alpha_{9} \end{array}\right)+\frac{1}{\pi}\left(\begin{array}{c} \partial_{x_{2}} h(\mathbf{x}, \boldsymbol{\alpha}) \\ -\partial_{x_{1}} h(\mathbf{x}, \boldsymbol{\alpha}) \end{array}\right) η(x,α)=(η1(x,α)η2(x,α))=(cosα9sinα9)+π1(∂x2h(x,α)−∂x1h(x,α))
h ( x , α ) = α 1 cos ( π x 1 ) + α 2 cos ( π x 2 ) + α 3 cos ( π x 1 ) cos ( π x 2 ) + α 4 cos ( 2 π x 1 ) + α 5 cos ( 2 π x 2 ) + α 6 cos ( 2 π x 1 ) cos ( π x 2 ) + α 7 cos ( π x 1 ) cos ( 2 π x 2 ) + α 8 cos ( 2 π x 1 ) cos ( 2 π x 2 ) . \begin{aligned} h(\mathbf{x}, \boldsymbol{\alpha})=& \alpha_{1} \cos \left(\pi x_{1}\right)+\alpha_{2} \cos \left(\pi x_{2}\right)+\alpha_{3} \cos \left(\pi x_{1}\right) \cos \left(\pi x_{2}\right) \\ &+\alpha_{4} \cos \left(2 \pi x_{1}\right)+\alpha_{5} \cos \left(2 \pi x_{2}\right)+\alpha_{6} \cos \left(2 \pi x_{1}\right) \cos \left(\pi x_{2}\right) \\ &+\alpha_{7} \cos \left(\pi x_{1}\right) \cos \left(2 \pi x_{2}\right)+\alpha_{8} \cos \left(2 \pi x_{1}\right) \cos \left(2 \pi x_{2}\right) . \end{aligned} h(x,α)=α1cos(πx1)+α2cos(πx2)+α3cos(πx1)cos(πx2)+α4cos(2πx1)+α5cos(2πx2)+α6cos(2πx1)cos(πx2)+α7cos(πx1)cos(2πx2)+α8cos(2πx1)cos(2πx2).
可以看得出来,这里实际上有 9 个参数,用有限元方法对空间导数做离散,我们得到类似于热传导的空间离散方程,其中 H H H 是对流矩阵,
M u t + ( K + H ( α ) ) u = f M \mathbf{u}_{t}+(K+H(\boldsymbol{\alpha})) \mathbf{u}=\mathbf{f} Mut+(K+H(α))u=f
那么,ODEs 的右端项为,
F ( t , u , α ) = − M − 1 ( K + H ( α ) ) u + M − 1 f F(t, \mathbf{u}, \boldsymbol{\alpha})=-\mathrm{M}^{-1}(\mathrm{~K}+\mathrm{H}(\boldsymbol{\alpha})) \mathbf{u}+\mathrm{M}^{-1} \mathbf{f} F(t,u,α)=−M−1( K+H(α))u+M−1f
同样地,用某种格式,比如 CN 格式得到 snapshots,之后用张量方法得到 reduced basis,再对原方程进行降阶,得到了,
M ~ u ~ t + ( K ~ + H ~ ( α ) ) u ~ = f ~ \widetilde{\mathrm{M}} \widetilde{\mathbf{u}}_{t}+(\widetilde{\mathrm{K}}+\widetilde{\mathrm{H}}(\boldsymbol{\alpha})) \widetilde{\mathbf{u}}=\widetilde{\mathbf{f}} M
u
t+(K
+H
(α))u
=f
数值结果
同样地,我们也不加解释变量含义地看一些结果,
各变量含义同上个例子解释。