configファイルを使った既定値の変更

[2021/10/07更新]

EMYフォーマット では,幾つかの設定値には 既定値 があり,これらの設定値では値を設定しない時は,既定値 を使ったems入力ファイルが生成されます.
例えば,iccgタグICCG_CONV ラベルに値を設定しないと,既定値1e-6 の値が用いられて,ems入力ファイルが生成されます.
EMYフォーマット既定値 の値は,EMSolution の(当時の)ハンドブックに記載された値を元に決められましたが,計算モデルによっては適切な値でないこともあります.
そこで,下記に示す特定の設定値に関しては,configファイルを生成し,
  • --configコマンド引数でconfigファイル(.ymlを拡張子とする任意の名前のファイル)を指定してemyコマンドを実行する

  • 特定のディレクトリに,.emy.config.ymlというファイル名(ファイル名は固定)のconfigファイル保存する

のいずれかを行うことで,既定値を変更することができます.

configファイルで変更されるのは 既定値 です.既定値 を変更しても,EMY ファイルの各設定値に値を入力すれば,そちらが優先して反映されます.
既定値 は,あくまで, 設定項目に値が入力されない時に代用される値であることに注意して下さい.

configファイルの記述方法

configファイルに,各設定値の 既定値 の変更後の値を記述するのは,EMYフォーマット で各ラベルの値を記述するのと,ほぼ 同じです.
但し,configファイルは YAMLフォーマット のファイルなので,階層構造のラベル/タグは,半角スペース2文字以上でインデントする必要 があります(EMYフォーマット では,インデントしなくても良い).
例えば,上記の ICCG_CONV ラベルの 既定値1e-8 に変更するケースでは,
iccg:
  ICCG_CONV: 1e-8
として下さい.
これを,下記のように,ICCG_CONV ラベルをインデントなしで記述するのはダメです.
iccg:
ICCG_CONV: 1e-8
さらに,DIV_FACTOR ラベルおよび,DIV_ITERATION ラベルの 既定値 も変更するケースでは,下記のようになります.
iccg:
  ICCG_CONV: 1e-8
  DIV_FACTOR: 10
  DIV_ITERATION: 20

configファイルの保存ディレクトリ

configファイルは,emy コマンドを実行する際に,--config コマンド引数を使えば, 読み込むconfigファイルを直接指定することができます.
--config コマンド引数を指定しないと,下記の手順に従って,該当するディレクトリに,configファイル(ファイル名: .emy.config.yml )を探し,configファイルがある場合は,それを読み込みます.
  1. カレントディレクトリ(emyコマンドを実行しているディレクトリ)

  2. ホームディレクトリ(環境変数HOMEで定義されているディレクトリ)

  3. emy実行ファイルのあるディレクトリ

但し,上位のディレクトリで, .emy.config.yml ファイルが見つかった時点で,configファイルを読み込み,それ以降のディレクトリのconfigファイルは読み込みません.
例えば,カレントディレクトリと,ホームディレクトリの両方にconfigファイルが保存されていたとしても,ホームディレクトリに保存されたconfigファイルは読み込まれません.

既定値の変更が可能な設定値の一覧

既定値の変更が可能な設定値の一覧は,下記のようになります.
既定値の変更が可能な設定値

タグ

ラベル

設定例

説明

potoption

REGULARIZATION

potoption:
REGULARIZATION: 1

コイルに流れる電流の算出に正則化を施します

potoption

LINE_SEARCH

potoption:
LINE_SEARCH: 1

非線形解析で減速係数を自動算出します

iccg

ICCG_CONV

iccg:
ICCG_CONV: 1e-8

ICCG法の収束判定値

iccg

DIV_FACTOR

iccg:
DIV_FACTOR: 10

反復計算が発散したとみなす倍数

iccg

DIV_ITERATION

iccg:
DIV_ITERATION: 20

反復計算が発散したとみなす連続回数

nonlin

INIT_OPTION

nonlin:
INIT_OPTION = 1

ステップ計算で初期値をゼロクリア

nonlin

CHECK_B

nonlin:
CHECK_B: -0.01

非線形解析の収束判定を最大磁場変化量で判定

inputfile

INPUT_MESH_FILE

inputfile:
INPUT_MESH_FILE: 2

入力ファイルのフォーマット形式

inputfile

UNIT

inputfile:
UNIT: 1

節点座標の座標系

outputfile

POST_DATA_FILE

outputfile:
POST_DATA_FILE: 2

出力ファイルのフォーマット形式

outputfile

WIDE

outputfile:
WIDE: 1

出力ファイルの数値の有効桁数

geometry

GEOMETRY

geometry:
GEOMETRY: 4

解析領域の次元

geometry

DELTA_Z

geometry:
DELTA_Z: 0.1

二次元並進対称のZ軸方向長さ

geometry

DELTA_THETA

geometry:
DELTA_THETA: 1

軸対称の角度方向の要素の角度

bc

DISTANCE_JUDGE

bc:
DISTANCE_JUDGE: 1e-6

節点が面および線上にあるか判定する距離

elmcur

OPTION

source:
elmcur:
OPTION: 1

要素に流れる電流の与え方

elmcurタグのOPTIONラベルは,configファイルのみ有効なラベルです
EMYファイルのelmcurタグにOPTIONラベルは存在しません

オススメの既定値変更の例

1. ICCGの収束関連

EMSolution は,入力ファイルの設定項目が間違った計算を行ったケースを想定し,ICCG法の収束状況が一定の範囲内に収まらないと,ICCG法が発散したと判定し,計算を中断してしまいます.
これでは,(元々)収束性の悪い計算モデルでは,最後まで計算を続行せず,計算が中断してしまう危険があります.
これに対し,ICCG法が発散したと判定する範囲を広げることで,最後まで計算を続行することができます.
以下に示す例では,ICCG法が発散したと判定する範囲を広げるための既定値変更の例です.
なお,ICCG法の収束そのものは,ICCG_CONV ラベルで設定した値で判定されますので,ICCG法が発散したと判定する範囲を広げても,計算結果の精度が悪くなることはありません.
(加えて,収束性が悪くない計算モデルでは,従来と全く同じ収束となります)
iccg:
  DIV_FACTOR: 10
  DIV_ITERATION: 20

2. 非線形の収束関連

EMSolution は,非線形の収束判定に残差の値を使ってきた歴史があります.
しかしながら,非線形の収束判定は,残差ではなく最大磁場変化量で判定すべきです.
特に,CHECK_B ラベルに,最大磁場変化量の判定値を設定する場合は,負の値を設定しなくてはならないことを忘れやすいので,configファイルに,CHECK_B ラベルの既定値を設定しておくことをオススメします.
ついでに,非線形が収束しにくい計算モデルには,LINE_SEARCH ラベルをオンしておくと,減速係数を自動算出するので,効果があります.
以下に示す例では,非線形計算において,収束判定に最大磁場変化量(0.01[T])を用い,減速係数を自動算出することを 既定値 とするconfigファイルの設定です.
potoption:
  LINE_SEARCH: 1
nonlin:
  CHECK_B: -0.01

3. 入出力ファイルのフォーマット関連

emy では,入出力ファイルのフォーマットの既定値は,Neutral フォーマットとなっています.
しかしながら,Femap をお持ちでないユーザの方は,例えば,ATLAS フォーマットがメインとなる方もいらっしゃるでしょう.
そのようなユーザの方は,configファイルで,入出力ファイルのフォーマットの 既定値 を変更することをオススメします.
また,読み込むメッシュファイルの単位が [mm]単位がメインの場合に,よく UNIT 設定項目を設定し忘れるミスも,configファイルで,UNIT ラベルの 既定値 を変更することで回避できます.
以下に示す例では,入出力ファイルのフォーマットが ATLAS フォーマットで,読み込むメッシュファイルの座標の単位が [mm]単位のケースの,既定値 の例です.
inputfile:
  INPUT_MESH_FILE: 2
  UNIT: 1
outputfile:
  POST_DATA_FILE: 2

4. 二次元解析の引伸し量(回転角)関連

EMSolution では,二次元解析であっても,三次元メッシュに拡張して,三次元問題として解析を行う仕様となっています.
その場合,特別な理由がなければ,
  • DELTA_Zラベルを使ったZ軸方向長さ(引伸し量)

  • DELTA_THETAラベルを使った要素の角度(回転角)

は,決まった量を 規定値 として,configファイルで定義しておけば,再設定する手間が省けます.
以下に示す例では,GEOMETRY ラベルが 1 の時(二次元並進対称)は,引伸し量が 1 [m],GEOMETRY ラベルが 2 および 3 の時(二次元軸対称および軸対称三次元)は,回転角が 1 [deg]とするケースの,既定値 の例です.
geometry:
  DELTA_Z: 1
  DELTA_THETA: 1