2016-07-28 14 views
1

안녕하세요,Abaqus 결과의 'S'에 파이썬으로 읽기

나는 모델을 가져 와서 결과를 생성하기위한 스크립트를 작성했습니다. 내가 스트레스하지만 파이썬의 값을 읽어 얻기 위해 동일한 스크립트에서이 방법을 쓰기 위해 노력했습니다 말한다 :

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

내가 설정 한 나던 출구처럼 이해하지만 그건 사실이 아니에요. 누군가가 나를 도울 수 있기를 바랍니다.

가 나는 설정-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 내부에서 인스턴스를 통해이 노드 세트에 액세스해야합니다.

부품 이름에서 인스턴스 이름을 찾습니다. 대부분 'PART-1-1'일 가능성이 큽니다. 이렇게하면 다음과 같이 지역을 구하십시오.

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

Abaqus에서 이러한 세트 유형의 차이를 확인할 수 있습니다. 인스턴스 레벨 노드 세트에는 접두사 - 'InstanceName'이 있습니다. 인스턴스 이름 뒤의 점에 주목하십시오.

odb.rootAssembly.nodeSets.keys() 

을 그리고 네 그들은 대문자로 모두 표시하는 것 :

+0

나는 집합 이름이 대문자 odb에'SET-1' 일 것이라고 생각한다. – agentp

+0

Abaqus는 이름을 대문자로 변환하기도하므로 일어날 수도 있지만 확실하지 않습니다. 하지만 쉽게 확인하실 수 있습니다. – hgazibara

1

당신은 다음과 같은 방법을 사용하여 어셈블리에 정의 된 노드 세트에 액세스 할 수 있습니다.