1/ TreeFoamの使い方 OpenFOAMの操作をGUIで行うtool 1. 2. 3. 4. 5. TreeFoam概要 TreeFoamのメニュー grideditor概要とメニュー HelyxOS起動メニュー TreeFoamの操作 case作成など grideditorの操作 境界条件の設定 確認 HelyxOSの操作 メッシュ作成 まとめ OpenFOAMは CUIが基本の為 しばらく使わないとコマンドを忘れ 効率がガタ落ち 初心者には 敷居 が高い 少しでも操作性を改善し 直感的に 操作が理解できるGUIを作成 11/4月より作成し始め 約2年間 試行錯誤しながら作り上げ 現在も 進行中
1. TreeFoam概要 TreeFoamをベースにして ここから各種操作ができる 特に OpenFOAMの基本操作になる case作成 境界条件設定 メッシュ作成 の概要について説明 内容 1) TreeFoamのメニュー case作成 コピー 2) grideditor概要 境界条件の設定 確認 3) HelyxOSの起動メニュー メッシュ作成 2/
1) 3/ TreeFoamのメニュー フォルダ case がTree表示され case概要 solver名 計算結果有無 が一覧できる メニューバー メニューボタン操作 ダブルクリック操作がある これらの操作は 解析case マーク に対する操作 TreeFoam画面 ファイル操作関係 case作成 編集 メニューバー file編集 計算 アプリ起動 マウスを合わせるとtoolTipを表示 余白 解析ケース solver名 結果概要 各々の部分をダブルクリックすると ダブルクリックする場所に応じて動作する 解析case設定 folder開く controldictなど開く parafoam起動 マウスを合わせるとtoolTipを表示
4/ ポップアップメニュー 右クリック操作 選択行に対する操作 解析caseではない FOAM端末起動 grideditor起動 case folderのコピーなど操作できる TreeFoam画面 選択行に対するポップアップメニュー 場所によってメニューが変わる
5/ 2) grideditor概要 境界条件の設定 確認 境界条件の全貌が一覧表で確認できる 設定ミスが減る patch名の変更 boundaryfieldの確認 修正が表形式で可能になる ダブルクリックすると Editorで開く grideditor画面 アルファベット順 アルファベット順 Field名 field type & dimension internalfield Boundary Field patch名 patchtype ダブルクリックすると patch名が変更できる Excelの様にダブルクリックして cell内容を直接編集できる
6/ grideditorのメニュー patch名の変更 空patchの追加 削除ができる 行のポップアップメニュー fieldの非表示 表示順の変更も可能 列のポップアップメニュー 起動時にfieldを選択 メニューバー メニューボタン 行のポップアップメニュー 列のポップアップメニュー cellのポップアップメニュー
7/ 3) HelyxOS起動メニュー メッシュ作成 HelyxOSとは メッシュ作成 一部solverの実行を可能にするGUI メッシャとして使えるので 操作が簡便になる様に 起動メニューを作成 各種directoryの設定を行った後 HelyxOSを起動するGUI 作成の動機 1. dir移動時のダブルクリックの反応が悪い 予め dirを指定しておいて 直ぐに移動できないか 2. 特徴線を抽出するのは HelyxOSとは別の操作になる 統合できないか 3. 解析caseは TreeFoam上で決定しているが 新規にメッシュを作成する場合 HelyxOSが newcase フォルダ を作ってしまう TreeFoam上で newcase を作成できないか HelyxOS起動用のGUIを作成
各種directoryの設定を行った後 HelyxOSを起動するGUI HelyxOS起動画面 画面上で HelyxOSの newcase と等価の処理 8/ HelyxOSは 一度folderを開くと last.open.dir が設定され 次回open時 このfolderが開く helyxos起動前に 予め last.open.dir を書 き換えて起動する事で 速やかに目的のfileを選 択できる様に設定できる ~/.java/.userprefs/eu/engys/helyx/mesh/prefs.xml <entry key="last.open.dir" value=...> stl emeshファイルの場所を設定 emeshファイル作成 特徴線 featureedge を抽出 helyxos起動 できあがったblockMeshや snappyhexmeshdictを編集し 再実行できる
2. TreeFoamの操作 9/ TreeFoamの基本となる操作方法 内容 1) folder作成 caseコピー solver実行 計算結果削除 2) 新規caseの作成 並列計算 3) solverの入れ替え 4) メッシュの入れ替え
10/ 基本操作方法 folder作成 caseコピー FOAM端末起動 solver実行 計算結果削除 1 folderの作成方法 (1)rootを選択後 右クリック (3) CAE を入力し OK で folderができあがる (2)新しいフォルダ作成を選択
11/ 基本操作 folder作成 caseコピー FOAM端末起動 solver実行 計算結果削除 (2)caseのコピー方法 tutorialsの cavity を CAE folderにコピーする (4)クリックしてreloadすると cavity が見える cavity を選択して レ点マークをつけておく (3) CAE を選択後 右クリックで 貼り付け を選択 cavityが CAE folder内にできあがる (1)2個目のTreeFoamを起動する (2)tutorialsのincompressible/icoFoam/cavityで 右クリックして caseのコピー を選択
12/ 基本操作 folder作成 caseコピー FOAM端末起動 solver実行 計算結果削除 (3)FOAM端末の起動方法 FOAM端末からcavityのblockMesh作成 (1)クリックして起動 (1)右クリックして起動 選択しているdirがカレントdirで起動する FOAM端末起動画面 blockmeshをタイプしメッシュを作成 cavityのcaseが完成
13/ 基本操作 folder作成 caseコピー FOAM端末起動 solver実行 計算結果削除 (4)solver実行 計算結果削除 (1)クリックしてsolevr実行 (5)クリックして計算結果を削除 (3)クリックしてplotWatcher起動 残渣の確認 (4)クリックしてparaFoam起動 (2)FOAM端末が起動し solevrが実行される
14/ caseの作成 tutorials 又は以前の解析case から 解析内容に応じて 必要なcaseをコピーして 新しいcaseを作成する (1 tutorialsからcaseをコピー simplefoamのpitzdailyをコピーする (2)クリック (3)クリック (1) CAE を解析caseとして設定 (4) CAE の中にcaseを作成 (6)クリック (5)tutorialsをチェック
15/ (4) 非圧縮 を選択 (5) simple を選択 (6) pitzdaily を選択 (7) OK をクリック (8)クリック 再読み込み CAEフォルダ内に pitzdaily が出来上がる pitzdailyを解析caseに設定しておく
16/ (2)解析case pitzdaily の実行 (4)実行ボタンをクリック (1)pitzDailyで右クリック (2)FOAM端末を起動 (3)blockMeshを入力し 実行 currentdirは 既にcaseDirに設定されている為 コマンド入力のみ 実行後は 端末をcloseする (5)端末が起動し 計算開始 simplefoamが起動し 計算が始まる
17/ (3)並列計算の実行 (1)並列処理ボタンをクリック (3)machineのコア数に合わせ修正 保存 (2)ボタンをクリック (4)ボタンをクリックしてmesh分割 (5)並列計算開始 並列計算が開始する 計算開始後 plotwatcherボタン と 残渣が表示される をクリックする
18/ solverの入れ替え Case内のsolverを別のsolverに入れ替え計算開始できる モデルを変えずにsimpleFoam 定常 pisofoam 非定常 に入れ替える potentialfoamに入れ替え実行後 元のsolverに戻す (1)solverをsimpleFoam pisofoamに入れ替え (2)ボタンをクリック (3)選択 (1)popupメニューでcaseをコピー コピーしたCaseのsolverを入替え (4)選択 (5)クリック
19/ (6)非圧縮を選択 (7)pisoFoamを選択 (8)less/pitzDailyを選択 (9)solver入れ替え開始 (10)クリックして計算開始 solverが pisofoam に 入れ替わっているので そのまま実行 Solver入れ替えと同時にsolverが必要とするfieldやproperties Dict類も同時にコピーされるので そのまま計算開始できる fieldは 既に存在していれば コピーしない
20/ solver入れ替え前後のfieldの確認 入れ替え前 simplefoam 入れ替え後 pisofoam) nusgs fieldが無かった 為 fieldをそのままコピー
21/ meshの入れ替え Case内のmeshをオリジナルのmeshに入れ替え計算開始 ここでは cavityのメッシュに入れ替えてみる (1)cavityのメッシュに入れ替え (2)クリック (3)選択 (4)クリック (1)pitzDailyのcaseをコピー コピーしたcaseのmesh入替え (5)目的のmeshが入っているcase名を 選択し 決定 をクリック
22/ 入れ替え前のメッシュ (6)case名が cavity に変わる (7)メッシュを選択 (8)クリックして メッシュ入れ替え 入れ替え後のメッシュ メッシュ入れ替えの場合は boundaryも変わってしまう 境界条件 boundaryfield を設定し直す必要あり 入れ替え直後は zerogradient に設定される
3. grideditorの操作 境界条件の設定 変更を容易にするGUI Excelの様に境界条件を修正できる 内容 (1) 境界条件を変更 (2) 空patchの追加削除 patch名の変更 (3) grideditorのその他機能 起動方法 grideditor間でcopy paste boundaryfieldの整合 各fieldのpatch名が不揃いの場合 fieldの非表示 表示順 patchの表示順 23/
24/ (1)境界条件を変更 pitzdailyのboundatyを変更 (2)クリックして計算結果削除 (3)gridEditor起動 (1)解析case設定 起動したGridEditorの画面 ここで boundaryconditionを修正できる
Inletの流速 10 0 0 m/sを 20 0 0 に変えてみる 25/ (5)クリックして変更内容を保存 (6)終了 (4)Excelの様にダブルクリック 又はF2キー してcell内容を修正する 10 0 0) (20 0 0) に修正 boundaryfieldの内容が修正されている
26/ (2)空patchの追加 削除 patch名の変更 snappyhexmeshでメッシュを作成した場合 空patchができあがるが これを削除できる patch名も変更できる (3)OKをクリック (1)行を選択して右クリック (2)選択 空patchが追加される
27/ patch名の変更 (3)patch名を入力 (1) newpatch_0 を選択し 右クリック または ダブルクリック (2)選択 patch名が変更されている 空patchの削除も 右クリックで可能
(3)gridEditorその他機能 grideditor起動方法 複数起動して grideditor間でcopy & paste 他のcaseのfieldをコピーした場合 boundaryfieldが合わない場合 fieldの表示 非表示方法 grideditorの起動方法 3種類の起動方法がある 28/ (1)クリックして起動 解析caseの境界条件を表示 (3)FOAM端末から起動 カレントDirの境界条件を表示 (2)右クリックして起動 選択caseの境界条件を表示 timefolder fieldを選択
29/ 複数起動して grideditor間でcopy & paste cavityのgrideditor pitzdailyのgrideditor Copy & paste 可能
他のcaseのfieldをコピーした場合 boundaryfieldが合わない場合 cavity pitzdaily copy 30/ cavity copyしたfield boundaryfieldが合っていない Patchの整合性が取れない部分は空欄 クリックすることで zerogradient で埋まる 保存 で反映される
fieldの表示 非表示方法 31/ 隠したい列を選択し 右クリックで 選択したfieldを非表示 を選択 選択しない場合 非表示 非表示された状態 labelの色が 濃い青 に変わる 非表示設定は 記憶されるので 次回起動時も非表示設定のまま 元に戻すには 全表示/非表示fieldの切替え を選択する
32/ patch名の表示順変更 patch名がsort されている状態 (3)順番が入れ替わる boundaryの順番 (1)右クリック (2)選択
5. HelyxOSの操作 メッシュ作成 33/ 容易にメッシュが作成できる様に作成したGUI 内容 基本操作 (1) 新規case helyxos 作成 (2) HelyxOSを使ってメッシュ作成 (3) blockmeshdict snappyhexmeshdictを直接編集 solver実行 (1) 作成したメッシュを解析caseにコピー (2) grideditorによるbaoundaryの整形 (3) solverを実行 応用 (1) HelyxOSによるcellZoneの作成方法 (2) cellzoneからcellsetを作成 (3) cellsetを使ってfieldにデータセット
34/ 基本操作 (1)新規case helyxos 作成 このcaseを使って操作する (1)解析caseに設定 (3)新規フォルダ helyxos 作成 (4)解析caseを設定 (2)右クリックで 新しいフォルダ追加 を選択
35/ メッシュを作成するstlファイルを準備 stlファイルをtutorialsからコピーし modelフォルダ内に保存 (1)helyxos下に model フォルダ作成 tutorials helyxos内の構成 展開したfileを model フォルダ 内にコピーする
36/ インストール後 一度も HelyxOSを使って各folderを開いていない場合は 以下の手順で一度メッシュを作ってみる 一度でもHelyxOSを使って stlファイルからメッシュを作成した事があれば この操作は不要 (1)クリック (3)クリックしてnewCase作成 (4)クリックしてdirを設定 (2 )クリック (5) CAE/helyxos を選択し select をクリック newcaseフォルダができあがる
37/ (5)クリックして user defined に変更 (6)blockMeshの設定 -0.03-0.03-0.03 0.03 0.03 0.03 60 60 60 (7)クリック (8)クリック (9)CAE/helyxos/model内の flagne.stl を選択して 開く をクリック
38/ (8)クリック (9)クリック 保存場所は そのままで 保存する 端末が起動し メッシュ作成開始 メッシュ作成後 端末とHelyxOSを 終了する ここまでの操作で HelyxOSがcaseDir stldirの場所を記憶した事になる 次回 HelyxOS起動時は 予めこれらのDirの場所を書き換え HelyxOSを起動することで 直ぐに 目的の場所 casedir stldir emeshdir を開くことができる
helyxos起動前の設定と特徴線 featureedge の抽出して HelyxOSを起動する 39/ (1)クリック (2)クリックして helyxosが 必要としているfileを転送 helyxos上の newcase と同じ (3)stlファイルの場所 (4)クリック (6)クリックして helyxos起動 (5)特徴線を抽出するfileを選択 して OK をクリック
(2)helyxOSでmesh作成 stl emeshファイルを読み込み snappyhexmeshでメッシュ作成 解析caseの読み込み (1)クリック (2)直ぐに解析case helyxos が開く ので 開く をクリックで読み込む 40/
41/ stlファイルの読み込み (1)クリック (2)クリックしてstlファイルを読み込む (3)直ぐにmodelフォルダが開くので flange.stlを指定して 開く をクリック
42/ blockmeshの設定 (3)クリックして画面サイズに合わせる (1)クリック (2)BoundingBoxの サイズと分割数を設定
43/ emeshファイル 特徴線 の読み込み (1) をクリック (3)直ぐに emesh ファイルが読み込める ので 開く をクリックして読み込む (2) をクリック
44/ meshのレベル調整 edgeのレベル solidやpatchのレベル 今回は 値を修正せず レベル 0 のままでメッシュを作成
45/ mesh作成開始 (2)クリックして赤ボール Material point) がflange内にあることを確認 外にある場合は 座標値を修正 (1)クリック (3)クリック (4)保存先は修正せず その まま 保存 をクリックして mesh作成開始
46/ mesh作成完了 できあがったmeshの確認 特徴線を抽出しなかった場合 できあがったメッシュ (1)メッシュ作成が完了後 端末を閉じておく parallelでメッシュを切りたい場合は system/decomposepardict を修正する HelyxOSを使うと ~/.HelyxOS/tmp フォルダ内にtmpファイルが溜まっていくので注意 メッシュのレベルを削除 空白 してもデフォルトの状態に戻らないので 注意
47/ (3)blockMeshDict snappyhexmeshdictを直接編集 Dictファイルを直接編集 (1)クリックしてDictファイルを 直接編集する (2)メッシュを再作成する テキストエディタで直接変更で きる できあがったmeshを再修正する場合は HelyxOSを起動して 内容修正するか 直接 snappyhexmeshdictを編集してmeshを最作成する
48/ solver実行 (1) 指定したcaseに作成したメッシュをコピー 作成したメッシュの受け皿用のcaseを作成する tutorials/laplacianfoam/flangeをコピーして新しくcaseを作成する このtutorialは モデル形状やpatchが同じなので tutorialの結果と比較できる (2)クリック (3)選択 (1)解析caseに設定 (4)選択 (5)解析caseに設定 (6)FOAM端末を起動し./Allrun を実行
flagnge caseをコピーし このcaseのメッシュを作成したメッシュに入れ替える (2)クリック (3)選択 (4)クリック (1) flange をcaseコピー し 解析caseに設定 (5) helyxos を選択して 決定 をクリック (6)選択して コピー開始 をクリック helyxos flange_copy0 49/
(2) grideditorによるboundaryの整形 空patchの削除 patch名変更 境界条件の設定 50/ 空patchを削除 空patch名をドラッグして選択し 右クリックで 空patch削除 を選択して 空patchを削除する 修正後の状態 境界条件設定後 flange caseからコピー 保存 後 solverを実行する 実行結果 patchtypeを変更 wall patch に変更 patch名を変更 Patch名をダブルクリックして patch名を変更する Tutorialsの結果と同じ 結果が得られる
51/ 応用 cellzoneを作成 cellsetに変換 cellsetを使ってfieldにデータをセットする fieldに初期値としてデータをセットする (1)HelyxOSによるcellZoneの作成方法 CellZoneを作成するモデル形状 5ヶのstlファイルを準備 全体形状 inw.stl, outw.stl, midw.stl, otherw.stl cellzone solidzone.stl これらstlファイルは update-xxx/model フォルダ内にある 全体形状 断面 midw inw otherw 外側の壁 outw solidzone.stl
52/ (1)HelyxOSによるcellZoneの作成方法 操作方法 (2)クリック (1) helyxospipe フォルダを作成する (3)クリック (4)クリックしてupdate内の model を選択 (5)クリック (6)otherW.stl solidzone.stl を選択して特徴線を抽出 otherwの形状
53/ (2)クリック (1)クリック (3)すぐに設定したcase helyxospipe が開く Open をクリック
54/ (6)モデル形状 inw.stl を選択して Open をクリック (4)クリック (5)クリック (7)クリック 引き続き midw.stl outw.stl otherw を同様に読み込む (8) emesh ファルを選択
55/ (9)クリック (10)blockMeshを設定する -0.02-0.03-0.03 0.08 0.03 0.03 100 60 60 ここまでが 今までの設定と同じ内容 次で cellzone作成の為の設定を行う
56/ cellzone作成の為の設定 (3) solidzone.stl を選択して読み込む (2)クリック (1)クリック solidzone.stlを読み込んだ画面
57/ (4)CellZoneを選択 CellZoneにチェック Nameを入力 Levelを入力 (5)surfaceを選択 各patchに対し Levelを入力する
58/ (7)データセット後 実行 (6)クリック できあがったメッシュ solidzone
(2)cellZoneからcellSet作成 できあがったメッシュをpitzDailyのcaseにコピーし boundaryを整形する 59/ (2)クリック HelyxOSで作成したメッシュ pitzdailyのcase (1)pitzDailyをコピーしておく 空patchを削除し patch名を 修正した状態
toposeteditorでcellzoneからcellsetを作り出す (1)クリック 選択 新しく cellzone solidzone から cellset solidzone を この操作のtopoSetDictを作り toposetを実行する 左から順番にクリックして toposetdict保存 toposetを実行する 作りだした toposetdict 60/ 名前を入力 作り出す
61/ つくりだした toposetdict の内容 ellset solidzone ができあがっている
(3)cellSetを使って fieldにデータセット setfieldsdictを作り fieldにデータをセットする 62/ (1)クリック できあがったsetFieldsDict (2)fieldとcellSetを選択 (3)クリックしてDict編集 (4)setFields実行して fieldにデータをセット 解析case内に setfieldsdict が存在しない場合は 今回のように手本となる setfieldsdict を作り出す 既に 存在する場合は setfieldsdict を開く この値を (1 0 0) に 変更して保存する
63/ U fieldへのデータセット状態 データがセットされている メッシュ作成時にcellZoneを作ることで cellsetに変換後 各fieldに自由な形状でデータをセットすることができる cellset同士で演算 加減 反転 もできる cellzoneで領域分割することもできる
6. まとめ / OpenFAOMを少しでも使いやすく ミス無く 効率的にできないかと思い 操作が直感的に理解できるようなGUI環境 TreeFoam を整えてきた 特に 自分自身が良く使う操作 メッシュ操作 cell face Zone cell face Set cell(face)set同士の演算 createbaffle setfields splitmeshregions 領域分割 領域分割case内のfile操作 が容易に使える様にしてきた 便利になったと思う OpenFOAM-1.6から 現在 2.2 まで旧仕様を残したまま 旧が使える状態で 新仕様を追加してきた TreeFoam内部で OpenFOAMのバージョンを確認し バージョンに応じて 処理を変えるようにしている 今のTreeFoamは そのままでOpenFOAM1.6 2 2まで使用できるはず TreeFoamは pythonで作成しているので pythonが動けばtreefoamは動く 他システムへのインストールは システムに依存するfile内容をシステムに応じて 修正する事で可能 システム依存file configtreefoam appフォルダ内の実行ファイル configtreefoamが呼び出すシステム依存の実行file