OpenFOAM関連情報:公開
Salome で STL の解像度を変更する方法を検討中
その時に使う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
run-time selectionについて
コードリーディングで苦戦している理由の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 を使ってデバッグする方法の解説書類を作成中です。近日中に公開することを目指します。
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
プログラマーズガイド の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 です。
blockMeshDict の様子を可視化できる GUI
表示の一例です。複雑なblockMeshDictの構造が理解しやすくなります。基本的には、表示するだけで、直接編集することはできません。
5月10日開催 オープンCAE勉強会@富山 のミニ講習会でも,紹介します。
講習会用仮想マシンにはpyFoamをインストール済みです。
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だとこうなります。
PyFoamのインストール
pyFoam インストール手順
事前準備
OpenFOAMは既にインストールされているとします。
OSは,Ubuntuだとします。
pythonのバージョン確認
pyFoamは,プログラミング言語python で書かれたツール集です。実行のためには,システムにpythonがインストールされていることが必要です。
一般的なLinuxシステムでは,すでにpythonがインストールされているでしょう。
PyFoamは,Python 2.3 以降のバージョンで動作が確認されているようです。バージョン2のなかで,より新しいバージョンを使う方がよいです。
ただし,Python 3 では動かないようです。 最新版のPythonは,バージョン3系です。バージョン2から3で,大きな変更がありました。そのため,バージョン2にしか対応していないものが,たくさん存在します。PyFoamも,その1つです。
下記コマンドを実行すると,インストールされているpythonのバージョンが表示されます。念のため,そのバージョンが,2.?.?であることを確認してください。(?にはそれぞれ数字が入ります。)
python --version
万が一,2.?.?でない場合は・・・
python関連ライブラリのインストール
PyFoam は,グラフィカルな表示やその他の仕組みに,ライブラリを利用しています。それらをインストールします。
ターミナルから,下記コマンドを実行してください。
sudo apt-get update
sudo apt-get install python-numpy python-gnuplot python-qt4 python-vtk python-dev gnuplot-x11
上記パッケージを使うために必要なモノを含めてインストールするか,確認されます。そのまま実行キーを押してください。インストールが始まります。
インストール作業
下記サイトを参考にして,インストール作業を行います。ここでは,通常ユーザーとしてインストール ”Installation as a regular user” することとします。
http://openfoamwiki.net/index.php/Contrib_PyFoam#Installation
PyFoamのダウンロード
下記サイトの12.2 Current version から,最新版をダウンロード。2014年3月4日現在は,0.6.2が最新版。(なお,subversionが使える方は,そちらから最新版を取得してもOKです。)”the tar file with the sources and documentation” というリンクをクリックすると,PyFoam-0.6.2.tar.gz のダウンロードが始まります。好きな場所に保存してください。ここでは,$HOME/Downloads に保存したとします。
http://openfoamwiki.net/index.php/Contrib_PyFoam#Downloads
PyFoamの展開
ダウンロードしたファイルは圧縮されています。これを展開します。下記コマンドを順に実行すると,ホームディレクトリにPyFoam-0.6.2というディレクトリが作成されます。ファイルブラウザからダブルクリックしても良いです。
cd
tar xvf ~/Downloads/PyFoam-0.6.2.tar.gz
PyFoamのインストール
PyFoamをインストールするディレクトリを作成します。ここでは,$HOME/OpenFOAM/PyFoamにインストールするとします。下記コマンドを実行します。
mkdir ~/OpenFOAM/PyFoam
PyFoamを展開したディレクトリに移動する。下記コマンドを実行する。
cd ~/PyFoam-0.6.2
PyFoamのインストールスクリプトsetup.pyを実行する。その際,インストール先を指定する。下記のコマンドを実行する。これによって,インストール先ディレクトリの下に,binとlibの2つのディレクトリが作成され,各種ファイルが格納されている。
python setup.py install --prefix=~/OpenFOAM/PyFoam
ライブラリへのパスを,PYTHONPATH として登録する。スクリプトへのパスも追加しておく。下記コマンドを実行して,テキストエディタを起動して.bashrcファイルを開く。
gedit ~/.bashrc
テキストエディタで,下記2行を.bashrcファイルの末尾に追記する。
export PYTHONPATH=~/OpenFOAM/PyFoam/lib/python2.7/site-packages/:$PYTHONPATH
export PATH=~/OpenFOAM/PyFoam/bin:$PATH
(注意)上記の lib/python2.7 部分は,pythonのバージョンによって異なります。$HOME/OpenFOAM/PyFoam/libの中にあるディレクトリ名を書いてください。
PyFoamのインストール確認
新しい端末を起動すれば,PyFoamが利用できる状態になっている。
下記コマンドが実行できることを確認する。インストールが成功していれば,OpenFOAMとPyFoamに関する情報が表示される。
pyFoamVersion.py
PyFoam 利用例
PyFoamを使って残差を表示しながら計算実行
pyFoamPlotRunner.py 使う。いつものソルバ実行方法で,ソルバ名の前に pyFoamPlotRunner.py を付ければ良い。
例えば,シングルプロセッサーで,icoFoamを実行する場合には,下記となる。
pyFoamPlotRunner.py icoFoam
プロセッサを2つ使った並列計算で,icoFoamを実行する場合には,下記となる。
pyFoamPlotRunner.py --procnr=2 icoFoam
pyFoamPlotRunner.py の一般的な使用方法は下記となる。
pyFoamPlotRunner.py [options] [foamApplication] [foamOptions]
オプションや使い方については,--helpオプションを付けて実行することで,ヘルプを見ることができる。
pyFoamPlotRunner.py --help
その他の利用方法など
春日さんのサイトにいろいろと情報があります。
http://www.geocities.jp/penguinitis2002/study/OpenFOAM/PyFoam/PyFoam_memo.html
OpenFOAM学習者向け C++プログラミング基礎 - クラス、テンプレートクラス
例題が陳腐です。良いアイデアがあれば、ぜひ、教えて下さい。
#include <iostream>
int main()
{
int n;
std::cout << "整数を入力してください。" << std::endl;
std::cin >> n;
std::cout << "整数 " << n << " の2倍は " << n + n << " です。" << std::endl;
return 0;
}
#include <iostream>
// クラスの定義 スタート
class extendedInt
{
int n_;
public:
int makeDouble(const int& n)
{
return n + n ;
};
};
// クラスの定義 ここまで
int main()
{
int n;
extendedInt extInt;
std::cout << "整数を入力してください。" << std::endl;
std::cin >> n;
std::cout << "整数 " << n << " の2倍は " << extInt.makeDouble(n) << " です。" << std::endl;
return 0;
}
// 整数専用クラス
// 実数専用クラス
先ほどの2つのクラスで,int または float だったところを,Type と名前をつけたテンプレートクラスで宣言します。クラスの定義内で,Type となっている部分は,mainから呼び出す際に定めたクラスとなります。
OpenFOAM の演算子 == について
演算子 == についてです。興味深い内容です。回答を共有します。間違いなどがあれば,ご指摘をお願いします。
(質問の要旨 ここから)--
laplacianFoam.C では,
solve
(
fvm::ddt(T) - fvm::laplacian(DT, T)
);
と表記してありますが、
solve
(
fvm::ddt(T) == fvm::laplacian(DT, T)
);
としても良いのですか?
OpenFOAMでの ”==” の意味がよくわかりません。
--(質問の要旨 ここまで)
(回答)
上記2つの表記は,どちらでも良いです。同じ意味になります。
これには,演算子”==”のオーバーロードが関係しています。
ソースコードを見ながら確認します。
演算子は,どのクラスに対しての演算子なのか,に注意して調べる必要があります。
今の質問では,fvm::ddt(T) と fvm::laplacian(DT, T) との演算です。両者のクラスは何になるでしょう?
fvmLaplacian.Cを見ます。fvm::laplacian(DT, T) からの戻り値は tmp<fvMatrix<Type> > 型となります。 ここでのTypeは,laplacianメソッドに渡した T と同じになります。
238 template<class Type, class GType>
239 tmp<fvMatrix<Type> >
240 laplacian
241 (
242 const GeometricField<GType, fvPatchField, volMesh>& gamma,
243 const GeometricField<Type, fvPatchField, volMesh>& vf
244 )
ということは, fvm::ddt(T) == fvm::laplacian(DT, T) では,tmp<fvMatrix<Type> >に対しての演算子”==”を確認する必要があります。
fvMatrix.H にGlobal operators としてoperator== が記載されています。
615 template<class Type>
616 tmp<fvMatrix<Type> > operator==
617 (
618 const tmp<fvMatrix<Type> >&,
619 const tmp<fvMatrix<Type> >&
620 );
fvMatrix.C に定義があります。演算子“==”の左側にあるtmp<fvMatrix<Type> > をtAという名前で,右側にあるtmp<fvMatrix<Type> >をtBという名前で受取ります。演算の結果としては,return の後にあるもの(tA - tB)が返されます。つまり,左辺ー右辺の行列(tmp<fvMatrix<Type> > 型)を戻すことになります。
1495 template<class Type>
1496 Foam::tmp<Foam::fvMatrix<Type> > Foam::operator==
1497 (
1498 const tmp<fvMatrix<Type> >& tA,
1499 const tmp<fvMatrix<Type> >& tB
1500 )
1501 {
1502 checkMethod(tA(), tB(), "==");
1503 return (tA - tB);
1504 }
なお,ここで使った演算子” - ”自体も,fvMatrixクラス用にオーバーロードしたものが使われています。オリジナルのコードで使われているのと同じです。こちらは直感的にわかるので,疑問に感じないかもしれませんが。
勉強会で,2つの表記方法のソルバを作成して,同じであることを確かめる演習でも実施しようかな。
(参考)
オペレータ(演算子)のオーバーロードについて。
http://homepage2.nifty.com/well/Operator.html
http://www.geocities.jp/ky_webid/cpp/language/017.html
http://www.geocities.jp/penguinitis2002/study/OpenFOAM/OpenFOAM-cpp_primer.html
OpenFOAM 2.2 での 熱関連ソルバーの変更
http://www.openfoam.org/version2.2.0/thermophysical.php
”In v2.2.0, there has been significant redesign of thermophysical modelling, to enable more flexible handling of multiple materials, e.g. in multiphase flows, and conjugate heat transfer. ”
混相流での熱の取扱が柔軟にできるらしい。それによって,混相流を取り扱う下記ソルバで,熱の計算も可能となった。(compressibleTwoPhaseEulerFoamは,2.1でも温度が入っていた。)
http://www.openfoam.org/version2.2.0/thermophysical.php
compressibleTwoPhaseEulerFoam
includes updated thermodynamics to use the run-time selectable form of the total energy equation for each phase, so that is possible to select different energy forms (h or e) separately for the two phases (see below for details).
compressibleInterFoam
includes updated thermodynamics to use the run-time selectable form of thermodynamics, but solves for the mixture temperature equation, derived from the internal energy equation, in order to maintain boundedness and realisablility.
大きく変更されたのは,”Run-time Selectable Energy Solution Variable”となったこと。これまでは,ソルバーによって,エンタルピー h を解くのか,内部エネルギー e を解くのかが決まっていた。2.2.0 からは,実行時にどちらを解くのかが選択可能となっている。
ソースコード内部では,he という変数が使われている。これは,"h or e" という意味で名付けられたらしい。この変数名は,いまいちしっくりこない。
実行時には,constant/thermophysicalProperties ファイルで Thermophysical model を指定する。このモデルの詳細については,ユーザーガイドの 7.1 に解説がある。
http://www.openfoam.org/docs/user/thermophysical.php
ソースコード内では, h と e とは同じ式で表される。ソース項のみが異なる。そのため,条件演算子(conditional operator)を使って,どちらを使うかを切り替えている。
条件演算子は,<条件式> ? <真式> : <偽式> の形をとる。?と:の2つの記号をセットで使う,1つの演算子である。
http://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E6%BC%94%E7%AE%97%E5%AD%90
具体的に,$FOAM_SOLVERS/compressible/rhoPimpleFoam/EEqn.H のコードでは,EEqn の部分で,次の記述がある。
he.name() == "e"これは,he.name() が e ならば fvc::div(~) を,e でなければ,-dpdt (the pressure-work term) を使うことになる。
? fvc::div
(
fvc::absolute(phi/fvc::interpolate(rho), U),
p,
"div(phiv,p)"
)
: -dpdt
fvSchemesのdivSchemesでは,hと使うかeを使うかに応じて, div(phi,h) か div(phi,e) を定義しておく必要がある。buoyantPimpleFoam/hotRoom 例題では,両方書いてある。thermophysicalProperties を切り替えても問題がないための処置だろう。
OpenFOAM-1.6-extをLubuntu 12.04(仮想マシン) にインストール
今回は,VMWarePlayer用仮想マシン(メモリ1GB,HDD 20GB)に,OSとしてLubuntu12.10 32bitをインストールした.仮想マシンを軽くしたいので,Lubuntuを採用.
下記サイトの情報に従ってインストール作業を実施する。ほぼ指示通りだが,一部のファイル入手先を変更する必要がある.
http://openfoamwiki.net/index.php/Installation/Linux/OpenFOAM-1.6-ext/Ubuntu
上記サイトで,Ubuntu12.10に追加が必要とされるパッケージ
git flex bison rpm g++ zlib1g-dev binutils-dev openmpi-bin libopenmpi-dev paraview libscotch-dev cmake libstdc++5
OpenFOAM公式版で Ubuntu に追加が必要とされているパッケージ
build-essential flex bison cmake zlib1g-dev qt4-dev-tools libqt4-dev gnuplot libreadline-dev libncurses-dev libxt-dev
Lubuntuなので,追加が必要と思われるパッケージ
gcc make qt4-qmake
これらパッケージを,まとめてインストール
sudo apt-get install git flex bison rpm g++ zlib1g-dev binutils-dev openmpi-bin libopenmpi-dev paraview libscotch-dev cmake libstdc++5 build-essential qt4-dev-tools libqt4-dev gnuplot libreadline-dev libncurses-dev libxt-dev gcc make qt4-qmake
vmware-toolsのインストール
OpenFOAM-1.6-extの入手
git clone git://git.code.sf.net/p/openfoam-extend/OpenFOAM-1.6-ext openfoam-extend-OpenFOAM-1.6-ext
入手したコードをユーザディレクトリ下に配置
mkdir ~/OpenFOAM/
mv openfoam-extend-OpenFOAM-1.6-ext ~/OpenFOAM/OpenFOAM-1.6-ext
インストールディレクトリに移動
cd OpenFOAM-1.6-ext
preferencesファイルに設定を書き込む。etc/prefs.sh-EXAMPLEというファイルをコピーして,etc/prefs.shを作成し,必要な設定を書き換えていく。(sedコマンドを利用する。)
下記コマンドを順に実行する。(#の行はコメントなので,実行不要.)
cp etc/prefs.sh-EXAMPLE etc/prefs.sh
#Use the system compiler and configure to use Gcc 4.7
sed -i s/"compilerInstall=System"/"compilerInstall=System"/g etc/prefs.sh
echo "export WM_COMPILER=Gcc47" >> etc/prefs.sh
# Use the system installation of OpenMPI
sed -i s/"#export WM_MPLIB=SYSTEMOPENMPI"/"export WM_MPLIB=SYSTEMOPENMPI"/g etc/prefs.sh
sed -i s/"#export OPENMPI_DIR=path_to_system_installed_openmpi"/"export OPENMPI_DIR=\/usr"/g etc/prefs.sh
sed -i s/"^#export OPENMPI_BIN_DIR"/"export OPENMPI_BIN_DIR"/g etc/prefs.sh
# Use the system's ParaView
sed -i s/"#export PARAVIEW_SYSTEM=1"/"export PARAVIEW_SYSTEM=1"/g etc/prefs.sh
sed -i s/"#export PARAVIEW_DIR=path_to_system_installed_paraview"/"export PARAVIEW_DIR=\/usr"/g etc/prefs.sh
sed -i s/"^#export PARAVIEW_BIN_DIR"/"export PARAVIEW_BIN_DIR"/g etc/prefs.sh
# Use the system's Scotch
sed -i s/"#export SCOTCH_SYSTEM=1"/"export SCOTCH_SYSTEM=1"/g etc/prefs.sh
sed -i s/"#export SCOTCH_DIR=path_to_system_installed_scotch"/"export SCOTCH_DIR=\/usr"/g etc/prefs.sh
sed -i s/"^#export SCOTCH"/"export SCOTCH"/g etc/prefs.sh
sed -i 's-SCOTCH_DIR/include$-SCOTCH_DIR/include/scotch-g' etc/prefs.sh
# Use the system's CMake
sed -i s/"#export CMAKE_SYSTEM=1"/"export CMAKE_SYSTEM=1"/g etc/prefs.sh
sed -i s/"#export CMAKE_DIR=path_to_system_installed_cmake"/"export CMAKE_DIR=\/usr"/g etc/prefs.sh
sed -i s/"^#export CMAKE"/"export CMAKE"/g etc/prefs.shコンパイルに使うCPUコア数を指定する.仮想マシンのコア数を2にしていたので,2コアとした.
#here you can change 4 to the number of cores you've got
echo "export WM_NCOMPPROCS=2" >> etc/prefs.shparaFoamの設定を変更する.
#we'll need to switch to the internal reader for ParaView
sed -i -e 's=\.OpenFOAM=\.foam=' bin/paraFoam
sed -i -e 's/^unset/export LC_ALL=C; unset/' bin/paraFoam
gmakeコマンドが使われる場合があるので,makeのリンクとして作成する。
#Create a symbolic link for gmake
ln -s /usr/bin/make bin/gmake
tecioのための設定.
#disable X dependencies in tecio
sed -i -e 's=\(U_WIN32\)$=\1 -DENGINE=g' applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/tecioOptions
OSが32bitか64bitかを確かめるために,下記コマンドを実行する。
この結果が,i686 であれば 32bit,x86_64 であれば64bitとなる。
uname -m
32bit版なので,下記を順に実行する.
echo "export WM_ARCH_OPTION=32" >> etc/prefs.sh
#copy the rules from ''Gcc46'' to ''Gcc47''
cp -r wmake/rules/linuxGcc46 wmake/rules/linuxGcc47
# due to stricter name lookup rules in 4.7 we need to tell the compiler to lighten up on this
sed -i 's/^\(c++FLAGS.*\)/\1 -fpermissive/g' wmake/rules/linuxGcc47/c++
もし,64bit版の場合は下記となる.
#copy the rules from ''Gcc46'' to ''Gcc47''
cp -r wmake/rules/linux64Gcc46 wmake/rules/linux64Gcc47
# due to stricter name lookup rules in 4.7 we need to tell the compiler to lighten up on this
sed -i 's/^\(c++FLAGS.*\)/\1 -fpermissive/g' wmake/rules/linux64Gcc47/c++
bashrc設定ファイルを読み込んだ後,.bashrcに追記する.
source etc/bashrc
echo "source $HOME/OpenFOAM/OpenFOAM-1.6-ext/etc/bashrc" >> $HOME/.bashrc
ThridPartyに移動する.
cd ThirdParty
ParMGridGenのウェブサイトを変更
sed -i 's= http://www.mgnet.org/mgnet/Codes/parmgridgen=http://www-users.cs.umn.edu/~moulitsa/download=' rpmBuild/SPECS/ParMGridGen-1.0.spec AllMake.stage3
システムに追加したcmakeを使うため,cmakeのコンパイルをしない.
sed -i 's=^( rpm_make -p cmake=#( rpm_make -p cmake=' AllMake.stage1
ThirdPartyのコンパイルを実行.数分から30分程度は必要.メッセージはファイルに書き込む.
# This next command will take a while... somewhere between 5 to 30 minutes
./AllMake > log.AllMake 2>&1
もう一度,上記と同じものを実行する.これで,途中の細かいメッセージはなくなり,インストールの要約がファイルに書かれることになる.
#Run it a second time for getting a summary of the installation
./AllMake > log.AllMake 2>&1
log.AllMakeファイルの中身を確認する.
おそらく,libccmio のコンパイルに失敗している.対応方法は不明.設定ファイルを修正する必要がありそう.Star-CCMメッシュを扱わないときは,無視して良い?
ここから,OpenFOAM 1.6.ext本体のコンパイル作業に入る.
cd ~/OpenFOAM/OpenFOAM-1.6-ext
source etc/bashrc
OpenFOAM 1.6.ext本体のコンパイルを実行.30分から数時間程度は必要.メッセージはファイルに書き込む.
# This next command will take a while... somewhere between 30 minutes to 3-6 hours.
./Allwmake > make.log 2>&1
もう一度,上記と同じものを実行する.これで,途中の細かいメッセージはなくなり,インストールの要約がファイルに書かれることになる.
#Run it a second time for getting a summary of the installation
./Allwmake > make.log 2>&1
コンパイルができているかを確認するため,下記を実行.icoFoamの使い方が表示されればOK.
icoFoam -help
通常のOpenFOAMと同様に使うには,下記を順に実行して,tutorialsをコピーする.
mkdir -p $FOAM_RUN
cp -r $FOAM_TUTORIALS $FOAM_RUN
icoFoamのcavity例題で,動作を確認する.
cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity
blockMesh
icoFoam
paraFoam
OpenFOAM interFoamのバージョン比較
OpenFOAM バージョン1.7.1と2.0.0
PISOからPIMPLEに変更になりました。
OpenFOAM_versionComparison_interFoam_171_200.pdf
OpenFOAM バージョン1.4と1.6
VOF gamma が alpha1 に。
重力加速度設定ファイル名が environmentalProperies から g に。
圧力が pd から p に。
OpenFOAM_versionComparison_interFoam_140_160.pdf
icoUncoupledKinematicParcelFoamのバージョン比較
その際、icoUncoupledKinematicParcelFoamにおいて従来の2.1.0の設定ファイルでは粒子が発生しない現象が起きました。
ver.2.1.0とver.2.2.0の各ファイルを見比べたものを添付します。
ソルバーは,icoUncoupledKinematicParcelFoam
チュートリアルは,hopper/hopperInitialstate です。
icoUncoupledKinematicParcelFoam_comparison.pdf
粒子に関しての設定ファイル、kinematicCloudProperties 内の injectionModel の記述方法に変更がありました。設定する項目自体に変りはありません。
またソースコードの一部に変更がありました。
富山県立大学へのアクセス方法は,下記サイトをご覧ください。
富山県立大学へのアクセス
最寄り駅は,JR 小杉駅 です。
JR小杉駅南口から徒歩約20分(約2Km),または,
射水市コミュニティバス 「14.小杉駅・太閤山線」に乗車約5分です。
外部リンク:射水市コミュニティバス「14.小杉駅・太閤山線」
<お車>
無料駐車場がご利用いただけます。下記学内マップをご参照ください。
富山県立大学学内マップ
本サイトでは,Googleによるアクセス解析ツール「Googleアナリティクス」を使用しています。Googleアナリティクスはデータの収集のためにCookieを使用します。データは匿名で収集されており,個人を特定するものではありません。
なお,Cookieを無効にすることで収集を拒否することが出来ます。お使いのブラウザの設定をご確認ください。この規約の詳細は Googleアナリティクスサービス利用規約 や Googleポリシーと規約 をご覧ください。