什么是有限元
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Chapter 1
什么是有限元by caoer
1.1 PDE
有限元是一种求解问题的数值方法,求解什么问题呢?--求解PDE(偏微分方程).那么PDE是做什么用的呢?--描述客观物理世界。我想如果这两个问题搞清楚了也就明白了为什么要用fem,fem可以做那些东西。PDE可以描述很多物理现象,电磁,流体,换热,diffusion,力学,河床变迁,物种竞争,股票金融,等等等等。。。。乃至整个宇宙,当然也不是所有的物理现象都可以用PDE描述,如微观世界分子原子的运动等等,所以我从来都不建议用有限元方法仿真微观物质现象的原因,但也有PDE应用于微观位置如possion 方程来解析plasma的物理现象,这在量子物理里面用统计的方法过于庞大,泼松方程反而使问题简单而且能吻合实验,这些都是题外话就不多说了。除了PDE以外,ODE同样也可以描述客观世界,但ODE多用于控制系统,很有一些线性PDE的解法也都是将PDE转化为ODE来做解析解的
1.2 求解PDE
有了PDE以后,问题是如何求解并得到结果,首先要说明的是不是所有的PDE都有解的,往往有解的PDE才有实际工程意义。对于数值解法,常用的是有限差分,有限元和谱方法,还有蒙特卡罗法。有限差分出现的较早,计算精度相对较高,但是费时,且模型形状必须规则,边界条件处理困难,好处是可以比较方便的控制计算精度,适用于流体类的仿真。有限元方法效率高且满足精度要求,边界条件容易处理,得到了广大的应用,尤其是固体领域。谱方法由于可以采用FFT方法的来求解,使得程序有着精度高,收敛快的特点,也克服了有限元条件下使用高阶插值方程计算费时的缺点,常常使用periodic boundary condition,但也有越来越多的算法使得一类二类边界成为可能,适合微观尺度的PDE解,谱方法和有限元结合产生的谱元法取两者之优点,使得应用前景非常好。蒙特卡罗法不是基于弱解形式的,随机数的多维采样最终得到统计上的结果,多用于金融分析。咱这里还是着重有限元解PDE,顾名思义,有限元将整个计算几何模型划分为很多小的单元(element),每个单元的含有一定数量的节点(node),具体单个单元有多少节点,有对应的不同算法与差值方程,拿一个简单的线性4节点平面单元来说,每个单元包含4个节点,每个节点有对应的variable 值,比如简单固体力学问题,每个节点就有对应的位移值,热力学问题每个节点就有对应的温度值,等等。然后单元内部的variables就通过差值方法计算得出弱解(weak formation)是建立在变分法基础上的,通过这个方法将strong form的PDE转换为weak form,使得有限元的求解成为可能,具体如何推导weak form可以参考一些有限元书籍,如果一本基础的有限元书籍没有介绍如何推导weak form,那么可以考虑选择换一本了。推导所得的弱解形式仍需要通过计算机来计算,Galerkin方法推导出含有求和符号的公式,在计算机中多半以loop的形式来计算这个量,往往这个量就是stiffness matrix中的component,这个loop 多半是围绕gauss积分点进行的。公式中还会存在积分计算,有限元方法多用gauss quaradure的方法来计算,精度一般可以满足。也就说一般简单的限元计算中存在两次approximation,一次是Galerkin一次是gauss,这也是很多人在计算完以后需要进行validation的原因,同时对于非线性问题newton法本身就是通过计算误差来判断收敛的,固体有限元常常使用能量增量作为newton求解器的判据。单个单元的stiffness matrix计算完成后,还需要将所有单元的矩阵装配为一个大型的矩阵,然后进行线性代数计算。这个装配是很有技巧的,因为一般情况下stiffness matrix是一个很大的稀疏矩阵,0值往往可以省去以节省计算量。一个由10x10x10个8节点矩形单元组成的模型会有11x11x11个node, 如果是热力学问题变量是温度T, 每个节点上有一个自由度,组装后的的stiffness matrix会有(11x11x11)x(11x11x11)=1771561之大,随着单元数或变量的增加,计算是惊人的,这样
一个大的矩阵求解显然不能用常规的方法(gaussian elimination),这就是各种这样求解稀疏矩阵算法存在的原因了,有效且快速求解线代方程组是一个好的solver的标准。
1.4 后处理
其实对于最基本的有限元方法,求解得到的仅仅是variable的值,如力学就是节点位移值,thermal problem就是温度值,流体就是位移速度加压力值,如果我们想知道应力或者应变怎么办呢?后处理系统里面个都会增加相应子程序来计算stress, strain, flux等等。这也就是为何我们能看到各种各样的contour的原因了,当然读者也可以自己加入计算各种量的子程序,如应变能密度什么的。关于什么是有限元就介绍到这里,仅仅是一些随笔和想法,具体的理论和推导需要自身实践与探索,本文行文仓促只是阐述自己对有限元的粗浅理解。有不对的地方还请指正。
下一章会谈及一些我曾经用过得软件。
Chapter 2 有限元软件的介绍与比较
有限元软件很多,有商业的,开源的,免费的,并行的,多物理场的,专业于某领域
【这里仅仅介绍一些笔者曾经用过的,遗漏的还请高手补充。】
2.1ANSYS
第一个学习的有限元软件,也是上世纪末本世纪初国内最流行的,为什么流行呢?应为ansys的教程铺天盖地,所以大家都学习ansys因为有教程上手快,那个时abaqus的教程可谓是凤毛麟角,自然学习的人也就不多,当时组里导师都是用ansys,自然我也就用了。如果一个有限元软件推广的好,那么他的教程一定要推广的好,fem是一个专业性很强的软件,教程推广不够,销售自然不行。题外话,接下来说说对用他的感受。
当时学习ansys是直奔apdl去的,加上理论背景很弱所以学习过程异常艰苦。总得说来ansys是一个很中规中具的软件,功能很强大,计算也很可靠,速度快,基本上固体力学的问题都能解决。作为一个工程软件还是很不错的。帮助文件很丰富,我也挑不出他什么缺点。只是感觉国内学习ansys已经陷入了一个怪圈,用户喜欢就某一个应用技巧钻的很深,对于其基础的理论却忽略不视,这无不于大量ansys教材的编写误导有关。是指算例,却不关心原理,悲哀。
2.2COMSOL(femlab)
第一次用comsol的时候它叫femlab2.0, 无奈的是只是作为一种兴趣学习的,因为时间精力问题最后也没有很深入,偶然机会1年后又开始认真的学习,逐渐体会到他的强大,我想说的是comsol对于各种物理场的research的确是一把利器,他可以任意的由用户输入PDE,计算结果并出contour,这对于懂得有限元理论却又不想花大量的时间来编程的人来说,就是种bliss,然而缺点就是速度太慢,这也是可以理解的,毕竟comsol是将单元与pde信息进行重组后计算,而不是很多商业有限元已经将Pde固化在单元信息里了,但是其出色的weak form PDE模块是不可多得的有限元分析模块。还有其建模与后处理模块相当方便,比ansys方便很多。至于计算的精确性笔者还抱有怀疑态度,细节就不提了。国内现在这个软件推的很好,大有赶超ansys之势。值得一提的是comsol的并行计算能力,采用的umfpack+mpich的构架,总体并行效率还是非常令人满意的。
2.3FEAP
这个其实是老大哥,虽然很多人不知道它。开源,不免费,但是很便宜,也有免费的学生版本,大家可以下载学习用。据说abaqus和ansys都是源于这套程序,abaqus技术部里面的人都是feap搞这个组里出来的,虽然是用fortran编的,但是编程思路清晰,注解丰富,参考文档相近,实在是不可多得学习fem的神器。不提供gui的输入方式,命令的输入和apdl和umat方式很像,都是文本macro方式。计算速度超快,带有后处理功能,提供强