1 debug的流程
Boulbes 在这里画了一个很长的流程图,感兴趣的同学可以认真阅读一下。我自己是跳过了,尽管我知道这是来自一位老工程师的呕心沥血,但是我看到这么多分枝真的是怕了。
2 任务诊断
这是流程图里的第一步。
2.1 测试模型和确定单位
对于大的模型,强烈建议先做个简化的测试模型,比如简化模型尺寸、简化形状、简化材料等等。同时还要注意单位的一致性。下图是abaqus的单位表。
a 国际单位制
b 应力也等于每单位体积的能量(做功)密度
c 密度等于每单位体积的重量
d slug是基于重量的度量系统中的质量派生单位,在美制和英制单位体系中比较常见
f 每平方英寸的磅力,是基于avoirdupois单位的压力或应力单位,也就是力作用于单位面积上的结果
在建模时,应对照上表保持单位的一致。测试模型最好能具备下列特性:
2.2 输出结果检查
在提交文件之前,可以在Field Output Requests或者History Output Requests中选择更多的输出变量,这有助于后期的检查。以下是推荐的一些变量:
(1).dat文件有助于确定load path:*ENERGY PRINT得到能量历史;*NODE PRINT得到Reaction Force;*NODE PRINT得到接触力
(2)对于热传导分析:NT得到节点温度;HFL得到heat flux vector;RFL得到规定温度产生的reaction flux values;RFLE得到节点上的total flux value;HFLA得到面上的heat flux vector;HTLA得到HFLA的时间集合结果。
(3)对于施加了预应力的螺栓连接,TF1可以得到螺栓预应力和时间的关系。方向1是预应力默认的施加方向。
(4)如果用了connector单元,建议使用NFORC得到节点的接触力。对于CFT(切向接触力),CFN(法向接触力)和CFS(面接触力),它们都是master 面上的力。
(5)对于接触问题,CSTRESS得到接触应力、CDISP得到接触位移、CFORCE得到接触力、CSTATUS得到接触状态(开/闭)、CNORMF得到接触法向力、CSHEARF得到接触切向力。
2.3 语法字符检查 (这段可能是针对使用input文件运行模型的)
首先需要在文件所在的文件夹内打开MSDOS命令提示符。最简单的方法是创建一个txt文件,在保存和关闭文件之前输入命令"cmd.exe"。然后,重命名该文件并把后缀从txt改为bat。双击打开文件,对应不同的abaqus版本输入不同的语法检查命令,比如你的abaqus是6.14-5的,就可以输入:abq6145 syntaxcheck j=my-input-file-name-without-extension
abauqs在运行以后会产生许多的文件,它们对应的意思是:
2.4 数据检查
和上一节一样,可以用命令提示符进行数据检查,例如:abq6145 datacheck j=my-input-file-name-without-extension
当出现error或者warning的时候,首先检查dat、msg和odb文件。具体需要检查:
2.5 荷载条件和边界条件
荷载和边界条件的检查包括:
尽量使用 rectangular coordinate 而不是 cylindrical coordinate, 因为cylindrical coordinate用于切向或者辐射方向不是位移确定的,有可能造成错误地定义节点位移,如下图。对于一个C3D20单元,p是施加的面荷载pressure,q是节点上的力,r是反作用力,平衡力为4q-4r。
2.6 材料检查
在定义材料性质前,需要对模拟结构的材料本构关系有所了解,对于材料的总体考虑包括:
2.7 约束检查
有两种方法可以将参考点和被约束点耦合在一起:默认的continuum coupling method和structural coupling method。continuum coupling method将参考点的位移和转动与被约束点的平局位移耦合起来。参考点只有一个,被约束的点可以有多个,是一个点群,continuum coupling method将参考点和被约束点群的中心耦合起来。参考点上受到的力和弯矩,只有力会传递给被约束点,弯矩不会。
structural coupling method将参考点的位移和转动与被约束点的位移和转动耦合起来。当在参考点施加一个力/矩或者位移/转动的时候,被耦合物体上的所有节点同时产生了力/矩或者位移/转动。约束中用到的局部(或者整体)的z轴是与被约束面法向量平行的。
尽量使用surface-based coupling constraints而不是传统的kinematic couplings或者distributing coupling elements。
2.8 单元检查
单元检查的常见方法:
(1)在Abaqus/Explicit中是否出现hourglassing现象?解决方法是使用enhanced hourglass controls,mesh refinement和penalty contact,以便接触可以更好地分布在节点上。
(2)如果单元是reduced integration的,需要对比atificial energy ALLAE 和 internal energy ALLIE,以确保用于约束hourglassing modes的artificial energy没有超过限制。
(3)在Explicit中,hexahedral单元是否有足够多的orthogonal kinematic formulation?定义orthogonal kinematic formulation的方式如下:
不要把orthogonal kinematic formulation用于变形很严重的单元、粗略的网格划分或者密闭模型。
(4)对于非线性的弹簧单元的刚度,应避免使用零刚度。可以在*CONNECTOR ELASTICITY 中输入 EXTRAPOLATION=LINEAR 以避免零刚度。
(5)对于一阶单元,在受弯的时候可能会出现网格自锁(mesh locking),所以不要对C3D8单元施加弯矩。
(6)对于reduced integration的 hybrid 单元,在结合hyperelastic 材料性质的时候,会出现收敛问题,可以取消reduced integration的选项,改用fully integrated。
(7)对于受弯和局部应变问题,C3D8单元可能是最费计算时间的单元。
2.9 接触面检查
本节介绍使用接触面时如何进行检查接触面设置是否合适。接触面设置常常用于多个物体组成的系统模型中,比如螺栓紧固。
(1)接触面上往往会设置约束,对于随时间变化的接触面约束,有可能需要允许渗透。例如:
上图的命令设置了一个随时间变化的amplitude,名叫RAMP-DOWN
通过*CONTACT INTERFACENCE设置了一个接触面上的约束,约束的方程定义为:
约束在这个荷载步中的方程可以定义为(h是允许的渗透量):
(2)对于面-面接触,接触面约束是通过slave face的法向运动决定的。
2.10 接触检查
和上节不同,本节介绍的接触主要是接触的性质。接触往往会导致整体刚度矩阵的不稳定和不对称,尤其是接触面的刚度发生变化时。在设置接触面刚度的时候,要确保master surface的刚度大于slave surface的刚度。同时,master的网格也要比slave的网格粗略。检查方法如下:
(1)确保surface to surface penalty被使用,尤其是使用C3D10单元和Lagrange multiplier 接触的时候。
(2)对于接触面包含edge(边线)的时候,要在slave surface使用node-to-surface的方法。比如:
(3)small sliding的使用需要慎重,要考虑是否适用于你的模型
(4)master的刚度是否比较大?这里的刚度不仅仅取决于材料的模量,同时也和约束条件以及形状有关。
(5)对于analytical rigid surface,需要采用fillet 参数让表面更加光滑。接触往往需要允许渗透,对于Eulerian材料渗透Lagrangian接触的情况,渗透的程度取决于局部Eulerian单元的尺寸。为了减小渗透,可以减小eulerian单元的大小或者 fillet Lagrangian接触面的光滑程度。
(6)采用法向Lagrange接触的时候,常常发生接触震颤(contact chattering)。如果不允许接触渗透,接触面的状态会在open和closed之间来回转化,这会导致不收敛的情况。所以适当允许渗透对收敛有好处。或者试试让接触面网格更加密集且光滑,让更多节点参与接触。
(7)对于摩擦问题,建议开启非对称的求解器。
(8)如果master surface有明显的弯曲,建议开启非对称的求解器,即非对称矩阵储存。
2.11 初始刚体运动和过分约束的检查
在abaqus中,刚体是指一群节点和单元的运动被某个节点所控制,这个节点被称为刚体参考点。其中一个导致不收敛的可能原因是不充分的约束条件,有可能导致局部过度变形。过分约束也会导致问题,比如零轴警告(zero-pivot warnings)。
(1)采用随场变量变化的弹簧单元可以避免zero-pivot warnings。一开始弹簧的刚度不为零,但是随着接触的发生,刚度逐渐变成零。比如:
上述代码表示,一开始的时候弹簧刚度是50N/mm,之后逐渐变成0.01N/mm。
(2)通过*CONTACT CONTROLS, STABILIZE稳定模型的初始刚度运动
(3)第(2)条的方法只能用于初始刚度运动。代码如下:
(4)如果使用了第(2)条的方法,最好检查一下CFT(total contact force),确保它随时间变化是连续的。比如:
(5)message文件中的zero-pivot messages是否提示过分约束(over constraints)?对于存在 zero-pivot 的结果,保持怀疑并努力尝试解决zero-pivot问题。如果zero-pivot问题存在于connector单元,则调整connector的属性,防止多余的约束。另一个策略是采用基础连接方式,比如CARTESIAN或者CARDAN,同时对需要约束的自由度施加合理的刚度。比如只在TRANSLATOR连接的X-轴方向施加刚度:
类似的,用基础连接的方法施加相对灵活的刚度以避免过分约束:
2.12 静力稳定检查
在静力分析中使用稳定公式可以帮助克服收敛问题,但是通过这种方法得到的结果不再是纯粹的静力学结果。通常解决静力学问题的表达式如下,其中,K是整体刚度矩阵,x是节点位移,fext是节点外力。
由于数值计算困难,有时候以上式子不能直接计算。一个帮助解决收敛问题的技巧是加入damping系数D 和考虑速度,如下:
显然,D的值越小,上式得到的结果越接近静力学结果,但是收敛也会变得困难。上式其实是一个准静态问题,得到的结果和静力学结果的偏差取决于D的取值。为了确定准静态和静力学结果之间的偏差,最好的方法是比较两种能量ALLSD和ALLIE随时间的变化。ALLSD代表外部施加力所产生的能量。ALLIE代表内部总能量,等于ALLSE (储存应变能)+ ALLPD(非弹性消散能) + ALLCD (viscoelasticity消散能)+ ALLAE(外部应变能)。
下式表示了两种能量的比值,比值应越小越好(ALLSD尽量接近于0),从而证明准静态结果接近于静力学结果,同时也说明稳定系数和速度相乘得到的稳定力没有对计算结果产生较大影响。
(1)对于接触问题和局部或者整体屈曲问题,可以使用准静态分析。
(2)如果ALLSD大于ALLIE,说明D的值取得太大了
(3)考虑ALLSD在模拟结束时是否保持恒定,以及所产生的viscous力对模拟结果的影响。
(4)画出节点上的稳定力,VF。观察它们的分布和大小。以下是画节点力的代码:
(5)对于某些不稳定的问题,比如物理意义上存在能量释放的问题,可以采用implicit dynamics来代替准静态问题。可以在implicit dynamic分析方法里选择quasi-static {译者:惊喜,这也是我本人最近常用的方法,没想到Boulbes也支持这种化“动”为“静”的策略}:
(6)对于接触问题导致的不稳定,检查ALLIE,确定损失的能量是否等于ALLKE(kinetic能量)、ALLFD(摩擦损耗能)或者ALLSD(稳定损耗能)。
2.13 动力学检查
静力学问题不考虑质量和阻尼,而动力学问题考虑。静力学问题通常用隐式求解器求解,而动力学问题既可以用隐式也可以用显式求解器。
对于非线性隐式问题,每一个分析不步都需要迭代求解平衡方程,直到残余满足容许值。对于显式问题,不需要做迭代。显式问题对于时间步大小非常敏感,一般是越小越好,特别是声波传导的问题。隐式的瞬态分析则对时间步大小没有类似要求。隐式问题求解的时候需要将刚度矩阵求逆,这对大模型来说很耗费时间(尤其是非对称的矩阵)。显式则没有类似的要求。
显式解决复杂的非线性问题比隐式更容易,尤其是对接触和材料非线性特征很复杂的模型。在显式动力学分析中,节点加速度是直接求得的,不需要迭代,直接用质量矩阵的逆矩阵乘以节点的力向量,而力向量包含了外部作用(body forces,压力,接触等等)、单元应力、阻尼、bulk viscosity 和hourglass 控制。一旦加速度在n步知道了,速度就可以在n+1/2步求得,位移则在n+1步求得。位移知道了,然后应变就知道,接着应力也可以得到了。
(一)线性动力学检查
对于静力学问题中施加的荷载,时间是没有物理意义的。比如,考虑自重的影响,自重不是逐步增加的,而是立刻产生的。然而,对于数值问题,在计算时必须引入时间的概念,也就是伪时间步。对于动力学问题,时间是有物理意义的,因此正确的时间选取是很重要的。对于线性动力学问题,以下列举了一些技术:
(1)网格划分是否精密到足以捕捉最高频率的结果?
(2)模态的数量是否够多?一般而言,设置最高模态的1.5倍到3倍足以捕捉。
(3)是否至少存在一些阻尼,以防止在对应于基频的激励频率下产生无穷大的响应?
(4)是否需要预留残余模态以便捕捉系统动力学模态中未捕捉到的形态
(5)使用Lanczos求解器的时候是否设置了SIM参数?
(6)对于瞬态分析,时间步数量是否足以捕捉最高频率的所有响应?一般需要设置8个以上的点来捕捉。
(二)隐式动力学检查
在abaqus隐式求解器中,自动调整荷载步的原则是根据Hibbit和Karlsson提出的半增步残余概念。通过观察 t+1/2 dt 的平衡方程残余值,一旦 t+dt 步的结果得到了,就可以评估这一步的结果精确度,然后进行下一步增量的调整。
(1)对于隐式动力分析中的选项,需要根据模型的实际需要选取:
对于APPLICATION=QUASI-STATIC,默认荷载是逐渐(ramp)增加的。
(2)对于瞬态隐式动力学问题,时间增量要足以捕捉最高频率的模态变化。
(3)即使采用了隐式动力学来分析静力学问题,还是有可能不收敛,所以可以进一步使用*CONTACT CONTROLS, STABILIZE 来稳定模型。在这种情况下,运动方程变为:
(三)显式动力学检查
显式动力学需要大量的时间步才能保证计算结果。显式动力学采用中心差分法,相比起隐式动力学,每一步的计算量不大,因为没有方程联立和迭代,但是时间步的总数很多。显式中心差分法会在时间 t 满足动力学方程,然后计算出 t 时间的加速度,之后利用加速度计算 t+dt/2 时间的速度以及 t+dt 时间的位移。
(1)对于准静态问题,可以采用smooth-step amplitude,比如:
(2)采用time scaling 和 mass scaling 可以帮助加快计算,比如:
但是要对比 ALLKE 和 ALLIE,以确scaling的使用不会对结果产生太大的误差。比如:
(3)在显式动力分析中,采用 general contact,比如:
(4)利用data check analysis先检查一下初始接触状态,对于板壳、薄膜和刚体,如果出现接触面过分挤压,需要通过定义 scaling factor 修改 general contact 中的接触面厚度,比如:
(5)使用general contact模拟刚体-刚体相互接触的时候,画出 ALLPW(contact penalty work),并确保其足够小。对于显式动力学问题,检查能量是非常重要的环节。总的来说,ETOTAL(总能量)要尽量保持恒定;人工制造的能量,比如ALLAE(人工应变能), ALLVD(阻尼消散能), 和ALLMW(mass scaling work)应该比真实的能量小,小到可以忽略不计,比如ALLSE(应变能)和ALLKE(动能)
对于约束问题,比如 tie 或者 fasteners,最好能输出 ALLCW(constraint penalty work)和 ALLPW(contact penalty work),它们应尽量接近于0。
(6)输出abaqus内置的anti-aliasing filtering,比如
(7)为了得到更好的准静力学结果,可以用Butterworth(需要定义一个合适的cutoff频率)过滤掉不必要的场变量:
声明:本文来源于互联网,麦涛网本着传播知识、相互交流与学习的目的进行转载,并为网友免费提供。文章已尽力标明转载出处,如有著作权人或出版方提出异议,或有疑问,请随时联系(tel:0731-89579179,email:office@maitaonet.com)并告知我们,以便及时删除和纠正,谢谢。
Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved.
湘ICP备20015126号-2
联系我们