Массив 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
Если вам нужен небольшой пример кода, не стесняйтесь спрашивать.