использование python для создания ограничений в abaqus - PullRequest
0 голосов
/ 23 сентября 2018

Привет всем, я пытаюсь создать модель балок и ферм в 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 голосов
/ 16 ноября 2018

Когда ваш код вводит циклы for, myNodes - это список длиной 0.Затем вы пытаетесь выделить список узлов для его индексов i и j, которые еще не существуют.Вы должны получить исходящую ошибку.

Чтобы ваш код работал, вам нужно использовать метод list.append(): myNodes.append(allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax))

, который будет хранить выбранные узлы в одномерном списке,Но похоже, что вы хотели бы сохранить их в двухмерной матрице.Для этого есть два способа:

  1. Двумерный список:
    <code>myNodes = []<br>
    allNodes = mdb.models['Bias extension'].rootAssembly.nodes<br>
    for i in range (0, 5):
        <b>myNodes.append([])</b>
        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
            <b>myNodes.append(</b>allNodes.getByBoundingBox(xmin, ymin, zmin, xmax, ymax, zmax)<b>)</b>

    Ваш выходной список будет выглядеть так:
    >>> myNodes [[listNodes00,listNodes01],[listNodes10,listNodes11],[listNodes20,listNodes21],[listNodes30,listNodes31],[listNodes40,listNodes41]]
    >>> myNodes[3][1] listNodes31
  2. Библиотека numPy и ее массив структура.
...