Mech News Blog

機械工学科に関する最新の活動状況などを発信する情報サイト

熱工学研究室

教  授 平子 廉
特命教授 村上 信明

 当研究室は従来 ディーゼル機関の燃焼の研究を実施していたので,「熱工学研究室」と称している。
 現在は,ディーゼル機関以外に風車の研究も実施している。ディーゼル機関の燃焼の研究もバイオマス燃料を使用する研究を実施しているので,「自然エネルギー動力研究室」と称した方が良いかも知れない。
 さらに,最近は不倒コマ(いつまでも回り続けるコマ)の研究も開始した。
 これらを総合すると「回転機械研究室」が適当である。

■ ディーゼル機関における燃料多様化の研究

・研究背景および目的
 ディーゼル機関において,現在の化石燃料だけでなくバイオマスのガス化により生成されるメタノール等の再生可能な燃料の利用を検討する。

・バイオマス メタノール利用の課題
 メタノールは蒸発潜熱が大きいため着火遅れが長く,ディーゼル機関用燃料として使用する場合,燃料供給系などの改造が必要とされる。

・研究概要
 既製のディーゼル機関の燃料供給系の改造を行わず,メタノールを燃料として利用するために,軽油とメタノールを混合した混合燃料を使用する。混合燃料を使用したディーゼル機関の性能を明らかにし,メタノール燃焼の可能性を模索する。
 また,現在利用が拡大しているバイオディーゼル燃料(BDF)を用いる場合の運転特性を研究する。

ディーゼル機関
ディーゼル機関
ディーゼル機関断面図
ディーゼル機関断面図

続きを読む>>
研究室紹介
author : mechstaff | - | -

OpenFoam並列計算用のメッシュ領域分割に関するメモ

 OpenFoamで並列計算を行うには,メッシュの領域分割を行う必要がある。

 ユーザーガイドでは,矩形領域の計算例(damBreak)が紹介されており,decomposeParDictを作成し,このファイル内で,使用するCPUの数だけ,領域分割数を指定するなどして保存した後,ケースディレクトリ内で,decomposePar を実行すると領域が分割される。

 decomposeParDict の記述例:

 FoamFile
 {
  version 2.0;
  format ascii;
  class dictionary;
  object decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * //
 numberOfSubdomains 2; // 2 CPU
 
 method simple;
 
 simpleCoeffs
 {
  n (1 2 1); // nx ny nz
  delta 0.001;
  order xyz;
 }
 // * * * * * * * * * * * * * * * * * * * //
 上記の例では,Y方向のざくっと2分割されます。


 Cavityの例で領域分割した後,ケースディレクトリ内を調べてみた。以下は,そのメモ書き。


 領域を分割した数だけ,ケースディレクトリ内に“processor*"が作成される。
 “*”は,数字。2分割では,processor0 と processor1 ができる。

 processor* のディレクトリ内には,“0”フォルダと“constant”フォルダがある。

 constantフォルダ内の “polyMesh” に,分割された各メッシュのデータがあり,
分割前との違いは,以下の4つのファイルが新たに作成されている点である。

 1.boundaryProcAddressing
 2.cellProcAddressing
 3.faceProcAddressing
 4.pointProcAddressing

 それぞれ4つのファイルを,2分割した場合について,
processor0 と processor1 を比較して判明した点は次の通り。

 1.boundaryProcAddressing
  processor0,processor1 とも同じ

 2.cellProcAddressing
  processor0,processor1 それぞれの各cell番号は重複しない。

 3.faceProcAddressing
  processor0,processor1 それぞれの各face番号は重複しない。
  ただし,接合面については,
   processor0 が符号なしの番号なら,
   processor1 は負の番号,すなわち,− 番号 となる。

 4.pointProcAddressing
  processor0,processor1 の接合面以外の各point番号は重複しない。
  接合面については重複する。

 以上のことから,cell,face,point番号は,基本的には,
processor0 から processor1 まで通し番号となっている。
(それぞれ0から振り直されていない)
  
パソコン・ソフト関係
author : mechstaff | - | -

2次元回転体計算のための準備(Salome)

目的:OpenFOAM-1.5-devで回転体を計算するための
   2次元 メッシュの作成

  OP-1.5-devでは,回転体を計算するために
  静止部と回転部の間の境界に
  GGI (General Grid Interface) が導入されている。
  Salomeで2次元メッシュを作成するためのメモ

1.メッシュの作成
  Salomeによる作成 (今はこれしか使えないから)

  Salomeを使って2次元のメッシュを作成する場合
  
  1.2次元平面形状のメッシュを作成する.
  2.平面形状のメッシュを掃引する.
  3.Faceグループを作成する(←ここが難題)

  以上の手順で作成します.
  3を解決するために,Salome 5 以降の機能(フィルター)
  を使用します

2.Faceグループの作成について
  3次元の場合,形状(geometry)から面(Face)を選択
  できるので,簡単に作成できるが,掃引で作成された
  2次元メッシュでは,メッシュそのもののgeometry
  がないため,geometryからFaceが作成できない。

  <対策>
  SalomeのFaceグループ作成時にフィルターを使う

   Sample_mesh1
   以下の作成手順で使用したメッシュ(回転部のみ)

  <Face作成手順>
  Salomeの作業において,
  1.側面(計算に関係のない)のFaceグループを先に
    作成する.


    Create Groupを実行すると次のダイアログが表示される.
   CreateGroupダイアログ
   Create Groupダイアログ

    SalomeのTop, Bottomなどで表示するボタンを
    使って,選択したい面(のみ)を表示し,マウスで
    まとめて選択(黄色で表示される)する.
   表示切替ボタン
   表示方向切替ボタン
   選択された側面
   選択された側面のFace

    このとき,奥行き方向のメッシュが選択される
    場合があるので,Shiftキーを使って選択解除する.
   余計に選択されたFace
   余計に選択された奥行き方向 Face

    正しく選択されたら Create Groupダイアログにて
    Add して Apply する.

    Create Groupダイアログ上にはColor Group(水色)
    があり,これを他のFaceの作成時にフィルターと
    して使用します.

  2.領域外側のFaceグループを作成する.
    
    1と同様にTop, Bottomなどのボタンで表示された
    部分をマウスでまとめて選択し,Shiftキーを使って
    追加・解除しながら作成する.

    <ポイント フィルターの利用>
     まとめて選択した際,画面垂直方向の面(1で作成
     した側面)のメッシュが一緒に選択されてしまう場合
     がある.
   余計に選択されたFace2
   余計に選択された側面のFace
   (Filter適用前)

     そこで,Create Groupダイアログの中央にある
     Content の Set Filtersを使用します.
     Filter for Nodes ダイアログで,Addボタンを
     押すと,新しいFilterが作成されます.
   SetFiltersダイアログ
   Set Filtersダイアログ

     新しいFilter の Criterionにおいて,Color of Group
     を選択し,Threshold Valueで先に作成したFace
     グループの色(例:水色)を選択し,そのFaceグループを
     排除したければ,UnaryのNotにチェックします.

     このフィルターにより,画面垂直方向の面は選択され
     なくて済み,作業が楽になります.
   Filter適用後
   Filter適用後

    1と同様に,新しく作成した各FaceグループのColor
     Groupを確認しておく.

  3.領域内のFaceグループを作成する.
    2と同様に作成する.

    領域内の形状はやや複雑であることが多いため,場合に
    よっては,Top, Bottomボタンで表示させた状態から
    傾けてまとめて選択することになるが,前述のフィルター
    により余計な部分が排除されるので,比較的作業が楽に
    なります.

  フィルターで絞り込みや排除を駆使すると,作業はかなり
  短時間で済みます.


1.回転体メッシュの書き出し時の注意点
  <ポイント>
  側面(計算に関係しない:emptyを指定する面)のFaceは,
  回転部と静止部に関係なく,”1つ” にまとめて書き出す.


  OpenFoamの2次元計算では,側面境界は”empty"を
  与えます. 
  しかし,回転体のように回転部と静止部が分かれている場合,
  側面のFaceをそれぞれ別々に作成し書き出すと,計算実行時に
  エラーメッセージ(emptyのFace数をCell数で割れない)が
  出て計算できません. 
  どうやらOpenFoamでは,2つ以上のempty Faceの数を
  合計して扱ってはくれないようです.
  

  2次元メッシュ作成の作業例については,時間がある時に書き
  留めたいと思っています.
   
   
 CAELinux 2009-2010 の覚え書き
続きを読む>>
パソコン・ソフト関係
author : mechstaff | - | -

回転体計算のための準備(CAELinux メッシュ作成)

目的:OpenFOAM-1.5-devで回転体を計算するための
   メッシュ作成

  OP-1.5-devでは,回転体を計算するために
  静止部と回転部の間の境界に
  GGI (General Grid Interface) が導入されている。

1.メッシュの作成
  Salomeによる作成 (今はこれしか使えないから)

  Salomeには,形状の単位がないようです. すなわち,
  Salomeで書き出されるメッシュの単位は,”m"ということに
  なります.
  mm を m に変換するには,OpenFoamの計算ディレク
  トリ内で
  >transformPoints -scale "(0.001 0.001 0.001)"
  を実行する
 
 メッシュ作成時に注意すべき点:
 1.静止部と回転部は,別々にメッシュを作成する。
  (一気にメッシュを生成して,Partitionで分離した
   メッシュでは,何故かOpenFOAMメッシュへの
   変換 ideasUnvToFoam に失敗する)

 2.静止部と回転部の接触部のメッシュは一致すること
   が望ましい。

  (させないと計算できなかった - segmentation fault
   接触部の不一致が原因かは分かりません)

 3.Salomeでの静止部と回転部のメッシュの合成は,
  回転部→静止部の順に選択し,合成する。

  (セル番号が,回転部→静止部の順になり,
   cellZones作成の問題を回避できる) 

 4.回転部のセルを明示したファイル
   cellZonesを作成しなければならない。

   cellZonesは,Salomeで作成したVolumeグループから
   生成される。

  ■ cellZonesの作成手順
  1.回転部のみについて,Salomeにて,
   faceに加え,Volumeのグループを作成する
  2.MED形式のメッシュファイルでexportする。
  3.GmshでMEDファイルを読み,Gmsh meshとして保存
   (mshファイル,ASCII Version 2)
  4.gmshToFoamにより,mshファイルを
   OpenFOAMメッシュに変換する。
  これで,作成したVolumeグループが,cellZonesとして
  書き出される。

  cellZones は,回転部を明示するためのファイルです.


 5.静止部と回転部の境界(face)を明示したファイル
   faceZonesを作成しなければならない。

   faceZonesは,Salomeで作成したfaceグループから
   生成される。

  ■ faceZonesの作成手順
  1.setSet コマンドを実行する
   (setsフォルダと移動境界のファイルができる)
  2.setSet内で以下のコマンドを実行する。
   >faceSet insideZone new patchToFace InSlide
    (insideZoneがsetsフォルダ内に作成される
     InSlideは回転部境界名(任意))
   >faceSet outsideZone new patchToFace OutSlide
    (outsideZoneがsetsフォルダ内に作成される
     OutSlideは回転部境界名(任意))
   >quit
    (setSetの終了)
   これで,sets(insideZone, outsideZone)ができる。
  3.setsToZones -noFlipMap コマンドを実行する。
   これで,faceZones が作成される。

  faceZones は,接触部を明示するためのファイルです.

 6.cellZones→faceZonesの順に作成する。


 Salomeによるメッシュ作成による問題点:
 1.cellZones作成時の問題
  SalomeのUNVメッシュから直接 cellZonesは
  作成できない。

 回避策:
  回転部のみを,Gmshを経由し,OpenFOAMメッシュに変換
  この過程で cellZonesが生成される。
  (このcellZonesは別のところに保存するのが望ましい
   faceZonesを作成するときに消されてしまうため)
 
 ■ cellZonesを別に作成する理由
  gmshToFoamのOpenFoamメッシュに変換では,
  cellZonesは作成されるが,肝心のboundaryほかの
  メッシュファイルが正しく作成されない。
  
  そこで,cellZonesはどこか別に待避させ,
  Salomeから書き出したunvメッシュから,
  ideasUnvToFoamでOpenFOAMメッシュを作成する
  (このときcellZonesを待避させないと,あとのメッシュ作成で
   消されてしまうので注意)

 2.faceZones作成の問題点
  Salomeで静止部と回転部を1つの形状として作成したあと,
  partitionで分割し,1つの形状でメッシュを作成し,
  各patch(face)のグループを作成して,UNVメッシュファイル
  を書き出した場合,
  ideasUnvToFoamでのOpenFOAMメッシュ変換に失敗する。
  (移動境界のpatchが静止部と回転部に共有されることが,
   まずいらしい)

  移動境界面のメッシュを同じにするには
  (静止部を回転部に合わせる場合)

  a) 回転部を先に作成する (cellZonesを別に作成するため)
  b) 静止部も同様にとりあえずメッシュを作成する。
  このとき,当然移動境界のメッシュは明らかに異なっている。
  c) 静止部のサブメッシュを移動境界のEdgeの分だけ
   作成する。
   それぞれのEdgeをProjection 1Dにより,回転部のEdge
   を指定し,対応させる。
  d) 静止部のメッシュを再度計算する。

  回転部と移動境界メッシュが一致したメッシュができる。


2.静止部と回転部の境界面(face)の設定
 ・boundaryファイルで,静止部と回転部のfaceを指定する。
 例:
OutSlide (自分で付けたface名)
{
type ggi; ←
nFaces 115;
startFace 98108;
shadowPatch InSlide; ← InSlideに対応
zone outsideZone; ← 回転部外側を指定
bridgeOverlap false; ←
}
InSlide (自分で付けたface名)
{
type ggi; ←
nFaces 758;
startFace 91928;
shadowPatch OutSlide; ← OutSlideに対応
zone insideZone; ← 回転部を指定
bridgeOverlap false; ←
}


現状:
とりあえず,揚力型垂直軸風車の荒いメッシュの計算が走るようにはなった。

CAELinux 2009-2010 の覚え書き
パソコン・ソフト関係
author : mechstaff | - | -

OpenFOAM 1.5-devのインストール(CAELinux)

目的:風車やファンなどの回転体の計算をするため
  OP-1.5には,回転体を計算できるソルバーがなく,
  OP-1.5-devにおいて,icoDyMFoam,turbDyMFoamが
  導入されている。

  CAELinux2009のPCにOP-1.5-devをインストールする

1.ホームディレクトリ以下に,OpenFOAM-1.5-devを
  インストール(保存)しなければならない。
 (パッケージファイルを解凍するだけ)

2.OpenFOAM-1.5-devを使うための環境設定をする
  ホームディレクトリ内で2つの環境設定ファイル
  .bashrc-CAE, .bashrc-OpenFOAM (.bashrc変更不要)
  をエディタで書き換える
  a) .bashrc-CAE→OpenFOAM-1.5-devの場所を指定する
  b) .bashrc-OpenFOAM→OpenFOAM-1.5-dev/etc/bashrc
   をsourceする

3.gcc4.3.3 をインストールする
  OpenFOAM-1.6などの ThirdParty を入手
   (1.5-devのが見あたらなかったから)
  ThirdParty 内の gcc4.3.3 フォルダを
  もともとホームディレクトリ内にある
  ThirdParty フォルダにコピーした。
  (gcc4.3.3 がないと OpenFOAM terminal を起動すると
   gcc4.3.3 がないというメッセージが表示される)

以上で,とりあえず
 Applications → CAELinux → OpenFOAM terminal で
 OpenFOAM-1.5-dev を実行できるターミナルが起動できる。

OP-1.5-devの導入で解決できない問題

1.paraFoam で paraview が起動しない
 OpenFOAM-1.5-dev/etc/apps/paraview3内の
 bashrc を以下に書き換える
 export ParaView_INST_DIR=$WM_THIRD_PARTY_DIR/ParaView$ParaView_VERSION

 ParaViewと$ParaView_VERSIONの間の(-)を省いた
  → とりあえず起動した。
 (ParaView3.3 が正しく,元のままだと
  ParaView-3.3となり×)

2.paraview が caseName.OpenFOAM (ケースデータ)
  を読み込めない
 paraview 起動後,ケースデータが読めず,
 ファイルを選ぶようにダイアログが表示される。
 当然,OpenFOAM を選択しても失敗する。

 回避策:
  caseディレクトリ内で foamToVTK を実行し,
  VTKファイルを作成する。
  これをparaviewで,読み込めばとりあえず,表示される。
続きを読む>>
パソコン・ソフト関係
author : mechstaff | - | -

CAELinux2009-2010 覚え書き

CAELinux 2009 64bitに関する覚え書き

OS Ubuntu 8.0.4

CAELinux 2009 にインストールされている流体解析関連の
アプリケーションは以下の通り

■ Salome-Mech 2009 (Salome 4) (前処理)
 計算モデル,計算格子(境界面の設定含む)の作成
■ OpenFOAM 1.5 (解析ソルバー)
 CFDの実行(境界条件,時間設定等を設定後,計算実行)
■ paraView 3.3 (後処理)
 計算結果の可視化

解析ソルバーの種類
 対象となる流体や定常・非定常の条件に応じて,
 それぞれのソルバー(計算プログラム)が存在する。
 用途に応じたソルバーを選択し,実行する必要がある。

■ 関係しそうなソルバー
 1.icoFoam
  非圧縮・層流・定常
 2.simpleFoam
  非圧縮・乱流・定常
 3.turbFoam
  非圧縮・乱流・非定常
 4.icoDyMFoam (OP-1.5-dev)
  非圧縮・層流・非定常・移動メッシュ(回転体)
 5.turbDyMFoam (OP-1.5-dev)
  非圧縮・乱流・非定常・移動メッシュ(回転体)
 6.sonicFoam
  圧縮性・非定常・高速流
 7.sonicTurbFoam
  圧縮性・乱流・非定常・高速流

■ 良く使用するコマンド
 linuxコマンド
 1.cd → ディレクトリの移動
 2.ls → ディレクトリ内の一覧表示

 OpenFOAM用コマンド(計算するディレクトリ内で実行)
 3.ideasUnvToFoam xxx.unv → メッシュの変換
   (UNV から OpenFOAMメッシュへ)
 4.xxxFoam → 解析ソルバの実行
   (xxxはico, turbなど)
 5.foamToVTK → paraview用のデータ作成
   (OpenFOAM-1.5-dev 用)
 6.paraFoam → paraviewの起動
 7.transformPoints -scale "(0.001 0.001 0.001)"
   → メッシュ形状の単位変換(mm→m)
   constant → PolyMesh内の pointsファイルが修正される
   

 回転体計算のために使ったコマンド(OpenFOAM)
 7.gmshToFoam xxx.msh → Gmshのメッシュ変換
   (cellZones作成のため,msh から OpenFOAM)
 8.setSet → 移動境界(face)の作成準備
 9.setsToZones (-noFlipMap) → faceZones作成
  (詳細は,回転体計算のための準備(下記リンク) 参照)

 並列計算のためのコマンド(OpenFOAM)
 10.decomposePar → decomposeParDictに従って
    メッシュの領域を分割する。
    decomposeParDictはsystemフォルダ内
 11.mpirun → 並列計算の実行
    例:mpirun -np 2 turbFoam -parallel
    → 2 CPUで実行
 12.reconstructPar → 分割データを統合する。
  (参考URL: PENGUINITIS - 並列計算)

 領域内の特定の部分にのみ指定の物理量を
 与えるコマンド(OpenFOAM)
 13.setFields → setFieldsDictに従って
    特定の部分に指定の物理量を与える。
    setFieldsDictはsystemフォルダ内
    例:圧力p を周囲0に対して,特定の部分には1を指定
    defaultFieldValues
    (
     volScalarFieldValue p 0
    );
    regions
    (
     boxToCell
     {
     box (0 0 0) (0.05 0.05 0.1);
     fieldValues
     (
     volScalarFieldValue p 1
     );
     }
    );

■ 覚え書き集

1.OpenFOAM-1.5-devのインストール
2.回転体計算のための準備
3.2次元回転体計算のための準備(Salome)
4.物体面上の物理量分布の抽出(Paraview)



 
 
 
続きを読む>>
パソコン・ソフト関係
author : mechstaff | - | -