2017-05-04 7 views
2

Abaqusの各積分点でエネルギーを抽出しようとしています。私はストレスや緊張のためにそれをすることができますが、私は精力的な量のために行うことはできません。それを抽出するための私のコードで下...が、Abaqusの中で、それは良いキーワードです:「『ELEN』 KeyError例外:」:得エラーがあるABAQUS Pythonでエネルギーフィールドの出力を要求する方法

from odbAccess import * 
import numpy as np 

odb = openOdb(path='C:/Desktop/Fish1.odb') 

# lastFrame = odb.steps['Step-2'].frames[-1] 
lastFrame = odb.steps['Step-1'].frames[-1] 

topCenter = \ 
odb.rootAssembly.instances['PART-1-1'] 
stressField = lastFrame.fieldOutputs['ELEN'] 


field = stressField.getSubset(region=topCenter, 
position=INTEGRATION_POINT, elementType = 'CPS3') 
fieldValues = field.values 

sortie = open('C:/Users/tests.txt', 'w') 
sortie.write('Eleme \t Integ \t\t PE11 \t\t\t PE22 \t\t\t PE12 \n') 


for v in fieldValues: 
    sortie.write('%-10.2f'% (v.elementLabel)) 
    if v.integrationPoint: 
     sortie.write('%-10.2f'% (v.integrationPoint)) 
     sortie.write('%-10.3f\t\t %-10.3f\t\t %-10.3f\t\t %-10.3f\t\t \n'% (v.data[0], v.data[1], v.data[2], v.data[3])) 

sortie.close() 
+0

分析を実行したときにELEN出力を要求しましたか? – agentp

+0

もちろん! :) – user3601754

+1

'lastFrame.fieldOutputs.keys()'の内容を見てください。 '.dat'と' .msg'ファイルも、何らかの理由でリクエストが無効であった場合に備えて、それに関する警告があるはずです。 – agentp

答えて

2

私はあなたがすでにFieldOutputかAbaqusのビューアで確認してきたと思いますELENはそこで入手できます。

ELENは要素全体の変数なので、そこでは利用できないため、統合点で抽出することはできません。

from odbAccess import * 
import numpy as np 

odb = openOdb(path='C:/Desktop/Fish1.odb') 
lastFrame = odb.steps['Step-1'].frames[-1] 

topCenter = odb.rootAssembly.instances['PART-1-1'] 
stressField = lastFrame.fieldOutputs['ELEN'] 

field = stressField.getSubset(region=topCenter, elementType = 'CPS3') 
fieldValues = field.values 

実際にはあなたが求めている解決策ではありませんが、これが役立つことを願っています。

関連する問題