それでは、DEM解析の検討を進めます。用いる環境は、DEXCS2010-OpenFOAM (64) に、最新の OpenFOAM-2.0.0 をバイナリインストールした環境でおこないます。準備方法は、このブログの記事を参考にしてください。
ここでは、下記の PENGUINITIS さんのウエブに公開されているデータを用いて、DEM解析の詳細を勉強します。
http://www.geocities.jp/penguinitis2002/study/OpenFOAM/dem/dem.html
(PENGUINITISさん:情報公開ありがとうございます)
■ 入力データの入手
上記のサイトから、ファイル square.tar.gz をダウンロードして、~/OpenFOAM の中に Work ディレクトリを作って、この中で展開しておきます。
$ tar zxvf square.tar.gz
■ 入力データの構成
展開すると square ディレクトリが出来て、それは以下の構成です。ディレクトリには末尾に / がついています。
square/
0/:初期条件
U:初期条件、速度
constant/
RASProperties:レイノルズ数の変化の設定
kinematicCloudProperties:衝突の設定
turbulenceProperties:流体特性(モデル{層流、乱流など})
g:重力加速度[m/s²]
polyMesh/
blockMeshDict:blockMeshを行うための記述がされている
kinematicCloudPositions:玉の初期配置の設定
transportProperties:流体特性(動粘性係数、密度など)
dem.pvsm
system/
controlDict:計算時間の制御、解のデータの読み書きに関する入力
fvSchemes:スキームの設定
didSchemes:一次の時間微分項の離散化スキームの設定
gradSchemes:勾配の離散化スキーム
divShemes:発散離散化スキーム
laplacianSchemes:ラプラシアン離散化スキーム
interpolationSchemes:補間スキーム
fvSolution:偏微分方程式を離散化してできる代数方程式を解くための設定
■ 計算手順1:blockMesh
まずメッシュを作成するため、square ディレクトリの中で、blockMesh コマンドを実行します。すぐに終わります。
$ blockMesh
こうすると、新しく以下のファイルが生成されます。
square/
constant/
polyMesh/
boundary:パッチのリスト
faces:面のリスト
neighbour:隣接セルのリスト
owner:保有セルのリスト
(ヘッダーにポイント数、セル数、総面積、内部面積が記載)
points:セルの頂点(ポイント)のリスト
■ 計算手順2:icoUncoupledKinematicParcelFoam
次に DEM解析を実行します。square ディレクトリの中で、icoUncoupledKinematicParcelFoam コマンドを実行します。しばらく計算が進みます。
$ icoUncoupledKinematicParcelFoam
■ 計算結果
この計算結果として、square ディレクトリの中に、各解析ステップ毎の結果が出力されます。生成されたディレクトリは以下の通りです。
square/
0/
0.002/
0.004/
……
0.498/
0.5/
■可視化
可視化のためのVTKデータを作るために、以下のコマンドを実行します。
$foamToVTK
これで、VTKデータが作られるので、結果を見るためにParaViewを起動します。DEXCS2010では、「アプリケーション」→「DEXCS」→「paraview」で起動できます。
メニューの「File」→「Open」で、OpenFOAM-square-VTK-lagrangian-kinematicCloudにある kinematicCloud_..vtk を選択してOKで開きます。
同様にして、OpenFOAM-square-VTKにあるsquare_.vtkを開きます。
ここまできたらParaViewの設定を行います。表示形式:Glyph Glyph Type:Sphere Scale Mode:scalar SetScaleFactor:0.02 Scalers:d Vectors:U Radius:0.52 Theta Resolution:20 Phi Resolution:20にしたら、きれいな表示にすることができました。もし、可視化した玉が大きすぎたり、小さすぎたりする場合は、SetScaleFactorによって調整することができます。
ここでは、下記の PENGUINITIS さんのウエブに公開されているデータを用いて、DEM解析の詳細を勉強します。
http://www.geocities.jp/penguinitis2002/study/OpenFOAM/dem/dem.html
(PENGUINITISさん:情報公開ありがとうございます)
■ 入力データの入手
上記のサイトから、ファイル square.tar.gz をダウンロードして、~/OpenFOAM の中に Work ディレクトリを作って、この中で展開しておきます。
$ tar zxvf square.tar.gz
■ 入力データの構成
展開すると square ディレクトリが出来て、それは以下の構成です。ディレクトリには末尾に / がついています。
square/
0/:初期条件
U:初期条件、速度
constant/
RASProperties:レイノルズ数の変化の設定
kinematicCloudProperties:衝突の設定
turbulenceProperties:流体特性(モデル{層流、乱流など})
g:重力加速度[m/s²]
polyMesh/
blockMeshDict:blockMeshを行うための記述がされている
kinematicCloudPositions:玉の初期配置の設定
transportProperties:流体特性(動粘性係数、密度など)
dem.pvsm
system/
controlDict:計算時間の制御、解のデータの読み書きに関する入力
fvSchemes:スキームの設定
didSchemes:一次の時間微分項の離散化スキームの設定
gradSchemes:勾配の離散化スキーム
divShemes:発散離散化スキーム
laplacianSchemes:ラプラシアン離散化スキーム
interpolationSchemes:補間スキーム
fvSolution:偏微分方程式を離散化してできる代数方程式を解くための設定
■ 計算手順1:blockMesh
まずメッシュを作成するため、square ディレクトリの中で、blockMesh コマンドを実行します。すぐに終わります。
$ blockMesh
こうすると、新しく以下のファイルが生成されます。
square/
constant/
polyMesh/
boundary:パッチのリスト
faces:面のリスト
neighbour:隣接セルのリスト
owner:保有セルのリスト
(ヘッダーにポイント数、セル数、総面積、内部面積が記載)
points:セルの頂点(ポイント)のリスト
■ 計算手順2:icoUncoupledKinematicParcelFoam
次に DEM解析を実行します。square ディレクトリの中で、icoUncoupledKinematicParcelFoam コマンドを実行します。しばらく計算が進みます。
$ icoUncoupledKinematicParcelFoam
■ 計算結果
この計算結果として、square ディレクトリの中に、各解析ステップ毎の結果が出力されます。生成されたディレクトリは以下の通りです。
square/
0/
0.002/
0.004/
……
0.498/
0.5/
■可視化
可視化のためのVTKデータを作るために、以下のコマンドを実行します。
$foamToVTK
これで、VTKデータが作られるので、結果を見るためにParaViewを起動します。DEXCS2010では、「アプリケーション」→「DEXCS」→「paraview」で起動できます。
メニューの「File」→「Open」で、OpenFOAM-square-VTK-lagrangian-kinematicCloudにある kinematicCloud_..vtk を選択してOKで開きます。
同様にして、OpenFOAM-square-VTKにあるsquare_.vtkを開きます。
ここまできたらParaViewの設定を行います。表示形式:Glyph Glyph Type:Sphere Scale Mode:scalar SetScaleFactor:0.02 Scalers:d Vectors:U Radius:0.52 Theta Resolution:20 Phi Resolution:20にしたら、きれいな表示にすることができました。もし、可視化した玉が大きすぎたり、小さすぎたりする場合は、SetScaleFactorによって調整することができます。