ユーザーサブルーチンとは、ユーザーが規定のフォーマットに従って任意で作成したプログラムです。
解析時に呼び出すことによって、JMAGの動作をカスタマイズすることが可能です。
また、ユーザーサブルーチンで定義している変数に値を設定することができ、この変数のパラメトリックスタディを行うこともできます。
このスクリプトでは、電位源の電位をユーザーサブルーチンで与えるものし、ユーザー変数設定を行います。
前提条件
- 磁界解析スタディが1つ以上作成されていること
- サブルーチンが配置済みであり、名前が既知であること
スクリプトにおける設定内容
- 使用するユーザーサブルーチンのDLLに"default"を設定
- サブルーチンパラメータのユーザー変数名と値を設定
ユーザー変数名を"paramInt1"、"paramInt2"、"paramDouble1"、値を"5"、"12"、"ELPotentialVal"と設定
"ELPotentialVal"は変数名であり、方程式で定義される必要がある - 回路の電位源 (1端子)素子を作成し配置。回路は作成済みか否かを確認し未作成であれば作成
X軸タイプを"ユーザーサブルーチン(usrvsrc)"、IDを"-1"と設定
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
def setUserSubAndSubroutineParameter(study):
"""ユーザーサブルーチンとサブルーチンパラメータを設定する"""
study.GetStudyProperties().SetValue(u"UsrsubName", u"default")
study.AddSubroutineParameter(u"paramInt1", u"5")
study.AddSubroutineParameter(u"paramInt2", u"12")
study.AddSubroutineParameter(u"ParamDouble1", u"ELPotentialVal")
def getCircuitInStudy(study):
"""スタディのCircuitオブジェクトを取得し存在しない場合は新しく回路を作成する"""
if study.HasCircuit():
circuit = study.GetCircuit()
else:
circuit = study.CreateCircuit()
return circuit
def setUserSubroutineInCircuit(circuit, targetCompName):
"""電位源(1端子)素子を回路に配置してユーザーサブルーチンを設定する"""
VSComp = circuit.CreateComponent(u"VoltageSource", targetCompName)
circuit.CreateComponentInstance(VSComp, -9, 7)
VSComp.SetValue(u"XType", u"UserSub")
VSComp.SetValue(u"userid", -1)
app = designer.GetApplication()
study = app.GetCurrentStudy()
setUserSubAndSubroutineParameter(study)
circuit = getCircuitInStudy(study)
targetCompName = u"VS"
setUserSubroutineInCircuit(circuit, targetCompName)


