Массив 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 возвращает пустой массив.

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


person H.H    schedule 20.10.2016    source источник


Ответы (1)


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

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

  • Экстраполируйте результаты вашей точки интеграции на узлы
  • Усредните значения ElementNodal. Вот как это работает: https://stackoverflow.com/a/43175485/4045774
  • Извлеките координаты вашего узла (деформированные или недеформированные)
  • получить метки узлов из набора точек
  • С помощью меток узлов из набора точек найдите соответствующие уникальные узловые значения https://docs.scipy.org/doc/numpy/reference/generated/numpy.in1d.html

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

person max9111    schedule 03.04.2017