Прочитать стресс-результаты 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()
И да, они, кажется, появляются все в верхнем регистре.