OpenFOAM初心者講習検討メモ
2025年11月15日(土)開催予定のオープンCAE勉強会@富山で,OpenFOAM初心者向け講習会【(仮題) OpenFOAMを使い始めた学生のための講習会:OpenFOAMの設定ファイル(dictionary)の書き方とParaViewの基本設定など】の実施を計画している。
そこで伝える内容をメモする。
OpenFOAM設定ファイルDictについて
damBreak例題でDict操作の練習
構成
./
├── 0.orig
│ ├── alpha.water
│ ├── p_rgh
│ └── U
├── Allclean
├── Allrun
├── constant
│ ├── g
│ ├── transportProperties
│ └── turbulenceProperties
├── system
├── blockMeshDict
├── controlDict
├── decomposeParDict
├── fvSchemes
├── fvSolution
├── sampling
└── setFieldsDict
設定ファイルと主な項目
設定ファイルと主な項目は次のようなものである。
- blockMeshDict
- 計算領域位置,サイズ
- メッシュ分割数
- setFieldsDict
- 初期配置領域
- 初期値
- g
- 重力(計算領域の姿勢)
- 各種変数
- 初期値
- 境界条件
- transportProperties
- 流体の種類・物性値
- その他
これらは,独立している場合だけでなく,相互に関係していることが多い。例えば,計算領域・モデルの大きさを変更したとき,初期配置領域なども変更することがある。
このような場合に,1つのファイルを変更したのに,別のファイルの変更を忘れることがある。あるいは,意図しない不整合な条件設定となることがある。
このようなリスクを避けるために,複数のファイルに記載する情報を1つのファイルにまとめることを考える。1つにまとめたファイルに条件を記入し,他のファイルはこの情報を読み取り,インクルードすることを目指す。
どうやって
#include指示を使ってファイルを読み込む。
一般的な設定は,#includeEtcが使えるか?
一般的な名前を付けた境界条件
参考になる情報
いろいろなDictのサンプル
たとえば,blockMeshDict
作業
手順
- blockMeshDictに変数を使う。
- blockMeshを実行してメッシュを確認する。
- 変数部分を別のファイルに移動する。
- blockMeshを実行してメッシュを確認する。
- setFieldsDictに変数を使う。
- setFieldsを実行して動作を確認する。
- 変数部分を,先ほどの別ファイルに移動する。
- setFieldsを実行して動作を確認する。
- blockMeshDictとsetFiledsDictで共通する部分,演算で決める部分を考える。
- 変数を統一したり,変数の内容を演算で求める。
- blockMeshとsetFieldsを実行して確認する。
- 初期値や境界条件も,統一ファイルから指示できないかを考える。
- などなど
オプション
- blockMeshのboundary設定で,新しめのfaces指示方法を使う。ブロック番号と面番号で。
- 1カ所直して,実行して確認する。
- 理解が進んだら,一気に変更して,実行して確認する。
- 共通する境界条件(leftWall, rightWall, lowerWall)を一括で指示するように書き換えてみる。正規表現を使ってみる。
- defaultFaces境界を,
#includeEtc "caseDicts/setConstraintTypes"を使う方法に変更してみる。- blockMeshDictで2次元計算境界部分をemptyという名前にする(typeもemptyにする)
- setFieldsを実行するとエラーが出るはず
- 各Field変数ファイルに
#includeEtc行を追加する。 - エラーがなくなるか?
ParaViewの基本
狙い
初心者向け.
対象者:ゼミや卒業研究でOpenFOAMを使用し始めた大学3・4年生。言われるがままにParaViewを操作したことはあるが,意味はよくわかっていない人。
達成目標:
- OpenFOAMのメッシュを正しく表示できる
- セル表示とポイント表示の違いに気づく
- 速度ベクトルをセル重心から表示できる
- 可視化画像に時刻を表示し,その表示桁数をコントロールできる
- 可視化しているケース・位置・条件などを,わかりやすく表示できる
- 複数のレンダービューを使って,複数の変数を同時に可視化できる
- 複数のレンダービューを使って,条件の異なる計算結果を比較できる
- 計算領域と,その一部の可視化画像などを組み合わせて,わかりやすく表示できる
- 等値線図(Contour)とベクトル図などを組み合わせて表示できる
- 可視化画像と,その一部から作成したグラフをわかりやすく表示できる
- バージョンの使い分け?公式バイナリ版の使い方?
環境
ParaViewのバージョンは?
- 5.11 (やや古いが,使っている人多いかも。Ubuntuパッケージインストール)
- 6 (最新。違いは?)
- セルがきれいに表示される。
- Windows or Linux
- Win: MP4形式で動画が保存できる
- Win: ファイル名に":"が使えないので,OpenFOAMの結果を扱えないことがマレにある
- 5.12
- 5.13
- 5.10以前は無視したい。
OSは?
- 基本はLinux (Debian 12)
- Windowsでも確認
内容
メッシュの表示
decomposeのチェックを外す,など。
断面表示では,Crinckle表示でないと,余分な線が表示されることがある。
ParaView 6では,標準状態できれいに表示されるようだ。
セル表示とポイント表示
表示方法(あるいは,内部でのデータの保持方法)については,ParaView公式ユーザーガイドの下記部分に説明があります。「セル表示」に対して,「ポイント表示」という表現ができます。ユーザーガイドをご確認ください。
annotation いろいろ
- Annotation sources
- Text source
- Annotate Time source
- Annotation filters
- Annotate Attribute Data filter
- Annotate Global Data filter
- Annotate Time Filter
- Environment Annotation filter
- Python Annotation filter
Annotate Time source と filter
sourceでは,時間をそのまま表示する。filterでは,そのまま表示だけでなく,shiftやscaleを使える。
“Time: {time:f}” という表記の意味:{}内部のtimeは,ParaView内部の現在の時刻の値に置き換えられる。:fは浮動小数点を6桁で表示することを指示している。このような表示方法・formatの指示方法については,Pythonのフォーマットライブラリ {fmt} に説明されている。
Python Annotation
ある点[22]での圧力の値を表示するExpression例
'Pressure: %f Pa' % (p[22].Arrays[0])
保存する画像のFontサイズ
保存時の詳細設定に,Font scalingという設定項目がある。デフォルトではScale fonts proportionallyとなっている。
使用するマシンのディスプレイ設定において,拡大/縮小が100%の場合には,この影響はなさそう。(ParaViewのViewーPreviewで設定したサイズがディスプレイサイズ以下で,スケールが適用されていない状態で確認した。)
ParaViewのViewーPreviewで設定したサイズがディスプレイサイズ以上で,アスペクト比を維持するようにスケールされた(画面表示が小さくなっている)場合
デフォルト設定では,フォントが画面よりも大きく感じられる。画面よりも大きな画像として書き出しており,フォントも大きく拡大されるためか。(そのスケールよりも大きな文字になっているように感じるが。)
Do not scale fontsを選択した場合,ParaViewの元の画面(Previewでないとき)のフォントサイズで書き出されているようだ。
詳細設定表示:Font scalingはScale fonts proportionallyとなっている。

Discussion