如何使用 Python 脚本识别 abaqus 程序集中的节点集名称?

How to identify node set names in an assembly in abaqus with Python scripting?

我正在分析 Abaqus 中具有各种节点集的模型,我想从中提取不同的数据。

我一直在为每次分析手动引入节点集名称,如果模型中有大量节点集,这可能会非常乏味。

我想知道是否有任何方法可以获取其中包含所有节点集名称的列表。可能吗?

我期望的结果示例:

NSETS=['NSET-1',''NSET-2'...]

这取决于您是与模型数据库还是输出数据库交互,以及数据集所在的位置。一旦确定了访问集合字典的位置,就可以使用 keys 方法获取集合名称列表。例如获取程序集中某个实例中的集合名称:

NSETS = mdb.models['Model-1'].rootAssembly.instances['PART-1-1'].sets.keys()

您可以使用相同的方法在其他地方获取集合名称。在 Abaqus Scripting Reference Manual 中,有两个相关部分显示了您可以访问集的位置。第一个用于访问模型数据库中的集合:

Abaqus > Scripting Reference > Python commands > Region commands > Set object

import part
mdb.models[name].parts[name].allInternalSets[name]
mdb.models[name].parts[name].allSets[name]
mdb.models[name].parts[name].sets[name]
import assembly
mdb.models[name].rootAssembly.allinstances.sets[name]
mdb.models[name].rootAssembly.allInternalSets[name]
mdb.models[name].rootAssembly.allSets[name]
mdb.models[name].rootAssembly.instances[name].sets[name]
mdb.models[name].rootAssembly.modelInstances[i].sets[name]
mdb.models[name].rootAssembly.sets[name]

以及从输出数据库访问集合:

Abaqus > Scripting Reference > Python commands > Odb commands > OdbSet object

import odbAccess session.odbs[name].parts[name].elementSets[name]
session.odbs[name].parts[name].nodeSets[name]
session.odbs[name].parts[name].surfaces[name]
session.odbs[name].rootAssembly.elementSets[name]
session.odbs[name].rootAssembly.instances[name].elementSets[name]
session.odbs[name].rootAssembly.instances[name].nodeSets[name]
session.odbs[name].rootAssembly.instances[name].surfaces[name]
session.odbs[name].rootAssembly.nodeSets[name]
session.odbs[name].rootAssembly.surfaces[name]
session.odbs[name].steps[name].frames[i].fieldOutputs[name].values[i].instance.elementSets[name]
session.odbs[name].steps[name].frames[i].fieldOutputs[name].values[i].instance.nodeSets[name]
session.odbs[name].steps[name].frames[i].fieldOutputs[name].values[i].instance.surfaces[name]