大家好,我正在尝试在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)
我正在尝试首先使用此代码使我的节点能够划分它们,但它不起作用
非常感谢您的帮助
答案 0 :(得分:0)
当代码进入for循环时,myNodes
是长度为0
的列表。
然后,您尝试为其i
和j
索引(尚不存在)分配节点列表。您应该会收到出站错误。
为了使代码正常工作,您需要使用方法list.append()
:
myNodes.append(allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax))
这会将选定的节点存储在一维列表中。但是,iIt似乎希望将它们存储在二维矩阵中。有两种方法可以实现:
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