[S0024] ユーザーサブルーチンとサブルーチンパラメータを設定する

 

ユーザーサブルーチンとは、ユーザーが規定のフォーマットに従って任意で作成したプログラムです。
解析時に呼び出すことによって、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)

Download Python source code

ファイルご利用の注意点

JMAGスクリプトライブラリをご利用されるに際し、以下をよくお読みいただき、ご同意の上ご利用くださるようお願い申し上げます。

絞込み検索

  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary