Как прочитать усредненное узловое напряжение из файла abaqus odb с помощью скрипта Python?

Я знаю, как читать значение стресса элемента или элемента (невостребованного) с помощью скрипта Python.

field = stressField.getSubset(region=topCenter,position=INTEGRATION_POINT, elementType = 'CAX4')

Но я хочу усредненные значения напряжения в узлах. К вашему сведению, мой odb не содержит данных о положении узлов для напряжения (то есть, позиция =NODAL).

1 ответ

Это одна из тех вещей, которые намного более громоздки, чем должны быть. вам нужно создать xydata:

session.xyDataListFromField(odb=odb,
        outputPosition=ELEMENT_NODAL,
        variable=(( 'S', INTEGRATION_POINT), ),
        elementSets=('PART-1-1.SETNAME', ))

это создает словарь с объектами для каждого узла каждого элемента и каждого компонента напряжения (т. е. огромного). К сожалению, словарь содержит громоздкие строки дескриптора, например:

 session.xyDataObjects['S:S11 PI:PART-1-1 E: 15 N:2'].data

дает 11 компонент стресса узла 2, связанного с элементом 15. Чтобы использовать данные в скрипте, вам нужно либо создать строки, либо выполнить цикл по словарю и проанализировать positionDescription для каждого объекта.

Редактировать: если вы хотите, чтобы среднее значение в узле было практически таким же. Ты сделаешь:

session.xyDataListFromField(odb=odb,
        outputPosition=NODAL,
        variable=(( 'S', INTEGRATION_POINT), ),
        nodeSets=('PART-1-1.SETNAME', ))

и объекты словаря имеют следующие ключи:

 session.xyDataObjects['S:S11 (Avg: 75%) PI:PART-1-1 N:2'].data

обратите внимание, что вы можете выдать несколько session.xyDataListFromField звонки и все данные поступают в xyDataObjects (Например, если вы хотите стресс и напряжение, вы можете обрабатывать оба сразу.)

Для полноты, если вы хотите только определенный компонент (ы), вы можете запросить как:

 variable=(( 'S', INTEGRATION_POINT,((COMPONENT, 'S11'),)), )
Другие вопросы по тегам