EMYファイルの書き方

[2021/09/29更新]

EMYファイルの構造

EMYファイルは,タグを記入して,そのタグに含まれる設定項目のラベルを使って値を設定します.
下記に,
tag1:タグのLABEL1-1:,LABEL1-2:ラベルに値を設定
tag2:タグのLABEL2-1:ラベルに値を設定
する例を示します.
tag1:
  LABEL1-1: value1-1
  LABEL1-2: value1-2
tag2:
  LABEL2-1: value2-1
タグの順番は任意
タグの順番は任意です.
下記の例のように,tag1とtag2の順番を逆にしても,上記の例と同じ結果となります.
tag2:
  LABEL2-1: value2-1
tag1:
  LABEL1-1: value1-1
  LABEL1-2: value1-2
先頭が#文字の行はコメント行
先頭が#で始まる行はコメント行です.
階層構造のタグでもインデントを付けなくてOK
EMYフォーマットの元となった YAMLフォーマットは半角スペース2文字以上でインデントする必要 がありますが,
EMYフォーマットではインデントしなくても良い です.
例で示すと,
tag1:
  LABEL1-1: value1-1
  LABEL1-2: value1-2
tag2:
  LABEL2-1: value2-1

tag1:
LABEL1-1: value1-1
LABEL1-2: value1-2
tag2:
LABEL2-1: value2-1
は全く同じです.
分かりやすい書式をお使い下さい.
重複するタグはNG
原則としてタグは重複してはいけません.
下に示すように,tag1の設定項目を分けて記載する(タグが重複する)のはダメです.
(LABEL1-1を設定したtag1が,LABEL1-2を設定したtag1に上書きされてしまいます)
tag1:
  LABEL1-1: value1-1
tag2:
  LABEL2-1: value2-1
tag1:
  LABEL1-2: value1-2
例外として,タグが重複してもOKとなるケースがあります.
それは,EMSolutionのinputファイルの記載方法に応じたものによります.
例えば,複数の面流入電流ソース(SUFCUR)をinputファイルで設定する場合,
SUFCUR 1 0 1 1 0
SUFCUR 2 0 2 1 0
といった具合に,SUFCURを重複して記載しますが,EMYファイルも同じように,
source:
  sufcur:
    1 0 1 1 0
  sufcur:
    2 0 2 1 0
というように,sufcur第2タグを重複して記載します.
YAMLフォーマットでは許されない記述方式ですが,
EMYフォーマットでは利便性から可能となっています.
coordinateタグ(局所座標系)も重複してもOKなタグです.
EMSolutionのinputファイルの設定項目で,複数個設定する項目に関しては,
EMYフォーマットでも該当するタグが重複しても良いようになっています.
従属タグ(階層構造のタグ)
一部のタグは,階層的な構造をとります.
説明の便宜上,従属的なタグ と呼ぶことにします.
例えば,境界条件に関する設定項目は,
境界条件全体を表す
bcタグ
の下に,
farタグ(遠方境界条件)
dirichletタグ(ディレクレ境界条件)
neumannタグ(ノイマン境界条件)
zeroalineタグ(線上のA=0の固定境界条件)
の従属タグがあります.
例えば,ディレクレ境界条件を2面設定するには,
bc:
  dirichlet:
    1 0 0 0
    0 1 0 0
という具合に,従属タグ(dirichletタグ)の設定項目を設定するには,従属する元になるタグ(bcタグ)も記載する必要があります.
また,重複タグはNGなので,上記の,
farタグ,dirichletタグ,neumannタグ,zeroalineタグ
は,同じbcタグに続けて記載する必要があります.
ラベルを使わず値を配列形式で設定するケース
必要な項目のみ記載すれば良いというEMYフォーマットの特長は,ラベルを使うことで可能となっていますが,
値を全て記載することが必須の項目もあります.
例えば,節点や面を表す座標などは,一部の座標値のみ記載することは意味がありません.
そのようなケースに該当する設定項目は,ラベルを使わず,値を配列形式で設定することになっています.
例えば,局所座標系(coordinateタグ)の設定は,
coorinate:
  1 1 0 0 0
  1 0 0
  0 1 0
coordinate:
  2 1 0 0 0
  1 0 0
  0 -1 0
のように,ラベルを使わず,設定項目の値を複数行の配列で記載します.
ラベルを使わず,値を配列形式で設定するタグは,coordinateタグの他に,
far(遠方境界条件)を除く境界条件タグ全般,
material(体積要素特性,面積要素特性)タグ全般,
source(ソース項)全般,
variation(時間変化関数)全般,
motion(移動の定義)全般,
bh(B-Hカーブ)全般
などがあります.
データの総数は項目とならない
EMSolutionのinputファイルでは,データの総数も設定項目となります.
例えば,BHカーブのデータは,
1 10  # BHカーブのデータ数(10)
0.0 0.0
100 0.1
...
10000 1.5
と言う具合に,一行目の二列目の 10 という数値がBHカーブのデータの総数を示しています.
これに対し,EMYフォーマットでは,
source:
  curve:
    1 # データ数は無し
    0.0 0.0
    100 0.1
    ...
    10000 1.5
という具合に,BHカーブのデータの総数が設定項目となりません.
EMSolutionのinputファイルの設定項目の数値を,そのままEMYフォーマットのファイルに
コピー&ペーストする際には注意して下さい.