首页 > 解决方案 > 使用 Python 从 Abaqus FieldValueArray 访问单个值

问题描述

我目前正在编写一个用于详细分析 Abaqus 模拟的后处理脚本。我当前的问题是我想访问一些低于限制值的 Abaqus 字段对象数据和更改值。例如,如果值低于 0 --> 将值更改为 0。我打算使用简单的 if 语句来执行此任务。但是,我在正确访问数据方面遇到了一些问题。我正在使用 Python。

我的代码如下所示:

strain_n = session.odbs[odbName].steps['Load'].frames[n].fieldOutputs['SDV2']
#SDV2 is a Scalar field, strain in y-direction from Abaqus UMAT

据我正确理解 abqus 文档,我可以使用以下方法访问 FieldData:

data = strain_n.values

不幸的是,我不明白我应该如何进行,我尝试了一些与数据的组合,但没有任何效果。我无法在一个集成点访问数据,也无法更改值。命令 len(data) 告诉我 2304,这与我的预期非常吻合,因此我使用 576 个元素和 4 个积分点 = 2304。

有人可以帮帮我吗 ?任何提示表示赞赏!

标签: pythonabaqus

解决方案


您可以尝试打印出数据:

for v in data:
    print '%d %6.4f' % (v.elementLabel, v.data)

或者您可以将数据写入文件:

with open('test.csv', 'w') as f:
    for v in data:
        f.write('%d %6.4f' % (v.elementLabel, v.data) + '\n')

推荐阅读