磁界解析において周期性がある場合には、モデルサイズ削減のために部分モデル化し周期境界条件を付与します。2次元モデルにおける設定対象はエッジですが、このスクリプトではIDなどで1つ1つ設定するのではなく、回転周期性のモデル化において一般的なX軸上(>=0)のエッジを一括で選択し、回転周期境界条件を付与します。
前提条件
- 2次元のモデルに磁界解析スタディが1つ以上作成されていること
このスクリプト例では、プロジェクトツリー上1番目のモデルの1番目のスタディに対して実行している - 設定値の単位は、作成されているモデルに設定されている単位系に従う
スクリプトにおける設定内容
- x軸上(>=0)のすべてのエッジの選択にはエッジセットを作成し、面上で選択(半平面)のタイプを使用
- 座標系をZ-X-Yの第2軸方向として、ZX平面のx>=0でx軸上を設定
- 周期境界条件を作成し、先に作成したエッジセットを対象として設定
- 周期境界条件のその他のパラメータは、このスクリプト例では周期性を反周期、周期角度は90, 回転中心は原点としている
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/
def createEdgeSet(targetmodel):
"""x>=0のXZ平面上のエッジのセットを作成"""
setList = targetmodel.GetSetList()
pbedgeSet = setList.CreateEdgeSet(u"PeriodicBoundary")
pbedgeSet.SetUpdateByRelation(False)
pbedgeSet.SetMatcherType(u"OnHalfPlane") # "OnHalfPlane":面上で選択(半平面)
pbedgeSet.SetParameter(u"axis_type", 1)
# The 2nd argumet of SetCoordinateSystem
# 名称かインデックス
# プリセット座標系の名称は言語設定に従って固定
# インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
pbedgeSet.SetCoordinateSystem(u"coordinate", 3)
#pbedgeSet.SetCoordinateSystem(u"coordinate", u"直交座標系(ローカル:Z-X-Y)")
pbedgeSet.SetParameter(u"tolerance", 1e-06)
pbedgeSet.Rebuild()
return pbedgeSet
def createPeriodicBoundary(targetStudy, targetEdgeEntities):
"""スタディに、渡されたエンティティセットを設定対象とする周期境界条件を作成する"""
pdcond = targetStudy.CreateCondition(u"RotationPeriodicBoundary", u"pd")
pdcond.ClearParts()
pdcond.AddSet(targetEdgeEntities, 0)
pdcond.SetValue(u"BoundaryType", u"Reverse")
pdcond.SetValue(u"Angle", 90)
pdcond.SetXYZPoint(u"Origin", 0, 0, 0)
app = designer.GetApplication()
model = app.GetModel(0)
edgeEntities = createEdgeSet(model)
study = model.GetStudy(0)
createPeriodicBoundary(study, edgeEntities)


