磁界解析において、FEMモデル上の導体部品へ電気回路を介して通電条件を与える方法の一つとして、巻線設定機能があります
JMAGの巻線設定機能はモデルと連動しており、コイルのパラメータ設定手段として抵抗を直接指定する以外にも複数の入力タイプがあります。
入力タイプごと指定が必要な項目とともに、入力値とモデル上のスロット面積から算出される項目があります。
設定値の妥当性確認や、最適化時の制約条件としてこれらの算出される項目の参照を要する事があります。
このスクリプトでは、2つの入力項目タイプを例に算出される項目の値を取得し表示します。
最適化の制約条件として利用する場合には、取得した値をユーザー定義の応答値として登録し参照します。
前提条件
- コイルの形状に回転周期性のあるモデルで磁界解析スタディ、または効率マップ解析スタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上でアクティブな磁界解析スタディに対して実行している - 巻線設定が作成済みであり、そのタイトルが既知であること
- 設定値の単位は、作成されているモデルに設定されている単位系に従う
スクリプトにおける設定内容
- "Coil"というタイトルで作成済みの巻線設定の入力タイプを"巻数/素線サイズ"の設定とし、必要な入力パラメータを設定する
- 他の入力値とスロット面積から計算される、占積率と相抵抗の値を取得し表示する
- 巻線設定の入力タイプを"素線サイズ/占積率"の設定とし、必要な入力パラメータを設定する
- 他の入力値とスロット面積から計算される、巻数と相抵抗の値を取得し表示する
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
def setupWindingByTurnAndWireSize(targetWinding):
"""巻線設定のコイル項目を巻数と素線寸法で設定"""
# 入力項目を巻数/素線サイズ
targetWinding.SetInputType(u"TurnAndWireSize")
# 設定タイプを丸線寸法
targetWinding.SetWireType(u"Round")
targetWinding.SetTurns(40)
targetWinding.SetWireDiameter(1)
targetWinding.SetFilmThickness(0.1)
targetWinding.SetStrands(1)
targetWinding.SetInsulationThickness(0.2)
targetWinding.SetCorrectionFactor(1.0)
def setupWindingByFillFactorAndWireSize(targetWinding):
"""巻線設定のコイル項目を素線寸法と占積率で設定"""
# 入力項目を素線サイズ/占積率
targetWinding.SetInputType(u"WireSizeAndFillFactor")
# 設定タイプを角線寸法
targetWinding.SetWireType(u"Rectangle")
targetWinding.SetWireHeight(1.5)
targetWinding.SetWireWidth(1)
targetWinding.SetFilmThickness(0.1)
targetWinding.SetStrands(1)
targetWinding.SetInsulationThickness(0.2)
targetWinding.SetSlotFillFactor(80)
targetWinding.SetCorrectionFactor(1.0)
app = designer.GetApplication()
study = app.GetCurrentStudy()
windingDef = study.GetWinding(u"Coil")
setupWindingByTurnAndWireSize(windingDef)
# 算出された占積率
fillFactor = windingDef.ActualSlotFillFactor()
# 算出された相抵抗
phaseResistance = windingDef.ActualResistance()
print(u"---Specified by turns and wire size---")
print(u"FillFactor:", fillFactor)
print(u"Resistance:", phaseResistance)
setupWindingByFillFactorAndWireSize(windingDef)
# 算出された巻数
turns = windingDef.ActualTurn()
# 算出された相抵抗
phaseResistance = windingDef.ActualResistance()
print(u"")
print(u"---Specified by wire size and fill factor---")
print(u"Turns:", turns)
print(u"Resistance:", phaseResistance)


