5月16日の記事の続きです。

私が計算したい円筒表面温度に差がある円筒内の回転流体を解析するためには、interFoamにさらに
・温度場の計算
・温度による密度変化に起因する浮力の計算
を入れる必要があります。

まずは、下記の情報を参考にinterFoamに温度場を加えたinterTempFoamを作成しました。

OpenFOAMのカスタマイズ・ソースコード改造入門(interFoam への温度場計算追加)
関連する情報は次のサイトにも http://eddy.pu-toyama.ac.jp/OpenFOAM/

OpenFoamの混相流solver interFoamのパラメータによる解の変化

自分で作成したものは、まだコンパイルが上手くいきません。海外のOpenFoam掲示板で調べて解決策が見つかりましたが、まだ納得できていないので、開発をとりあえず保留しています。
代わりに、上記1つ目のサイトでダウンロードできるソースコードをコンパイルして利用しようとしましたが、上手くコンパイルできません。
OpenFOAM 2.3.x では、interFoamのライブラリに変更があり、incompressibleTwoPhaseMixture を使わず、immiscibleIncompressibleTwoPhaseMixture が新設され使われているためのようです。
海外のOpenFoam掲示板で調べて解決策(問題箇所をコメントアウトする)を見つけコンパイル成功。ただし、この方法はもう少し検証が必要である。

まずは、普通のinterFoamの計算と比較するために、interTempFoamの温度場の初期値を均一に設定して計算をする。

20150523-2.png
t=5sの状態
water, airの温度初期設定T=300Kで計算開始すると最初からwater,とairの境界で300K以上の領域が発生する。(ソースコードの元サイトにも書かれているように、Tの方程式の離散化について検討する必要があるようです)

またOpenFOAMのgoogleグループの投稿「温度場を導入したinterFoamの異常」には
・時間刻みを小さくすると多少改善される。
・速度場が大きいと温度場が破綻しやすい。
・容器に半分水を張ったような全く動きのない系でも最大温度を超える。(これについてはなぜか界面でわずかに速度場があることも疑問である。)
と書いてありました。これを参考にもう少し検討をしてみます。



 

5月1日の記事の続きです。(5月16日に記事を掲載したあと、回転させても水面が上がらない原因が判明したので、モデルと記事の内容を修正)

tutorials/multiphase/InterFoam/laminar/mixerVessel2Dをもとに、
5月1日に紹介した例題にあるように設定を変更する。(OpenFOAMがv2.1からv2.2になり、チュートリアルの構成が変更になりtutorials/multiphase/MRFInterFoam/mixerVessel2Dは存在しない)
このままではエラーが発生するので、少し調べました。

例えば、回転条件の設定の部分
constantのMRFZOneファイルがfvOptionに変更、記述方法も多少変更になりました。

実行はtutorials/multiphase/interFoam/laminar/MixerVessel2Dに付属のAllrunとMakeMeshを修正して作成し、ソルバーinterFoamを利用して実行

意図したとおりに計算できず、参考にした設定ファイルを再確認
constant/g z方向に-9.81設定
constant/polyMesh/blockMeshDictPipe-8.m
円管の長さ 5->2
長さの変換係数  ConvertToMetre 0.1 -> 1 に変更

constant/transportProperties
水の動粘性係数 1e-06に変更(元ファイルには1e-04とあり、OpenFormの日本語マニュアルには1e06とあり(タイプミス))
水と空気の粘性率sigma0.07に設定

実行可能であることを確認。

次にRASモデルを利用し、層流計算から乱流計算に変更
tutorials/multiphase/InterFoam/ras/damBreakから乱流計算のファイル
RASproperties をコピー
k をコピーし、wallsの設定を他のファイルと同じように変更

turbulenceProperties で SimulationType RASModel;に変更
エラーが出たので
fvSolusionの中の
PIMPLEに
pRefCell 0;
pRefValue 0;
の設定追加


OpenFOAMチュートリアルドキュメント作成プロジェクト ふうに基本情報をまとめました。

multiphaseInterFoam:3D回転円管の混相流

基本情報

SolvermultiphaseInterFoam
CasemixerVessel2D(/tutorials/multiphase/multiphaseInterFoam/laminar/mixerVessel2D)をもとにmixerVessel3Dを作成
Version 2.3.1
Kerword 非定常,混相流, VOF, MRF, 層流 or 乱流
変数 alpha[], U[m/s], p_rgh[kg/m/s^2] を各相(air, mercury, oil, water)毎に計算
定数constant/g
     g=0 [m/s^2]
constant/transportProperties にて、各相の nu, rho を定義
    nu.water=1e-6, nu.oil=1e-6, nu.mercury=1.125e-7,nu.air=1.48e-5 [m^2/s]
    rho.water=1000,rho.oil=500, rho.mercury=13529, rho.air=1 [kg/m^3]
constant/fvOption にて、回転条件を設定
    origin (0 0 0);    //  回転中心
    axis (0 0 1);        // 回転軸
    omega constant 10.5; // 回転角速度 rad/s
基礎方程式
 コメント・メッシュは、Moguraさんの円管メッシュ作成m4スクリプトを使って作成している。半径0.5m、高さ2mの円筒、円管の長手方向をz軸に設定
・setFieldDictによって初期水面の高さを1mに設定している。
・topoSetによって回転領域を定義している。
・Ver 2.3.0 までは、MRFMultipahseInterFoam というMRF計算専用のソルバーを使う必要があったが、Ver 2.3.1 からは、通常のmultiphaseInterFoamソルバーにて、constant/fvOption を使って計算できるようになった。
・下記例題では、高さ1mまでwaterを充填してz軸周りに回転する計算を実施 


ここまでの結果が以下になります。 
paraViewのスクリーンショットコピー機能で画像を保存しました。

20150519-1.png
200s後のalpha.waterの状態(赤い部分が水)


20150519-2.png
200s後の(-0.5, 0, 1)-(0.5, 0, 1)のラインの水の相比率

相比率(この場合水と空気)の変化から、回転軸から離れた壁面では1mの高さには水があり(水の比率が1に近い)、中心付近では水面が下がり1mの高さではほとんど水がない(水の比率が0に近い)様子がわかります。



回転角速度21rad/sの最初の10sのアニメーション

次はこのモデルを利用して、円筒容器内で回転する水の振動現象と履歴現象,ながれ30(2011)455-458の現象を再現してみようと思います。

さらにその次は、温度場計算モデルを加え、円筒容器表面の温度差による熱対流をモデル化する予定です。

スペースコロニー・アイランド3の大気循環解析までには、まだまだモデル設定や計算方法について勉強が必要です。





 
首相官邸にドローンが侵入、墜落して以降、何かとドローンが話題になっています。

私は、米国で火星表面探査の模擬実験を実施しているときに、
欧米のメンバーがドローンを利用して探査地点を上空から偵察しているのを見て、興味を持ちました。
(実際の火星では、大気が薄いため地球上で利用しているようなドローンは利用できませんが・・・)

私たちの模擬実験の結果、惑星表面でローバや人が移動するときには、その場での上空偵察が重要だと気が付いたからです。事前の地形調査だけでは不十分です。

店頭やネットで買えるドローンにも、低機能で安いものから高機能で高額のものまであります。
そこでとりあえず低機能で安いものをアマゾンで購入し、調査を開始しました(2015年1月ごろ)。
そこで分かったことは、
1.飛行時間が短い 小型のものだと5分程度です。何かを搭載して重量が重くなれば、飛行時間はもっと短くなるかも。
2.操縦が難しい 前後左右が分からなくなる。見失う。加速減速の加減が難しい。
3.微調整が難しい。リモコンに微調整のつまみがついてますが、ホバリングさせるのも難しい。落下させてプロペラの形状が少しでも変形すればなおさら難しくなります。
*操縦は難しいですが、運動性能には満足しました。4つロータがついているので、機敏に様々な動きができます。宙返りも簡単にできます。

侵入したけれども、見失ったというのも理解できました。

だから最近の商品は以下のような機能があるんだということもよく理解できました。

Phantom 3 を見失うことは決してありません。GPS と GLONASS を組み合わせることで、Phantom 3 は現在位置とユーザーとの関係を完全に把握します。より精密にホバーし、より正確に移動し、より速く衛星に接続します。(DJI ウエブサイトのPhantom 3 の説明)

コントローラにリアルタイムの映像やライブマップ機能があるのも理解できます。
精密フライトで安定したホバリング 、飛行時間の延長、オート帰還、オートランランディング・・・

そろそろ上位機種のドローンに移行しようと思っていた頃、首相官邸への侵入事件が起こりました。
この事件が起こる前から、近所でこんなものを飛ばしたらかなり危ないと思っていました。
テレビに出演しているプロの方みたいに、最初からうまく操縦できるわけではありません。
テロ以前に、飛行中に見失って、人に怪我をさせる可能性の方が高いです。

今日、綜合警備保障が、センサーで侵入ドローンの音を検知する、というニュースが出ています。

キャンパスで飛ばすと、隣のマンションの住人からクレームを入れられる可能性もあるので、今日は体育館の中で実験飛行をします。


 
最近は、自分でPCを組み立てたり、UNIXサーバを構築したりすることから遠ざかっていましたが、今年のGWを利用してLinuxの計算環境を構築しています。

数値流体計算用にOpenFoamをWindows上でしばらく利用していましたが、ネット上に情報量が多くあるLinuxに移行しようと以下のPCをアマゾンで購入し、Windows7とUbuntuのデュアルブートにしました。

ASUS BT6130-B010A

このPCすでにパテーションが3つ利用済みで、Ubuntuインストールに必要なあと2つのパテーションが作成できません。
1 Windows7 loader
2 Windows7リカバリー
3 Windows7
4 NTFS

そのためUbuntuをDVDから起動しても、Windows7とUbuntuの併存インストールのメニューが出ません。
参考文献:http://satomablog.blog.fc2.com/blog-entry-6.html

「日経BPパソコンベストムック必ずできる!これからはじめるLinux」付属のDVDを利用してUbuntu 14.04 LTS(64bit版)をインストールする。

調べてみると、/dev/sda4を拡張パテーションにして、その中に2つのパテーションを作成し、1つをUbuntu、1つをswap領域にしてすると、インストールできることが書いてありました。
Ubuntu用に50GB,swap用に4GBを作成しました。

ネット上のページには書いてありませんでしたが、インストール用のパテーションを確保した後でインストールを開始すると、デュアルブートのインストールメニューが出てきました。
Windowsとの領域の割り当ての設定もその段階でできます。

http://www.openfoam.org/download/ubuntu.php の指示に従いOpenFoam Version 2.3.1をインストールし、無事完了しました。

チュートリアルにある
incompressible/icoFoam/cavity
multiphase/MRFMultiphaseInterFoam/mixerVessel2D
を実行してみました。
まずは、
回転円筒容器内の水面挙動(その1)
回転円筒容器内の水面挙動(その2)
と同じものをGW中に作成するのが最初のステップです。

(2015年4月24日)



 

| Home |