使用python在abaqus中创建约束

时间:2018-09-23 13:39:26

标签: python set abaqus

大家好,我正在尝试在abaqus中创建梁和桁架模型以模拟实验。

由于我有大约4000个晶胞,因此我正在使用python脚本来完成此操作。

此刻,我一直在尝试约束节点。我需要使用耦合来约束来自同一坐标中不同光束的节点。

我正在考虑为每个坐标创建2组节点,然后在耦合命令中输入它们。但是直到现在我还是没有成功。

myNodes = [] 

allNodes = mdb.models['Bias extension'].rootAssembly.nodes

for i in range (0, 5):
    for j in range (0, 2):
        x = j * 4.41941730
        y = i * 4.41941730
        delta = 1.0e-2
        xmin, ymin, zmin = x-delta, y-delta, 0-delta
        xmax, ymax, zmax = x+delta, y+delta, 0+delta
        myNodes[i] [j] = allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax)

我正在尝试首先使用此代码使我的节点能够划分它们,但它不起作用

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

当代码进入for循环时,myNodes是长度为0的列表。 然后,您尝试为其ij索引(尚不存在)分配节点列表。您应该会收到出站错误。

为了使代码正常工作,您需要使用方法list.append()myNodes.append(allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax))

这会将选定的节点存储在一维列表中。但是,iIt似乎希望将它们存储在二维矩阵中。有两种方法可以实现:

  1. 二维列表:
    myNodes = []
    allNodes = mdb.models['Bias extension'].rootAssembly.nodes
    for i in range (0, 5): myNodes.append([]) for j in range (0, 2): x = j * 4.41941730 y = i * 4.41941730 delta = 1.0e-2 xmin, ymin, zmin = x-delta, y-delta, 0-delta xmax, ymax, zmax = x+delta, y+delta, 0+delta myNodes.append(allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax))

    您的输出列表将如下所示:
    >>> myNodes [[listNodes00,listNodes01],[listNodes10,listNodes11],[listNodes20,listNodes21],[listNodes30,listNodes31],[listNodes40,listNodes41]]
    >>> myNodes[3][1] listNodes31
  2. numPy及其array结构。