ICCGタグ¶
[2018/12/20更新]
各種行列計算の収束の有無,最終残差,反復回数を表します.
過渡解析など複数ステップの計算のケースでは,各計算ステップ毎に非線形反復回数が異なるため,出力される値は,配列(計算ステップ数)の配列(非線形反復回数)のいわゆるジャグ配列となります(下図参照).

警告
ICCGタグを使って上記情報が出力されるのは,電磁場の計算のみです.前処理でソース項の算出に使われる行列計算などの情報は出力されません.
(例えば,PHICOILを使ったケースでは,前処理として行列を解いてソース電流を算出しますが,このソース電流の算出に関する行列計算の情報はICCGタグでは出力されません)
ICCGタグ¶
出力する値によって下記の第2タグを用います.
第2タグ | 項目 |
---|---|
CONVERGE | 収束の有無(Boolean値) |
RESIDUAL | 最終残差 |
ITERATION | 反復回数 |
警告
希な例として,非線形計算時の0回反復収束(行列計算開始時において残差が収束判定値未満のケース)は,反復回数0回で収束していると見なします.
データ取得例¶
["ICCG"]["CONVERGE"]
["ICCG"]["RESIDUAL"]
["ICCG"]["ITERATION"]
Pythonスクリプト例¶
とりあえず,行列計算が未収束となったのか判定する例.
変数 js にEMSOJsonのデータが収納されているとする.
#------------------------------
#[input]
# js : EMSOJson data
#[return]
# True : 収束
# False : 未収束が1つ以上ある
#------------------------------
def isconverge(js):
conv = js["ICCG"]["CONVERGE"] # CONVERGEタグのデータ取得
for step in conv: # 各ステップのデータ抽出
for isc in step: # 各ステップのNR反復毎のデータ抽出
if not isc:
return False # 1つでも未収束の場合はFalse
return True
行列計算が未収束となった計算ステップ番号,NR反復番号まで取得したい例.
#-------------------------
#[input]
# js : EMSOJson data
#[return]
# unconvs[] : 未収束のステップ番号およびNR反復番号
#-------------------------
def isconverge(js):
unconvs = [] # 未収束のステップ番号およびNR反復番号
conv = js["ICCG"]["CONVERGE"] # CONVERGEタグのデータ取得
for (i,step) in enumerate(conv): # 各ステップのデータ抽出
for (j,isc) in enumerate(step): # 各ステップのNR反復毎のデータ抽出
if not isc:
unconvs.append([i,j]) # 未収束のステップ番号(i)およびNR反復番号(j)を収納
return unconvs