ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

OpenFOAMコミュの「2.1.1 Pre-processing」の和訳

  • mixiチェック
  • このエントリーをはてなブックマークに追加
想定外に長かった(^^;
---------------------------------------
2.1.1 プリプロ
OpenFOAMの前処理は、OpenFOAMケースを管理するためのJAVA GUIツールであるFoamXを用いるか、手でファイルを編集することによって行うことができる。大部分のOpenFOAMユーザーは手でファイルを編集する方を選ぶ。なぜなら、I/Oは少ない経験豊かなユーザーと同様に理解されるのに十分な意味をもつキーワードの辞書フォーマットを使うからである。実際にFoamXは記入項目を解釈したりGUIでそれらを紹介する層である。関連したファイル構造の説明を目的としている間、これらのチュートリアルでは、最初にFoamXを使って説明する。FoamXの使い方は5章で更に詳細に記述される、しかし、テキストで与えられるコマンド説明がチュートリアルを通してユーザーに案内される。
最初にユーザーはFoamXを起動しなければならない。ここでは、FoamXホストブラウザはローカルマシンで動いていると仮定する;さもなければ、リモートマシンで動かすために5章を見なさい。ネームサーバとホストブラウザ、JAVA−GUIを動かすスクリプトを実行するためにコマンドプロンプトで単純にタイプしなさい。

FoamX

そうすると、図2.2のようにFoamX JAVA GUI が現れる。ウインドウの左のパネルには、ホストの名前がある。21ページの上で解説されるように、ユーザーはユーザーのrunディレクトリにコピーしたチュートリアルケースへのディレクトリ・パスのツリー・リストのホストアイコンの上でダブルクリックによってホストを開ければよい。
-----------------------------
図2.2
-----------------------------
今、ユーザーは、ルートディレクトリアイコンをダブルクリックすることによって$FOAM_RUN/tutorials/icoFoamディレクトリを開きましょう。これは、$FOAM_RUN/tutorials/icoFoamパスにある全てのケースディレクトリに関するディレクトリを開く。ユーザーはキャビティーケースを選んで、再びケースアイコンのダブルクリックにしましょう。

ケースはFoamXウインドウの同じパネルで開いて、ケースの説明を含んでいるディレクトリツリーで、ユーザーに紹介する:入力データとコントロール・パラメータの辞書;問題(例えば速さ)に必要なフィールドのリスト;メッシュ。

2.1.1.1 メッシュ生成

OpenFOAMは3次元デカルト座標系で常に動き、全てのジオメトリーは3次元で生成します。OpenFOAMはデフォルトで3次元のケースを解決するが、解決が必要でない(第3)次元目の通常の境界で『特別な』空の境界条件を指定することによって2次元を解くようにできます。

キャビティー問題は、x-y平面の一辺の長さ d=0.1 m の正方形から成ります。20×20セルの均一なメッシュをまず最初に使います。ブロック構造は、図2.3で示されます。
---------------------------------
図2.3
---------------------------------
OpenFOAMで提供されるメッシュ・ジェネレーターblockMeshは
constant/polyMesh ディレクトリにある入力辞書blockMeshDictで指定された記述からメッシュを生成します。
このケースのblockMeshDictは、以下の通りです:
---------
スクリプト
---------
ファイルでは最初にvertices(ブロック頂点)の組を指定します;それからそこに含まれる頂点ラベルとセル数からblocks(ブロック(ここで、一つだけ))を定めます;そして、最後に、patches(境界部分)を定めます。ユーザーは、blockMeshDictファイルの項目の意味を理解するために6.3章を見ることを推奨します。

メッシュは、FoamX内からこのblockMeshDictファイルでblockMeshを走らせることによって生成します。ディレクトリツリーの最上位でケース名cavityでマウスの右ボタンをクリックすることによって行います。ユーザーが図2.4で示すFoam Utilitiesメニューのサブメニューmesh→generationからblockMeshを選べるようにメニューを開きます 。
---------------------------------
図2.4
---------------------------------
blockMeshウィンドウが現れます。ユーザーは、Edit Dictionary ボタンを押すことによってblockMeshDictの構成要素を含むテーブルを見ることができます。このテーブルから、記入項目を右手コラムのセルをクリックすることによって編集することができます。ユーザーは単に閉じて辞書を変更すべきではない、Executeボタンを押すことによって、blockMeshを実行しなければなりません。blockMeshの実行状態は、FoamXが立上げたターミナルウインドウで報告されます。blockMeshDictファイルにおけるどんなミスでもblockMeshによって取上げられ、エラーメッセージの結果がファイル中の問題が起こった行を直接ユーザー伝えます。エラーメッセージが、現段階であってはいけません。

2.1.1.2 境界条件と初期条件

一旦メッシュ生成が終了しているならば、図5.16で示すように、ケースディレクトリツリーでMeshの上で右のマウスボタンをクリックして、メッシュをFoamXに取り込むのにRead Mesh&Fields機能を選んでください。メッシュ・ツリーが開けられるとき、パッチの名前はPatchesの名前をつけられたフォルダに現れます。ユーザーは、図5.17で示すように物理的な境界条件を指定するために、順番に各々のパッチをクリックしなければなりません。パッチをクリックすることで、物理的な境界線タイプを要求するウインドウをあけます。cavityのために、壁タイプは、fixedWallsとmovingWallパッチを選ばれなければなりません。frontAndBackパッチは2Dケースの正面と後ろの平面を表して、したがって、空としてセットされなければなりません。ウインドウは各々の物理的なタイプ(例えばUのためのfixedValueやpのためのzeroGradient)壁タイプをプリミティブに解くために条件を表していて、各々の境界線タイプが選べることに注目してください。

次に内部のおよび境界条件を決めるのにFieldsを選んでください。例えば、Uをクリックすることは図2.5で示すように壁境界の項目と内部の項目を要求するウインドウを表示されます。
---------------------------------
図2.5
---------------------------------

内部と境界の項目は単値で表される一定値かバラバラな値で、項目の値はすべて特定しなければならない。多くの例では、内部の項目は一定にセットされている。例えば、(0,0,0)の一定な内部流速、天井の一定な流速(movingWall)。もし、内部の項目が一定でなければ、通常は各々の値を手入力で指定せず、アプリケーションから前もって計算して生成する。

複数値(例えばベクトル)のエントリを入力するには、単にエントリをクリックし、ボタンがそのウインドウの右側に現れる;そのボタンをクリックすることで、図2.5で示すようにいつものように編集されることができるエントリの個々の値を含むテーブルが現れます。

pをクリックすることで、0に設定される内部の項目を要求するウインドウが現れます。uをクリックすることで、壁境界の内部の項目と値を要求するウインドウが現れます。内部と参照する項目は両方とも(0,0,0)にセットします。流速はfixedWallsで(0,0,0)にmovingWallで(1,0,0)とセットします。

2.1.1.3 物理的性質

ケースの物理的性質は、名前が ・・・Propertiesという接尾辞で与えられる辞書に保存され、Dictionariesディレクトリツリーに置かれる。icoFoamケースのために、指定されなければならない唯一の性質は、transportProperties辞書に保存される動粘性である。

ユーザーは、動粘性がそのエントリを見て/編集するためにtransportProperties辞書をダブルクリックすることによって正しくセットされることを確実としなければならない。動粘性のためのキーワードは、nu(方程式で見受けられるギリシア語シンボルνの音声ラベル)である。まず最初に、このケースは次のレノルズ数で定義されるレノルズ数を10で動かします:
--------
式2.1
--------
dと|U|はそれぞれ長さと速度を表し、νは動粘性を表します。ここで、d=0.1m,|U|=1m/s,Re=10とすると、ν=0.01m^2/sとなる。SI単位系で動粘性の正しい次元を指定します。次元は[kg m s K A mol cd]のSI基本単位の積でm^2s^-1か[0 2 -1 0 0 0 0] と記述する。
OpenFOAMの次元単位の使用に関する更なる情報は、プログラマーズガイドの1.5章で利用できる。動粘性を編集し、transportPropertiesウインドウを閉じます。

2.1.1.4 コントロール

時間の制御、課題データの読み書きに関する入力データは、controlDict辞書から読み取られます。まず最初にユーザーはスタート/停止時間と時間ステップを設定しなければなりません。OpenFOAMは、4.3章で柔軟性の高い時間制御を提供します。このチュートリアルでは、OpenFOAMが0というディレクトリからフィールド・データを読む必要であるのを意味する時間 t=0での実行を始めたいと思います--ケースファイル構造の詳しい情報に関して4.1章を見てください。したがって、startTimeにstartFromキーワードを設定して、次に0になるようにstartTimeキーワードを指定します。

終わりの時間に、流れがキャビティー周りを循環している定常解に達したいと思います。概して、流体は層流で定常状態に到達するために領域を10回通り抜けなければなりません。 この場合、流れが出入り口がない領域を通り抜けないので、代わりに、終わりの時間をキャビティーを直行する天井が10回移動する時間(すなわち1秒)にセットできる。
; 実際は、後の知見により、0.5秒で十分であるとわかるので、この値を採用するつもりです。この終わりの時間を指定するために、endTimeとしてstopAtキーワードを指定して、endTimeキーワードを0.5に設定しなければなりません。

今、キーワードdeltaTによって表された時間のステップを設定する必要があります。icoFoamを動かす時、時間の精度と安定性を達成するために、1未満のクーラン数が必要です。クーラン数は以下のように定義されます。
-------------------------
式2.2
-------------------------
δtは時間ステップ、|U|はセルを通る流速の大きさそしてδxは流速方向のセルサイズです。流速は領域を横切り変化し、どこでもCo<1を成り立たせる必要があります。だから、最も悪い場合(つまり、大きな流速と小さなセルサイズの組合わせによる最大のCo)を元にδtを決定します。ここでは、セルサイズは領域に直行し固定されているので、最大Coは天井付近の1m/sに近い流速で起るでしょう。
-------------------------
式2.3
-------------------------
したがって、領域中で1以下のクーラン数を達成するために、時間ステップdeltaTを次のようにセットしなくてはいけません:
-------------------------
式2.4
-------------------------
シミュレーションが進行する時、後でポスプロ・パッケージで見ることができる時間のある一定の間隔における結果を書きたいと思います。 writeControlキーワードは結果が書かれる時間を決めるためのいくつかのオプションを提示します; ここで、n値はwriteIntervalキーワードの下で指定されるn値は結果がn回時間ステップ毎に書かれると指定するtimeStepオプションで選択します。0.1,0.2,・・・,0.5秒で結果を書きたいと思いましょう。したがって、0.005秒の時間ステップなので、時間ステップ20回毎に結果を出力する必要である、だからwriteIntervalに20を設定します。

OpenFOAMは4.1章で議論するデータセットを書き込む毎に例えば0.1秒という現在時間にちなんで名付けられた新しいディレクトリを作成します。 icoFoamソルバーでは、Uやpの各項目毎に結果を時間ディレクトリに書き込みます。 このケースのcontrolDictのエントリーを図2.6に示します。
------------------------------------
図2.6
------------------------------------

2.1.1.5 離散化と線形ソルバーの設定

ユーザはfvSchemes辞書における有限体積離散化法の選択を指定します。線形方程式ソルバーとトレランスおよび他のアルゴリズムコントロールの仕様はfvSolution辞書で作られています。ユーザは自由にこれらの辞書を見ることができますが、fvSolution辞書のPISOサブディレクトリのpRefCellとpRefValueを除いて、現在のところ、それらすべてのエントリーについて議論する必要はありません。キャビティーのような閉じた非圧縮系では、圧力は相対的です: 重要なのは絶対値ではなく、圧力範囲です。このような場合では、ソルバーはセルpRefCellにpRefValueによる参照レベルをセットします。この例では、両方が0に設定されます。しかし、これらの値のどちらかを変えると速度と相対圧力ではなくて絶対圧力を変化させる。

2.1.1.6 データの保存

これで、メッシュを生成し、境界条件と項目を初期化し、そして管理パラメータと物資特性を設定されました。このデータはFoamXウィンドウの上端にあるフロッピーディスクアイコンのメニューボタンをクリックすることによって、ケースファイルに保存しなければなりません。

マニュアルの余白として:
メニューボタンがFoamXウィンドウの上端にあります。 ボタンがどの機能を実行するかをチェックするために、1秒間ボタンの上にカーソルを持ってください。そうすればテキスト記述が現れるでしょう。

コメント(1)

※訳注

FedoraCore5で

FoamX

と打って、立ち上がらない時は、次の2つが原因です。
1.libelfのバージョンがあっていない
2.SELinuxの設定

1の解決策
バージョン1でも動くようですので、0としてシンボリックリンクをはりましょう。
具体的には
su
cd /usr/lib
ln -s libelf.so.1 libelf.so.0
exit

2の解決策・・・2つあります
A.SELinuxを無効にする
B.SELinuxの設定を変更する

具体的にはトップパネルのメニューで、デスクトップ→管理で、
セキュリティレベルとファイアーウォールの設定を選びます。
するとセキュリティーレベルの設定ウィンドウが開きます。
この中のSELinuxタブを開きます。
解決策A
 SELinuxSettingで、Disabledを選択する

解決策B
 ・「△SELinuxポリシー修正」を開く(△を押す)
 ・「△互換性」を開く
 ・「□テキストリロケーションを用いた共有ライブラリの使用を許可する 」
  にチェックを入れる

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

OpenFOAM 更新情報

OpenFOAMのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング