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