本文我们以求解泊松方程为例,讲述偏微分方程(PDE)的有限元解法,附
FEniCS
代码
方程定义
首先是泊松方程的表达式
− Δ u = f in Ω (1) -\Delta u=f \qquad \text{ in } \Omega \tag{1} −Δu=f in Ω(1)
其边界条件
u ∣ Γ D = u 0 on Γ D ∂ u ∂ n ∣ Γ N = g on Γ N = ∂ Ω − Γ D u|_{\Gamma_D}=u_0 \qquad \text{ on } \Gamma_D\\ \left.\frac{\partial u}{\partial n}\right|_{\Gamma_N}=g \qquad \text{ on } \Gamma_N = \partial \Omega - \Gamma_D u∣ΓD=u0 on ΓD∂n∂u∣∣∣∣ΓN=g on ΓN=∂Ω−ΓD
第一行是第一类边界条件(Dirichlet边界条件),第二行是第二类边界条件(Neumann边界条件)
弱(变分)形式
首先:对式子(1)两边都乘上测试函数 v v v,然后对全域 Ω \Omega Ω积分
这里需要说明一下试探函数(Trail Function)
和测试函数(Test Function)
的概念。
− ∫ Ω Δ u v d x = ∫ Ω f v d x (2) -\int_\Omega \textcolor{red}{\Delta u v} dx=\int_\Omega f v dx \tag{2} −∫ΩΔuvdx=∫Ωfvdx(2)
测试函数定义为,即在测试函数在第一类边界上为0
V ^ = { v ∈ H 1 ( Ω ) : v = 0 on Γ D } \hat{V} = \{v\in H^1(\Omega): \textcolor{red}{v=0} \text{ on } \Gamma_D\} V^={
v∈H1(Ω):v=0 on ΓD}
试探函数定义为
V = { u ∈ H 1 ( Ω ) : u = u 0 on Γ D } V = \{u\in H^1(\Omega): \textcolor{red}{u=u_0} \text{ on } \Gamma_D\} V=