時間や角度などに応じて変化する電流、電位などは、点列や関数を用いて定義することができます。
JMAG-Designerでは、高調波、パルス関数、正弦波関数、一定値、ステップ関数、指数関数などの関数が用意されています。
このスクリプトでは、電流、電位、電流密度の変化を関数を使用し定義しています。
前提条件
- 磁界過渡応答解析スタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上でアクティブな磁界過渡応答スタディに対して実行している
スクリプトにおける設定内容
- 条件:電流の変化を正弦波(関数)で定義する
正弦波は振幅、周波数、位相で定義される - 条件:電流密度の変化を高調波(関数)で定義する
高調波は基本波と各次数の振幅、相対位相で定義される - 回路素子:電位源(1端子)の電位の変化を一定値で定義する
- 回路素子:電圧源(2端子)の電位の変化を指数関数で定義する
指数関数は振幅、漸近値、時定数で定義される
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
app = designer.GetApplication()
def createFunctionObjSin(amp, freq, phase):
"""関数を生成する(正弦波)"""
funcObjFac = app.FunctionFactory()
funcObj = funcObjFac.Sin(amp, freq, phase, False)
return funcObj
def createDataSetHarmonic():
"""高調波に設定するデータセットを作成"""
dataMng = app.GetDataManager()
dataSet = dataMng.CreatePointArray(u"harmonic_amplitudes", u"val")
refarray = [[0 for i in range(2)] for j in range(4)]
refarray[0][0] = 2 # 2次の振幅
refarray[0][1] = 0 # 2次の相対位相
refarray[1][0] = 1 # 3次
refarray[1][1] = 60
refarray[2][0] = 0 # 4次
refarray[2][1] = 0
refarray[3][0] = 1 # 5次
refarray[3][1] = 120
dataSet.SetTable(refarray)
return dataSet
def createFunctionObjHarmonic(amp, freq, phase):
"""関数を生成する(高調波)"""
funcObjFac = app.FunctionFactory()
funcObj = funcObjFac.Harmonic(amp, freq, phase)
return funcObj
def createFunctionObjConstant(amp):
"""関数を生成する(一定値)"""
funcObjFac = app.FunctionFactory()
funcObj = funcObjFac.Constant(20)
return funcObj
def createFunctionObjExp(amp, initial, time):
"""関数を生成する(指数関数)"""
funcObjFac = app.FunctionFactory()
funcObj = funcObjFac.Exp(amp, initial, time)
return funcObj
study = app.GetCurrentStudy()
amp = 3.46
freq = 315
phase = 0
isRMS = True
functionObj = createFunctionObjSin(amp, freq, phase)
cond = study.GetCondition(u"current_1")
cond.SetFunction(functionObj)
amp = 20
freq = 60
dataSet = createDataSetHarmonic()
functionObj = createFunctionObjHarmonic(amp, freq, phase)
functionObj.SetTableProperty(u"Harmonics", dataSet)
cond = study.GetCondition(u"current_density_1")
cond.SetFunction(functionObj)
circuit = study.GetCircuit()
compo = circuit.GetComponent(u"V1")
functionObj = createFunctionObjConstant(amp)
compo.SetFunction(functionObj)
compo = circuit.GetComponent(u"V2")
initial = 10
time = 5
functionObj = createFunctionObjExp(amp, initial, time)
compo.SetFunction(functionObj)


