Массив STRESS пуст в скриптах Python Abaqus

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

odb = visualization.openOdb('My.odb')
frame=odb.steps['AStep'].frames[-1]

dispNode = odb.rootAssembly.nodeSets['UPPER']

STRESS= frame.fieldOutputs['S'].getSubset(region=dispNode).values
COORD= frame.fieldOutputs['COORD'].getSubset(region=dispNode).values

print(STRESS)
print(COORD[1].data)

STRESS возвращает пустой массив.

Как я могу отредактировать свой сценарий, чтобы у него было напряжение и соответствующие ему координаты?

1 ответ

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

Вот как это должно работать:

  • Экстраполируйте результаты вашей точки интеграции на узлы
  • Средние ваши значения ElementNodal. Вот как это работает: /questions/17425342/maksimalnoe-napryazhenie-uzla/17425352#17425352
  • Извлечь координаты вашего узла (деформированные или недеформированные)
  • получить метки узлов из набора точек
  • С помощью меток узлов из набора точек найдите соответствующие уникальные узловые значения https://docs.scipy.org/doc/numpy/reference/generated/numpy.in1d.html

Если вам нужен небольшой пример кода, не стесняйтесь спрашивать.

Другие вопросы по тегам