【分享】ANSYS7.0超弹材料的定义-新的曲线拟合功能--摘自ansys用户专区几何非线性几何非线性不受敛主要原因1.网格质量,特别是warpage2.约束方程,少用刚性连接3.收敛准则,可适当加大容差4.荷载步设置,可适当加大步数最近碰到一个对我来说很意外的问题:如果确实如此希望大家以后小心大家知道定义接触后会自动生成一组实常数,数量问题前几天我碰到一个问题,需定义超过10组实常数,接触对很多,好像有20多处,按照常规步骤划分完所有网格,当时因为有一个实常数参数没确定,便预留了最后一组(第10组)实常数里面的参数为空,接下来就定义了所有的接触对,由于所有接触对里的设置一样,ANSYS在我保存db完重新打开后便把我所有的接触对综合成一个了!接下来我就把第十组实常数里面的参数补上了,但在求解时却提示我该实常数同时被两种单元(包括CNTACT单元)同时占用,出现错误!!检查了半天才发现自动生成的接触对实常数把第10组实常数也占用了!我实在没找到什么好的解决办法,只得把接触对删除了重新定义,那可是上百多个面的选取过程,痛苦不堪简直!ANSYS里接触对面的选取时还不能针对Component操作!ANSYS7.0超弹材料的定义-新的曲线拟合功能ANSYS7.0中的超弹材料模拟能力得到了很大的加强,在ANSYS6.1的超弹材料模型的基础上又增加了Gent,Yeoh,Blatz-Ko,andOgden(Foam)四种超弹性材料模型,使得其超弹模拟能力得到了进一步扩展。ANSYS7.0中对超弹能力最吸引人的增强还不在于此,而是在于其曲线拟合能力的大幅度扩展,不再像ANSYS6.1以前的版本一样曲线拟合仅仅局限于Mooney-Rivlin模型,而是将其扩展到所有的超弹模型,这样,用户可以利用实验得到的应力应变数据直接让程序自己拟合出任意一种超弹材料模型的参数,大大方便了用户的使用。以下就ANSYS7.0的超弹拟合功能做一简单介绍。在ANSYS6.1中,*mooney命令或对应的GUI菜单可以根据试验数据拟合Mooney-Rivlin超弹材料参数,但只局限于这一种模型,而且其使用也受到了限制,其数据只能用于hyperXX单元,若要用于18x单元还需要将拟合出的参数直接输入tbhyper对应的超弹模型中,由于其使用的不方便性,Ansys7.0的超弹模型中剔除了Ansys6.1版本中的*mooney命令对应的曲线拟合菜单而增加了新的可适用于多个超弹模型的拟合功能,但*mooney命令仍然存在,也就是说如果您需要使用经典的拟合方法,可以定义相应的数组参数,然后用命令流的方式进行拟合。其实,在Ansys7.0中不再推荐使用*mooney命令来进行拟合,而建议采用新的拟合技术,可以进行多个超弹模型的拟合,而且可以直接用于18x单元。其拟合菜单的路径为:Material->Nonlinear->Elastic->Hyperelastic->CurveFitting然后按照wizard的提示一步步输入单轴、双轴、剪切、体积试验数据文本文件名称,如果没有任何一种试验数据,只需将该名称处空置即可,最后选择需要拟合数据的超弹模型,程序就会自动计算出相应的参数,并立刻在图形窗口显示拟合曲线与试验曲线的比较图,如果不理想,可以点击prev回到前面的步骤重新选取模型,如果拟合结果满意,则点击update,拟合出来的材料参数就会被输入激活的材料号中,使用起来非常方便。试验数据的文件格式需要进行说明:单轴、等双轴、剪切数据为应变-应力数据,依次输入应变、应力值,第一列为应变,第二列为应力,每一行两个数之间用空格隔开(空格数目不限),代表一个数据点。数据符号:拉为正,压为负。体积试验数据有所不同,每一行两个数据同样用空格隔开,第二个数为静水压力,但第一个数不是体积应变e,而是相对体积,即1+e,例如体积应变为-0.01,则应该在第一列输入0.99。而且程序假定体积试验为线性关系,拟合时也只拟合出一条直线,所以通常输入两个值即可。数据符号:使体积减小的静水压力为正,这需要注意,如下例:000.9920在选用mooney模型的情况下,单轴、等双轴、剪切试验数据用来计算参数c1-c9,而体积数据用来计算最后一个数据d(不可压缩性因子,与泊松比有关),如果不给出体积试验曲线,则d=0,这种情况下可能需要手工修改d值,如果知道泊松比u,则可用如下公式计算:d=(1-2u)/(c1+c2)此式是建立在几乎不可压缩(u接近于或等于0.5)的前提下的。因为准确的公式应该如下:剪切模量G=2(c1+c2)体积模量k=E/(3(1-2u))G=E/(2(1+u))k=2/d于是d=2/k=6(1-2u)/(4(1+u)(c1+c2))可以看到,如果u约等于0.5,则上式可以简化为前面的式子。mooney还有其他一些推导基于几乎不可压缩,所以对mooney模型而言,输入参数时一定要注意其泊松比应该接近0.5,一般大于0.49。4.2.4.4求解步骤(命令流方法)fini/clel=60l1=15w=10ri=50ro=160routn=200pp=600pp1=30pex=5000/prep7et,1,42et,2,14keyopt,1,3,2keyopt,2,3,2确定Mooney-Rivlin常数的个数概略地说,数据点的个数(即上面的N)应至少为Mooney-Rivlin常数个数的两部。常数个数越多,曲线的统计量越与真实值相接近(即拟合得更好),但曲线的形状可能会比常数个数少的曲线要差。鉴于此,用户可以按顺序尝试2项、5项、9项函数,并检查其所生成的应力-应变曲线以确定到底哪一个函数在综合曲线形状以及拟合质量两方面做得最好。表4-1建议的Mooney-Rivlin常数应力-应变曲线中的点数建议的Mooney-Rivlin函数无拐点(即单个曲线)2项一个拐点(即2条曲线)5项2个拐点9项图4-14典型的超弹性应力-应变曲线输出应力数组(CALC):其大小为N×3,N与前面的一样,该数组保存计算出来的应力值,这些应力值保存的顺序与其相应的应变保存值的顺序一致(后者以升序排列)。排序应变数组(SORTSN):其大小为N×3,它保存经过排序的输入应变。排序应变数组(SORTSN):其大小为N×3,它保存经过排序的输入应力。例如,如果任一个类型的测试数据包含直到20个数据点,而想生成5项的Mooney-Rivlin常数,则可以应用下面的命令来定义所需要的数组(记住:用户可以代入任意有效的参数名):*DIM,STRAIN,,20,3!Dim.array(STRAIN)for20inputstrain-datapoints*DIM,STRESS,,20,3!Dim.array(STRESS)forinputstressdata(20pts.)*DIM,CONST,,5,1!Dim.array(CONST)for5-termM-Rconstants*DIM,CALC,,20,3!Dim.array(CALC)forsortedcalculatedstresses*DIM,SORTSN,,20,3!Dim.array(SORTSN)forsortedinputstraindata*DIM,SORTSS,,20,3!Dim.array(SORTSS)forsortedinputstressdata参见*DIM命令的说明。第二步:填充输入数据数组当数组定义完成之后,就可以用*SET命令(GUI:UtilityMenuParametersArrayParameters)将实验数据填入STRAIN数组和STRESS数组。请再一次记住,用户可以给这些数组任意有效的参数名;在这里所采用的参数名,只是为了讨论方便。注意--*MOONEY命令将所有输入应力和应变都解释为工程应力和工程应变。这些数组大小都为N*3,其每一列各自表示一类测试数据,顺序是:第一列:单轴拉伸和/或单轴压缩;第二列:等双轴拉伸和/或等双轴压缩;第三列:剪切(平面拉伸或压缩)。注意这并不是说,变形模式及其等同存在1:1的关系。第一个变形模式--单轴拉伸--与等效双轴压缩等同,但数组第一列包含从单轴拉伸和/或单轴压缩得到的数据。类似地,第二个变形模式--等双轴拉伸--与单轴压缩等同,但数组第二列包含从等双轴拉伸和/或等双轴压缩得到的数据。表4-2应力-应变输入数组中的数据位置变形模态等效测试类型测试数据的在数组中的位置单轴拉伸单轴拉伸等双轴压缩第一列第二列等双轴拉伸等双轴拉伸单轴压缩第二列第一列剪切平面拉伸平面压缩第三列第三列如果只作了一种或两种测试,则须将未做的测试的相应的列置空。可用图4-15来说明。图4-15在应力和应变输入数组中的数据位置现在考虑一个得到了单轴拉伸和剪切测试数据时的情况。在数组中存储应变和应力的命令可能象下面那样(当然,数组可以有任意的名字,而且在本例中用N1和N2表示的数据点数,可以是任意整数):!UniaxialTensionData*SET,STRAIN(1,1),...!First10straindatapoints*SET,STRAIN(11,1),...!Straindatapoints11throughN1(ifN121)*SET,STRESS(1,1),...!First10stressdatapoints*SET,STRESS(11,1),...!Stressdatapoints11throughN1!ShearData*SET,STRAIN(1,3),...!Straindatapoints1throughN2(ifN211)*SET,STRESS(1,3),...!Stressdatapoints1throughN2参见*SET命令的说明。第三步:计算Mooney-Rivlin常数要自动生成Mooney-Rivlin常数,首先应执行TB命令,并使该命令的Lab=MOONEY,TBOPT=1。然后,执行*MOONEY命令,将已生成好的数组名填入其中(用户可以给这些数组任意有效的参数名,在这里所采用的参数名,只是为了讨论方便):TB,MOONEY,MAT,NTEMP,,1*MOONEY,STRAIN(1,1),STRESS(1,1),,CONST(1),CALC(1),SORTSN(1),SORTSS(1),Fname,Ext程序自动计算出Mooney-Rivlin常数,将它们写入数据库和CONST数组(可以是任何有效的数组名)中,并还以TB和TBDATA命令的格式写入一个ASCII文件Fname.Ext中(缺省是Jobname.TB)。单轴公式将用于第一列的数据,而等双轴公式将用于第二列,平面(纯剪)公式将用于第三列。注意--在STARIN和STRESS中输入的所有试验数据,将用于确定Mooney-Rivlin超弹性材料常数。第四步:估计Mooney-Rivlin常数的质量在输出文件中(Jobname.OUT),检查“ROOT—MEAN—SQUAREERROR(PERCENTAGE)”(均方根误差)和“COEFFICIENTOFDETERMINATION”(确定系数)两个输出信息,这两个值给出所计算出的应力-应变曲线与测试数据点相拟合的好坏程度的统计度量。以百分数表示的均方根误差(即2.5就表示2.5%应接近于零,确定系数接近于1.0(通常要大于0.99)。另外,用户还应使用*VEAL和*VPLOT命令(GUI:MainMenuPreprocessorMaterialPropsMooney-RivlinEvaluateConst和UtilityMenuPlotArrayParameters)来以图形的方式显示输入的和计算出的应力-应变曲线,以直观地检查计算曲线与实验数据的匹配程度。在比较这些曲线时,应比较那些代表同一变形模式的数据。也就是说,所计算的单轴拉伸曲线形状(在*EVAL命令中的EVPARM=1),仅应当与单轴拉伸数据(在排序的STRAIN和ST