- 积分
- 21
- 注册时间
- 2007-2-27
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2009-12-20 01:55:35
|
显示全部楼层
来自 美国
CH5_有限元的求解器 by caoer
本帖最后由 caoer 于 2015-11-29 04:28 编辑
CH5_有限元的求解器 by caoer (qq:1694240258)
最后的问题都围绕求解Ax=b这个方程组了,也就是要求解它,那么高效的求解器是必要的。其实很多商业有限元的使用者都忽略求解器的选择,实际上求解器直接决定了求解的正确与否,选择正确有效的求解器也是所有分析人员必须了解的问题。有人抱怨有限元计算太费时,或是老报错,很有可能选择了不正确的求解器,这里仅对主流一些求解起作一些介绍。毕竟solver成千上万,很多人也喜欢编写自己的求解器来解决特定的问题,这样他们认为更加有效率且误差小。本节主要介绍线代求解器和时间求解器,线代求解器又分为直接求解和迭代求解器。
5.1 常用直接求解器(从中仿科技ppt中拷贝)
– UMFPACK, SPOOLES, TAUCS, PARDISO等
– 易于使用,鲁棒性,占用内存大
– 适于处理小规模问题,高度非线性和多物理场问题
• UMFPACK
– 对一般的非对称矩阵是鲁棒和高效的 – 要么计算成功,要么运算内存不足
• SPOOLES
– 利用对称矩阵 – 内存使用比UMFPACK有效,但计算速度较慢
• PARDISO
– 利用对称矩阵 – 和UMFPACK类似,但使用内存比SPOOLES少 – 共享内存式并行处理 – 在矩阵分解过程中不需要选主元从而节省内存,这导致不精确的因子 – 由于支持并行的折中处理,不是100%的鲁棒性
• TAUCS – 非常适合于对称,正定矩阵
5.2 常用迭代求解器(从中仿科技ppt中拷贝)
– GMRES, FGMRES, Conjugate Gradient, BiCGSTAB等
– 占用内存少,更多的选择,调整比较困难
– 应用于特定的物理场,如,EM,CFD等
– 需要预处理器,网格框架,平滑器等
• GMRES – 在前面所有搜索方向上最小化残差,直到重新开始 – 如何调整重新求解前迭代步数(默认为50) • 更节省内存 --- 减小 • 得到较好的鲁棒性 --- 增加
• FGMRES
– GMRES的一个灵活的变种 – 能有效地处理更多类的预处理器 – 比GMRES开销2倍多的内存
• Conjugate Gradient – 对称正定问题 – 在计算时比GMRES更快、内存使用效率更高
5.3 常用时间求解器
对于无时间求导的PDE也就是稳态问题,时间求解器有 quasi-static method 和 Midpoint static Method。一阶时间求导的PDE,如thermal or diffusion equation, 有Backward Euler implicit method, backward difference formular methed (BDF),和Generalized midpoint method, 其中BDF方法收敛快精度好,推荐使用。二阶时间求导的PDE方法很多,比较代表性的是NEWMark method和HHT alpha method。当然也可以编写自己定义的求解器,好的求解器痕量标准就是准确度高速度快。
5.4 newton求解器
非线性问题都是需要他的,基本方法很简单,就是高等数学第二章的牛顿-来不妮子公式:x_new = x + f(x)/f'(x), 这种方法属于迭代法,大家都知道迭代法根本思想就是 ||x_new-x|| 是否小于某个很小的值,小于就收敛,反之不然。扩展到有限元,f(x)就复杂了一些,成了residual(不要说你不知道什么是residual哦),x成了独立变量。常用的判据有三种,residual增量,x增量,能量增量,其中能量增量(也就是residual增量乘以x增量)是有限元软件的偏好,大家常常选他作为收敛判据,因为他对无论concave还是convex的f(x)函数都有比较准确的判断。还有一些变种的newton求解器,原理差不多,修修边幅而已。
这里只是简单提及了常用的求解器,具体的理论和方法在网上和教材上都有,就不赘述了。想要说的是求解器是数学背景人非常关心的问题,而放到的工程应用领域却被极大的忽视了,方便了使用者,但这也许是商用有限元黑盒子带来的弊端。这里直接引用了中仿科技关于comsol solver的介绍,介绍的很全面我不用费力大字了,偷个懒。上面有很多求解器都是开源免费的,如果自己编写程序,可以直接从网上下载并使用。 |
评分
-
1
查看全部评分
-
|