OptiStruct求解器,考虑材料弹塑性需要输入MATS1的弹塑性应力-应变曲线,同时也需要定义MAT1卡片的弹性模量。当mats1卡片使用TYPSTRN=0即定义全应变曲线时,弹性段的数据就相当于给了OptiStruct两个,用户需要保证输入mat1卡片的弹性模量和mats1曲线的初始段斜率一致,否则,求解器会报如下错误
*** WARNING # 3003
The Young’s modulus calculated from the TABLES1 bulk data entry ID=1
is not equal to the value specified in the corresponding MAT1
(300000.000000 != 200000.000000). This will produce
inconsistant elastic and plastic deformations and may yield unexpected
results.
可以看到,上面报了warning,其实求解器还在继续计算。那么此时求解器用了两个里面哪个数据呢?帮助文档没有明确说明,经测试,在弹性段,求解器用的是mat1中设置的弹性模量。
测试过程可以看下面图片,使用了单个beam单元,一端固定,一端拉伸。beam单元的应力应变曲线 (全应变)为:
0 0
0.0002 60
0.0004 120
0.0006 180
0.0008 210
0.001 230
0.002 250
0.003 265
0.004 275
0.005 285
0.006 293
0.007 300
0.008 306
0.009 312
0.01 317
0.011 322
0.012 326
0.013 329
0.014 330
0.015 333
0.016 340
0.017 350
0.018 350
0.019 350
0.02 350
0.021 350
0.022 350
0.023 350
做了两个模型,差别仅是mat1卡片中的E字段,一个为200,000MPa,一个为300,000MPa。
以下是mat1中弹性模量200,000MPa的结果,可以看到该梁单元的应力应变弹性段同样是200,000。

以下是mat1中弹性模量300,000MPa的结果

此外需要注意的是,如果OptiStruct报错:
*** ERROR # 3021 ***
The plastic material data specified on the TABLES1 bulk data entry ID=1
is invalid. The slope after the initial yield point is not less than the
Young’s modulus. ( 3.000000e+05 >= 3.000000e+05 ) at the segment 2.
经排查,这大概率是因为mats1的曲线数据是由excel复制过去引起的,导致第一行的数据有偏差。将第一行的(0,0)删除后,手动创建该数据点,问题就得到解决。