第 4 章では、出力データベースにアクセスするスクリプトの作成方法を詳しく紹介します。
4.1 はじめに
4.2 出力データベースのオブジェクト モデル
4.3 出力データベースから (への) データの読み取り (書き込み)
4.4 Abaqus によって得られた分析結果の計算
4.5 例
4.6 スクリプトの実行効率を向上させるスキル
4.7 この章のまとめ
機能:Python言語でスクリプトを記述し、Abaqus/Viewerでは実現できない様々な後処理を実現します。
注: デフォルトでは、出力データベース ファイル (.odb) は Abaqus/CAE の読み取り専用属性で開かれます。読み取りまたは書き込みが必要な場合は、読み取り専用属性を削除する必要があります。
出力データベースにアクセスするスクリプトを作成する場合は、次の問題に注意する必要があります。
1) 出力データベース内のデータを削除または変更することはできません。また、実行しないでください。
2) 同じ出力データベース ファイルに対して、毎回 1 人のユーザーのみがアクセスできます。ファイルの破損を防ぐため、出力データベース ファイルはアクセス中に自動的にロックされます。
3) 出力データベースからのデータの読み取りには下位互換性があります。つまり、新しいバージョンの Abaqus は、下位バージョンの出力データベース ファイルを読み取ることができます。 4) 出力データベースへのデータの書き込みには下位互換性がありません。つまり、新しいバージョンの
Abaqus Abaqus はデータベース書き込みデータを出力できません。
4.1 はじめに
出力データベース内の計算結果にアクセスして処理するスクリプトを作成する場合は、次のステートメントを含める必要があります。
from odbAccess import *
スクリプトが Abaqus スクリプト インターフェイスのシンボリック定数も使用する場合は、モジュール abaqusConstants もインポートする必要があるため、ステートメントを含める必要があります
from abaqusConstants import *
他のソフトウェアの解析結果に基づいて Abaqus 出力データベースを作成する場合は、通常、材料オブジェクトと断面オブジェクトを作成する必要があるため、次のステートメントを使用して対応するモジュールをインポートする必要があります。
from odbMaterial import *
from odbSection import *
適切なモジュールをインポートすることは、出力データベースにアクセスするスクリプトを作成する最初のステップです
4.1.1 3 つの概念グループ
混同されやすい 3 つの概念グループ
1) モデル (モデル)、モデル データベース (モデル データベース)、出力データベース (出力データベース)
2) モデル データベース (モデル データ) と結果データ (結果データ)
3)フィールド出力(フィールド出力)と履歴出力(ヒストリー出力)
1. モデル
モデルには分析に必要なすべての情報が含まれており、任意の数のコンポーネントとその関連属性を含めることができます。各モデルにはアセンブリを 1 つだけ含めることができ、同じモデル データベース内の異なるモデルは互いに独立しています。
2. モデル データベース
モデル データベースは任意の数のモデルで構成され、拡張子は .cae です。各モデル データベースには 1 つのモデルのみを含めることをお勧めします。
3. 出力データベース
出力データベースには、視覚化モジュールの後処理に必要なすべての結果が含まれています。拡張子は.odbです。
4. モデルデータと結果データ
モデルデータとは、解析モデルを定義するデータを指します。たとえば、コンポーネント、材料、境界条件などはすべてモデル データに属します。結果データとは、フィールド出力や履歴出力など、有限要素解析が正常に完了して得られたデータを指します。
4.1.2 オブジェクト モデルを使用したスクリプトの作成
出力データベースのオブジェクト モデルは、主に出力データベースへのデータの読み取りおよび書き込み方法を把握することを目的としています。
オブジェクト モデルは本質的に、Abaqus スクリプト インターフェイス コマンドの構造階層です。たとえば、次のコマンドは、OdbStep オブジェクト内のフレーム シーケンスの Frame オブジェクトを参照します。
odb.steps['10_hz_vibration'].frames[3]
同様に、次のコマンドは、FieldOutput オブジェクトのフィールド変数データ シーケンスの要素を参照します。
odb.steps['10_hz_vibration'].frames[3].fieldOutput['U'].values[47]
スクリプトでは、コマンドを使用して、オブジェクト モデル内のオブジェクト間の階層を介してオブジェクトをステップ実行します。
注: 出力データベースの構造がわからない場合は、コマンド ライン インターフェイスで objectname.__members__ メソッドを呼び出して、オブジェクトのすべてのメンバーを表示できます。