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環境であれば、以下のコマンドを実行してインストールできます。
C:\> conda install -c conda-forge pybind11 pybind11-abi
C:\> conda install -c conda-forge mkl mkl-include
または、pipを使用して以下のコマンドでインストールできますが,他のパッケージとの依存関係に注意してください。
C:\> pip install pybind11 mkl mkl-include
インストール後,以下のように pyemsol
をインポートして使用します。
正しく読み込めているかの確認には, pyemsol.version()
を使用します。
import pyemsol
print(pyemsol.version())
実行方法#
Pythonから pyemsol
を使用して実行するには,二つの方法があります。
EMSolutionと同様に, input.json データを引数として
pyemsol.run
で実行する。pyemsol.initialize
で初期化し,pyemsol.solve
を複数回実行可能,pyemsol.finalize
で終了する。
1. 従来と同じ実行#
pyemsol.run
を使用して,従来の実行方法と同様に実行します。
pyemsol.run
は,Windowsでいうバッチ版 EMSolBatch.exe
をスクリプトで実行する場合とほぼ等価で,以下のように使用します。
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.initialize
で初期化:PRE_PROCESSING(1)
,MAKE_SYSTEM_MATRICES(1)
と,SOLVE_EQUATION(1)
の前処理を実行します。pyemsol.solve
で計算:SOLVE_EQUATION(1)
の主計算部分と,POST_PROCESSING(1)
のポストデータ処理部分を実行します。pyemsol.finalize
で終了: 計算終了関連を実行し,終了します。
pyemsol.solve
を複数回実行できるようになったことで,計算条件を変更して,複数回計算を行うことができます。
例えば,モータ解析で電流の振幅や位相を変更して,複数回計算を行う場合などに使用します。
以下のように使用します。
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を参照してください。