Python は abaqus で ODB ファイルのフィールド情報を抽出します

abaqus で ODB ファイルのフィールド情報を抽出する方法は、以下に変位フィールドを例に説明します.これは簡単に説明する必要があります.説明を読んだ後、ソースコードを見てください.
1. デコード
この行はファイル内で必須であり、削除できません。そうしないと、デコードできず、エラーが報告されます。

# -* - coding:UTF-8 -*-

2. ODB の読み取りとロード ステップ
ここで、openOdb 関数は odbAccess から取得されるため、ライブラリをインポートする必要があります。

from odbAccess import*# 打开odb的库

次の読み取りパスは自分で作成します. 通常, それはあなたが設定した作業パスの下にあります. 他のフォルダにコピーできますが, 英語のパスでなければならないことに注意してください.強度を下げます. 重力の場合にリダクション フィールドをロードします. ここにあるのはリダクション フィールドです. 「リデュース」は、モデリング時に設定したロード ステップの名前です. 一致させる必要があります. チェックを忘れた場合以下に示すように、inpファイル、あなたはそれを知っているでしょう
ここに画像の説明を挿入
ここに画像の説明を挿入

odb=openOdb(path='Job-1.odb')# 读取odb
step1=odb.steps['Reduce']# 读取odb.折减用Load和Reduce

3. 読み取る時間を選択します.
ここに画像の説明を挿入
チェックするフォーマット ファイルの数? step1.frames の長さをチェックするか、上の図の数字を直接チェックすることができます. 通常は最終結果を見るだけでよいので、ここでstep1.frames を使用[-1]

len(step1.frames)

4. 読み取り場
二次元の断面を描いているので x,y しかない.三次元の Z 方向なら v.data[2]

for v in displacementValues_last:#这里保存最后一步的位移场
    DISP.append([v.nodeLabel,v.data[0],v.data[1]])# 节点编号,X位移,Y位移,Z位移

5. フィールド変数を保存します
ここで注意する必要があります。モデルの作業ディレクトリに置かないでください。保存することはできません。

with open('E:\\abaqus_field\\field.txt', 'w') as f:
    for i in DISP:
        i=(','.join(str(j) for j in i))
        f.write(str(i) + '\n')

結果を保存します
最初の列はノードのニーズであり、次に x 方向と y 方向の変位番号
ここに画像の説明を挿入
6 が続き、最後に抽出された結果と結果の雲の画像を abaqus で表示します
。抽出した座標に問題があります。修正する必要があります。最終的なコード ファイルは abaqus で実行されるスクリプトで実行する必要がある
ことに注意してください
。このファイルは英語のパスに配置する必要があります。そうしないと、ファイルを見つけることができません。
ここに画像の説明を挿入ここに画像の説明を挿入

完全なコード

#!/user/bin/python
# -* - coding:UTF-8 -*-
# 功能:读取变形位移

import numpy as np# 可输出txt文件
from odbAccess import*# 打开odb的库
import os
import sys

odb=openOdb(path='Job-1.odb')# 读取odb
step1=odb.steps['Reduce']# 读取odb.折减用Load和Reduce

firstFrame=step1.frames[0]# 第一帧
lastFrame=step1.frames[-1]# 最后一帧 # 读取odb.step.frames

# 第一帧
displacement_first=firstFrame.fieldOutputs['U'] # 读取odb.step.frames.fieldOutputs
displacementValues_first=displacement_first.values# 读取odb.step.frames.fieldOutputs.values

# 最后一帧
displacement_last=lastFrame.fieldOutputs['U']# 读取odb.step.frames.fieldOutputs
displacementValues_last=displacement_last.values# 读取odb.steps.frames.fieldOutputs.values

# txt文件导出
DISP = []
for v in displacementValues_last:#这里保存最后一步的位移场
    DISP.append([v.nodeLabel,v.data[0],v.data[1]])# 节点编号,X位移,Y位移,Z位移
    #DISP.append(v.data)# X位移,Y位移,Z位移
    # print DISP
# np.savetxt('DISP.txt',DISP)
with open('E:\\abaqus_field\\field.txt', 'w') as f:
    for i in DISP:
        i=(','.join(str(j) for j in i))
        f.write(str(i) + '\n')
odb.close

おすすめ

転載: blog.csdn.net/self_Name_/article/details/127472586