Abaqus ODB中张量数据的处理

2024-06-01 09:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把我的odb的每一个模态(模态分析中的帧)的所有应变能密度(ELSE)值相加,保存在一个新的帧中。你知道吗

我的代码可以很好地处理位移'U'和type=VECTOR 但是当我把它改成ELSE并且type=TENSOR\u 3D\u FULL时,我得到了以下错误:

Traceback (most recent call last):    File "..\Python\modaldata.py", line 62, in <module> 
    newField.addData(field=strechtMode1)  OdbError: Fields are not compatible. They are either associated with different structural models or have incompatible attributes.

我必须使用另一种方法来处理张量数据吗?我发现了一个位置=ELEMENT节点的东西,但是用了一个完全不同的方法,得到了某些节点集的某些标量应力值。我想把每个元素的积分点的整个ELSE张量作为一个新的框架。你知道吗

这是我的密码:

#-ODB OEFFNEN------------------------------------------------------------------------#    
odb = openOdb(odbName) 
#-DIE MODEN EINZELN ABSPEICHERN UM SIE VERRECHNEN ZU KOENNEN-------------------------#
nmoden=len(odb.steps['Modalanalyse'].frames)

#------------------------------------------------------------------------------------#
#-FIELD VARIABLE ZIEHEN UND VERRECHNEN-----------------------------------------------#
#------------------------------------------------------------------------------------#

field='U' # ''ELSE' # U oder E oder ELSE oder whatever...
type=VECTOR #TENSOR_3D_FULL  # muss an das field angepasst werden. 

Modes_field=[]
for i in range(nmoden):
    Modes_field.insert(i,odb.steps['Modalanalyse'].frames[i].fieldOutputs[field])  
#-FIELD VARIABLE ALLER MODEN UEBERLAGERN---------------------------------------------#
sumAllModes_field = Modes_field[0]
for i in range(nmoden):
    sumAllModes_field = sumAllModes_field + Modes_field[i] 
#-NEUE FIELD VARIABLE MODE ABSPEICHERN-----------------------------------------------#
newFrame = odb.steps['Modalanalyse'].Frame(incrementNumber=0, frameValue=0.0)
newField = newFrame.FieldOutput(name=field, description='sum of ELSE of all modes', type=type)
newField.addData(field=sumAllModes_field)
#-ODB ABSPEICHERN--------------------------------------------------------------------#
odb.save()

Tags: infieldtypestepsvariableelsemodesodb
1条回答
网友
1楼 · 发布于 2024-06-01 09:55:57

ELSE是总能量。
因此,它的字段输出类型是标量。 这就是为什么你会得到错误,你试图用标量场值填充一个张量场。你知道吗

我强烈建议使用textRepr库中的prettyPrint来访问字段并更好地了解其属性。你知道吗

from textRepr import prettyPrint as pp  

pp(odb.steps['Modalanalyse'].frames[-1].fieldOutputs['ELSE'])
pp(sumAllModes_field)
pp(newField)

相关问题 更多 >