【问题标题】:Read stresses 'S' of Abaqus results with python使用 python 读取 Abaqus 结果的应力“S”
【发布时间】:2016-07-28 16:14:08
【问题描述】:

晚上好,

我已经编写了一个用于获取模型并生成结果的脚本。我试图在同一个脚本中编写一种读取压力值的方法,但 python 说:

" File "C:/Users/TFG", line 250, in <module>     RegionTen=odb.rootAssembly.noseSets['Set-1']  KeyError: Set-1 "

我理解 Set-1 不会退出,但事实并非如此。我希望有人可以帮助我。

我创建了 Set-1:


mdb.models['Model-1'].parts['Part-1'].Set(faces= mdb.models['Model-1'].parts['Part-1'].faces.getSequenceFromMask(('[#1 ]', ), ), name='Set-1')

我阅读压力的代码是:


odb = openOdb( path='C:\Temp\Job-1.odb')

RegionTen = odb.rootAssembly.nodeSets['Set-1']
tamFrames = len(odb.steps['Step-1'].frames)
lastFrames = odb.steps['Step-1'].frames[tamFrames-1]

stress33 = lastFrame.fieldOutputs['S'].getSubset(position=ELEMENT_NODAL,      region=RegionTen)
stress13 = lastFrame.fieldOutputs['CTSHR13'].getSubset(position=ELEMENT_NODAL,  region=RegionTen)
stress23 = lastFrame.fieldOutputs['CTSHR23'].getSubset(position=ELEMENT_NODAL, region=RegionTen)

print(stress11, stress22, stress12)

【问题讨论】:

    标签: python keyerror abaqus stress odb


    【解决方案1】:

    您现在正在尝试获取程序集级节点集。然而,您正在零件内定义您的节点集。在 Odb 内部,需要通过实例访问这个节点集。

    从零件名称中找出实例名称。很可能只是“PART-1-1”。完成此操作后,获取如下区域:

    regionTen = odb.rootAssembly.instances['instanceName'].nodeSets['Set-1']
    

    您可以在 Abaqus 中看到这些集合类型之间的区别。实例级节点集有一个前缀 - 'InstanceName.'。注意实例名称后面的点。

    【讨论】:

    • 我认为 odb 上的集合名称将是大写的SET-1
    • Abaqus 有时会将名称转换为大写,所以它可能会发生,但我不确定。不过,这很容易检查。
    【解决方案2】:

    您可以使用以下方式访问程序集中定义的节点集:

    odb.rootAssembly.nodeSets.keys()
    

    是的,它们似乎都以大写形式出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      相关资源
      最近更新 更多