# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/

app = designer.GetApplication()

def createResponseInfoReducedOrderModel(resCreateInfo, resCreateParams, calcParams):
    """応答値テーブルの作成を行う(計算方法:次数低減モデル)"""
    resCreateInfo.SetCalculationType(resCreateParams[u"calculationType"])
    resCreateInfo.SetTorqueCondition(resCreateParams[u"torqueCond"])
    resCreateInfo.SetPole(resCreateParams[u"pole"])
    resCreateInfo.SetMotorType(calcParams[u"motorType"])
    # 電流の位相のオフセットを計算する方法
    # 0:［電流の位相のオフセットを自動計算する］を無負荷計算から自動計算する
    # 1:［電流の位相のオフセットを自動計算する］を有効にする
    # 2:［電流の位相のオフセットを自動計算する］を巻線設定から自動計算する
    resCreateInfo.SetAutoCalculationPhaseOffset(calcParams[u"autoCalcPhaseOffset"])
    resCreateInfo.SetParallelJobs(calcParams[u"paraJobs"])
    resCreateInfo.SetMaximumCurrent(calcParams[u"maxCurrent"])
    resCreateInfo.SetMaximumSpeed(calcParams[u"MaxSpeed"])
    # dq軸変換タイプ
    # ValueInvariant:変換前後の振幅が不変
    # PowerInvariant:変換前後の電力が不変
    resCreateInfo.SetDQAxisTransformType(calcParams[u"dqAxisTrans"])

study = app.GetCurrentStudy()
cond = study.GetCondition(u"Rotor torque")
resCreateInfo = study.GetCreateResponseInfo()
resCreateParams = {
    u"calculationType" : u"ReducedOrderModel",
    u"torqueCond"      : cond,
    u"pole"            : 4,
}
calcParams = {
    u"motorType"           : u"PMSM",
    u"autoCalcPhaseOffset" : 1,
    u"paraJobs"            : 5,
    u"maxCurrent"          : u"200",
    u"MaxSpeed"            : u"1080",
    u"dqAxisTrans"         : u"ValueInvariant",
}
createResponseInfoReducedOrderModel(resCreateInfo, resCreateParams, calcParams)
