OpenFOAM Tips

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

アプリケーション開発

deltaTを取得する

mainのスコープ内ではrunTime.deltaTValue()でステップ時間(値のみの無次元)を取得できる[1]

runTime.deltaTValue()はNo hits.query=setDeltaT.Hで指定されている。

現在時刻を取得する

現在時刻をスカラーで取得する[2]:

//read from runTime
scalar t=runTime.value();

//read from a field ,for example U
scalar t=U.mesh().time().value() ;

//read from mesh
scalar t=mesh.time().value(); 

forAll

Field上のイテレーションを行なうときに使われるforAllは次のようなマクロとなっている[3]

#define forAll(list, i) \
    for (Foam::label i=0; i<(list).size(); i++)

この定義はsrc/OpenFOAM/containers/Lists/UList/UList.Hの下端にある。

コーディング規約

を参照のこと。

ソースコードのファイル名(*.C,*.H,*I.H,*Templates.C)

ソースコードの末尾・拡張子には次のような意味がある[4]:

*.H
ヘッダの定義
*I.H
インライン関数の実装
*Template.C
テンプレートを使う関数の実装
*.C
その他全ての実装

*Template.Cと*.Cをそれぞれに切り分けているのは、コンパイル時の最適化のためと考えられる。詳しくはwyldckat氏の投稿[4]を参照。 gccのドキュメント[5]のCfront modelに"template repository"という表現が出てくる。

Post-Processing

Lagrangian FieldsをparaFoamで表示する

ソルバ実行後、

foamToVTK

VTKディレクトリ以下にVTKファイルが生成される。 その後、

paraFoam

でParaViewを実行し、OpenでVTK/lagrangian以下のVTKを読み込む。読み込んだフィルタをGlyphし、Gryph TypeをSphereなどにすれば、それらしくLagrangian Fieldsを表示することができる。

paraFoam(ParaView)

paraFoamで時間を表示する

  • Filters menu -> Alphabetical -> Annotate Time [6]

paraFoamで距離を測る

メニューバーのSources->Rulerをクリックし、Ruler1というフィルタが出るので、Applyを押す。その状態で、マウスを測りたい線分の始点に合わせてpキーを押し、次に終点で同じくpキーを押すと距離が表示される[7]

References

  1. How to get the value of deltaT in OpenFOAM? -- CFD Online Discussion Forums
  2. how to get current time as scalar? -- CFD Online Discussion Forums http://www.cfd-online.com/Forums/openfoam-solving/64399-how-get-current-time-scalar.html
  3. ForAll(List, i) -- CFD Online Discussion Forums http://www.cfd-online.com/Forums/openfoam-programming-development/117393-forall-list-i.html
  4. 4.0 4.1 NoRepository -- CFD Online Discussion Forums http://www.cfd-online.com/Forums/openfoam-programming-development/90676-norepository.html
  5. Template Instantiation - Using the GNU Compiler Collection (GCC) http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
  6. Time Display in Paraview -- CFD Online Discussion Forums http://www.cfd-online.com/Forums/openfoam-paraview/79457-time-display-paraview.html
  7. Measuring distance in Paraview -- CFD Online Discussion Forums http://www.cfd-online.com/Forums/openfoam-paraview/64900-measuring-distance-paraview.html#post219003