pyemsol API リファレンス#

このページは、Pythonパッケージ pyemsol の利用者向け公開APIです。 Pythonから呼び出せる関数でも、eMotorSolutionやEMSOptimizerとの内部連携専用であれば ここには掲載しません。

利用上の共通事項#

  • inputJson には、組み込みPython型だけで構成したJSON互換の dict / list / str / bool / int / float / None を渡します。NumPy配列・NumPyスカラー・ タプルは、このAPIの入力として直接渡せません。

  • 同一プロセス内で同時に複数の解析を実行することはサポートしません。並列パラメータ サーベイには独立したプロセスを使用してください。

  • 戻り値が bool の更新APIでは結果を確認してください。反復解析は必ず finalize() で、 外部ステップ解析は close() または with 文で終了します。

  • 入力データの詳細は III 入力設定 を参照してください。

APIの選び方#

  • 1回だけ解析する: run(input_json, run_directory)

  • 条件を更新して反復する: initialize() → 更新API → solve() → finalize()

  • 外部から時刻ごとに与える: with CoupledSession(...) → step() の反復

一括解析と反復解析#

run(inputJson, run_directory) → dict#

入力を変更せずに1回解析します。output.json 相当の結果を dict として返します。 run() の前後に initialize()、solve()、finalize() を組み合わせません。

initialize(inputJson, run_directory) → dict#

反復解析の内部状態を初期化し、設計領域がある場合は設計要素情報を返します。 initialize() が成功した後は、例外が発生した場合も含めて finalize() をちょうど1回呼び出します。

solve() → dict#

初期化済みの現在条件で解析し、結果を返します。更新APIの後に反復実行できます。

finalize() → int#

反復解析を終了し、内部リソースを解放します。現在の正常終了時の戻り値は 0 です。

design_space = pyemsol.initialize(input_json, str(model_dir))
try:
    # 必要に応じて入力を更新する
    output = pyemsol.solve()
finally:
    pyemsol.finalize()

反復解析中の更新#

update_Time_Function(inputJson) → bool#

18_Time_Function の既存 TIME_ID を基準に時間関数を更新します。該当ブロックが ない場合は False を返します。

update_properties_in_design_domain(inputJson) → bool#

設計領域として初期化された材料の 16_Material_Properties を更新します。入力には 入力JSON全体、または 16_1_3D_Element_Properties を含む辞書を渡せます。

実例は 使用例 と 活用例 を参照してください。

外部 Mesh Morphing 連携#

外部のmesh morphingツールと連携する CoupledSession、静的体積メッシュ、座標payloadの 入出力仕様と制約は、 外部 Mesh Morphing 連携 にまとめています。 スキーマバージョン、座標系、対応モデルの制約を確認してから利用してください。

既存スクリプトとの互換API#

以下は既存コードを維持するためのモジュールレベルAPIです。新規コードでは CoupledSession を使用してください。

  • prepare_step_calculation(inputJson, run_directory) -> dict

  • step_calculation() -> int

  • step_calculation(time, delta_time, inputs={}, deformation=None) -> dict

  • describe_coupling_ports() -> dict

  • describe_deformation() -> dict

  • describe_deformation_mesh() -> dict

  • close() -> dict

情報#

version() → dict#

バージョン情報を返します。