FEniCS随记(1)

标签:
fenicsfem教育 |
分类: openFEM |
FEniCS是一个由University of Chicago和Chalmers University of Technology主导开发的开源C++/Python的FEM代码。它可在Win/Mac/Unix下运行,但官方Win平台编译版只跟进到1.0,想玩最新的还是在Lin下吧。
它的结构为:
对于初级用户来说,用Python上手学习怎么使用FEniCS还是很容易的,也不必它在意你的PDEs或ODEs怎么去求解的,用户只需要懂得一点点有限元变分原理,对自己的方程要求解什么有概念即可。
以Poisson问题为例:
本代码定义了有限元网格、网格和单元类型离散函数空间,边界条件,以及线性弱形式方程,从而计算得到未知u的试函数。
变分方法:PDE中乘以一个试函数v,在计算域上积分,如遇2阶项便采用分部积分。
试函数v 即为 test function
而未知函数 u 则为 trial function
在FEniCS中,需要分别给这两个函数分配离散空间
有限元法作为变分法和分片插值法结合的产物,它在单元内使用低次多项式分片插值,然后在把它们组合起来,形成全域内的函数,从而逼近真解。
而变分问题最终可转化为
对于Poisson问题,则:
from dolfin import *
# Python语言导入库 dolfin
# Create mesh and define function
space
mesh = UnitSquare(6, 4)
#
划分网格,将正方形先划成6×4的方格,然后在分两半,因此共48个三角形单元
#mesh = UnitCube(6, 4, 5)
# 正方体
V = FunctionSpace(mesh, 'Lagrange', 1)
# 单元类型定义,lagrange单元,自由度1个,既线性lagrange单元
#
#
#
#
#
#
#