使用Python脚本将温度应用于Abaqus中的指定节点

时间:2017-07-16 10:19:08

标签: python abaqus

我有一个包含特定坐标温度值的文件。文件格式如下:

X Y Z Temp

目标是从文件中读取此信息并应用它,然后Abaqus发挥其魔力。我得到了一个构建模型的Python脚本(我怀疑这个脚本是使用Abaqus GUI自动生成的)。在此文件中,{item: i for i, item in (*enumerate(ascii_lowercase), (27, ' '))} edges.findAtfaces.findAt等方法用于选择所需位置并应用温度。现在,我正在寻找一种方法告诉Abaqus在某些节点位置施加温度。看来这是可能的,因为当我看到inp文件时,我看到了这样的模式。甚至,如果你能给我一个例子来读取文件中的负载,温度或任何内容并将其应用于特定位置,那么它可能会非常有用。

- 编辑 -

我可以在此link找到我一直在处理的文件。它包含两个文件,heat_aba.py和input.txt。我的问题涉及第58-102行,用python中的例程替换来从input.txt读取温度并在Abaqus中初始化模型。 input.txt中的坐标是节点坐标。

1 个答案:

答案 0 :(得分:1)

我将重点放在Abaqus / Python的详细信息上,因为学习如何使用Python打开/读取文件的资源已经广泛使用。

findAt方法用于几何要素。例如,要在指定位置返回Face对象,请使用:

f = mdb.models[NAME].rootAssembly.instances[NAME].faces.findAt((x,y,z))

Cell,Edge和Vertex对象的命令类似。请注意,如果多个对象可能与指定的坐标相关联,则可能存在一些歧义。例如,如果指定的点位于多个Faces的边界上(例如,它在边缘上),则您有责任确保从findAt返回正确的面。 (另外,在上面的一条评论中,你提到你有一个节点存储在变量tmp_node中,但实际上它是一个Vertex对象。)

现在,一旦你有一个几何对象引用,例如上面显示的f,你就可以用它来确定与那个几何区域相关的节点:

node_objects = f.getNodes()

同样,类似的方法可用于其他几何实体。请注意,getNodes返回Node对象列表,每个对象都有各种属性。要获取 i th 节点的标签或坐标,您可以使用:

n = node_object[i].label
c = node_object[i].coordinates

现在,如果您熟悉Python,那么将此节点与外部数据文件中的条目相匹配应该很容易。如果没有,那么这应该是一个单独的问题。

要将所需温度应用于节点,您必须使用Temperature对象(在此处查看对象使用模式?)。您在链接到的(自动生成的?)Python脚本中有一个示例,在您提到的行中。只需替换正确的幅度和区域即可。例如,假设ma是模型和根程序集:

# ...various module imports.
myregion = a.Set(name=NAME, nodes=(node_objects[100:101],) )
m.Temperature(name=NAME, createStepName=NAME, magnitudes=(NUMBER,), region=myregion)
a.regenerate()

请注意myregion.nodesmagnitudes都是有序的,所以如果你聪明,你可以用一个命令定义所有节点的温度。