掲示板

開催案内:第6回オープンCAE勉強会@富山

投稿日時: 2012/11/12 S Nakagawa

 オープンCAE(OpenFOAMなど)に関心を持つ技術者,研究者,学生などが集まり,気軽に情報交換・相談する場所を作ることを目的に,勉強会を開催します。
 すでに使用経験のある方はもちろん,興味はあるけれど使い方が分らないという方も大歓迎です。お気軽にご参加ください。
 参加ご希望の方は,ATNDのサイトから参加登録をしてください。

   http://atnd.org/events/34095


開催日:2012年12月1日(土)

  13:00 受け付け開始
  13:30 勉強会開始
           参加者自己紹介
           各自の取り組み報告・ディスカッション
           フリーディスカッション
              などなど
  16:00頃 終了予定

参加費:
    無料
参加者:
    オープンソースCAEに関心のある方
    使用経験の有無等は問いません。
    OpenFOAMが中心となる可能性が高いですが,
    それ以外のソフトについても話題となります。
備考:
    今回からの参加も大歓迎です。遠慮なく参加してください。
    はじめて参加の方は,自己紹介[経歴,OpenFOAM等使用歴(なしでもOK),今取り組んでいる課題,これから取り組みたい課題 等]をお願いします。
    継続参加の方は,近況の報告をお願いいたします。
    現在の取り組み状況について,少し詳しく説明していただける方は,中川までお知らせください。
    プロジェクタとPCがありますので,お使いいただいて結構です。

オープンCAE勉強会@富山(第6回)で発表した内容のメモ

投稿日時: 2013/01/07 S Nakagawa

Googleグループ:OpenFOAMの投稿内容(10月および11月)から,個人的に気になった内容の要約を作成しました。

https://groups.google.com/forum/?hl=ja&fromgroups#!forum/openfoam

 

 

--

Q.管内流の周期境界条件

パイプ内部の流れを解析するとき,上流の流入面と下流の流出面を周期境界条件として,発達した流れを計算したい。

単純にcyclic境界を使うと,流入面と流出面とが同一圧力になり,流れがなくなってしまう。どうすれば良いか?

 

A1.

cyclicJumpから派生したfixedJumpか、更に派生したfanを使う。

fanの使用例は、pimpleFoam/TJunctionFanチュートリアルが参考になる。

jumpの設定については,下記の記事に議論がある。

https://groups.google.com/forum/#!msg/openfoam/qRaaWl5k2l4/AiJ7Tfyd2xMJ

 

 

fan境界では,次式のように,面に垂直な速度成分Unの関数として,圧力の上昇分を与えることが可能である。

P=f1 + f2 * Un + f3*Un^2 + ...  

この式における係数(f1,f2,f3 など)は,pの境界条件として,下記の様に指定する。

fan_half1

    {

        type            fan;

        patchType       cyclic;

        jump            uniform 0;

        f               2(100 -0.1);

        value           uniform 0;

    }

上記の例では,Pを与える式は2つの項から成る。定数項(f1)は 100,Unの1次の項の係数は-0.1である。

P = 100 - 0.1 Un

ソースコードは,finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C

なお,圧力差は0以上になるようになっているので,Pの計算が負になると,自動的に0に置き換えられる。

 

A2.

別の方法として,平均圧力勾配への考慮を,プログラム内で行う方法がある。

channelFoamソルバーが,この方式をとっている。

平均速度を与えると,それに応じた圧力勾配が計算され,自動的に設定される。

ほかのソルバーでも,channelFoamソルバーを参考にして,改造すれば良い。

 

A3.

OpenFOAM v2.1以降では, Field sources という機能を使って,A2のカスタマイズなしで,圧力勾配を考慮することが可能となった。

http://foam.sourceforge.net/docs/cpp/a03924_source.html

 

http://foam.sourceforge.net/docs/cpp/a03923_source.html

 

上記のソースにある pressureGradientExplicitSource を使うことになる。指定できるパラメータは下記となる。

pressureGradientExplicitSourceCoeffs

{

             fieldNames    ( U );          // name of velocity field

             Ubar        (10.0 0 0); // desired average velocity

             gradPini    gradPini [0 1 -2 0 0] 0; // initial pressure gradient

}

 

Field sources の設定は constant/sourcesPropertiesで行う。下記の様に記述する。

all

{

    type            pressureGradientExplicitSource;

    active          on;    //on/off switch

    timeStart       0;     //start time

    duration        1e+30; //duration

    selectionMode   all;   //cellSet // points //cellZone

 

    pressureGradientExplicitSourceCoeffs

    {

      fieldNames  ( U );

      Ubar        (5 0 0);                 // desired average velocity

      gradPini    gradPini [0 1 -2 0 0] 0; // initial pressure gradient

    }

}

 

参考 https://groups.google.com/forum/#!msg/openfoam/qRaaWl5k2l4/AiJ7Tfyd2xMJ

 

 

--

Q.流入面に対して法線方向の速度を境界条件として与える方法は?

 

A.

面に垂直な速度を与える境界条件surfaceNormalFixedValueが,標準機能にあります。

http://www.openfoam.org/docs/user/boundaries.php#x24-1370005.2

 

 

Swak4Foamを使う方法もあります。(別途インストールが必要)

controlDictの最後の方に,下記1行を追加します。

libs ( "libgroovyBC.so" );

 

そして,速度の境界条件のところで,

outlet

   {

       type            groovyBC;

       variables       "Un=0.1;";

       valueExpression "-Un*normal()";

   }

とします。

面に垂直な方向の速度をUnとして,数字を与えています。この値と面に垂直なベクトルnormal()の積で,面に垂直な速度の値を指定できます。

http://openfoamwiki.net/index.php/Contrib_groovyBC#Swirl_on_inlet

 

 

下記サイトに,両方の指定について,まとめた記述がありました。

http://www.geocities.jp/penguinitis2002/study/OpenFOAM/normal_velocity/normal_velocity.html

 

 

--

Q.タービンの解析をpimpleDyMFoamで実施している。計算結果から,回転翼周辺の相対速度を表示させる方法は?

 

A1.

ParaViewのCalculatorを使って相対速度場を作ることができる。

Z軸周りで回転速度Omega であれば,Calculatorでは,次式で相対速度場を計算できる。

iHat*(U_X-coordsY*Omega)+jHat*(U_Y+coordsX*Omega)+kHat*U_Z

ここで,iHat,jHat,kHat は 単位ベクトル,U_X,U_Y は 速度成分,coordsX,coordsY は 位置座標成分です。

これらの値は,CalculatorパネルのScalarsボタンからプルダウンで選択できます。

 

ただし,回転軸が傾いている場合には,それを考慮した式にする必要があります。

 

A2.

MRFSimpleFoam用のUrelユーティリティがCFD-Onlineで公開されている。

http://www.cfd-online.com/Forums/openfoam-solving/71277-how-derive-relative-velocity-mrfsimplefoam.html#post350891

 

dynamicMeshDictと整合性のあるMRFZonesを作れば,使えるのではないか。

 

--

Q.流体-固体熱連成解析について

1.流体部と固体部の境界メッシュは一致していなくても良いか?

2.ダクトの入口・出口で差圧(静圧)を取りたい。utilitityで面同士の差圧を直接出力することは可能か?

3.固体部に発熱量を定義することは可能か?

 

1.固体と流体メッシュは一致させる必要はない。

2.patchAverageユーティリティーで,パッチごとの平均を求め,差を計算すると良いのでは。

3.体積発熱には,Field Sourcesを使う。今野先生のプレゼン資料に,とても解りやすい説明がある。

http://www.opencae.jp/attachment/wiki/OpenFOAM-study-group-for-beginner%28ja%29/20120421OFBeginner.pdf

 

 

--

Q.pimpleDyMFoamを使い、ami領域を作り、半径流型タービンの翼内部の流動を解析したい。

モデルの作成方法は?

 

A.

snappyHexMeshを用いた回転体メッシュの作成方法について,日本流体力学会誌6月号の下記論文(野村氏・今川氏)がとても参考になる。

http://www.nagare.or.jp/download/noauth.html?dd=assets/files/download/noauth/nagare/31-3/31-3tokushu2.pdf

 

blockMeshの段階でAMIインターフェース(円筒面)を作成し,回転領域と静止領域に対して別々にsnappyHexMeshを実行すれば,AMIインターフェースの歪みを避けられる。

 

--

Q.キャビテ―ションに関するソルバーが2種類あるが,その違いは?

 

A.

cavitationgFoamはバロトロピー流体モデルである。液相と気相は,密度の違いとして表現されている。各位置での密度が,圧力の関数として求められている。

interPhaseChangeFoamはVOF法に基づく均質流モデルのキャビテーションソルバーである。飽和蒸気圧によって気相の発生を決めたあと,各相内での密度は一定である。