如何成为一名合格的分析工程师——必备的理论基础

0 评论

 

 

随着有限元在工业领域的普及,FEA成为CAE的重要组成部分,同时也带给大家一个感觉,CAE嘛,当然是COMPUTER重要。说到这里,我想到一个人,就是我硕士时的导师,作为北大数学力学系的毕业生,在60年代分配去做反应堆工程,做了一辈子的核设备力学分析。他到这个研究院后,开始主要是手算解决力学问题,然后是从打孔计算机开始编程计算,然后SAP4,ADINA用到了SAP84。在我入学时,计算工具已经是ANSYS5.4和MARC了,操作系统也变成了UNIX,他已经不会这些工具了,但是在日常的分析工作中,遇到问题时,无一不是他解决的。他给我说的一句话,至今让我受益。”无论用什么程序,要清楚你输入的每一个参数的来龙去脉”。正是这样,即使不懂商业软件,他还是可以帮助我们解决分析中遇到的问题。

 

 透彻的了解所分析问题的理论基础是做一个分析工程师所必须的条件。

 

大多数公司对有限元分析工程师的基本学历要求都是工学硕士。抛开目前国内人才市场学历贬值的因素不谈,我觉得这个要求是非常合理和必要的。因为进近些年,在大多数的工科院校里,除了工程力学专业外,很少在本科阶段开设有限元理论的课程,另一些做有限元分析的必要理论课程,如弹性力学,塑性力学,变分理论也多在硕士阶段才开设。因此有时看到一些公司在招聘有限元分析工程师时,学历要求仅仅要求大专或本科,便觉得有些怀疑。并非学历歧视,只是觉得如果要以大专或本科的教育背景,可能需要做更多努力才能胜任这样的职位。

 

作为一个分析工程师到底需要什么样的理论基础呢,也许有人觉得过分强调理论的重要性有些吹毛求疵了。在这一部分中,将系统介绍一下分析工程师必须具备的理论知识,限于本文的写作目的,本章不会涉及细节的理论。

 

在大学中,我们首先学到的是数学,对于有限元分析,数学同样是最基础的了。除了对微积分有深刻认识外,由于在力学领域会涉及到较多的偏微分方程,应此对数理方程应该了解,同时,由于有限元分析是数值计算方法,矩阵论、数值计算方法和偏微分方程数值解是尽量要掌握的。

 

另外的便是变分方法和复变函数了,对于有限元分析工程师,个人认为这两门课程不是必须的,因为对于大多数工程力学分析问题,已经有现成的变分过程可查了,有一点变分的知识就好了。(十年前就写了这么多,所以网上传播的那些帖子也就都戛然而止了,下面的经验还没有涉及呢。)

 

力学毫无疑问是专业基础,但是确实类别太多,理论力学、材料力学、弹性力学、结构力学、振动理论或结构动力学、弹性动力学、塑性力学、断裂力学…光固体力学就一大堆。再加上可能会遇到的热力学、流体力学…公式一大堆,本本书都是可以烧坏脑子的。

 

如果在学校学过上面这些科目,能科科都过就阿弥陀佛了,工作几年,大概都还给赵钱孙李各位教授了。今天说要全部读一遍,对大多数人都是不可能的了。而且就算都读一遍,所有例题都演算一遍,也难以保证在分析工作中能有所帮助,那如何提高自己做分析时的理论推导能力呢?如何快速提高自己的理论水平呢?

 

一方面,在商业软件大行其道的今天,商业软件已经渗透到了工业领域甚至高校及科研机构的各个角落,而且商业软件越来越庞大,对大部分的应用工程师来说,商业软件越来越成为一个黑匣子。

 

另一方面,从结构分析工程师的背景来说,以笔者所见,机械设计与机械制造、土木工程、热能工程、核工程、化工机械等等五花八门,科班工程力学少之又少,笔者也并非科班力学。

 

正是由于工具及使用者两方面的原因,使得分析变得模式化和流程化。但是,仿真分析的可怕之处在于,陷阱太多,无论你如何设定分析模型和参数,除了极少情况(无法收敛的非线性问题等),都可以得到一个似是而非的结果,而那些黑匣子扔出一个结果,永远不会主动告诉你此次分析是对还是错。如果错了,将导致设计校核上的直接损失和团队对分析工作失去信任。

 

只有一个办法,就是去理解这些黑匣子!而理解这些仿真程序,就需要上一节提到的那些理论课程,如果你能按照我推荐的办法一点点理解分析软件的运作模式,持续的去做,最终你将能够理解那些理论在分析中如何被应用,从“光脚的杀手”变成“穿鞋子的杀手”。读懂分析程序将是快速提高理论水平的一条捷径。

 

所谓读程序,可以理解为开发软件的逆向工程,编一段分析程序的流程大抵应该是:理论公式-数值算法-程序实现,这三者的关系非常割裂。那好,如果我们有办法从源代码中找出分析的理论公式,就可以很快理解程序的运作机制了。

 

下面将具体讲解读什么及如何读。

 

读懂大型商业软件ANSYS,Abaqus, Nastran很难吗?不用恐惧,下面给大家看两段输入文件。如何成为一名合格的分析工程师——必备的理论基础

左边较精炼一段是ANSYS经典版的模态分析的输入文件,右边一段是古老的ADINA的一个时程分析的输入文件。

 

比较二者,ANSYS是加入了一些Keyword;ADINA没有keyword,输入数字意义用行列位置表示,需要一本说明书便可清楚得到。剔除字符定义的区别和几何不同,两个程序需要读取的信息是一样的。可以看出,尽管两个程序版本出现的年代久远(相隔20年以上),其运行机制并无大不同。

 

但是当年的ADINA的源程序有多少呢? 1.8M!下节我们将来分析这 1.8M代码有多强大,打破大家心目中的黑匣子!

 

做结构仿真分析这件事,有两类人,一类是科研人员,一类是工程师。再次强调本文所谈主要针对工程师。

 

 上文谈到一个古老的有限元分析软件的源代码,为什么谈这个软件? 刚好手边有一个完整的ADINA84源代码版本,此软件在1984年之前是更流行的有限元结构分析软件,因为其源代码公开,后来很多商业软件都是以此为原型的。

 

结构分析计算就是求解一堆偏微分方程组:平衡方程,物理方程,几何方程,力边界条件,几何边界条件。因为理论求解只能解出极少的一部分简单问题,对于复杂问题,就只能借助于数值方法,差分方法,有限元方法等等都是结构分析常用的数值方法。

 

最开始的有限元方法提出者Clough是利用结构力学里的直接刚度法推导到弹性力学的平面问题的,这就是很多人会发现,有限元分析流程与结构分析的直接刚度法的相似性(找本计算结构力学看看,可以大大提高对有限元分析的直观认识,个人认为这门课比较简单)。

 

后来,牛人们从严格的数学上的论证了有限元方法是基于变分原理Ritz的一种形式,确认了有限元方法是处理连续介质问题的一种普遍方法,然后更多牛人把这一方法扩展到了塑性、粘弹性等等各个学科和各个领域。这部分基本就忽略吧,目前我们工程中常用各类力学的基本方程的等效变分原理都推导的非常成熟了。(论证部分有兴趣可以参考王勖成的经典有限元教材,英文经典的有Bath和Clough的)。Bath就是干出ADINA84程序那位。

 

这里要提一个概念叫有限元分析本体程序,它是有限元分析程序的核心,目前那些装在机器上庞大到几个G的商业软件,其本体程序基本大同小异,并非像想象那么大,几十个K足足可以解决一个类型的问题了。上面提到的ADINA84,因为没有太多前后处理功能,1.8M主要就是本体程序的大小,主要的分析功能都有了。让我们来拆开本体程序吧。下面是一个静力平衡问题的本体程序框图。(取自王勖成《有限单元法基本原理和数值方法》第二版)

 如何成为一名合格的分析工程师——必备的理论基础

  

各结构分析各个分支的计算模块的本体程序流程大同小异,基本按这个流程在走。如果是Ka=P这个方程会引入加速度,就变成了动力问题,如果K中也含有a, 求解的也就是非线性方程组了。不能再往下深入,否则就是具体理论问题了。

 

我的建议是,找一段源代码,分解出上图描述的流程,再读出其中的平衡方程,物理方程,几何方程,力边界条件,几何边界条件,这样就可以将那些复杂的力学理论映射到程序原理和程序使用上,求解线性方程或非线性方程的部分至少读出求解方法,就可以把数值计算的理论加深。