# 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)