首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Abaqus ODB中张量数据的处理

Abaqus ODB中张量数据的处理
EN

Stack Overflow用户
提问于 2018-11-18 00:45:59
回答 1查看 254关注 0票数 0

我想对odb的每个模式(模态分析的帧)的所有应变能密度(ELSE)值求和,并将其保存在新帧中。

我的代码可以很好地处理位移'U‘和type=VECTOR,但是当我将它改为'ELSE’和type=TENSOR_3D_FULL时,我得到了以下错误:

代码语言:javascript
复制
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.

我是否必须使用另一种方法来处理张量数据?我在position=ELEMENT_NODAL中发现了一些东西,但使用了一种完全不同的方法,即获得某些节点集的某些标量应力值。我希望每个元素的每个集成点的整个ELSE张量都作为一个新的框架。

下面是我的代码:

代码语言:javascript
复制
#-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()
EN

回答 1

Stack Overflow用户

发布于 2018-11-23 00:04:42

ELSE是一种总能量。

因此,它的字段输出类型是标量。这就是你得到错误的原因,你试图用标量字段值填充TENSOR_3D_FULL字段。

我强烈推荐使用textRepr库中的prettyPrint,以便访问字段并更好地了解其属性。

代码语言:javascript
复制
from textRepr import prettyPrint as pp  

pp(odb.steps['Modalanalyse'].frames[-1].fieldOutputs['ELSE'])
pp(sumAllModes_field)
pp(newField)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53353328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档