我有一个包含特定坐标温度值的文件。文件格式如下:
X Y Z Temp
目标是从文件中读取此信息并应用它,然后Abaqus发挥其魔力。我得到了一个构建模型的Python脚本(我怀疑这个脚本是使用Abaqus GUI自动生成的)。在此文件中,{item: i for i, item in (*enumerate(ascii_lowercase), (27, ' '))}
,edges.findAt
和faces.findAt
等方法用于选择所需位置并应用温度。现在,我正在寻找一种方法告诉Abaqus在某些节点位置施加温度。看来这是可能的,因为当我看到inp文件时,我看到了这样的模式。甚至,如果你能给我一个例子来读取文件中的负载,温度或任何内容并将其应用于特定位置,那么它可能会非常有用。
- 编辑 -
我可以在此link找到我一直在处理的文件。它包含两个文件,heat_aba.py和input.txt。我的问题涉及第58-102行,用python中的例程替换来从input.txt读取温度并在Abaqus中初始化模型。 input.txt中的坐标是节点坐标。
答案 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脚本中有一个示例,在您提到的行中。只需替换正确的幅度和区域即可。例如,假设m
和a
是模型和根程序集:
# ...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.nodes
和magnitudes
都是有序的,所以如果你聪明,你可以用一个命令定义所有节点的温度。