《转载的有限元与求解器简单介绍》由会员分享,可在线阅读,更多相关《转载的有限元与求解器简单介绍(12页珍藏版)》请在金锄头文库上搜索。
1、转载的有限元与求解器简单介绍1.1 PDE# y& 8 C R- a, V2 T 有限元是一种求解问题的数值方法,求解什么问题呢?求解 PDE(偏微分方程).那么PDE是做什么用的呢?-描述客观物理世界。 我想如果这两个问题搞清楚了也就明白了为什么要用 fem,fem 可以做 那些东西。PDE可以描述很多物理现象,电磁,流体,换热, diffusion,力学,河床变迁,物种竞争,股票金融,等等等等。 乃至整个宇宙,当然也不是所有的物理现象都可以用 PDE 描述,如微 观世界分子原子的运动等等,所以我从来都不建议用有限元方法仿真 微观物质现象的原因,这是题外话就不多说了。除了 PDE以外,ODE
2、 同样也可以描述客观世界,但ODE多用于控制系统,很多线性PDE的 解法也都是将 PDE 转化为 ODE 来解的,如 separating variables 方 法。! |/ Y5 / n( V( V) p0 人1.2求解PDE5 g. U7 J ?# y2 $ a人有了 PDE 以后,问题是如何求解并得到结果,首先要说明的是不 是所有的PDE都有解的,往往有解的PDE才有实际工程意义。对于数 值解法,常用的是有限差分,有限元和谱方法,还有蒙特卡罗法。有 限差分出现的较早,计算精度相对较高,但是费时,且模型形状必须 规则,边界条件处理困难。有限元方法效率高且满足精度要求,边界 条件容易处理,
3、得到了广大的应用。谱方法是基于 FFT 方法的解法, 精度高,收敛快,必须使用periodic boundary condition,适合微观 尺度的 PDE 解。蒙特卡罗法不是基于弱解形式的,多用于金融分析, 这里还是着重有限元解PDE,顾名思义,有限元将整个计算几何模型 划分为很多小的单元(element),每个单元的含有一定数量的节点 (node),具体单个单元有多少节点,有对应的不同算法与差值方程, 拿一个简单的线性 4 节点平面单元来说,每个单元包含 4 个节点,每 个节点有对应的 variable 值,比如简单固体力学问题,每个节点就有 对应的位移值,热力学问题每个节点就有对应的温
4、度值,等等。然后 单元内部的variables就通过差值方法计算得出。* B( P+ k6 N+ e% B1.3 Galerkin approximation 与 weak formation I# # 人-p. P / t U0 w# _* v4 G/ A* w- M$ 3 w, F弱解(weak formation)是建立在变分法基础上的,通过这个方法 将strong form的PDE转换为weak form,使得有限元的求解成为可 能,具体如何推导weak form可以参考一些有限元书籍,如果一本基 础的有限元书籍没有介绍如何推导weak form,那么可以考虑选择换一 本了。推导所得的
5、弱解形式仍需要通过计算机来计算,Galerkin方法 推导出含有求和符号的公式,在计算机中多半以loop的形式来计算这 个量,往往这个量就是stiffness matrix中的component。公式中还 会存在积分计算,有限元方法多用gauss quaradure的方法来计算, 精 度一般 可 以满足 。 也就 说 一般有限 元计 算 中存在 两次 approximatio n,次是Galerk in 次是gauss,这也是很多人在计算完 以后需要进行validatio n的原因。单个单元的stiffness matrix计算完 成后,还需要将所有单元的矩阵装配为一个大型的矩阵,然后进行线
6、性代数计算。这个装配是很有技巧的,因为一般情况下stiffness matrix是 个很大的稀疏矩阵,0值往往可以省去以节省计算量。要知道,一 个10 0个单元的4节点平面单元单个变量的stiffness matrix会有 101x101大,随着单元数或变量的增加,计算是惊人的。$ b0 Z- w3 N r3 p3 p7 x1.4后处理其实对于最基本的有限元方法,求解得到的仅仅是 variable 的值, 如力学就是节点位移值,thermal problem就是温度值,流体就是位 移速度加压力值,如果我们想知道应力或者应变怎么办呢?后处理系 统里面个都会增加相应子程序来计算stress, st
7、rai n, flux等等。这也就 是为何我们能看到各种各样俄 contour 的原因了,当然读者也可以自 己加入计算各种量的子程序,如应变能密度什么的。关于什么是有限 元就介绍到这里,仅仅是一些随笔和想法,具体的理论和推导需要自 身实践与探索,本文行文仓促只是阐述自己对有限元的粗浅理解。有 不对的地方还请指正。下一章会谈及一些我曾经用过得软件。CH2_有限元软件的介绍与比较by caoer i7 y; l0 I* _ F; a N* 有限元软件很多,有商业的,开源的,免费的,并行的,多物理 场的,专业于某领域的,这里仅仅介绍一些笔者曾经用过的,遗漏的 还请高手补充,我会注明是你的补充。; %
8、 m1 D- T. T P5 U& O+ M. % Z( l H, 2.1 ANSYS7 ?6 N; Q- _1 S第一个学习的有限元软件,也是上世纪末本世纪初国内最流行的, 为什么流行呢?应为 ansys 的教程铺天盖地,所以大家都学习 ansys 因为有教程上手快,那个时abaqus的教程可谓是凤毛麟角,自然学习 的人也就不多,当时组里导师都是用ansys,自然我也就用了。如果一 个有限元软件推广的好,那么他的教程一定要推广的好, fem 是一个 专业性很强的软件,教程推广不够,销售自然不行。题外话,接下来 说说对用他的感受。4 & b5 N h G: d) T# b0 Z) 当时学习an
9、sys是直奔apdl去的,加上理论背景很弱所以学习过 程异常艰苦。总得说来 ansys 是一个很中规中具的软件,功能很强大, 计算也很可靠,速度快,基本上固体力学的问题都能解决。作为一个 工程软件还是很不错的。帮助文件很丰富,我也挑不出他什么缺点。 只是感觉国内学习 ansys 已经陷入了一个怪圈,用户喜欢就某一个应 用技巧钻的很深,对于其基础的理论却忽略不视,这无不于大量an sys 教材的编写误导有关。是指算例,却不关心原理,悲哀。 + D0 Y g6 1 c : r4 2.2 COMSOL( femlab ) : _& K) & F; / U( 07 B第一次用comsol的时候它叫fe
10、mlab2.0,直奔多物理场耦合而去 的,无奈的是只是作为一种兴趣学习的,因为时间精力问题最后也没 有很深入,偶然机会1年后又开始认真的学习,逐渐体会到他的强大, 我想说的是 comsol 对于各种物理场的 research 的确是一把利器,他 可以任意的由用户输入PDE,计算结果并出con tour这对于懂得有限 元理论却又不想花大量的时间来编程的人来说,就是种bliss,然而缺点 就是速度太慢,这也是可以理解的,毕竟comsol 是将单元与 pde 信息进行重组后计算,而不是很多商业 有限元已经将Pde固化在单元信息里了,但是其出色的weak form PDE 模块是不可多得的有限元分析模
11、块。还有其建模与后处理模块相 当方便,比 ansys 方便很多。至于计算的精确性笔者还抱有怀疑态度, 细节就不提了。国内现在这个软件推的很好,大有赶超ansys之势。% V8 & _5 v) T d+ 7 # m ?7 N2.3 FEAP 9 ?0 E# Q+ Q& B, P e 这个其实是老大哥,虽然很多人不知道它。开源,不免费,但是很便宜,也有免费的学生版本,大家可以下载学习用。据说abaqus和 ansys都是源于这套程序,abaqus技术部里面的人都是feap搞这个 组里出来的,虽然是用fortran编的,但是编程思路清晰,注解丰富, 参考文档相近,实在是不可多得学习 fem 的神器。
12、不提供 gui 的输入 方式,命令的输入和apd l和u mat方式很像,都是文本macr o方式。 计算速度超快,带有后处理功能,提供强劲的二次开发接口,可以自 己编写子程序输出其他后处理软件如tecplot.具有openmpi并行能力, 提供丰富的elastic, plastic , hyperelastic模块。缺点是之用于固体力 学与热计算,当然可以自己开发其他单元,如电磁的。还有就是 feap 只运行于linux下,使用者需要知道如何make程序。% ( + m5 V d, . m2.4 libmesh 和 deal II 之所以把这两个程序放在一起,是因为都出自于同一个大师。C+开
13、源免费程序,非常的robust,但是还有一些小bug存在,可以 应用于更广泛的领域如流体,强劲在于adaptive meshi ng和remesh, 从而可以解决很多常规有限元无法解决的问题,如 singularity 问题。 需要有c+背景以及有限元理论知识,也是笔者遇到门槛最高的一个 有限元软件,推荐给专业人事。同样是在Linux下运行的软件。2.5 ALGOR_pipeline h4 Q1 n. B8 z) b1 N这个软件在也挺有名,但是国内用的少,主要是固流耦合这快做 得比较好,就我所知一些有名的飞机和流体机械厂都用他,我主要是 用 pipeline 这个插件,也许名字记得不对,就是
14、用来计算整个管路系 统的震动的,前处理中设定管路,就可以计算出各阶振型与频率,很 方便,据说准确性挺好。其主模块用的不多,不做讨论了。基本上笔者主要使用的就是这几种有限元软件,我想如果能精通 上面任何一种软件,学习其他的软件都是一个很快的过程。如果你是 博士生且有一个比较长得研究学习时间,推荐用feap和deal II,如果是 硕士,推荐comsol,本科毕业设计,推荐ansys.当然每个人水平周围 环境都不一样,不能一概而论,总之多学一点东西没有坏处,每个软 件都有其深厚的背景。也欢迎高手补充其他软件,投条给我。yCH3_有限元的数值方法by caoer( S. x! y9 C5 h+ 这里
15、先略过有限元的几何建模与网格划分部分,因为一来不是数 值方法的主要部分,二来我对这块也不是很精通,所以直接从数值解 法入手。这部分可以说是ch4与ch5的总体概览部分。也是fem的核心。4 U. W3 b% ? a( s! t6 i3.1单元离散化与jacobian划分好网格后,就意味着单元编号以及节点都已确定下来了,其 实这步在有限元分析的一开始就设定好了。拿平面单元为例,如果选 用平面 8 节点矩形单元来计算热力学问题,那么每个单元有 8 个节点 温度值,要知道每个节点的位置并不是规则均匀分布在实际有限单元 上的,人们通常将节点的 global 坐标转换到 local 坐标上,以方便计 算
16、推导,之后再通过 jacobian 转换到 global 上,这点和连续介质力 学的referenee转换是同一道理。6 m) X& p R$ 3.3运动方程与各种矩阵/ ) |/ E( _4 v+ X. J% D得到了单个单元的 8 节点 test function 或 grediant of test function 的积分值以后(积分的计算用 gauss 法),就需要联系所有 的单元,装配成为一个整体的矩阵,这个矩阵就是stiffness matrix,如 果是一个4单元简单正方形区域,那么装配好的stiffness matrix就是 个 21x21矩阵,以 k 标记,除此以外,如果是瞬态问题,也会有质量矩阵 存在,多半是一个对角矩阵,其值一般是test function的积分值,如 果存在dampi