調査報告 controldict, fvscheme, fvsolution の設定について 一関高専 若嶋 OpenFOAM 2.3.x についてのみ調査 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 1 OF のケースフォルダの基本構成 [waku@ensis10 pitzdaily]$ pwd /home/waku/openfoam/waku-2.3.x/tutorials/incompressible/pimplefoam/pitzdaily [waku@ensis10 pitzdaily]$ tree -L 2.. --0 初期条件, 境界条件フォルダ (t=0) --U --epsilon --k --nutilda --nut `--p --constant 物性値, 乱流モデル選択 (laminar/ras/les), メッシュデータ, 移動メッシュ設定等 (***Dict/***Propeties) -- RASProperties --polymesh -- transportproperties `-- turbulenceproperties `--system 時間ステップなどの計算設定ファイル, 離散化スキーム指定, ソルバー設定, 各種コマンド設定等 (***Dict) -- controldict -- fvschemes `-- fvsolution 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 2
controldict Tutorial pimplefoam/pitzdaily を例題としています / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org コピーして来た場合は注意 application pimplefoam; Dictionary ファイルのヘッダー部 ( 必須 )~ OF のソルバー名 (pyfoam などのスクリプトファイルで参照されることが多い ) 計算開始時間, 終了時間の設定 時間ステップ [s], 指数表示可 (1.0e-4) 計算結果の書き出しタイミング, 形式 ( 書式 ) など 時間の書式, 精度 ( 小数点 ) 時間ステップを計算中に変更できるか, クーラン数を超えないように自動的に調整するか 注意 各行のセミコロン ; を忘れない! 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 3 controldict / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org startfrom -firsttime -starttime - latesttime どの時間ディレクトリから計算を開始するか 時間ディレクトリの内, 一番早いものを使用 starttime で指定された時間ディレクトリを使用時間ディレクトリの内, 一番遅いものを使用 ( リスタートする時に良く使います ) application pimplefoam; starttime 計算をスタートする時間ディレクトリ stopat どの場合に計算をストップするかを指定 -endtime endtime で指定した時間でストップ -writenow 現在の時間でストップし, 計算結果を書き出す現在の時間でストップし, 計算結果は書き出さ - nowritenow ない writecontrol でスケジュールされた次のwrite -nextwrite のタイミングでストップ endtime 計算をストップする時間を指定 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 4
controldict / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org application pimplefoam; writecontrol -timestep -runtime - adjustableruntime -cputime -clocktime writeinterval purgewrite writeformat データ出力のタイミングの指定 時間ステップ毎に毎回出力 writeinterval で指定した時間毎に出力 runtime と同様だが, 時間ステップの大きさが変化しても自動的に計算して出力してくれる 計算におけるtimeではなくCPUtimeで, writeinterval で指定した時間毎に出力計算におけるtimeではなくWallClockで, writeinterval で指定した時間毎に出力 writecontrol で使用される時間間隔 繰り返し出力のための整数値を指定. 0 各時間ごとに出力 ( 非定常計算 ) 1 時間ディレクトリ 1 つにずっと出力し続ける ( 定常計算 ) 2 以上 例えば 3 と指定すると,3 つめの時間フォルダに出力後は 1 つ目の時間フォルダに出力する. 以下, 繰り返す 解析データファイルの書式指定 (ascii/binary) -ascii アスキーフォーマット ( writeprecision で精度指定 ) -binary バイナリフォーマット ( データサイズ小 ) writeprecision アスキーフォーマット時の小数点以下の精度 ( デフォルト 6 桁 ) writecompression 解析データの非圧縮 / 圧縮 (gzip) を指定 -uncompressed 非圧縮 -compressed gzip で圧縮 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 5 controldict / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org application pimplefoam; timeformat 時間ディレクトリの数値フォーマット -fixed timeprecision した精度で固定小数点表示 (±m.dddddd) -scientific timeprecision した精度で固定指数表示 (±m.dddddde±xx) -general 上記を自動で切り替え (±10-4 以下で指数表示 ) timeprecision 小数点以下の桁数 ( デフォルト 6 桁 ) runtimemodifiable adjusttimestep maxco 各時間ステップでcontrolDictを読み込むかどうかを指定 maxco( 最大クーラン数 ) を超えないように時間ステップを自動調整するかどうかを指定 Maximum Courant number 原則として1 以下.simpleFoamなどの定常解法やpimpleFoamなどは1 以上に設定しうる 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 6
controldict(advanced) 実行時ライブラリの load / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org application pimplefoam; libs ( ライブラリ 1 ライブラリ 2 ); などと記述して実行時にライブラリをロード可能 swak4foam を導入した場合はここに記述する. libs ( libgroovybc.so libuserlib.so ) ; 自作ライブラリも可 libs( libgroovybc.so ); などとするとエラー libs と ( の間の空白 ( と lib***.so の空白 lib***.so と ) の空白 セミコロン ; に注意 libs ( libgroovybc.so libuserlib.so ) ; 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 7 controldict(advanced) Function Object / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org application pimplefoam; controldict 内にfunctions を記述することで以下のような計算を行い, 出力することができます パッチを通過する流量計算 変数の最大 最小値 ( パッチ, セル ) 変数の平均値 変数の特定点の抽出 (probe) 力, トルク, 抗力係数, 揚力係数, トルク係数 断面データ, 境界データ生成など libs ( libgroovybc.so libuserlib.so ) ; functions ここに複数の Function Object を記述 Ref. http//www.slideshare.net/fumiyanozaki96/openfoam-function-object 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 8
controldict(advanced) Function Object functions outletflux type facesource; minmax type fieldminmax; forces type forces; forcecoeffs type forcecoeffs; midzplane type surfaces; probepoint type probes; 例 パッチを通る流量 最大値 最小値 力 トルク 各種係数 断面プロット 特定点を probe 青字は,FunctionObject 名で任意の名前可 赤字は,FunctionObejct の type で, 希望する内容に合わせて選択する必要がある 個々の type の設定内容は, 今回は時間の都合で省略 それぞれの結果は,postProcessing フォルダに生成される どのような type があるかは ( 他にも多数あり ), source を見ましょう OpenFOAM-2.3.x/src/postProcessing/functionObjects Ref. http//www.slideshare.net/fumiyanozaki96/openfoam-function-object 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 9 fvschemes OF はセル中心有限体積法です / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org object fvschemes; ddtschemes gradschemes grad(p) grad(u) divschemes div(phi,u) div(phi,k) Euler; 1 時間積分離散化スキームの選択 2 セル中 の勾配の離散化スキーム選択 none; bounded Gauss linearupwind grad(u); bounded Gauss upwind; div(phi,epsilon) bounded Gauss upwind; div(phi,r) bounded Gauss upwind; div(r) div(phi,nutilda) bounded Gauss upwind; div((nueff*dev(t(grad(u))))) 3 セル中 の発散 ( 対流項 ) の離散化スキームの選択 laplacianschemes none; laplacian(nueff,u) Gauss linear corrected; laplacian(rauf,p) Gauss linear corrected; laplacian(dkeff,k) Gauss linear corrected; laplacian(depsiloneff,epsilon) Gauss linear corrected; laplacian(dreff,r) Gauss linear corrected; laplacian(dnutildaeff,nutilda) Gauss linear corrected; interpolationschemes linear; interpolate(u) linear; sngradschemes fluxrequired no; p ; corrected; 4 セル中 のラブラシアン離散化スキームの選択 5 セル界 の物理量補間スキームの選択 6 セル界 の勾配スキームの選択 7 質量フラックスの計算が必要な物理量の指定 各項目とも, 指定と個別指定の組み合わせ セミコロン ; を忘れずに! See http//www.openfoam.org/docs/user/fvschemes.php 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 10
fvschemes 1ddtSchemes ddtschemes Euler; Valid ddt schemes are 8 ( CoEuler オイラー法 (1 次精度前進差分 )+LocalTimeStepping(Co 数に応じて ) CrankNicolson クランクニコルソン法 (2 次精度前進差分 ), weight 0(Euler)~1(C-N) 指定 Euler オイラー法 (1 次精度前進差分 ) SLTS Stabilized Local Time-Stepping backward ギア法 (2 次精度後退差分 ) bounded 勾配制限 (bounded)divスキームを使うときに併用 bounded Euler localeuler オイラー法 (1 次精度前進差分 )+LocalTimeStepping steadystate 定常計算 ( 時間項なし ) ) d2dt2schemes t 2 2 の離散化 (Euler のみ ) 振動や電磁界解析の場合に利用 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 11 fvschemes 2gradSchemes gradschemes grad(p) grad(u) スカラー量の勾配 (gradient) 計算のスキーム選択 補間法 interpolationscheme は, 別に指定する 1. Gauss <interpolationscheme> ガウス積分 2. leastsquares 最小自乗法 (2 次精度 ) 3. fourth 最小自乗法 (4 次精度 ) 4. celllimited <gradscheme> Gauss/leastSquares/fourth の celllimited 版 5. facelimited <gradscheme> Gauss/leastSquares/fourth の facelimited 版例 grad(p) celllimitedgausslinear1.0; 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 12
fvschemes 3divSchemes divschemes none; div(phi,u) bounded Gauss linearupwind grad(u); div(phi,k) bounded Gauss upwind; div(phi,epsilon) bounded Gauss upwind; div(phi,r) bounded Gauss upwind; R = Reynolds stress tensor div(r) div(phi,nutilda) bounded Gauss upwind; nutilda = kinematic turbulent viscosity div((nueff*dev(t(grad(u))))) 対流項の計算スキーム選択 (phi は mass flux=ρu) Gauss <interpolationscheme> の形が基本で, 頭に bounded をつけると制限付スキームになる 補間スキームの選択肢 60 個!(Gauss Upwind とわざと間違えると出てきます.) 代表的なもの linear/limitedlinear (2 次線形補間 ) sckewlinear (2 次線形補間, メッシュの skewness 補間 ) upwind (1 次風上 ) linearupwind (2 次風上, 制限付 ) QUICK (2 次風上, 制限付 ) MUSCL/Minmod/SuperBee/vanAlbada/vanLeer (TVD スキーム ) SFCD/gamma (NVD スキーム ) 速度 U などのベクトルには, 以下も指定できる (V をつける ) limitedlinearv, vanleerv, GammaV, limitedcubicv, SFCDV 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 13 fvschemes 4laplacianSchemes laplacianschemes none; laplacian(nueff,u) Gauss linear corrected; laplacian(rauf,p) Gauss linear corrected; laplacian(dkeff,k) Gauss linear corrected; laplacian(depsiloneff,epsilon) Gauss linear corrected; laplacian(dreff,r) Gauss linear corrected; laplacian(dnutildaeff,nutilda) Gauss linear corrected; いわゆる粘性項 / 拡散項の計算スキーム選択 laplacian(nueff,u)= (ν eff U) Gauss<interpolationScheme><snGradScheme> の形で指定 <interpolationscheme> 選択肢 55 個 (linear/harmonic/reverselinear/midpoint/.) <sngradscheme> 選択肢 7 個 1. corrected 非直交性補正 2. facecorrected セル境界での非直交性補正 3. limited 勾配制限付の非直交性を考慮した修正 Gauss linear limited 1; 4. linearfit? 5. orthogonal? 6. quadraticfit? Gauss linear corrected; が一般的 7. uncorrected 非直交性補正なし 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 14
fvschemes 5interpolationSchemes 6snGradSchemes interpolationschemes linear; interpolate(u) linear; sngradschemes corrected; <interpolationscheme> 選択肢 55 個 (linear/harmonic/reverselinear/midpoint/.) <sngradscheme> 選択肢 7 個 1. corrected 非直交性補正 2. facecorrected セル境界での非直交性補正 3. limited 勾配制限付の非直交性を考慮した修正 Gauss linear limited 1; 4. linearfit? 5. orthogonal? 6. quadraticfit? 7. uncorrected 非直交性補正なし sngrad セル界面 (face) での外向き法線ベクトル ( 大きさは face 面積 ) 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 15 fvschemes 7fluxRequired fluxrequired no; p ; flux を計算する物理量リストを指定 上記の場合, 圧力場 p を計算後,flux を計算する. 一般的な計算では,p(pcorr) だけ指定すればよさそう. 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 16
fvsolution / F ield OpenFOAM The Open Source CFD Toolbox / O peration Version 2.3.0 / A nd Web www.openfoam.org object fvsolution; solvers p solver GAMG; tolerance 1e-7; reltol 0.01; smoother DICGaussSeidel; cacheagglomeration true; ncellsincoarsestlevel 10; agglomerator faceareapair; mergelevels 1; pfinal $p; reltol 0; 1 各方程式のソルバー設定圧 方程式 "(U k epsilon)" solver smoothsolver; smoother symgaussseidel; tolerance 1e-05; reltol 0.1; "(U k epsilon)final" $U; reltol 0; PIMPLE nnonorthogonalcorrectors 0; ncorrectors 2; 2 圧 速度カップリングの方式ごとの設定 SIMPLE/PISO/PIMPLE/laplacian pimplefoam 用の設定です 非圧縮の場合を想定しています. セミコロン ; を忘れずに! 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 17 fvsolution 1solvers solvers p solver GAMG; tolerance 1e-7; reltol 0.01; smoother DICGaussSeidel; cacheagglomeration true; ncellsincoarsestlevel 10; agglomerator faceareapair; mergelevels 1; pfinal $p; reltol 0; "(U k epsilon)" solver smoothsolver; smoother symgaussseidel; tolerance 1e-05; reltol 0.1; p. と同じ設定を読み込む solvers 物理変数 1 物理変数 2 ( ) でくくることで正規表現が使える (U k epsilon) U,k,epsilon のいずれか (U k epsilon)final Ufinal,kFinal,epsilonFinal p と pfinal 等の違いについては pimple アルゴリズムにかかわる部分なので, 別の機会に説明します.simple/piso/pimple(piso+simple) は,Of の非圧縮解析の基本となる圧力 速度カップリングアルゴリズムです. "(U k epsilon)final" $U; reltol 0; 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 18
fvsolution 2pimple 等のアルゴリズム毎の設定, 緩和係数など PIMPLE noutercorr 1; nnonorthogonalcorrectors 0; ncorrectors 2; PISO nnonorthogonalcorrectors 0; ncorrectors 2; prefcell 0; prefvalue 0; SIMPLE nnonorthogonalcorrectors 0; prefcell 0; prefvalue 0; potentialflow nnonorthogonalcorrectors 10; relaxationfactors fields p 0.3; equations U 0.7; k 0.7; omega 0.7; epsilon 0.7; T 0.7; 他のアルゴリズムの追加分 solvers 物理変数 1 物理変数 2 反復の緩和係数 ( 記述しなければ 1) ( ) でくくることで正規表現が使える (U k epsilon) U,k,epsilon のいずれか (U k epsilon)final Ufinal,kFinal,epsilonFinal p と pfinal 等の違いについては pimple アルゴリズムにかかわる部分なので, 別の機会に説明します.simple/piso/pimple(piso+simple) は,OF の非圧縮解析の基本となる圧力 速度カップリングアルゴリズムです. ソルバーに関係がないアルゴリズムに関しての記述があっても問題なし. 全部入り を作っておくと楽ちんです. 圧力の境界条件は一般にノイマン条件となり, 勾配のみが意味があることになり, 値そのものは不定になることがある. その場合の計算の発散を防ぐため, 特定セル番号の圧力 ( 非圧縮計算上の仮想的な圧力 ) を 0 と設定している. 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 19 参考 http//www.openfoam.org/docs/user/cases.php#x16-920004 http//www.opencae.jp/wiki/opencae-user-group-archive http//www.cfd-online.com/forums/openfoam/ 2014/12/5 第 3 回 OpenCAE 初歩情報交換会 @ 北東北 20