Прочитать стресс-результаты Abaqus с помощью Python

Добрый вечер,

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

" File "C:/Users/TFG", line 250, in <module>     RegionTen=odb.rootAssembly.noseSets['Set-1']  KeyError: Set-1 "

Я понимаю, что Set-1 не выходит, но это не так. Я надеюсь, что кто-то может мне помочь.

Я создаю Set-1:


mdb.models['Model-1'].parts['Part-1'].Set(faces= mdb.models['Model-1'].parts['Part-1'].faces.getSequenceFromMask(('[#1 ]', ), ), name='Set-1')

И мой код для чтения стрессов:


odb = openOdb( path='C:\Temp\Job-1.odb')

RegionTen = odb.rootAssembly.nodeSets['Set-1']
tamFrames = len(odb.steps['Step-1'].frames)
lastFrames = odb.steps['Step-1'].frames[tamFrames-1]

stress33 = lastFrame.fieldOutputs['S'].getSubset(position=ELEMENT_NODAL,      region=RegionTen)
stress13 = lastFrame.fieldOutputs['CTSHR13'].getSubset(position=ELEMENT_NODAL,  region=RegionTen)
stress23 = lastFrame.fieldOutputs['CTSHR23'].getSubset(position=ELEMENT_NODAL, region=RegionTen)

print(stress11, stress22, stress12)

2 ответа

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

Определите имя экземпляра по имени детали. Скорее всего, это просто "ЧАСТЬ-1-1". После того, как вы это сделаете, получите регион следующим образом:

regionTen = odb.rootAssembly.instances['instanceName'].nodeSets['Set-1']

Вы можете увидеть разницу между этими типами наборов в Abaqus. Наборы узлов уровня экземпляра имеют префикс "InstanceName". Обратите внимание на точку после имени экземпляра.

Вы можете получить доступ к наборам узлов, определенным в сборке, следующим образом:

odb.rootAssembly.nodeSets.keys()

И да, они, кажется, появляются все в верхнем регистре.

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