Pythonによる実行#

Note

Pythonによる実行は,正式に2025.05より対応しました。

pyemsol の実行にはPythonの環境が必要です。Pythonの環境構築は,各自で行ってください。

Pythonのバージョンによりインストーラも異なりますので,注意してください。

2025.05のバージョンでは、Python 3.11に対応しています。該当の環境を作成してご利用ください。

Pythonから実行するには,専用モジュール pyemsol を使用します。

インストール方法#

インストーラ(拡張子 whl)を用意し,Pythonが実行できるプロンプト(Anaconda Prompt等)から以下のコマンドを実行してインストールします。

コマンドプロンプトでのインストール例#
C:\> pip install pyemsol-(version)-(environment)-(win/linux).whl

pyemsol は,Pythonのパッケージとしてインストールされます。

追加の依存パッケージ#

pyemsol を利用するには、追加の依存パッケージが必要です。パッケージをインストールした後、以下のCoパッケージも必ずインストールしてください。 Anacondaやconda環境であれば、以下のコマンドを実行してインストールできます。

Condaでの追加パッケージのインストール例#
C:\> conda install -c conda-forge pybind11 pybind11-abi
C:\> conda install -c conda-forge mkl mkl-include

または、pipを使用して以下のコマンドでインストールできますが,他のパッケージとの依存関係に注意してください。

pipでの追加パッケージのインストール例#
C:\> pip install pybind11 mkl mkl-include

インストール後,以下のように pyemsol をインポートして使用します。 正しく読み込めているかの確認には, pyemsol.version() を使用します。

import pyemsol
print(pyemsol.version())

実行方法#

Pythonから pyemsol を使用して実行するには,二つの方法があります。

  1. EMSolutionと同様に, input.json データを引数として pyemsol.run で実行する。

  2. pyemsol.initialize で初期化し, pyemsol.solve を複数回実行可能,pyemsol.finalize で終了する。

1. 従来と同じ実行#

pyemsol.run を使用して,従来の実行方法と同様に実行します。

pyemsol.run は,Windowsでいうバッチ版 EMSolBatch.exe をスクリプトで実行する場合とほぼ等価で,以下のように使用します。

Python code#
import pyemsol
# input.json のあるディレクトリ
current_directory = os.getcwd()
# or
# current_directory = "C:/EMSolution/pyemsol_test/"
# input.json のファイル名
input_json = "input.json"
with open(input_json, 'r') as file:
    json_data = json.load(file)

# 実行。リターン値として output.json が返される
output = pyemsol.run(json_data, current_directory)

2. 初期化してから複数回実行#

pyemsol.initialize を使用して初期化し, pyemsol.solve を複数回実行することができます。 pyemsol.finalize で終了します。

pyemsol.solve を複数回実行できるようになったことで,計算条件を変更して,複数回計算を行うことができます。 例えば,モータ解析で電流の振幅や位相を変更して,複数回計算を行う場合などに使用します。

以下のように使用します。

Python code#
import pyemsol
# input.json のあるディレクトリ
current_directory = os.getcwd()
# or
# current_directory = "C:/EMSolution/pyemsol_test/"
# input.json のファイル名
input_json = "input.json"
with open(input_json, 'r') as file:
    json_data = json.load(file)

# 初期化
pyemsol.initialize(json_data, current_directory)
# 計算条件の更新
for i in range(num_case):
    # 計算条件の更新
    # update Time_Function
    # json_data["18_Time_Function"] = new_time_function
    pyemsol.update_Time_Function(json_data)
    # 計算実行, 計算結果の取得
    output = pyemsol.solve()

# 計算終了
pyemsol.finalize()

計算条件の変更方法は,以下の三つあります。

  • pyemsol.update_properties_to_elements: 設計領域の要素情報を変更します。

  • pyemsol.update_properties_in_design_domain: 設計領域のプロパティを変更します。

  • pyemsol.update_Time_Function: 時間関数の振幅や位相を変更します。

具体的な使い方については,Tutorialを参照してください。