お知らせ
OpenFOAMによる熱流体シミュレーション入門講習会を富山にて開催いたします。
詳細は,こちらをご覧ください。
OpenFOAM に関する情報を,研究室メンバーから報告します。
オープンCAE勉強会 @富山 OpenFOAM関連講習のまとめ
OpenFOAMカスタマイズの始め方

<< OpenFOAM 入門・初心者向け講習 >>

はじめてのOpenFOAM OpenFOAM入門講習会 (講師:富山県立大 中川),第13回 オープンCAE勉強会@富山 2014/01/25
20140125はじめてのOpenFOAM_part1_公開.pdf
20140125はじめてのOpenFOAM_part2_公開.pdf
20140125はじめてのOpenFOAM_part3_公開.pdf

はじめてのOpenFOAM(講師:中山勝之),第53回 オープンCAE勉強会@富山 2017/04/22
はじめてのOpenFOAM(その2)(講師:富山県立大 中川),第54回 オープンCAE勉強会@富山 2017/05/20


<< OpenFOAM でのプリ処理・メッシュ生成 >>


snappyHexMeshを使ったメッシュ作成(講師:富山県立大 中川),第8回 オープンCAE勉強会@富山 2013/03/23
20130323snappyHexMesh超入門_実習.pdf
例題ケース  OF220_case.zip

OpenFOAMのためのメッシュ生成入門 (講師:富山県立大 中川),  第11回 オープンCAE勉強会@富山 2013/06/08
20130608メッシュ生成超入門_実習_修正版.pdf
blockMeshCases.zip
snappyHexMeshCases.zip

OpenFOAMメッシュ生成入門(ユーティリティの使い方) (講師:富山県立大 中川),第13回 オープンCAE勉強会@富山 2013/08/31
201308OpenCAE_lecture改訂版.pdf
OpenFOAMによるメッシュ操作入門(講師:富山県立大 中川),第21回 オープンCAE勉強会@富山 2014/05/10
20140510メッシュ生成入門_実習_公開.pdf
Training-Mesh-OpenFOAM-basic.zip

cfMeshによるメッシュ作成入門(講師:秋山善克 氏),第24回 オープンCAE勉強会@富山 2014/08/23
cfMeshによるメッシュ作成.pdf

cfMeshによるメッシュ作成入門(講師:秋山善克 氏),第35回 オープンCAE勉強会@富山 2015/08/22
cfMeshによるメッシュ作成_公開版.pdf


 OpenFOAMでのメッシュ生成入門(講師:富山県立大 中川),第55回 オープンCAE勉強会@富山 2017/06/17
<< OpenFOAM の ソースコード / プログラミング / カスタマイズ >>

OpenFOAMソースコードの眺め方:はじめの一歩 (講師:富山県立大 中川),第11回 オープンCAE勉強会@富山 2013/06/08
OpenFOAMソースコード解読へ向けてpt1_v1.pdf

OpenFOAM(R)ソースコード入門pt1 熱伝導方程式の解法から有限体積法の実装について考える(講師:富山県立大 中川) ,第16回 オープンCAE勉強会@富山 2013/11/17
20131117laplacianFoam解読講習_後編.pdf
netBeans設定方法v0.pdf

OpenFOAMのカスタマイズ・ソースコード改造 超入門(講師:富山県立大 中川),第19回 オープンCAE勉強会@富山 2014/03/23
OpenFOAMカスタマイズ超入門.pdf   OpenFOAMカスタマイズ超入門 講習テキスト
変更箇所説明.pdf   ソースコードとチュートリアル修正箇所説明

OpenFOAMのカスタマイズ・ソースコード改造入門(interFoamへの温度場計算追加)(講師:富山県立大 中川),第25回 オープンCAE勉強会@富山 2014/09/27
20140927LectureText.pdf 講習テキスト
変更箇所を明記したソースコードは オープンCAE勉強会@富山 ページのファイルキャビネットに保管
変更済みソースコードなどは,下記から取得可能
https://github.com/snaka-dev/Training_OF_customize_thermal-interFoam/releases

OpenFOAMのソースコードとコンパイルの基礎(laplacianFoamを中心に)(講師:富山県立大 中川),第28回 オープンCAE勉強会@富山 2014/12/13
20141213OpenFOAM_compile_basic_r0.pdf

OpenFOAMカスタマイズ超入門:ソースコードの構造を見る(講師:富山県立大 中川),第33回 オープンCAE勉強会@富山 2015/06/13
20150613OpenFOAMソースコード構造基礎講習_v1.pdf

OpenFOAMを理解するための第1歩(講師:富山県立大 中川),第43回 オープンCAE勉強会@富山 2016/05/28

OpenFOAMソースコード入門 pt.1 熱伝導方程式の解法から有限体積法の実装について考える(講師:富山県立大 中川),第45回 オープンCAE勉強会@富山 2016/07/23
前編:有限体積法の基礎確認
     20160723laplacianFoam解読講習_前編.pdf
後編:laplacianFoamでの実装
     20160723laplacianFoam解読講習_後編.pdf

OpenFOAMカスタマイズの始め方(講師:富山県立大 中川),第81回 オープンCAE勉強会@富山 https://opencae-toyama.connpass.com/event/186007/

OpenFOAM関連情報:公開

OpenFOAM関連情報:公開

Salome で STL の解像度を変更する方法を検討中

OpenFOAMのsnappyHexMeshでメッシュ生成することがあります。
その時に使うSTLファイルを,Salomeで作ることがあります。
Salome からExportしたSTLの解像度が粗いので,改善する方法を探しています。
とりあえず,1つの方法がありました。メモします。
邪道かもしれません。正式な方法をご存じの方がいらっしゃいましたら,お知らせ頂けるとありがたいです。

SALOME で,File - Preferences を選択する。
表示されるPreferencesウィンドウで,左からGeometry を選択する。
Setting中のDeflection coefficient の値を変える。

Deflection coefficient を小さくすると,STLの構成する面の要素も小さくなる。


変更例(半径0.01の円柱を作成し,底面を見たところ)
Deflection coefficient = 0.001 (Default値)


Deflection coefficient = 0.0001


Deflection coefficient = 0.00001


このように変化します。
とりあえず,曲面の粗さがすこし改善できます。
なお,上記の図は,SalomeからSTL形式でエキスポートしたものを,Paraviewで開いて表示したものです。

salomeのユーザーガイドによりますと,
Deflection coefficient - allows to define default deflection coefficient for lines and surfaces. A smaller coefficient provides better quality of a shape in the viewer.
ということです。
http://docs.salome-platform.org/salome_7_3_0/gui/GEOM/geometry_preferences_page.html
0

run-time selectionについて

OpenFOAMer(コード解読修行中)と,いろいろと話をしました。

コードリーディングで苦戦している理由の1つが,様々な物理モデルの使い分けを容易にしてくれている仕組み「runTime Selection」だと感じました。前から気付いてはいたのですが。

ソルバを利用する時には,とても便利な機能です。しかし,ソルバーのコードを読んでいるときには,使いたい物理モデルにたどり着かないといった事態を引き起こします。

run-time セレクションについては,OpenFOAMの特徴欄にも記載があります。
http://www.openfoam.org/features/extending-libraries.php
Run-time selection
At run-time, OpenFOAM automatically creates lists of names of models and methods defined in libraries, from which the user can make a selection. For example, when a turbulence model library is used, a list of turbulence models is constructed at run-time, from which the user choose a model within one of the case input files. When a library is extended or a new one added, the new models/methods are automatically picked up by the run-time selection mechanism, so are available to the user.

日本語でも説明しているサイトがありました。
http://www.idaj.co.jp/sp_iconcfd/02/02.html
ランタイムセレクション
OpenFOAMは、アプリケーションレイヤーのコードを書きやすくするため、また多くの物理モデルなどを簡単に実装するため、Strategy デザインパターンライクな実装を行っています。これをランタイムセレクションと呼びます。
以下にRANS系非圧縮乱流モデルのクラス図を示します。乱流モデルは多種多様にあり、それに合わせてアプリケーションレイヤーのコードを書き換えるのは効率的ではありません。
Strategyパターンを使って乱流モデルを実装し、アプリケーションレイヤーのコードが乱流モデルを利用するときに変わったとしても、コードを変更する必要がない設計になっています。
うまく説明されています。が,超初心者に対しては,さらなく混乱を招くかもしれません。


この仕組みについては,OpenFOAM Wikiに詳しい解説ページがあります。ただし,このページは,この仕組みをカスタムクラスに実装したい人向けでしょう。コードを読んでいるときに感じる理解しにくさには,触れていないと感じます。
http://openfoamwiki.net/index.php/OpenFOAM_guide/runTimeSelection_mechanism


勉強会@富山で開催した「OpenFOAM(R)ソースコード入門pt1 熱伝導方程式の解法から有限体積法の実装について考える」の後編資料では,こっそりと説明したつもりです。ddtSchemes からEulerDdtScheme.Cにつながる部分です。混乱を避けるために,あっさりとしか説明していません。

コードを読む(だけ)の立場から説明する資料を作りたい。あるいは,勉強中に学生さんに作って欲しい,です。
これについては,デバッガを使って,実行状態を追いかける方が,てっとりばやいとも思います。

ということで,netBeans を使ってデバッグする方法の解説書類を作成中です。近日中に公開することを目指します。
0

OpenFOAMのpos(),neg()関数と,その組み合わせによる式の切り替え

OpenFOAM のコード解読中のメンバーから,pos() と neg() 関数について質問がありました。メモしておきます。

両関数は, src/OpenFOAM/primitives/Scalar/Scalar.H で定義されています。

https://github.com/OpenFOAM/OpenFOAM-2.3.x/blob/master/src/OpenFOAM/primitives/Scalar/Scalar.H

inline Scalar pos(const Scalar s)
{
    return(s>=0)?1:0;
}

inline Scalar neg(const Scalar s)
{
    return(s<0)?1:0;
}

プログラマーズガイド の1.4.1 Algebraic tensor operations in OpenFOAM にも説明が記載されています。

pos関数では,引数となるスカラー値が0以上であれば1が戻り,そうでなければ0が戻ります。つまり, s>=0 なら pos(s) =1,s<0 なら pos(s) =0 です。

同様に,neg関数では,引数となるスカラー値が0より小さければ1が戻り,そうでなければ0が戻ります。つまり, s<0 なら neg(s) =1,s>=0 なら neg(s) =0 です。

この両者を組み合わせて,スカラー値 s の値によって式を切り替えるような使い方がされています。

例えば,
    A = pos( s - 0.5 ) * functionPos  + neg( s - 0.5 ) * functionNeg
のようなものです。
この場合,s>=0.5 であれば,第1項の A = functionPos となります。
s<0.5 では,A = functionNeg です。
0

blockMeshDict の様子を可視化できる GUI

pyFoam の機能の一つに、blockMeshDict の内容を可視化できる GUI を表示するものがあります。 pyFoamDisplayBlockMesh.py です。pyFoamをインストールすると入っています。ただし、python-vtkパッケージを入れておかないと、動かないかも。

表示の一例です。複雑なblockMeshDictの構造が理解しやすくなります。基本的には、表示するだけで、直接編集することはできません。


5月10日開催 オープンCAE勉強会@富山 のミニ講習会でも,紹介します。
講習会用仮想マシンにはpyFoamをインストール済みです。
0

blockMesh にスムージングを追加した拡張版

OpenFOAM の最も基本的なメッシュ生成ユーティリティ blockMesh を拡張し,スムージング機能を追加したモノが公開されています。

Extend blockMesh with smoothing capability
http://www.etudes-ng.net/notre-savoir-faire/applications/mesh-smoothing
http://www.cfd-online.com/Forums/openfoam-meshing/132628-extend-blockmesh-smoothing-capability.html

OpenFOAM 2.3.x にインストールして,試して見ました。
インストールは,上記サイトに記載の方法で,ほぼOKです。

下に,拡張版と標準版で作成したメッシュの画像を添付します。
確かに,スムーズになっています。

5月10日開催 オープンCAE勉強会@富山 のミニ講習会でも,紹介します。

extBlockMesh でメッシュを作成しました。


同じ設定で,blockMeshだとこうなります。
0