[S0009] メッシュグループを対象とした部品・面・エッジの計算設定を追加する

 

結果の計算機能では、指定された部品、面、エッジ、において結果分布量の合計値や最大値等を計算できます。一定の空間範囲の解析結果分布量のサマリを評価できますが、メッシュグループでの指定は範囲の任意性が高まります。このスクリプトではメッシュグループ(要素、要素面、要素辺の集合)を対象に、それぞれの計算定義を作成します。

前提条件

  • 3次元モデルで分布量を算出する解析スタディが1つ以上作成されていること
    このスクリプト例では、プロジェクトツリー上でアクティブなスタディに対して実行している
  • 要素、要素面、および要素辺のそれぞれのメッシュグループが作成済みであり、そのタイトルが既知であること

スクリプトにおける設定内容

  • 要素のメッシュグループ”Element_Stator”を対象に部品計算の設定を追加
    磁束密度のx成分最大値を計算するパラメータを設定
  • 要素面のメッシュグループ”Face_Stator2″,”Face_Stator3″を対象に面計算の設定を追加
    磁界の面積分を計算するパラメータを設定
    計算対象として選択されている各面の法線方向の反転を設定
  • 要素辺のメッシュグループ”Edge_Magnet1″,”Edge_Magnet2″を対象にエッジ計算の設定を追加
    磁化の線積分を計算するパラメータを設定
    計算対象として選択されている各辺の基準とする向きの反転を設定
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/


def getMeshGroupListInStudy(study, groupNameList):
    """引数で指定された名称のメッシュグループを取得する"""
    meshGroupList = []
    for groupName in groupNameList:
        meshGroupList.append(study.GetMeshGroupList().GetMeshGroup(groupName))
    return meshGroupList

def createPartsCalculationWithMeshGroup(study, resultType, meshGroupList):
    """部品のメッシュグループにおける結果タイプ(物理量)の最大値を計算する設定を追加"""
    calculationType = u"max"
    component = u"X"
    title = "_".join([resultType, calculationType, component])

    calculationDefinition = study.CreateCalculationDefinition(title)
    calculationDefinition.SetResultType(resultType)
    # The 1st argumet of SetResultCoordinate
    # 名称かインデックス
    # プリセット座標系の名称は言語設定に従って固定
    # インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
    calculationDefinition.SetResultCoordinate(0)
    #calculationDefinition.SetResultCoordinate(u"直交座標系(全体)")
    calculationDefinition.SetComponent(component)
    calculationDefinition.SetCalculationType(calculationType)
    calculationDefinition.ClearParts()
    # 引数で渡されたメッシュグループを計算対象に追加する
    for meshGroup in meshGroupList:
        calculationDefinition.AddGroup(meshGroup, 0)

def createSurfaceCalculationWithMeshGroup(study, resultType, meshGroupList):
    """面のメッシュグループにおける結果タイプ(物理量)の面積分を計算する設定を追加"""
    calculationType = u"surface_integral"
    title = "_".join([resultType, calculationType])

    surfaceCalculationDefinition = study.CreateSurfaceCalculationDefinition(title)
    surfaceCalculationDefinition.SetResultType(resultType)
    # The 1st argumet of SetResultCoordinate
    # 名称かインデックス
    # プリセット座標系の名称は言語設定に従って固定
    # インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
    surfaceCalculationDefinition.SetResultCoordinate(0)
    #surfaceCalculationDefinition.SetResultCoordinate(u"直交座標系(全体)")
    surfaceCalculationDefinition.SetCalculationType(calculationType)
    surfaceCalculationDefinition.SetDirectionReverse(True)
    surfaceCalculationDefinition.ClearParts()
    # 引数で渡されたメッシュグループを計算対象に追加する
    for meshGroup in meshGroupList:
        surfaceCalculationDefinition.AddGroup(meshGroup, 1)

def createEdgeCalculationWithMeshGroup(study, resultType, meshGroupList):
    """エッジのメッシュグループにおける結果タイプ(物理量)の線積分を計算する設定を追加"""
    calculationType = u"line_integral"
    title = "_".join([resultType, calculationType])

    edgeCalculationDefinition = study.CreateEdgeCalculationDefinition(title)
    edgeCalculationDefinition.SetResultType(resultType)
    # The 1st argumet of SetResultCoordinate
    # 名称かインデックス
    # プリセット座標系の名称は言語設定に従って固定
    # インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
    edgeCalculationDefinition.SetResultCoordinate(0)
    #edgeCalculationDefinition.SetResultCoordinate(u"直交座標系(全体)")
    edgeCalculationDefinition.SetCalculationType(calculationType)
    edgeCalculationDefinition.SetDirectionReverse(True)
    edgeCalculationDefinition.ClearParts()
    # 引数で渡されたメッシュグループを計算対象に追加する
    for meshGroup in meshGroupList:
        edgeCalculationDefinition.AddGroup(meshGroup, 2)

app = designer.GetApplication()
study = app.GetCurrentStudy()

resultType = u"MagneticFluxDensity"
groupNameList = [u"Element_Stator"]
meshGroupList = getMeshGroupListInStudy(study, groupNameList)
createPartsCalculationWithMeshGroup(study, resultType, meshGroupList)

resultType = u"MagneticFieldStrength"
groupNameList = [u"Face_Stator2", u"Face_Stator3"]
meshGroupList = getMeshGroupListInStudy(study, groupNameList)
createSurfaceCalculationWithMeshGroup(study, resultType, meshGroupList)

resultType = u"Magnetization"
groupNameList = [u"Edge_Magnet1", u"Edge_Magnet2"]
meshGroupList = getMeshGroupListInStudy(study, groupNameList)
createEdgeCalculationWithMeshGroup(study, resultType, meshGroupList)

Download Python source code

ファイルご利用の注意点

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

絞込み検索

  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary