[S0064] 指定の時間範囲で深さごとの平均を算出する

鋼板内の渦電流分布計算を設定した場合には、積層の深さごとの計算結果が出力されます。
プローブとして深さごとの計算結果を確認できます。
また深さごとの計算結果は、各深さにて平均値を算出する加工機能があります。
このスクリプトでは、磁束密度(積層)のプローブを作成し、指定の時間範囲で深さごとの平均を算出します。

前提条件

  • 磁界解析スタディが1つ以上作成されていること
    このスクリプト例では、プロジェクトツリー上でアクティブな磁界過渡応答解析スタディに対して実行している
  • 計算結果の出力はスタディが解析済みであること
  • 積層の結果が出力されること
    材料の電気特性で[鋼板内の渦電流分布を考慮する]を選択

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

  • 磁束密度(積層)のプローブを作成する。
    プローブの位置は座標で(-58, 9, 0)を指定
    スクリプトからのプローブ作成ではAPI実行毎に算出処理が走るためこれを抑制して実行
    SetAutoRecalculate(False)で算出処理を抑制
    Build()で設定内容を反映させて算出
  • 先に作成したプローブの結果に対して深さごとの平均を算出
    平均を取る時間範囲は0 - 0.02sec
  • 開かれているプロジェクトファイルと同階層に、深さごとの平均のテーブルをCSV形式でエクスポートする。
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/

import os

app = designer.GetApplication()

def createLamiMagFluxDensityProbe(study, title):
    """磁束密度(積層)のプローブを作成する"""
    probe = study.CreateProbe(title)
    probe.SetAutoRecalculate(False)
    probe.SetResultType(u"LaminationMagneticFluxDensity")
    # The 1st argument of SetResultCoordinate
    # 名称かインデックス
    # プリセット座標系の名称は言語設定に従って固定
    # インデックスはプロジェクト-モデル-座標系の下にある座標系定義から0ベースで指定
    probe.SetResultCoordinate(0)
    # probe.SetResultCoordinate(u"直交座標系(全体)")
    probe.SetComponent(u"All")
    probe.SetLocationCoordinate(0)
    # probe.SetLocationCoordinate(u"直交座標系(全体)")
    probe.SetProbeType(u"Coordinate")
    probe.SetLocation(0, u"-58", u"9", u"0")
    probe.RenamePoint(0, u"Measurement position")
    probe.SetUseElementValue(True)
    probe.SetMoveWithPart(True)
    probe.Build()
    return probe

def createAvgVsDepth(dataManager, probe, param):
    """深さごとの平均に必要なパラメータを作成する"""
    parameter = app.CreateGraphIntegralParameter(param[u"title"])
    dataSet = probe.GetDataSet()
    parameter.AddDataSet(dataSet)
    parameter.SetMin(param[u"min"])
    parameter.SetMax(param[u"max"])
    parameter.SetRangeUnit(param[u"rangeUnit"])
    dataSetAVGVsDepth = dataManager.CreateAverageVersusDepth(parameter)
    graphModelAVGVsDepth = dataManager.CreateGraphModel(dataSetAVGVsDepth)
    return graphModelAVGVsDepth

def getFolderpathOfOpenedProjectFile():
    """開かれているjprojファイルのフォルダのパスを取得する"""
    openedJprojFilePath = app.GetProjectPath()
    folderPath = os.path.dirname(openedJprojFilePath)
    return folderPath

def exportAvgVsDepth(graphModelAVGVsDepth, exportPath):
    """深さごとの平均をエクスポートする"""
    graphModelAVGVsDepth.WriteTable(os.path.join(exportPath, u"avgVsDepth.csv"))

study = app.GetCurrentStudy()
probeTitle = u"B-lamination"
probe = createLamiMagFluxDensityProbe(study, probeTitle)
dataManager = app.GetDataManager()
dataSetTitle = u"B-lamination AVG"
param = {
    u"title" : dataSetTitle,
    u"min" : u"0",
    u"max" : u"0.02",
    u"rangeUnit" : u"s"
}
graphModelAVGVsDepth = createAvgVsDepth(dataManager, probe, param)
exportPath = getFolderpathOfOpenedProjectFile()
exportAvgVsDepth(graphModelAVGVsDepth, exportPath)

Download Python source code

ファイルご利用の注意点
JMAGスクリプトライブラリをご利用されるに際し、以下をよくお読みいただき、ご同意の上ご利用くださるようお願い申し上げます。
絞込み検索
  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary