[S0043] 過渡応答解析の条件変化を関数で設定する

時間や角度などに応じて変化する電流、電位などは、点列や関数を用いて定義することができます。
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)

Download Python source code

ファイルご利用の注意点
JMAGスクリプトライブラリをご利用されるに際し、以下をよくお読みいただき、ご同意の上ご利用くださるようお願い申し上げます。
絞込み検索
  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary