スクリプトで誘起電圧(dφ/dt)を計算しグラフを表示したい。
Pythonスクリプトでの例は次の通りです。
# -*- coding: utf-8 -*-
import csv
#計算した誘起電圧結果の出力先パス
CSVpath = u"D:/WorkFolder/PythonTest/Vu noload.csv"
#作成するデータセットやグラフの名前
Name = u"Vu noload"
#[FEMコイルの鎖交磁束]結果データオブジェクトを取得
CoilFlux = app.GetCurrentStudy().GetResultTable().GetData("FEMCoilFlux")
#参照したい[FEMコイルの鎖交磁束]データの列IDを指定
col_CoilFlux = 0
app = designer.GetApplication()
#ステップコントロールの[ステップ刻みの定義タイプ]設定を取得
flg = app.GetCurrentStudy().GetStep().GetFlagAsString(u"StepType")
#[ステップ刻みの定義タイプ]が"等間隔"なら誘起電圧の計算処理を行う。違うならエラー処理する。
if flg == u"Uniform":
#計算ステップ数を取得
steps = app.GetCurrentStudy().GetStep().GetValue("Step")
#ステップコントロールの[分割数]を取得
stepdiv = app.GetCurrentStudy().GetStep().GetValue("StepDivision")
#ステップコントロールの[終了時間]を取得
stepend = app.GetCurrentStudy().GetStep().GetValueWithUnit("EndPoint",u"s")
#時間刻みを計算
dt = stepend / stepdiv
#各ステップごとに誘起電圧を計算
for i in range(1,int(steps+1)):
#1ステップ目はdt=0なので、誘起電圧Ind=0を代入
if i == 1:
Ind = 0
#2ステップ目以降は鎖交磁束結果をもとに誘起電圧Indを計算
else:
Fai1 = CoilFlux.GetValue(i-2, col_CoilFlux) #i-1ステップ目の鎖交磁束結果を取得
Fai2 = CoilFlux.GetValue(i-1, col_CoilFlux) #iステップ目の鎖交磁束結果を取得
Ind = (Fai2 - Fai1) / dt #誘起電圧Indを計算
now_time = dt * (i-1) #iステップ目の時刻を計算
#追記モードでCSVファイルを開く
with open(CSVpath,mode='a', newline='') as f:
writer = csv.writer(f)
#iステップ目の計算結果をcsvに書き込む
writer.writerow([now_time, Ind])
#出力したCSVファイルからデータセットを作成
dataset = app.GetDataManager().CreateFromFile(CSVpath,Name, u"Time, s", u"InducedVoltage, V")
#作成したデータセットからグラフを作成
app.GetDataManager().CreateGraphModel(dataset, Name)
#作成したグラフを表示
app.GetDataManager().Show(Name)
else:
print(u"ステップコントロールの設定が終了時間(終了点)と分割数で設定されていないため、誘起電圧を計算できません")
※注意
・誘起電圧を計算するため、ステップコントロールは終了時間と分割数を指定している必要があります。
・本サンプルを実行する前に次の確認が必要です。
・CSVpathで指定しているCSVファイルが存在しないこと
・Nameで指定しているデータセットやグラフが存在しないこと。


