In an efficiency map analysis study, performance metrics such as efficiency and losses can be evaluated by calculating various combinations of operating conditions, such as rotational speed and current.
While efficiency map analysis entails a high computational load due to the need to perform magnetic field analysis at numerous operating points, a reduced order model enables efficiency map evaluation at a lower computational cost, albeit with reduced accuracy.
This script configures the settings for response table creation for efficiency map analysis using a reduced order model.
Preconditions
- One or more efficiency map analysis study has been created.
This script runs on the active study in the project tree.
Script Function
- Set the method of calculation to "Reduced Order Model".
- Set parameters of the response table creation for the reduced order model:
Torque: condition title is "Rotor torque"
Pole: 4
Motor type: PMSM
Current phase offset: [Automatically calculate from winding settings]
Maximum current: 200 A
Maximum speed: 1080 r/min
Parallel jobs: 5
DQ axis transform type: [Consistent units]
# Copyright (c) 2026 JSOL CORPORATION
#
# This script is released under the MIT License.
# See the full license text at:
# https://www.jmag-international.com/scriptlibrary/jmag_script_library_mit/
app = designer.GetApplication()
def createResponseInfoReducedOrderModel(resCreateInfo, resCreateParams, calcParams):
"""Create a response value table (calculation method: order reduction model)."""
resCreateInfo.SetCalculationType(resCreateParams[u"calculationType"])
resCreateInfo.SetTorqueCondition(resCreateParams[u"torqueCond"])
resCreateInfo.SetPole(resCreateParams[u"pole"])
resCreateInfo.SetMotorType(calcParams[u"motorType"])
# Current Phase Offset
# 0:[Current Phase Offset]Automatically calculate Current Phase Offset from no-load calculations.
# 1:[Current Phase Offset]Enable.
# 2:[Current Phase Offset]from winding settings.
resCreateInfo.SetAutoCalculationPhaseOffset(calcParams[u"autoCalcPhaseOffset"])
resCreateInfo.SetParallelJobs(calcParams[u"paraJobs"])
resCreateInfo.SetMaximumCurrent(calcParams[u"maxCurrent"])
resCreateInfo.SetMaximumSpeed(calcParams[u"MaxSpeed"])
# DQ Axis Transform Type
# ValueInvariant:Consistent Units
# PowerInvariant:Power Invariant
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)


