scikit-FEM-例1-求解Possion边值问题

Posted wangshixi12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scikit-FEM-例1-求解Possion边值问题相关的知识,希望对你有一定的参考价值。

"""
Author: kinnala

Solve the problem -?2u = 1 with zero boundary conditions on a unit square.
"""

 

 

from skfem import *

调入 skfem 宏包

 

m = MeshTri()
m.refine(4)

三角剖分网格(MeshTri),加密(refine) 4 次

 

e = ElementTriP1()
basis = InteriorBasis(m, e)

ElememtTriP1: 三角形线性有限元 P1 

InteriorBasis: 节点基函数

 

@bilinear_form
def laplace(u, du, v, dv, w):
    return du[0]*dv[0] + du[1]*dv[1]

调用双线性形式模块 @bilinear_form

定义 laplace 函数

 

@linear_form
def load(v, dv, w):
    return 1.0*v

调用线性泛函模块@linear_form

定义 load 函数

 

A = asm(laplace, basis)
b = asm(load, basis)

组装刚度矩阵 A

组装质量向量 b

 

I = m.interior_nodes()

取出内部网格 I

 

x = 0*b
x[I] = solve(*condense(A, b, I=I))

求解方程 Ax=b

 

if __name__ == "__main__":
    m.plot3(x)
    m.show()

画出解的图象:

技术分享图片

 

以上是关于scikit-FEM-例1-求解Possion边值问题的主要内容,如果未能解决你的问题,请参考以下文章

scikit-FEM-例2-用Morley元在方形区域上解板弯曲问题

打靶法求解两点边值问题

Python小白的数学建模课-10 微分方程边值问题

scikit-FEM

OpenCV小项目:图像融合(泊松融合—Possion Blending)

CG——Possion Image Editing