2017-07-11 28 views
1

私はPythonで書いているエンジニアの論文で助けになるAbaqus 6.14プラグインに取り組んでいます。 Abaqus scripting reference guideによると、それが呼び出すことにより、出力データベース(* .ODBファイル)から材料を輸入することが可能である:Abaqusのユーザーが(比較的軽量素材ライブラリへ/から/輸入材料をエクスポートすることができますよう、Abaqus CAEの素材ライブラリから素材をスクリプトを使用してインポートすることはできますか?

from abaqus import mdb 
mdb.models[name].materialsFromOdb(filename) 

しかし* .LIBファイル)を作成し、それらをモデル間で共有することができます。私は、しばしばかさばる* .odbファイルからではなく、これらから素材をインポートしたいと考えています。

私はプラグインで繰り返し仕事の量を減らしたいと思いますが、これは手作業で簡単に行うことができます。かなりシンプルなモデルで数多くのシミュレーションを実行する必要がありますが、材質やその他のパラメータが異なります。私はテンプレート* .caeファイルにも必要な材料を提供することができますが、手動で数十のモデルに新しい材料をインポートしなければならない場合、または既存の材料のプロパティを更新しなければならない場合は、かなり不便かもしれません。

マテリアルライブラリからAbaqus mdbモデルにPythonスクリプトを使ってマテリアルをインポートできますが、そのような回避策のみが存在する場合はカスタム* .libファイルパーサーの実装を避けることができます。

答えて

3

最初に知っておくべきことは、Abaqusマテリアルライブラリが単なる節約型ファイルであることです。特別なパーサは、それを扱うためには必要ありません。標準のPythonライブラリpickleまたはcPickleを使用できます。もちろん、内部のオブジェクトの正確な構造を把握する必要があります。シンプルなタプルのリストであるので、これは難しいことではありません。

ただし、既存の材料ライブラリがあり、Abaqus CAEデータベースに素材をインポートする場合は、既存の方法があります。

Abaqusには、素材データベースの素材ストリングを使用し、その素材オブジェクトを作成する方法があります。正確な名前は覚えていませんが、手動で1つの素材をインポートしてabaqus.rpyファイルを調べると、そのファイルが内部に表示されます。

この方法を使用するには、マテリアルライブラリのマテリアルストリングが必要です。これは、材料データベースファイルを読むことによって行うことができます。すでに述べたように、これはpickle形式です。

ご存知のように、Abaqusには既に材料ライブラリからデータを読み込んでCAEモデルにインポートする方法があります。彼らはあなたが使うことができるPythonモジュールを持っていますが、それはカーネルのものではなく、GUIプロセス内でのみ使用できます。あなたが時間を過ごしたいのであれば、どのモジュールがそれをしているのか把握することができます。 Abaqusのインストールフォルダ内には、.pycのファイルがあります。 Python逆コンパイラを使用する場合、それらのモジュールのソースコードを入手することができます。 matで始まるものを探します。

+0

ありがとうございます。期待どおりに動作します。正確に言うと、あなたが言及したメソッドはmaterials.createMaterialFromDataString(modelname、materialname、version、data)です。ライブラリファイルをアンピクルした後、5つのタプルのリストがあります。タプルの最後の要素は辞書であり、そのプロパティ 'data'はデータ引数として関数に渡されます。 –

関連する問題