前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源有限元框架 deal.ii

开源有限元框架 deal.ii

作者头像
fem178
发布2019-06-19 18:32:12
2.9K0
发布2019-06-19 18:32:12
举报

官网:https://www.dealii.org/

deal.ii安装过程很麻烦,需要装个虚拟机。

deal.ii基于c++语言开发,目前活跃度较高。整体框架如图所示

1)Triangulation

Triangulation类相当于前处理的几何建模和网格划分。Triangulation存储了网格的几何和拓扑性质,如单元接触形式和顶点位置。一个triangulation对象不知道我们要在这个网格上使用的有限元的任何信息,它甚至都不知道它的单元的形状,它只知道2维时有4个面和4个顶点,三维时有6个面、12条边和8个顶点,其他信息都在映射类中定义。

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

类似于组装刚度矩阵以及等效节点力向量。

8)Linear Solver

使用求解器来求解有限维的线性系统。FEM中,通常是用迭代法来求解矩阵方程。当然deal.II也提供了矩阵方程直接求解器或稀疏矩阵直接求解器。

9)Output

输出结果及后处理。deal.II没有直接将结果进行后处理的功能,但是它提供了多种计算结果输出格式,可以用多种可视化软件进行可视化处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档