目标方程
The given system of equations is the Cahn-Hilliard equation:
∂ φ ∂ t − M c Δ w = f 1 w + r ϵ Δ φ − r f ( φ ) = f 2 \frac{\partial \varphi }{\partial t} - M_c\Delta w = f_1 \\ w + r\epsilon \Delta \varphi - r f(\varphi) = f_2 ∂t∂φ−McΔw=f1w+rϵΔφ−rf(φ)=f2
where φ ( x , y , t ) \varphi(x,y,t) φ(x,y,t) and w ( x , y , t ) w(x,y,t) w(x,y,t) are the unknown functions, and f 1 ( x , y , t ) f_1(x,y,t) f1(x,y,t), f 2 ( x , y , t ) f_2(x,y,t) f2(x,y,t), M c M_c Mc, r r r, and ϵ \epsilon ϵ are known parameters.
Where φ ( x , y , t ) \varphi(x,y,t) φ(x,y,t) and w ( x , y , t ) w(x,y,t) w(x,y,t) are unknown functions. f 1 ( x , y , t ) f_1(x,y,t) f1(x,y,t), f 2 ( x , y , t ) f_2(x,y,t) f2(x,y,t), M c M_c Mc, r r r, ϵ \epsilon ϵ are known.
Here f ( φ ) = F ′ ( φ ) = 1 ϵ φ ( φ 2 − 1 ) f(\varphi) =F'(\varphi)= \frac{1}{\epsilon}\varphi(\varphi^2-1) f(φ)=F′(φ)=ϵ1φ(φ2−1), F ( φ ) F(\varphi) F(φ) is Double-well potential function.
The space domain is Ω = [ 0 , 1 ] × [ 0 , 1 ] \Omega = [0,1] \times [0,1] Ω=[0,1]×[0,1], and the time domain is T = [ 0 , 1 ] T = [0,1] T=[0,1]
∇ w = ( w x , w y ) Δ w = ∇ ⋅ ∇ w = w x x + w y y ∇ φ = ( φ x , φ y ) Δ φ = ∇ ⋅ ∇ φ = φ x x + φ y y \nabla w = (w_x,w_y) \\ \Delta w =\nabla \cdot \nabla w = w_{xx} + w_{yy}\\ \nabla \varphi = (\varphi_x,\varphi_y)\\ \Delta \varphi =\nabla \cdot \nabla \varphi = \varphi_{xx} + \varphi_{yy} ∇w=(wx,wy)Δw=∇⋅∇w=wxx+wyy∇φ=(φx,φy)Δφ=∇⋅∇φ=φxx+φyy
凸分裂(Convex splitting)
For example, Cahn-Hilliard equation is :
u
t
=
ϵ
2
Δ
2
u
+
Δ
f
(
u
)
u_t = \epsilon ^2\Delta^2u + \Delta f(u)
ut=ϵ2Δ2u+Δf(u)
f
=
F
′
f=F'
f=F′, and
F
=
1
4
(
u
2
−
1
)
2
F=\frac{1}{4} (u^2-1)^2
F=41(u2−1)2 is a Double-well potential function.\
It also can be writen as energy functional form like:
E
(
u
)
=
∫
Ω
(
ϵ
2
2
∣
∇
u
∣
2
+
F
(
u
)
)
d
Ω
E(u) = \int_\Omega \left(\frac{\epsilon^2}{2}|\nabla u|^2 + F(u)\right)d\Omega
E(u)=∫Ω(2ϵ2∣∇u∣2+F(u))dΩ
The convex splitting method is one of the commonly used approaches to construct unconditionally uniquely solvable and energy-stable numerical schemes. It was initially proposed by Eyre [2] in the study of unconditionally energy-stable schemes for the Cahn-Hilliard equation. Subsequently, this method has been extended and successfully applied to various other phase field models. \
The basic idea of the convex splitting method is to decompose the energy functional into the sum of a convex part and a concave part, treat the terms corresponding to the convex part implicitly, and the terms corresponding to the concave part explicitly. The resulting semi-implicit scheme is referred to as the convex splitting scheme.
The energy functional corresponding to the Cahn-Hilliard equation has the following decomposition:\
E
(
u
)
=
∫
Ω
(
ϵ
2
2
∣
∇
u
∣
2
+
F
+
(
u
)
)
d
Ω
−
∫
Ω
(
ϵ
2
2
F
−
(
u
)
)
d
Ω
E(u) = \int_\Omega \left(\frac{\epsilon^2}{2}|\nabla u|^2 + F_{+}(u)\right)d\Omega - \int_\Omega \left(\frac{\epsilon^2}{2} F_{-}(u)\right)d\Omega
E(u)=∫Ω(2ϵ2∣∇u∣2+F+(u))dΩ−∫Ω(2ϵ2F−(u))dΩ
where F + ( u ) = 1 4 ( u 4 + 1 ) F_{+}(u) = \frac{1}{4}(u^4+1) F+(u)=41(u4+1) and F − ( u ) = 1 2 u 2 F_{-}(u) = \frac{1}{2}u^2 F−(u)=21u2 satisfy F ( u ) = F + ( u ) − F − ( u ) F(u) = F_{+}(u) - F_{-}(u) F(u)=F+(u)−F−(u).
The first-order convex splitting scheme for the Cahn-Hilliard equation can be written as follows:
u n + 1 − u n Δ t = Δ w n + 1 \frac{u^{n+1} - u^n}{\Delta t} = \Delta w^{n+1} Δtun+1−un=Δwn+1
w
n
+
1
=
−
ϵ
2
Δ
u
n
+
1
+
(
f
+
(
u
n
+
1
)
−
f
−
(
u
n
)
)
w^{n+1} = -\epsilon^2\Delta u^{n+1} + \left( f_{+}(u^{n+1}) - f_{-}(u^n)\right)
wn+1=−ϵ2Δun+1+(f+(un+1)−f−(un))
where
f
+
(
u
)
=
F
+
′
(
u
)
=
u
3
f_{+}(u) = F'_{+}(u) = u^3
f+(u)=F+′(u)=u3,
f
−
(
u
)
=
F
−
′
(
u
)
=
u
f_{-}(u) = F'_{-}(u) = u
f−(u)=F−′(u)=u, and
u
n
u^n
un is the numerical approximation of
u
(
t
n
)
u(t_n)
u(tn).
弱格式
第一个方程
∂ φ ∂ t − M c Δ w = f 1 \frac{\partial \varphi }{\partial t} - M_c\Delta w = f_1 ∂t∂φ−McΔw=f1
-
multiply a function a test function v ( x , y ) v(x,y) v(x,y) on both side of the the above equation.
∂ φ ∂ t v − ( M c Δ w ) v = f 1 v \frac{\partial \varphi }{\partial t}v - (M_c\Delta w) v = f_1v ∂t∂φv−(McΔw)v=f1v
∫ Ω ∂ φ ∂ t v d x d y − ∫ Ω ( M c Δ w ) v d x d y = ∫ Ω f 1 v d x d y \int_\Omega\frac{\partial \varphi }{\partial t}vdxdy - \int_\Omega(M_c\Delta w) vdxdy = \int_\Omega f_1vdxdy ∫Ω∂t∂φvdxdy−∫Ω(McΔw)vdxdy=∫Ωf1vdxdyφ ( x , y , t ) \varphi(x,y,t) φ(x,y,t) and w ( x , y , t ) w(x,y,t) w(x,y,t) are called trail function and v ( x , y ) v(x,y) v(x,y) is called a test function.
-
using Green’s formula (divergence theory, integration by parts in multi-dimension).
∫ Ω ( M c Δ w ) v d x d y = ∫ Ω ( M c ∇ ⋅ ∇ w ) v d x d y = ∫ ∂ Ω ( M c ∇ w ⋅ n ⃗ ) v − ∫ Ω M c ∇ w ⋅ ∇ v d x d y \int_\Omega(M_c\Delta w) vdxdy =\int_\Omega(M_c\nabla \cdot \nabla w) vdxdy= \int_{\partial\Omega} (M_c \nabla w \cdot \vec n)v - \int_\Omega M_c\nabla w \cdot \nabla vdxdy ∫Ω(McΔw)vdxdy=∫Ω(Mc∇⋅∇w)vdxdy=∫∂Ω(Mc∇w⋅n)v−∫ΩMc∇w⋅∇vdxdy
Assume it is Dirichlet boundary condtion. Then v = 0 v=0 v=0 on ∂ Ω \partial \Omega ∂Ω
∫ Ω ∂ φ ∂ t v d x d y + ∫ Ω M c ∇ w ⋅ ∇ v d x d y = ∫ Ω f 1 v d x d y \int_\Omega\frac{\partial \varphi }{\partial t}vdxdy +\int_\Omega M_c\nabla w \cdot \nabla vdxdy = \int_\Omega f_1vdxdy ∫Ω∂t∂φvdxdy+∫ΩMc∇w⋅∇vdxdy=∫Ωf1vdxdy
∇ w ⋅ ∇ v = w x v x + w y v y \nabla w \cdot \nabla v = w_xv_x+w_yv_y ∇w⋅∇v=wxvx+wyvy
∫ Ω ∂ φ ∂ t v d x d y + ∫ Ω M c w x v x d x d y + ∫ Ω M c w y v y d x d y = ∫ Ω f 1 v d x d y \int_\Omega\frac{\partial \varphi }{\partial t}vdxdy +\int_\Omega M_c w_xv_xdxdy + \int_\Omega M_c w_yv_ydxdy = \int_\Omega f_1vdxdy ∫Ω∂t∂φvdxdy+∫ΩMcwxvxdxdy+∫ΩMcwyvydxdy=∫Ωf1vdxdy
Let
(
φ
t
,
v
)
=
∫
Ω
∂
φ
∂
t
v
d
x
d
y
(\varphi_t,v) = \int_\Omega\frac{\partial \varphi }{\partial t}vdxdy
(φt,v)=∫Ω∂t∂φvdxdy
a
1
(
w
,
v
)
=
∫
Ω
M
c
∇
w
⋅
∇
v
d
x
d
y
a1(w,v) =\int_\Omega M_c\nabla w \cdot \nabla vdxdy
a1(w,v)=∫ΩMc∇w⋅∇vdxdy
(
f
1
,
v
)
=
∫
Ω
f
1
v
d
x
d
y
(f1,v) = \int_\Omega f_1vdxdy
(f1,v)=∫Ωf1vdxdy \
H
1
(
0
,
T
;
H
1
(
Ω
)
)
=
{
v
(
t
,
⋅
)
|
∂
v
∂
t
(
t
,
⋅
)
∈
H
1
(
Ω
)
,
∀
t
∈
[
0
,
T
]
}
H^1(0, T; H^1(\Omega)) = \left\{ v(t, \cdot) \, \middle| \, \frac{\partial v}{\partial t}(t, \cdot) \in H^1(\Omega), \, \forall t \in [0, T] \right\}
H1(0,T;H1(Ω))={v(t,⋅)
∂t∂v(t,⋅)∈H1(Ω),∀t∈[0,T]}
Weak formulation: find
w
∈
H
1
(
0
,
T
;
H
1
(
Ω
)
)
w\in H^1(0, T; H^1(\Omega))
w∈H1(0,T;H1(Ω)) and
φ
∈
H
1
(
0
,
T
;
H
1
(
Ω
)
)
\varphi \in H^1(0, T; H^1(\Omega))
φ∈H1(0,T;H1(Ω)), such that \
(
φ
t
,
v
)
+
a
1
(
w
,
v
)
=
(
f
1
,
v
)
(\varphi_t,v) + a1(w,v) = (f1,v)
(φt,v)+a1(w,v)=(f1,v)
for any
v
∈
H
0
1
(
Ω
)
v\in H^1_0(\Omega)
v∈H01(Ω)
第二个方程
半离散
第一个方程
Assume there is a finite dimensional subspace
U
h
=
span
{
ϕ
j
}
j
=
1
N
b
U_h = \text{span}\{\phi_j\}_{j=1}^{N_b}
Uh=span{ϕj}j=1Nb,
where
{
ϕ
j
}
j
=
1
N
b
\{\phi_j\}_{j=1}^{N_b}
{ϕj}j=1Nb are the global finite element basis functions.
Then the Galerkin formulation is to find
φ
h
∈
H
1
(
0
,
T
;
U
h
)
\varphi_{h} \in H^1(0,T;U_h)
φh∈H1(0,T;Uh) and
w
h
∈
H
1
(
0
,
T
;
U
h
)
w_{h} \in H^1(0,T;U_h)
wh∈H1(0,T;Uh)
such that
(
φ
h
t
,
v
h
)
+
a
1
(
w
h
,
v
h
)
=
(
f
1
,
v
h
)
(\varphi_{h_t},v_h) + a1(w_h,v_h) = (f1,v_h)
(φht,vh)+a1(wh,vh)=(f1,vh)
for any
v
h
∈
U
h
v_h \in U_h
vh∈Uh
It also can be express as:
∫
Ω
φ
h
t
v
h
d
x
d
y
+
∫
Ω
M
c
∇
w
h
⋅
∇
v
h
d
x
d
y
=
∫
Ω
f
1
v
h
d
x
d
y
\int_\Omega\varphi_{h_t}v_hdxdy +\int_\Omega M_c\nabla w_h \cdot \nabla v_hdxdy = \int_\Omega f_1v_hdxdy
∫Ωφhtvhdxdy+∫ΩMc∇wh⋅∇vhdxdy=∫Ωf1vhdxdy
or
∫
Ω
φ
h
t
v
h
d
x
d
y
+
∫
Ω
M
c
(
w
h
)
x
(
v
h
)
x
d
x
d
y
+
∫
Ω
M
c
(
w
h
)
y
(
v
h
)
y
d
x
d
y
=
∫
Ω
f
1
v
h
d
x
d
y
\int_\Omega\varphi_{h_t}v_hdxdy+\int_\Omega M_c (w_h)_x(v_h)_xdxdy + \int_\Omega M_c(w_h)_y(v_h)_ydxdy = \int_\Omega f_1v_hdxdy
∫Ωφhtvhdxdy+∫ΩMc(wh)x(vh)xdxdy+∫ΩMc(wh)y(vh)ydxdy=∫Ωf1vhdxdy
Since
φ
h
∈
H
1
(
0
,
T
;
U
h
)
\varphi_h \in H^1(0,T;U_h)
φh∈H1(0,T;Uh) and
w
h
∈
H
1
(
0
,
T
;
U
h
)
w_{h} \in H^1(0,T;U_h)
wh∈H1(0,T;Uh), and
U
h
=
span
{
ϕ
j
}
j
=
1
N
b
U_h = \text{span}\{\phi_j\}_{j=1}^{N_b}
Uh=span{ϕj}j=1Nb, then
φ
h
(
x
,
y
,
t
)
=
∑
j
=
1
N
b
φ
j
(
t
)
ϕ
j
(
x
,
y
)
\varphi_{h}(x,y,t) = \sum_{j=1}^{N_b} \varphi_{j}(t)\phi_j(x,y)
φh(x,y,t)=j=1∑Nbφj(t)ϕj(x,y)
w
h
(
x
,
y
,
t
)
=
∑
j
=
1
N
b
w
j
(
t
)
ϕ
j
(
x
,
y
)
w_{h}(x,y,t) = \sum_{j=1}^{N_b} w_{j}(t)\phi_j(x,y)
wh(x,y,t)=j=1∑Nbwj(t)ϕj(x,y)
for some coefficients
φ
j
(
t
)
(
j
=
1
,
.
.
.
,
N
b
)
\varphi_{j}(t)(j=1,...,N_b)
φj(t)(j=1,...,Nb) and
w
j
(
t
)
(
j
=
1
,
.
.
.
,
N
b
)
w_{j}(t)(j=1,...,N_b)
wj(t)(j=1,...,Nb).\
We choose
V
h
=
ϕ
i
(
x
,
y
)
(
i
=
1
,
.
.
.
,
N
b
)
V_h = \phi_i(x,y)(i=1,...,N_b)
Vh=ϕi(x,y)(i=1,...,Nb).\
Then we can have
∫
Ω
(
∑
j
=
1
N
b
φ
j
(
t
)
ϕ
j
)
t
ϕ
i
d
x
d
y
+
∫
Ω
M
c
∇
(
∑
j
=
1
N
b
w
j
(
t
)
ϕ
j
)
⋅
∇
ϕ
i
d
x
d
y
=
∫
Ω
f
1
ϕ
i
d
x
d
y
\int_\Omega\left( \sum_{j=1}^{N_b} \varphi_{j}(t)\phi_j\right)_t\phi_idxdy +\int_\Omega M_c\nabla \left(\sum_{j=1}^{N_b} w_{j}(t)\phi_j\right) \cdot \nabla \phi_i dxdy = \int_\Omega f_1\phi_idxdy
∫Ω(j=1∑Nbφj(t)ϕj)tϕidxdy+∫ΩMc∇(j=1∑Nbwj(t)ϕj)⋅∇ϕidxdy=∫Ωf1ϕidxdy
∫ Ω ( ∑ j = 1 N b φ j ( t ) ϕ j ) t ϕ i d x d y + ∫ Ω M c ∑ j = 1 N b w j ( t ) ∇ ϕ j ⋅ ∇ ϕ i d x d y = ∫ Ω f 1 ϕ i d x d y \int_\Omega( \sum_{j=1}^{N_b} \varphi_{j}(t)\phi_j)_t\phi_idxdy +\int_\Omega M_c \sum_{j=1}^{N_b} w_{j}(t)\nabla \phi_j \cdot \nabla \phi_i dxdy = \int_\Omega f_1\phi_idxdy ∫Ω(j=1∑Nbφj(t)ϕj)tϕidxdy+∫ΩMcj=1∑Nbwj(t)∇ϕj⋅∇ϕidxdy=∫Ωf1ϕidxdy
∑ j = 1 N b φ j ′ ( t ) ∫ Ω ϕ j ϕ i d x d y + ∑ j = 1 N b w j ( t ) ∫ Ω M c ∇ ϕ j ⋅ ∇ ϕ i d x d y = ∫ Ω f 1 ϕ i d x d y \sum_{j=1}^{N_b}\varphi'_{j}(t) \int_\Omega\phi_j\phi_idxdy +\sum_{j=1}^{N_b} w_{j}(t)\int_\Omega M_c \nabla \phi_j \cdot \nabla \phi_i dxdy = \int_\Omega f_1\phi_idxdy j=1∑Nbφj′(t)∫Ωϕjϕidxdy+j=1∑Nbwj(t)∫ΩMc∇ϕj⋅∇ϕidxdy=∫Ωf1ϕidxdy
∑ j = 1 N b φ j ′ ( t ) ∫ Ω ϕ j ϕ i d x d y + ∑ j = 1 N b w j ( t ) ( ∫ Ω M c ∂ ϕ j ∂ x ∂ ϕ i ∂ x d x d y + ∫ Ω M c ∂ ϕ j ∂ y ∂ ϕ i ∂ y d x d y ) = ∫ Ω f 1 ϕ i d x d y \sum_{j=1}^{N_b}\varphi'_{j}(t) \int_\Omega\phi_j\phi_idxdy +\sum_{j=1}^{N_b} w_{j}(t)\left(\int_\Omega M_c \frac{\partial\phi_j}{\partial x}\frac{\partial\phi_i}{\partial x}dxdy +\int_\Omega M_c \frac{\partial\phi_j}{\partial y}\frac{\partial\phi_i}{\partial y}dxdy\right) = \int_\Omega f_1\phi_idxdy j=1∑Nbφj′(t)∫Ωϕjϕidxdy+j=1∑Nbwj(t)(∫ΩMc∂x∂ϕj∂x∂ϕidxdy+∫ΩMc∂y∂ϕj∂y∂ϕidxdy)=∫Ωf1ϕidxdy
Define the stiffness matrix
A
1
=
[
∫
Ω
M
c
∇
ϕ
j
⋅
∇
ϕ
i
d
x
d
y
]
i
,
j
=
1
N
b
,
N
b
A_1= \left[\int_\Omega M_c \nabla \phi_j \cdot \nabla \phi_i dxdy\right]_{i,j=1}^{N_b,N_b}
A1=[∫ΩMc∇ϕj⋅∇ϕidxdy]i,j=1Nb,Nb
A
1
=
A
11
+
A
12
A_1= A_{11} + A_{12}
A1=A11+A12
A
11
=
[
∫
Ω
M
c
∂
ϕ
j
∂
x
∂
ϕ
i
∂
x
d
x
d
y
]
i
,
j
=
1
N
b
,
N
b
A_{11} = \left[\int_\Omega M_c \frac{\partial\phi_j}{\partial x}\frac{\partial\phi_i}{\partial x}dxdy\right]_{i,j=1}^{N_b,N_b}
A11=[∫ΩMc∂x∂ϕj∂x∂ϕidxdy]i,j=1Nb,Nb
A
12
=
[
∫
Ω
M
c
∂
ϕ
j
∂
y
∂
ϕ
i
∂
y
d
x
d
y
]
i
,
j
=
1
N
b
,
N
b
A_{12} = \left[\int_\Omega M_c \frac{\partial\phi_j}{\partial y}\frac{\partial\phi_i}{\partial y}dxdy\right]_{i,j=1}^{N_b,N_b}
A12=[∫ΩMc∂y∂ϕj∂y∂ϕidxdy]i,j=1Nb,Nb
Define the mass matrix
M
=
[
∫
Ω
ϕ
j
ϕ
i
d
x
d
y
]
i
,
j
=
1
N
b
,
N
b
M = \left[\int_\Omega\phi_j\phi_idxdy\right]_{i,j=1}^{N_b,N_b}
M=[∫Ωϕjϕidxdy]i,j=1Nb,Nb
Define the load vector
b
⃗
1
=
[
∫
Ω
f
1
ϕ
i
d
x
d
y
]
i
=
1
N
b
\vec b_1 = \left[\int_\Omega f_1\phi_idxdy \right]_{i=1}^{N_b}
b1=[∫Ωf1ϕidxdy]i=1Nb
Define the unknown vector
X
⃗
1
=
[
φ
j
(
t
)
]
j
=
1
N
b
\vec X_1=\left[\varphi_j(t) \right]_{j=1}^{N_b}
X1=[φj(t)]j=1Nb
X
⃗
2
=
[
w
j
(
t
)
]
j
=
1
N
b
\vec X_2=\left[w_j(t) \right]_{j=1}^{N_b}
X2=[wj(t)]j=1Nb
Then we obtain the system
M
X
⃗
1
′
(
t
)
+
A
1
X
⃗
2
=
b
⃗
1
M\vec X_1'(t) + A_1\vec X_2 = \vec b_1
MX1′(t)+A1X2=b1
第二个方程
全离散
第一个方程
M
X
⃗
1
′
(
t
)
+
A
1
X
⃗
2
=
b
⃗
1
M\vec X_1'(t) + A_1\vec X_2 = \vec b_1
MX1′(t)+A1X2=b1
X
⃗
1
′
(
t
)
=
b
1
−
A
1
X
⃗
2
M
\vec X_1'(t) = \frac{b_1 - A_1\vec X_2}{M}
X1′(t)=Mb1−A1X2
Assume that we have a uniform partition of
[
0
,
T
]
[0,T]
[0,T] into
M
m
M_m
Mm elements with time step
Δ
t
\Delta t
Δt.
The mesh nodes are
t
m
=
m
Δ
t
,
m
=
0
,
1
,
.
.
.
,
M
m
t_m = m \Delta t, m = 0,1,...,M_m
tm=mΔt,m=0,1,...,Mm.
Assume
X
⃗
1
m
\vec X_1^{m}
X1m is the numerical solution of
X
⃗
1
(
t
m
)
\vec X_1(t_m)
X1(tm) and
X
⃗
2
m
\vec X_2^{m}
X2m is the numerical solution of
X
⃗
2
(
t
m
)
\vec X_2(t_m)
X2(tm).
θ
\theta
θ-scheme (Finite difference (FD) method):
X
1
m
+
1
−
X
1
m
Δ
t
=
θ
b
1
m
+
1
−
A
1
m
+
1
X
2
m
+
1
M
+
(
1
−
θ
)
b
1
m
−
A
1
m
X
2
m
M
,
m
=
0
,
1
,
.
.
.
,
M
m
\frac{X_1^{m+1} - X_1^{m}}{\Delta t} = \theta\frac{b_1^{m+1} - A_1^{m+1}X_2^{m+1}}{M} + (1-\theta)\frac{b_1^{m} - A_1^{m}X_2^{m}}{M}, m = 0,1,...,M_m
ΔtX1m+1−X1m=θMb1m+1−A1m+1X2m+1+(1−θ)Mb1m−A1mX2m,m=0,1,...,Mm
where:
θ
=
0
\theta = 0
θ=0: forward Euler scheme;
θ
=
1
\theta = 1
θ=1: backward Euler scheme;
θ
=
1
/
2
\theta =1/2
θ=1/2: Crank-Nicolson scheme.
第二个方程
牛顿迭代
牛顿线性化
结果
syms x y t;
% parameters
Mc=1;
r=1;
eplson=1;
u= exp(x+y+t);
w=x*y*(1-x/2)*(1-y)*exp(x+y+t);
ut = diff(u,t);
% compute the Laplacian op
lap_w = laplacian(w, [x, y]);
f1 = ut-Mc*lap_w;
Lap_u=laplacian(u,[x,y]);
fu=1/eplson * u *(u^2-1);
f2 = w+r*eplson*Lap_u-r*fu;
% function f1 f2
fun_f1 = matlabFunction(f1, 'Vars', [x, y,t])
fun_f2 = matlabFunction(f2, 'Vars', [x, y,t])
wx=diff(w,x);
wy=diff(w,y);
% function of derivative
fun_w_analytic_der_x = matlabFunction(wx, 'Vars', [x, y,t])
fun_w_analytic_der_y = matlabFunction(wy, 'Vars', [x, y,t])
ux=diff(u,x);
uy=diff(u,y);
误差分析 可以看文章
这里使用的相场模型的 凸分裂格式 可以看文章:
相场方程的高效数值算法
代码和 report 链接
https://github.com/Heiyafang/FEM/tree/main