模型降阶方法之张量方法应用举例
Posted 陆嵩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模型降阶方法之张量方法应用举例相关的知识,希望对你有一定的参考价值。
模型降阶方法之张量方法应用举例
文章目录
序章
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.(\\mathbfn \\cdot \\nabla w+q(\\mathbfx, \\boldsymbol\\alpha) w)\\right|_\\partial \\Omega=g(\\mathbfx, \\boldsymbol\\alpha)
(n⋅∇w+q(x,α)w)∣∂Ω=g(x,α)
其中,
α
∈
R
4
\\boldsymbol\\alpha \\in \\mathbbR^4
α∈R4 是个四维的参数。这里的求解区域为长方形挖三个洞,
用标准的有限元方法,在空间上做离散,就得到这样一个时间连续的方程,
M
u
t
+
(
K
+
Q
(
α
)
)
u
=
g
(
α
)
\\mathrmM \\mathbfu_t+(\\mathrmK+\\mathrmQ(\\boldsymbol\\alpha)) \\mathbfu=\\mathbfg(\\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
,
(\\mathrmQ)_i j(\\boldsymbol\\alpha)=\\int_\\partial \\Omega q(\\mathbfx, \\boldsymbol\\alpha) \\theta_j(\\mathbfx) \\theta_i(\\mathbfx) d s_\\mathbfx, \\quad(\\mathbfg)_j(\\boldsymbol\\alpha)=\\int_\\partial \\Omega g(\\mathbfx, \\boldsymbol\\alpha) \\theta_j(\\mathbfx) d s_\\mathbfx,
(Q)ij(α)=∫∂Ωq(x,α)θj(x)θi(x)dsx,(g)j(α)=∫∂Ωg(x,α)θj(x)dsx,
那么,我们就可以将其写的 ODEs 的形式,
u
t
=
F
(
t
,
u
,
α
)
\\mathbfu_t=F(t, \\mathbfu, \\boldsymbol\\alpha)
ut=F(t,u,α)
其中,
F
(
t
,
u
,
α
)
=
−
M
−
1
(
K
+
Q
(
α
)
)
u
+
M
−
1
g
(
α
)
F(t, \\mathbfu, \\boldsymbol\\alpha)=-\\mathrmM^-1(\\mathrm~K+\\mathrmQ(\\boldsymbol\\alpha)) \\mathbfu+\\mathrmM^-1 \\mathbfg(\\boldsymbol\\alpha)
F(t,u,α)=−M−1( K+Q(α))u+M−1g(α)
有了这个,我们就可以用所谓的张量方法来寻求 reduced basis 了。首先,我们用 CN 格式得到一些快照,
ϕ
k
=
u
(
t
k
,
α
)
\\boldsymbol\\phi_k=\\mathbfu\\left(t_k, \\boldsymbol\\alpha\\right)
ϕk=u(tk,α)
函数解事实上可由解向量表示出来,即
w
(
t
k
,
x
,
α
)
=
Θ
(
x
)
u
(
t
k
,
α
)
w\\left(t_k, \\mathbfx, \\boldsymbol\\alpha\\right)=\\Theta(\\mathbfx) \\mathbfu\\left(t_k, \\boldsymbol\\alpha\\right)
w(tk,x,α)=Θ(x)u(tk,α)
用之前提到的张量方法(不管是 CP、HOSVD 还是 TT),一波操作之后,我们便得到了一组 reduced 基,
Z
=
[
z
1
,
…
,
z
n
]
∈
R
M
×
n
\\mathrmZ=\\left[\\mathbfz_1, \\ldots, \\mathbfz_n\\right] \\in \\mathbbR^M \\times n
Z=[z1,…,zn]∈RM×n
不清楚怎么得到的,回看张量方法。事实上, Z = U U c \\mathrmZ=\\mathrmUU_c Z=UUc, U c \\mathrmU_c Uc 取的是左奇异向量的前几列。
接着,类似于 POD 方法的投影方式,我们可以把这个方程投影到低阶的子空间中去做,得到
M
~
u
~
t
+
(
K
~
+
Q
~
(
α
)
)
u
~
=
g
~
(
α
)
\\widetilde\\mathrmM \\widetilde\\mathbfu_t+(\\widetilde\\mathrmK+\\widetilde\\mathrmQ(\\boldsymbol\\alpha)) \\widetilde\\mathbfu=\\widetilde\\mathbfg(\\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
,
\\beginaligned &\\widetilde\\mathrmM=\\mathrmZ^T \\mathrmMZ \\in \\mathbbR^n \\times n, \\quad \\widetilde\\mathrmK=\\mathrmZ^T \\mathrmKZ \\in \\mathbbR^n \\times n \\text , \\\\ &\\widetilde\\mathrmQ(\\boldsymbol\\alpha)=\\mathrmZ^T \\mathrmQ(\\boldsymbol\\alpha) \\mathrmZ \\in \\mathbbR^n \\times n, \\quad \\widetilde\\mathbfg(\\boldsymbol\\alpha)=\\mathrmZ^T \\mathbfg(\\boldsymbol\\alpha) \\in \\mathbbR^n \\text , \\endaligned
M
=ZTMZ∈Rn×n,K
=ZTKZ∈Rn×n, Q
(α)=ZTQ(α)Z∈Rn×n,模型降阶方法之张量方法