2016-07-28 196 views
1

晚上好,用python讀取Abaqus結果的壓力'S'

我已經完成了一個獲取模型和生成結果的腳本。我試過在同一個腳本用於獲取閱讀壓力,但蟒蛇的值來寫的方式說:

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

我理解像集-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

你現在嘗試t獲得一個集合級別的節點集。然而,你正在定義一個部分內的節點集。在Odb內部,您需要通過實例訪問此節點集。

找出零件名稱中的實例名稱。最有可能的只是'PART-1-1'。完成後,獲取如下所示的區域:

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

您可以在Abaqus中看到這些設置類型之間的區別。實例級節點集具有前綴 - 「InstanceName」。注意實例名稱後面的點。

+0

我覺得這個集合的名字在odb上是大寫'SET-1'。 – agentp

+0

Abaqus有時會將名稱轉換爲大寫,因此可能會發生,但我不確定。雖然這很容易檢查。 – hgazibara

1

您可以通過以下方式獲得在大會確定的節點集:

odb.rootAssembly.nodeSets.keys() 

是的,他們似乎出現在所有大寫。