Pythonスクリプトを使用して要素または要素ノードのストレス値(平均化されていない)を読み取る方法を知っています。
field = stressField.getSubset(region=topCenter,position=INTEGRATION_POINT, elementType = 'CAX4')
しかし、節点での平均応力値が必要です。参考までに、ODB にはストレスのノード位置データが含まれていません (つまり、position=NODAL)。
これは、必要以上に面倒なことの 1 つです。xydata を作成する必要があります:
session.xyDataListFromField(odb=odb,
outputPosition=ELEMENT_NODAL,
variable=(( 'S', INTEGRATION_POINT), ),
elementSets=('PART-1-1.SETNAME', ))
これにより、すべての要素のすべてのノードとすべての応力コンポーネント (つまり巨大) のオブジェクトを含むディクショナリが作成されます。残念ながら、辞書は扱いにくい記述子文字列によってキー付けされています。
session.xyDataObjects['S:S11 PI:PART-1-1 E: 15 N:2'].data
は、要素 15 に関連付けられたノード 2 の 11 応力コンポーネントを示します。スクリプトでデータを利用するには、文字列を作成するか、辞書をループしてpositionDescription
for each オブジェクトを解析する必要があります。
編集:ノードの平均が必要な場合は、ほとんど同じです。あなたがやる:
session.xyDataListFromField(odb=odb,
outputPosition=NODAL,
variable=(( 'S', INTEGRATION_POINT), ),
nodeSets=('PART-1-1.SETNAME', ))
辞書オブジェクトは次のようにキー付けされます。
session.xyDataObjects['S:S11 (Avg: 75%) PI:PART-1-1 N:2'].data
session.xyDataListFromField
複数の呼び出しを発行でき、すべてのデータが入ることに注意してくださいxyDataObjects
(たとえば、ストレスと緊張が必要な場合は、両方を一度に処理できます。)
完全を期すために、特定のコンポーネントのみが必要な場合は、次のようにリクエストできます。
variable=(( 'S', INTEGRATION_POINT,((COMPONENT, 'S11'),)), )