调用UEL(用户单元)的abaqus模型,如何用Python编写脚本进行后处理? 40

浏览:1075 回答:2

大家好

调用UEL(一个模拟粘结滑移的用户单元)的abaqus模型,如何用Python后处理UEL。
比如如何查看用户单元(4节点平面单元)的积分点的mises应力?

我尝试访问了输出数据库(odb),编写如下script:

#!/usr/bin/python

#-*-coding: UTF-8-*-

from abaqus import*

from odbAccess import*

odb=openOdb(path='verifiedmodel.odb')

#单元集合P1就是用户单元集合

topCenter=odb.rootAssembly.instances['NS-1'].elementSets['P1']

stressField = odb.steps['Step-1'].frames[-1].fieldOutputs['S']

field = stressField.getSubset(region=topCenter, 

    position=INTEGRATION_POINT, elementType = 'U1')

fieldValues = field.values

for v in fieldValues: 

    print 'Element label = ', v.elementLabel,     

    if v.integrationPoint:

        print 'Integration Point = ', v.integrationPoint

    else:

        print 

    for component in v.data:

        print '%-10.5f' % component

    print

运行没有结果。

但是把单元集合换成C2(混凝土单元)或者是S1(钢筋单元),运行是有结果的。

另外,我试着仅运行下列脚本程序:

stressField = odb.steps['Step-1'].frames[-1].fieldOutputs['S']

print stressField 

结果只有T3D2(钢筋的类型),C3D8R(混凝土的类型),就是没有U1(用户单元类型)。这是为什么呢?

整个模型是通过运行INP文件,并且调用用户子程序运行出来的,verifiedmodel.odb是该模型的输出数据库,是不是说这个ODB不包含用户单元的信息。

众所周知,abaqus的CAE界面的可视化窗口是不会显示用户单元模型的。

在书中找了资料,庄茁的有本书上说,STA文件会有显示用户单元信息,我查看了,并没有。

在网上找了一个网名为(窗台上的叔本华),讲了要通过编写python脚本来查看用户单元运行的信息,上面所列的程序就是我的尝试,并没有得到结果。

所以想请教大家,如何得到运行后用户单元的信息呢?用python编写脚本可行吗,是程序出了问题吗,还是ODB根本就不包含用户单元的信息呢?

邀请回答 我来回答

全部回答

(2)
默认 最新
东风41

关于UEL的后处理问题,其实可以用UVARM子程序解决,楼主可以在网上搜搜。

2018年10月23日
评论 点赞 1
侯瑞彬
UEL使用户自定义单元,在编写子程序时需要提供自定义单元对整个模型平衡方程的贡献和对应于迭代求解中的雅可比矩阵,自定义单元对整个模型平衡方程的贡献由单元内力向量和外力向量相减得到,在计算内力向量时,用到积分点的应力、应变,由于这些应力应变并没有直接提供给abaqus求解器,而且自定义单元是满足用户特殊需要而自己编写的,每个单元有几个积分点、几个节点、每个节点有几个自由度,都是由用户自己定义的,导致abaqus难以在后处理中对用户自定义单元进行可视化,因此每个自定义单元都是用一个x号显示。这些信息的缺失,python编写的脚本程序自然无法访问
2018年5月6日
评论 点赞

没解决?试试专家一对一服务

换一批