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

Apply temperature to specified nodes in Abaqus with Python script

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

X Y Z 温度

目标是从文件中读取此信息并应用它,然后 Abaqus 发挥它的魔力。我得到了一个构建模型的 Python 脚本(我怀疑这个脚本是使用 Abaqus GUI 自动生成的)。在此文件中,edges.findAtfaces.findAtvertices.findAt 等方法用于 select 所需位置并应用温度。现在,我正在寻找一种方法来告诉 Abaqus 在某个节点位置应用温度。这似乎是可能的,因为当我查看 inp 文件时,我看到了这样的模式。甚至,如果您能给我一个从文件中读取负载、温度或任何内容并将其应用于特定位置的示例,那将非常有帮助。

--编辑--

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

我的回答将集中在 Abaqus/Python 细节上,因为学习如何 open/read 文件与 Python 的资源已经广泛可用。

findAt方法用于几何特征。例如,要 return 指定位置的 Face 对象,请使用:

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

单元格、边和顶点对象的命令类似。请注意,如果多个对象可能与指定坐标相关联,则可能存在一些歧义。例如,如果指定的点位于多个面的边界上(例如,它在一条边上),您有责任确保正确的面是 return 从 findAt 编辑的。 (此外,在您上面的一条评论中,您提到您在变量 tmp_node 中存储了一个节点,但它实际上是一个 Vertex 对象)。

现在,一旦您有了几何对象引用,例如上面显示的 f,您就可以使用它来确定与该几何区域关联的节点:

node_objects = f.getNodes()

同样,类似的方法也可用于其他几何实体。请注意,getNodes return 是一个 Node 对象列表,每个对象都有不同的属性。要获取ith节点的标签或坐标,可以使用:

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

现在,如果您熟悉 Python,将此节点与外部数据文件中的条目匹配应该很容易。如果不是,那可能应该是关于 SO 的一个单独问题。

要将所需温度应用于节点,您必须使用温度对象(在这里看到对象使用模式了吗?)。在您提到的行中,您链接到的(自动生成的?)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 都是有序的,所以如果你很聪明,你可以用一个命令定义所有节点的温度。