1学习ANSYS需要认识到的几点
相对于其他应用型软件而言,ANSYS作为大型权威性的有限元分析软件,对提高解决问题的能力是一个全面的锻炼过程,是一门相当难学的软件,因而,要学好ANSYS,对学习者就提出了很高的要求,一方面,需要学习者有比较扎实的力学理论基础,对ANSYS分析结果能有个比较准确的预测和判断,可以说,理论水平的高低在很大程度上决定了ANSYS使用水平;另一方面,需要学习者不断摸索出软件的使用经验不断总结以提高解决问题的效率。在学习ANSYS的方法上,为了让初学者有一个比较好的把握,特提出以下五点建议:
1.1将ANSYS的学习紧密与工程力学专业结合起来
毫无疑问,刚开始接触ANSYS时,如果对有限元,单元,节点,形函数等《有限元单元法及程序设计》中的基本概念没有清楚的了解话,那么学ANSYS很长一段时间都会感觉还没入门,只是在僵硬的模仿,即使已经了解了,在学ANSYS之前,也非常有必要先反复看几遍书,加深对有限元单元法及其基本概念的理解。
作为工程力学专业的学生,虽然力学理论知识学了很多,但对许多基本概念的理解许多人基本上是只停留于一个符号的认识上,理论认识不够,更没有太多的感性认识,比如一开始学ANSYS时可能很多人都不知道钢材应输入一个多大的弹性模量是合适的。而在进行有限元数值计算时,需要对相关参数的数值有很清楚的了解,比如材料常数,直接关系到结果的正确性,一定要准确。实际上在学ANSYS时,以前学的很多基本概念和力学理论知识都忘得差不多了,因而遇到有一定理论难度的问题可能很难下手,特别是对结果的分析,需要用到《材料力学》,《弹性力学》和《塑性力学》里面的知识进行理论上的判断,所以在这种情况下,复习一下《材料力学》,《弹性力学》和《塑性力学》是非常有必要的,加深对基本概念的理解,实际上,适当的复习并不要花很多时间,效果却很明显,不仅能勾起遥远的回忆,加深理解,又能使遇到的问题得到顺利的解决。
在涉及到复杂的非线性问题时(比如接触问题),一方面,不同的问题对应着不同的数值计算方法,求解器的选择直接关系到程序的计算代价和问题是否能顺利解决;另一方面,需要对非线性的求解过程有比较清楚的了解,知道程序的求解是如何实现的。只有这样,才能在程序的求解过程中,对计算的情况做出正确的判断。因此,要能对具体的问题选择什么计算方法做出正确判断以及对计算过程进行适当控制,对《计算方法》里面的知识必须要相当熟悉,将其理解运用到ANSYS的计算过程中来,彼此相互加强理解。要知道ANSYS是基于有限元单元法与现代数值计算方法的发展而逐步发展起来的。因此,在解决非线性问题时,千万别忘了复习一下《计算方法》。此外,对《计算固体力学》也要有所了解(一门非常难学的课),ANSYS对非线性问题处理的理论基础就是基于《计算固体力学》里面所讲到的复杂理论。
作为学工程力学的学生,提高建模能力是非常急需加强的一个方面。在做偏向于理论的分析时,可能对建模能力要求不是很高,但对于实际的工程问题,有限元模型的建立可以说是一个最重要的问题,而后面的工作变得相对简单。建模能力的提高,需要掌握好的建模思想和技巧,但这只能治标不能治本,最重要的还是要培养较强看图纸的能力,而看图纸的能力培养一直是我们所忽视的,因此要加强对《现代工程图学》的回忆,最好能同时结合实际的操作。
以上几个方面,只是说明在ANSYS的过程中,不要纯粹的把ANSYS当作一门功课来学,这样是不可能学好ANSYS的,而要针对问题来学,特别是遇到的新问题,首先要看它涉及到那些理论知识,最好能作到有所了解,然后与ANSYS相关设置结合起来,作到心中有数,不至于遇到某些参数设置时,没一点概念,不知道如何下手。工程力学专业更多的偏向于理论,往往觉得学了那么多的力学理论知识没什么用,不知道将来自己能作什么,而学ANSYS实际起到了沟通理论与实践的桥梁作用,使你能够感到所学的知识都能用上,甚至激发出对本专业的热爱。
1.2多问多思考多积累经验
学习ANSYS的过程实际上是一个不断解决问题的过程,问题遇到的越多,解决的越多,实际运用ANNSYS的能力才会越高。对于初学者,必将会遇到许许多多的问题,对遇到的问题最好能记下来,认真思考,逐个解决,积累经验。只有这样才会印象深刻,避免以后犯类似的错误,即使遇到也能很快解决。因此,建议一开始接触ANSYS就要注意以下三点:
要多问,切记不要不懂就问。在使用ANSYS处理具体的问题时,虽然会遇到大量ERROR提示,实际上,其中许多ERROR经过自己的思考是能够解决的简单问题,只是由于缺乏经验才感觉好难。因此,首先一定要自己思考,实在自己解决不了的问题才去问老师,在老师帮你解决的问题的过程中,去享受恍然大悟的感觉。
要有耐心,不要郁闷,多思考。对初学者而言,感觉ANSYS特别费时间,又作不出什么东西,没有成就感,容易产生心理疲劳,缺乏耐心。“苦中作乐”应是学ANSYS的人所必须保持的一种良好心态,往往就是那么一个ERROR要折磨你好几天,使问题没有任何进展,遇到这种情况要能调整自己的心态,坦然面对,要有耐心,针对问题积极思考,发现原因,坚信没有自己解决不了的问题,要能把解决问题当作一种乐趣,时刻让自己保持愉快的心情,真正当你对问题有突破性进展时,迎接的必定是巨大的成就感。
注意经验的积累,不断总结经验。一方面,初学时,要注重自己经验的积累(前面两点说的就是这个问题),即在自己解决的问题中积累经验;另一方面,当灵活运用ANSYS的能力达到一定程度时,要注重积累别人的经验,把别人的经验为自己所用,使自己少走弯路,提高效率,方便自己问题的解决。对于ANSYS越学到后面就越感觉是一个经验问题,因为该懂得的基本都懂了,麻烦的就是一些参数的调试,需要的是用时间去摸索,对同一类型的问题,别人的参数已经调试好了,完全没有必要自己去调试,直接拿来用即可。
1.3练习使用ANSYS最好直接找力学专业书后的习题来做
可能这一点与学习ANSYS的一般方法相背,我开始学ANSYS时也是照着书上现成的例子做,但照着书上的做就是做不出来,实在没有耐心,就干脆从书上(如材力,弹力)直接找些简单的习题来做。尽管简单,但每一步都需要自己思考,只有思考了的东西才能成为自己的东西,慢慢的自己解决的问题多了,运用ANSYS的能力提高相当明显,这可能是我无意中对学ANSYS在方法上的一点创新吧。我觉得直接从书上找习题做有以下好处:
从书上找习题练习是一种更加主动的学习方法,由于整个分析过程都要独立思考,实际上比照着书上练习难度更大。对初学者来说,照着书上练习很难理解为什么要这么做,因此,尽管做出来了,但以后遇到类似问题可能还是不知道 。
书上现成的例子基本上是非常经典的,是不可能有错的,一旦需要独立解决问题时,由于没有对错误的处理经验,遇到错误还是得要从头摸索,可以说,ANSYS的使用过程就是一个解决ERROR的过程,ERROR实际上提供了问题的解决思路,而自己找问题做,由于水平并不高,必将会遇到大量的ERROR,对这些ERROR的解决,经验的积累就是ANSYS运用能力的提高。
将书上的习题用ANSYS来实现,可以将习题的理论结果和ANSYS计算的数值结果进行对比,验证ANSYS计算结果的正确性,比较两者结果的差异,分析产生差异的原因,加深对理论的理解,这是照着现成的例子练习所作不到的。
当然,并不就说书上的例子毫无用处,多多看下书上的例子可以对ANSYS的整个分析问题的过程有比较清楚的了解,还可以借鉴一些处理问题的方法。
1.4 保持带着问题去看ANSYS是怎样处理相关问题的良好习惯
可能平时在看关于ANSYS的参考书籍时,对其中如何处理各种复杂问题的部分,看起来觉得也并不是很难理解,而一旦要自己处理一个复杂的非线性问题时,就有点束手无策,不知道所分析的问题与书上的讲的是怎么相关的。说明要将书上的东西真正用到具体的问题中还不是一件容易的事情。带着问题去看ANSYS是怎样处理相关问题的部分,可能是解决以上问题的一个好方法:当着手分析一个复杂的问题时,首先要分析问题的特征,比如一个二维接触问题,就要分析它是不是轴对称,是直线接触还是曲线接触(三维问题:是平面接触还是曲面接触),接触状态如何等等,然后带着这些问题特征,将ANSYS书上相关的部分有对号入座的看书,一遇到与问题有关的介绍就其与实际问题联系起来重点思考,理解了书上东西的同时问题也就解决了,这才真正将书上的知识变成了自己的东西,比如上个问题,如果是轴对称,就需要设置KEYOPT(3),如果是曲线接触就要设置相应的关键字以消除初始渗透和初始间隙。可能就会有这样的感慨:原来书上已经写得很清楚了,以前看书的时候怎么就没什么印象了。
如果照着这种方法处理的问题多了的话,就会进一步体会到:其实,ANSYS的使用并不难,基本上是照着书上的说明一步一步作,并不需要思考多少问题,学ANSYS真正难得是将一个实际问题转化成一个ANSYS能够解决且容易解决的问题。这才是学习ANSYS所需要解决的一个核心问题,可以说其他一切问题都是围绕它而展开的。对于初学者而言,注重的是ANSYS的实际操作,而提高“将一个实际问题转化成一个ANSYS能够解决且容易解决的问题” 的能力是一直所忽视的,这可能是造成许多人花了很多时间学ANSYS,而实际应用能力却很难提高的一个重要原因。
1.5熟悉GUI操作之后再来使用命令流
ANSYS一个最大的优点是可以使用参数化的命令流,因而,学ANSYS最终应非常熟练的使用命令流,一方面,可以大大提高解决问题的效率;另一方面,只有熟悉命令流之后,才会更方便的与人交流问题。
老师一开始讲授ANSYS时往往把ANSYS吹得天昏地暗,其中一条必定是夸ANSYS的命令流是如何的方便,并且拿GUI与命令流大加对比一番。问题也确实如此,但对那些积极性相当高且有点好高骛远的同学可能就会产生误导:最终是要掌握命令流,学了GUI还去学命令流多麻烦诺,干脆直接学命令流算了,不是可以省很多事吗?如将这种想法付诸于实践的话往往是适得其反,不仅掌握命令流的效率底,而且GUI又不熟悉,结果使用ANSYS处理问题来就有点无所适从,两头用得都不爽。因此,初学者容易一心想着使用命令流,忽视对GUI操作的练习,难以认识到命令流与GUI的联系:没有对GUI的熟练操作要掌握好命令流是很难的,或者代价是很高的。
直接去学命令流之所以难,一个是命令太多,不易知道那些命令是常用的,那些是不常用的,我们只要掌握最常用的就足够了,而如果GUI使用得多的话,就会很清楚那些命令是常用的(实现的目的一样),以后掌握命令流就有了针对性;另一个是一个命令的参数太多,同一个命令,通过参数的变化可以对应不同的GUI操作,事先头脑里没有GUI印象的话,对参数的变化可能就没有很多的体会,难以加深对参数的理解。因此,建议初学者不用管命令,踏踏实实的熟悉GUI操作,当GUI操作达到一定程度后,再去掌握命令流就是一件很容易的事情,当然也需要大量的练习。实际上,大多数使用者而言,基本上是将GUI操作与命令流结合起来使用,没有人会完全用命令流解决问题的,因为没有必要去记那么多命令,有些操作GUI用起来更加直观方便。一般而言,前处理熟悉使用命令流比较方便,求解控制里面使用GUI比较好。
此外,还有一点初学者也需注意,一开始学ANSYS主要是熟悉ANSYS软件,掌握处理问题的一般方法,不是用它来解决很复杂的问题来体现你的能力有多强,一心只想着找有难度的问题来着,往往容易被问题挂死在一棵树上而失去了整片森林。因此,最好多找些容易点的,涉及到不同类型问题的题来做练习。
2 一些ANSYS的使用经验
ANSYS的使用主要是三个方面,前处理——建模与网格划分,加载设置求解,后处理,下面就前两方面谈一下自己的使用经验。
2.1前处理——建模与网格划分
要提高建模能力,需要注意以下几点:
建议不要使用自底向上的建模方法,而要使用自顶向下的建模方法,充分熟悉BLC4,CYLIND等几条直接生成图元的命令,通过这几条命令参数的变化,布尔操作的使用,工作平面的切割及其变换,可以得到所需的绝大部分实体模型,由于涉及的命令少,增加了使用的熟练程度,可以大大加快建模的效率。
对于比较复杂的模型,一开始就要在局部坐标下建立,以方便模型的移动,在分工合作将模型组合起来时,优势特别明显,同时,图纸中有几个定位尺寸,一开始就要定义几个局部坐标,在建模的过程中可避免尺寸的换算。
注重建模思想的总结,好的建模思想往往能起到事半功倍的效果,比如说,一个二维的塑性成型问题,有三个部分,凸模,凹模,胚料,上下模具如何建模比较简单了,一个一个建立吗?完全用不着,只要建出凸凹模具的吻合线,用此线分割某个面积,然后将凹模上移即可。
对于面网格划分,不需要考虑映射条件,直接对整个模型使用以下命令, MSHAPE,0,2D MSHKEY,2 ESIZE,SIZE 控制单元的大小,保证长边上产生单元的大小与短边上产生单元的大小基本相等,绝大部分面都能生成非常规则的四边形网格,对于三维的壳单元,麻烦一点的就是给面赋于实常数,这可以通过充分使用选择命令,将实常数相同的面分别选出来,用AATT,REAL,MAT,赋于属性即可。
对于体网格划分,要得到比较漂亮的网格,需要使用扫掠网格划分,而扫掠需要满足严格的扫掠条件,因此,复杂的三维实体模型划分网格是一件比较艰辛的工作,需要对模型反复的修改,以满足扫掠条件,或者一开始建模就要考虑到后面的网格划分;体单元大小的控制也是一个比较麻烦的事情,一般要对线生成单元的分数进行控制,要提高划分效率,需要对选择命令相当熟悉;值得注意的是,在生成网格时,应依次生成单元,即一个接着一个划分,否则,可能会发现有些体满足扫掠的条件却不能生成扫掠网格。
2.2 加载求解
对于有限元模型的加载,相对而言是一件比较简单的工作,但当施加载荷或边界条件的面比较多时,需要使用选择命令将这些面全部选出来,以保证施加的载荷和边界条件的正确性。
在ANSYS求解过程中,有时发现,程序并没有错误提示,但结果并不合理,这就需要有一定的力学理论基础来分析问题,运用一些技巧以加快问题的解决。对于非线性分析,一般都是非常耗时的,特别是当模型比较复杂时,怎样节约机时就显得尤为重要。当一个非线性问题求解开始后,不用让程序求解完后,发现结果不对,修改参数,又重新计算。而应该时刻观察求解的收敛情况,如果程序出现不收敛的情况,应终止程序,查看应力,变形,等结果,以调整相关设置;即使程序收敛,当程序计算到一定程度也要终止程序观看结果,一方面可能模型有问题,另一方面边界条件不对,特别是计算子模型时,数据输入的工作量大,边界位移条件出错的可能性很大,因而要根据变形结果来及时纠正数据,以免浪费机时,如果结果符合预期的话,可通过重启动来从终止的点开始计算。下面举两个例子说明:
在做非均匀材料拉伸模拟材料颈缩现象的有限元数值计算时,对一个标准试件,一端固定,另一端加一个X方向的位移,结果发现在施加X方向的位移的一排节点产生了很大的Y方向位移,使得节点依附的单元变形十分扭曲,导致程序不收敛而终止,而中间的单元并没有太多变化。显然,可以分析在实验当中施加X方向的位移的一排节点是不应有Y方向的位移的,为了与实验相符应消除Y方向的位移,可同时施加一个Y方向的零约束,重新计算,结果得到了比较理想的颈缩现象,并可清楚的看到45度剪切带。
在做金属拉拔的塑性成型有限元模拟时,简化为一个二维的轴对称问题,相对于三维的接触问题而言是比较简单的了,建模,划网格都很顺利,求解时发现程序不收敛,就调参数和求解设置,基本上作到了该做的设置,该调的参数都试过了,程序照样不收敛,几乎到了快放弃的地步,没办法只好重新开始考虑,发现刚体只倒了一个角,而另一个倒角开始时认为没有必要倒,因此,试着重新倒角再计算,问题一下子迎刃而解,程序收敛相当快,有限元计算结果相当漂亮。
从以上两个例子也可以从中总结出一条:要把我们思考问题时的那些想当然的想法也要作为在分析问题时的检查对象。