[S0012] テーブル形式の解析結果の値を取得する

 

テーブル形式の解析結果をスクリプトから確認する手段として、csv形式でファイルに出力するだけでなく、行と列を指定して値を取得することができます。行はステップ番号、列は系列を指します。スクリプト内で取得することで独自の加工や演算を行う事ができます。このスクリプトではテーブル形式の結果タイプ名を指定してテーブルを取得し、各行、列の値および系列名を表示します。

前提条件

  • 1つ以上の結果がロードされているスタディがあること
    このスクリプト例では、プロジェクトツリー上でアクティブなスタディに対して実行している

スクリプトにおける実行内容

  • スタディが過渡応答タイプであるかどうかをチェック。
    過渡応答の場合は時間の取得も実行するため
  • “電流条件の磁束”と”ジュール損失”のテーブルの数値を取得し表示
  • テーブル値の取得では列数と行数を取得し繰り返し処理
  • 各列で列の名前、すなわち系列名を取得し表示
  • 各行では過渡応答解析の場合は時間のその単位、値とその単位を取得し表示
    過渡応答解析以外ではステップ番号と、値とその単位を取得し表示
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/


def isTransient(targetStudy):
    """引数のスタディが過渡応答/非定常か否かをチェックする"""
    isTR = False
    type = targetStudy.GetScriptTypeName() # GetScriptTypeNameの戻り値は言語に依存しない
    if type.lower().find('transient') != -1:
        isTR = True
    return isTR


def getAndDisplayResultTableData(resultTable, tableDataName, isTR):
    """テーブル結果を列->行の順で単位を付与して表示する"""
    tableData = resultTable.GetData(tableDataName)
    
    print(u"")
    print(tableData.GetName(), u":")
    for i in range(tableData.GetCols()):
        print(tableData.GetColName(i), u":")
        for j in range(tableData.GetRows()):  # rowはステップに相当
            if isTR:
                print(tableData.GetTime(j), tableData.GetTimeUnit(), ";",
                    tableData.GetValue(j, i), tableData.GetValueUnit()) #  過渡応答/非定常では時間も表示する
            else:
                print(tableData.GetStep(j), u";", tableData.GetValue(j, i), tableData.GetValueUnit())


app = designer.GetApplication()
targetStudy = app.GetCurrentStudy()
isTR = isTransient(targetStudy)
table = targetStudy.GetResultTable()
getAndDisplayResultTableData(table, u"CoilFlux", isTR)
getAndDisplayResultTableData(table, u"JouleLoss", isTR)

Download Python source code

ファイルご利用の注意点

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

絞込み検索

  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary