このエントリーはオープンCAE Advent Calendar 2020 の4日目です。
Online Elmer/Ice Course - November 2020のShort description of sif fileを機械翻訳にかけました。
SIFファイルの基本構成
- 基本的な考え方:Section+Keywords
- 各セクションはSectionNameで始まり、"End"で終わります。
- 1つのキーワードの代替SectionName ::Keywords
- 各セクションでは、任意の数のキーワードを持つことができます。
- キーワードは次のタイプ
- Real: 実数で評価された数
- Integer: 整数
- Logical:真か偽か
- String:大文字小文字を区別しないテキスト
- File:大文字小文字を区別するテキスト
- セクションは
- Header
- Constants(定数)
- Simulation
- Solver i
- Body i
- Equation(方程式) i
- Body Force i
- Material(材料) i
- Initial Condition(初期条件) i
- Boundary Condition(境界条件) i
- Run Control(実行制御)
- Component(構成要素) i
- すべてのセクションが必要なわけではありません
最小限のsifファイルの例
! Minimal sif file example Check Keywords "Warn"
Header :: Mesh DB "." "square"
Simulation
Max Output Level = 5
Coordinate System = Cartesian
Simulation Type = Steady
Output Intervals(1) = 1
Steady State Max Iterations = 1
Post File = "case.vtu"
End
Body 1
Equation = 1
Material = 1
End
Equation 1
Active Solvers(1) = 1
End
Solver 1
Equation = "ModelPDE"
Variable = "Field"
Procedure = "ModelPDE" "AdvDiffSolver"
Linear System Solver = Direct
End
Material 1
diffusion coefficient = 1.0
End
Boundary Condition 1
Name = ”Fixed”
Target Boundaries(1) = 1
Field = 0.0
End
Boundary Condition 2
Name = ”Flux”
Target Boundaries(1) = 2
Field Flux = 1.0
End
SIFファイルの詳細
- コメントは**!**で始まる。
- 出力できない文字を避ける
- タブではなくスペースでインデント
- SOLVER.KEYWORDSデータベースで定義されている多くのキーワード
- その他の場合はキーワードタイプを指定しなければなりません
- キーワード(n,m)はn×mの配列を示します
- 整数と実数に適用可能
- 正しい単位はユーザーの責任
- セクションの順番は主に任意
- ヘッダーを除く
- インデックスのあるセクションでは、1から始まる連続した番号を使用します。-SIFファイル内の他のファイルを読み込むためにinclude文を使用できます。
- include material.sif
-
MATCによるスクリプト
- プリプロセッサ:$dens=1.013 一回評価
- ランタイム:MATC"..." 毎回評価
-
LUAによるスクリプト
- プリプロセッサ:#dens=1.013 一回評価
- ランタイム:LUA"..." 毎回評価
実数値のキーワード関数
1) 表を使用して、変数の部分的な線形(または3次)依存関係を定義するために使用できます。
Density = Variable Temperature
Real cubic
0 900 ! 内側の範囲:補間
273 1000
300 1020
400 1000 ! 外側の範囲:外挿
End
2) MATC: 数式の数値評価のためのライブラリ
Density = Variable Temperature
MATC "1000*(1 - 1.0e-4*(tx(0)-273.0))"
または定数式として
3) LUA:MATCよりも高速な外部ライブラリ
Density = Variable Temperature
LUA "1000*(1 - 1.0e-4*(tx[0]-273.0))"
4) ユーザー定義関数
Density = Variable Temperature
Procedure “mymodule" “myproc”
F90ユーザー関数の例
ファイルmymodule.F90:
FUNCTION myproc( Model, n, T ) RESULT(dens)
USE DefUtils
IMPLICIT None
TYPE(Model_t) :: Model
INTEGER :: n
REAL(KIND=dp) :: T, dens
dens = 1000*(1-1.0d-4 *(T-273.0_dp))
END FUNCTION myproc
コンパイルスクリプトはインストール時に付属しています: elmerf90
Linux
$ elmerf90 mymodule.F90 –o mymodule.so
Windows
$ elmerf90 mymodule.F90 –o mymodule.dll
キーワードベクトルとテンソル
- 実数値のキーワードは、ベクトルまたはテンソルである可能性があります。
- キーワードの値が整数の場合はベクトルになります。
Heat Conductivity(3,3) = 1.0 0.0 0.0 \
0.0 1.0 0.0 \
0.0 0.0 100.0
Gravity(4) = 0.0 0.0 -1.0 9.81
Target Nodes(4) = Integer 1 3 7 12
Sif file: Header
Header
Check keywords “warn”
Mesh DB “.” “mymesh”
Include Path “mylib"
Results Directory “results“
End
- ヘッダーセクションは、「キーワード=値」構文に準拠していません!
- キーワードデータベースの前に読み込む
- キーワードをチェックするときの注意点
- 警告、中断、エコー
- オプションで、インクルードと結果ディレクトリを定義できます。
- デフォルトで使用されている作業ディレクトリ
Sif file: Simulation
Simulation
Max Output Level = 5
Coordinate System = Cartesian
Simulation Type = Transient ! Steady
Timestep Intervals = 100
Timestep Sizes = 0.1
Timestepping Method = implicit euler
Output Intervals(1) = 1
Steady State Max Iterations = 1
Post File = "case.vtu"
End
-
座標系の種類
-
定常または過渡
-
過渡の場合:時間ステップ・パラメーター
-
出力ファイル(実行を再開するための)とVTUファイル
-
出力レベル : コードがどの程度冗長か?
-
再起動情報(オプション)
Sif file: Constants(定数)
Constants
Gas Constant = Real 8.314
Stefan Boltzmann = Real 6.78e-08
End
-
自然定数など
- ソルバーモジュールで必要に応じて
Sif file: Body
Body i
Name = “MyBody”
Target Bodies(1) = 1
Equation = 1
Body Force = 2
Initial Condition = 2
Material = 4
End
- ボディには、方程式、体積力、材料、初期条件が割り当てられています。
Sif file: Equation(方程式)
Equation i
Name = “MySolvers”
Active Solvers(2) = 1 2
Convection = “computed”
End
- ボディのアクティブなソルバーを一覧表示します。
- ソルバー固有のキーワードもあります。
Sif file: Solver
Solver i
Equation = “HeatSolver”
Exec Solver = “always”
Variable = Temperature
Procedure = "HeatSolve" "HeatSolver"
Stabilize = True
Steady State Convergence Tolerance = 1.0e-5
Nonlinear System Max Iterations = 1
Linear System Solver = Iterative
Linear System Iterative Method = BiCGstab
Linear System Max Iterations = 1000
Linear System Convergence Tolerance = 1.0e-8
Linear System Preconditioning = ILU1
End
- これら方程式の数値処理を指定します(方法、収束の基準など)。
- 解決する変数名
- 要素の定義
- 安定化対策
- 非線形システム対策
- 線形システム対策
- ライブラリとソルバーモジュールの両方で扱うキーワード
Sif file: Material(材料)
Material i
Name = “MyMaterial”
Density = 1.0e3
Heat Conductivity = 10.0
Heat Capacity = 4.19e3
Viscosity Model = “power law”
Viscosity = 1.0
Viscosity Exponent = $1.0/3.0
Critical Shear Rate = 1.0e-10
End
- ボディの材料特性を設定します
- ほとんどの実数値キーワードは、従属関数にできます。
- omeはスカラーやテンソルにもなります。
Sif file: Initial Condition(初期条件)
Initial Condition i
Name = “MyGuess”
Temperature = 293.0
Velocity 1 = 1.0e-3
End
- 初期条件は初期値を設定します
- 時間依存システムに必須
- 定常状態の問題については、イテレーションに影響を与える可能性のある最初の推測を提供します。
Sif file: Body Force
Body Force i
Name = “MySource”
Heat Source = 1.0
Flow Bodyforce 2 = -1.0
Current Density = 1.23
Varname Load = Real …
End
- 通常、解かれる偏微分方程式の右辺の元項を指定します。
- 行列方程式に直接関連する離散荷重が与えてもよい。
Sif file: Boundary Condition(境界条件)
Boundary Condition i
Name = “Inlet”
Target Boundaries(2) = 1 2
Temperature = 293.0
Velocity 1 = Variable “Coordinate 2”
Real MATC “4*tx*(1-tx)”
Body Id = 4
Periodic BC = 5
End
- 異なるタイプの境界条件
- Dirichlet:Variablename=Value(ライブラリルーチン)
- Neumann:ソルバーに応じた特別なキーワード
- 境界線には、方程式、材料、体積力などの関連付けができるように、ボディIDを指定できます。
- 境界は、周期的、モルタル境界、接触境界などであってもよい。
Sif file: Run Control(実行制御)
Run Control
Run Control Iterations = Integer 100
Parameter Count = Integer 4
Optimization Method = String "simplex"
Cost Function = Variable Time
Real Procedure "CostFunction" "CostFunction"
End
- 2020年以降の新しいセクション
- 過渡的なケースでもパラメトリックループと内部最適化を提供します。
- 使用する場合、このセクションは最初のセクションである必要があります
Sif file: Component
Component i
Name = string "gap_down"
Master Bodies(1) = integer 5
Calculate Magnetic Force = True
End
- めったに使用されない新しいセクション
- モデルの一括処理などに使用するボディや境界の集合体を定義できます。
- 現在の主な用途は電磁気学
sifファイルについてのいくつかの注意事項
- sifファイルの構造は、ElmerSolverコードのModel_t型とほぼ一対一の対応関係があります。
- 各キーワードはリスト構造のエントリです。例えば、
R = ListGetConstReal( Model % Constants,”Gas Constant”)
- 各キーワードはリスト構造のエントリです。例えば、
- 多くのタスクのために、別のソルバー、別名モジュールが存在する
- 新しい追加ソルバーを追加することを恐れないでください
- Elmerモジュール + Elmer/Iceソルバー
- 作品をコピーペーストすることは、多くの場合、開始するのに良い方法です
- elmerfem/fem/testとelmerice/Testsの下に多数の整合性テストがあります。
- Elmer
ModelsマニュアルとElmerSolverマニュアルにはキーワードインデックスがあります。 - ドキュメントは決して完全ではありません - 聞いてください!