经常编写Abaqus子程序的同学都会注意到,在定义了SDV(solution dependent variables)的子程序中,如UMAT、VUMAT、USDFLD、VUSDFLD等子程序中,默认的SDV输出形式为SDVn,其中n代表的是状态变量的次序。
例如某子程序中设置了5个状态变量,则在后处理中可以查看到SDV1,SDV2,SDV3,SDV4,SDV5等五个输出变量。
SDVn与子程序中的定义次序一一对应,当SDV的数量比较多时,就会容易遗忘,得反复查看子程序中对应次序的SDV代表什么物理意义,十分麻烦。
本文就介绍一下如何通过编辑关键字来实现对SDV的定制化输出。
【方法1】在模型中,点击Model菜单Edit keywords子菜单,选择要编辑的模型,会跳出以下界面:
找到自定义材料所在位置,并在该位置下方添加蓝色部分指令即可:
*Material, name=composite
*Depvar
10,
1,DF, "fiber damage"
2,DM, "matrix damage"
3,DFV, "viscous fiber damage"
4,DMV,"viscous matrix damage"
*User Material, constants=14, unsymm
55000., 9500., 5500., 3000., 0.33, 0.45, 2500., 2000.
50., 150., 50., 1., 12.5, 0.001
所添加的数据中,第一列代表SDV的次序号,第二列代表自定义名称,第三列是注释。
【方法2】也可以直接在inp中找到相应位置进行设置。
设置完成后,提交计算,计算后的效果如下,是不是就很直观明了了呢?
VUMAT中的设置也是类似的,编辑关键字如下:
*Material,name=laminate
*Density5e-09,
*Depvar,delete=5
17,
1,DFT , "fiber tensile damage"
2,DFC, "fiber compressive damage"
3,DMT, "matrix tensile damage "
4,DMC,"matrixcompressive"
*UserMaterial, constants=32
138000.,9040., 9040., 0.307, 0.307, 0.35, 4500.,4500. 3400., 0., 150., 100., 0.5, 2.5, 0.5, 2.5
1696.,1188., 71.4, 202., 71.4, 202., 0., 0.
102., 102., 90., 0., 0., 0., 0., 0.
执行效果如下:
同样USDFLD和VUSDFLD等可以定义SDV的子程序都可以如此设置。
*Userdefined field
*Depvar
4
1,DFT , "fiber tensile damage"
2,DFC, "fiber compressive damage"
3,DMT, "matrix tensile damage "
4,DMC,"matrixcompressive"
*Userdefined field
*Depvar,Delete=3
4
1,DFT , "fiber tensile damage"
2,DFC, "fiber compressive damage"
3,DMT, "matrix tensile damage "
4,DMC,"matrixcompressive"