加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

deal.II-有限元法(Finite Element Method)整体框架

(2017-08-09 16:21:51)
标签:

it

分类: deal.II
http://s2/mw690/002py5rbzy7dj0dksBrf1&690Element Method)整体框架" TITLE="deal.II-有限元法(Finite Element Method)整体框架" />

deal.II有限元程序结构:
1)Triangulation
Triangulation类(网格类)是n维单元及其低维(小于n)边界的集合。
单元(cell)是参考立方[0,1]^dim在合适的映射(mapping)下的image。
Triangulation存储了网格的几何和拓扑性质,如单元接触形式和顶点位置。一个triangulation对象不知道我们要在这个网格上使用的有限元的任何信息,它甚至都不知道它的单元的形状,它只知道2维时有4个面和4个顶点,三维时有6个面、12条边和8个顶点,其他信息都在映射类中定义。
通过在所有cells上进行的循环,可以获得triangulation的性质和数据,也可以对所有cells的faces进行循环。
2)FiniteElement
FiniteElement类用来描述定义在参考单元上的有限元空间(有限维的函数空间)的性质,比如单元的顶点、边界和内部有多少自由度,此外还给出了节点上形函数的值和梯度。
3)Quadrature
Quadrature类与FinteElement类一起,在参考单元上定义,它们仅用来描述参考单元上积分点的位置和每个积分点的权重。
4)DoFHandler
DoFHandler类是triangulation和finite elements的汇聚点:finite elements描述了每个节点、边和单元内部需要多少自由度,DoFHandler类按照finite elements对自由度的要求在triangulation的节点、边和单元内部分配自由度,并获得每个自由度的全局标识。
如同triangulation对象,DoFHandler类的大部分操作也是通过对单元进行循环来完成的,我们可以得到的信息包括:单元的几何和拓扑信息(该信息在之前通过triangulation的迭代器获得),当前单元的自由度的全局标识,从一个存储triangulation全部自由度相关联的值的数据向量中提取当前单元的自由度相关联的值。
DoFHandler类也不知道从参考单元到实际单元的映射的任何信息,它也不知道它管理的自由度的形函数的信息,它只知道每个节点、每条边、每个单元内部有多少自由度。
5)Mapping
当我们需要计算矩阵和右端项的元素或每一个triangulation单元上的某个值时,我们需要知道实际单元上的有限元形函数和积分公式的积分点位置(finite elements对象提供形函数值和梯度等信息,quadrature对象提供积分公式、积分点位置和积分点权重,但是这些信息都是定义在参考单元上的;通过mapping类,将参考单元上的这些信息映射到实际的triangulation单元上),通过Mapping类及其派生类将参考单元的诸多信息映射到实际单元。
6)FEValues
FEValues类计算单元上积分点处的形函数的值和梯度、散度等其他信息。当我们计算在一个单元上的积分时,我们实际上是用近似的求积公式来代替积分,因此我们只需要知道单元区域的有限个点的位置的形函数值、梯度即可。FEValues就提供这些信息:给定有限元、积分信息和映射,FEValues类计算"the restriction of a continuous function space"。
7)Linear Systems
当我们知道了一个单独cell的形函数值和梯度(using FEValues)之后,就可以计算出这个cell的单元线性系统;如果我们又知道了如何获取这个cell的自由度的全局标识(using DoFHandler iterators),就可以组装系统线性系统。deal.II提供了一系列类来管理矩阵、向量的元素,并提供了其他线性代数软件包的接口。
8)Linear Solver
使用求解器来求解有限维的线性系统。FEM中,通常是用迭代法来求解矩阵方程。当然deal.II也提供了矩阵方程直接求解器或稀疏矩阵直接求解器。
9)Output
输出结果及后处理。deal.II没有直接将结果进行后处理的功能,但是它提供了多种计算结果输出格式,可以用多种可视化软件进行可视化处理。

几点理解:
  • FEM的思想就是用有限维函数空间的一组基的线性组合来近似精确解
  • 形函数是FiniteElement类定义的,并且形函数是定义在参考单元上的
  • Quadrature类定义了求积点位置和权重,并且这些信息也是定义在参考单元上的
  • Mapping类将定义在参考单元上的形函数、求积点映射到实际单元上
  • FEValues类利用实际单元上的形函数和求积点,计算出当前实际单元的全部求积点处的形函数值和导数、从参考单元到实际单元进行映射的雅克比行列式以及实际单元上求积点的权重;换句话说,FEValues类给出的信息是在实空间中的,包含了进行数值积分所需的全部信息

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有