Presentation is loading. Please wait.

Presentation is loading. Please wait.

OpenFOAM beginner 勉強会 進捗報告

Similar presentations


Presentation on theme: "OpenFOAM beginner 勉強会 進捗報告"— Presentation transcript:

1 OpenFOAM beginner 勉強会 進捗報告
2011年2月27日 髙橋 功一

2 進捗概要 データ付与・抽出ツールの使用法 ソース読解トライ セルデータ付与(setFields)
数値データ出力(controlDictのfunction, sample) ・・・勉強中 ソース読解トライ Eclipse(なんとかつかえるところまで) SimpleFoamから勉強 狭間さん講義の予習

3 setFieldsの使い方:探索してみました
Dambreakチュートリアル setFieldsDict FoamFile { version ; format ascii; class dictionary; location "system"; object setFieldsDict; } defaultFieldValues ( volScalarFieldValue alpha1 0 ); regions boxToCell box (0 0 -1) ( ); fieldValues volScalarFieldValue alpha1 1 boxToCellで指定した直方体内の セルだけAlpha1を1にする 直方体以外で指定したいときは? dambreak 【いろいろな方法で探索トライ】  ・わざと間違えて記述 boxToCell → aboxToCell エラーメッセージにヒントあり  ・ソースと同じ場所に置いてあるsetFieldsDict  setFieldsのソースの場所にDictファイルの例題もおいてある  ・分かっているキーワードで全文検索   “boxToCell”で“OpenFOAM-1.7.1”以下を全文検索

4 setFieldsの使い方探索 “boxToCell”で全文検索 cellSetDictに同じキーワードあり

5 setFieldsの使い方探索 cellSetDict Dambreakチュートリアル setFieldsDict 直方体
// Cells with cell centre within box boxToCell { box (0 0 0) (1 1 1); } // Is skewed, rotated box. Given as origin and three spanning vectors. rotatedBoxToCell origin ( ); i ( ); j ( ); k ( ); // Cells with centre within cylinder cylinderToCell p ( ); // start point on cylinder axis p ( ); // end point on cylinder axis radius 5.0; // Cells with centre within sphere sphereToCell centre ( ); 直方体 (dambreakと同じ) FoamFile { version ; format ascii; class dictionary; location "system"; object setFieldsDict; } defaultFieldValues ( volScalarFieldValue alpha1 0 ); regions boxToCell box (0 0 -1) ( ); fieldValues volScalarFieldValue alpha1 1 直方体を回転させた形状 円筒 cellSetDictの記載に この記述を足せばよさそう

6 // Select by explicitly providing cell labels
labelToCell //セルラベル(boundaryファイル) { value ( ); // labels of cells fieldValues ( volScalarFieldValue alpha1 1 ); } // Cells with cell centre within box boxToCell  //直方体 { box ( ) ( ); fieldValues ( volScalarFieldValue alpha1 1 ); } // Cells with cell centre within box // Is skewed, rotated box. Given as origin and three spanning vectors. rotatedBoxToCell  //並行六面体? { origin ( ); i ( ); j ( ); k ( ); fieldValues ( volScalarFieldValue alpha1 1 ); }

7 // Cells with centre within cylinder
cylinderToCell  //円筒 { p ( ); // start point on cylinder axis p ( ); // end point on cylinder axis radius 0.1; fieldValues ( volScalarFieldValue alpha1 1 ); } // Cells with centre within sphere sphereToCell //球 { centre ( ); radius 0.1; fieldValues ( volScalarFieldValue alpha1 1 ); } // Cells with cellCentre nearest to coordinates nearestToCell //指定点に一番近いセル { points (( ) ( ) ( )); fieldValues ( volScalarFieldValue alpha1 1 ); }

8 p alpha1 その他 (未実施) cellToCell :cellSetで指定
// values of field within certain range fieldToCell //フィールド値の範囲で指定(ベクトル値Uはmag(U)と指定) { fieldName p; // Note: uses mag(U) since volVectorField min ; max ; fieldValues ( volScalarFieldValue alpha1 1 ); } alpha1 cellToCell :cellSetで指定 faceToCell :指定したfaceSetに隣接するセル (option owner/neighbour/any/all) pointToCell :指定したpointSet (に隣接するセル?) (option any/all) zoneToCell :cellzoneで指定 faceZoneToCell :指定したfacezoneに隣接するセル (option master/slave) shapeToCell :セル形状で指定 (option hex/wedge/prism/pyr/tet/tetWedge/splitHex) surfaceToCell :STLファイルで指定 (option …) regionToCell :? その他 (未実施)

9 ソース読解トライ 今後、最も応用範囲の広そうなsimpleFoamをベースに勉強 ○ソルバーの主ソース ・simpleFoam.C
○ヘッダファイル   ・createFields.H ・・・変数定義   ・UEqn.H      ・・・Uの方程式を記述   ・pEqn.H      ・・・pの収束計算(simple法)を記述   ・convergenceCheck.H   ・initConvergenceCheck.H どのソルバーにも必ずある? ソルバーによっては ないことも (主ソースに直接書き) 興味なし (*)kやεの保存方程式はsimpleFoamディレクトリ内のソースに書かれていない 【UEqn.H】 tmp<fvVectorMatrix> UEqn ( fvm::div(phi, U) + turbulence->divDevReff(U) ); UEqn().relax(); eqnResidual = solve UEqn() == -fvc::grad(p) ).initialResidual(); maxResidual = max(eqnResidual, maxResidual); ? 元の方程式(想像)

10 皆様にご相談(特に知りたいところ) ソースが難解すぎて、全く手が付けられず 皆様、どうやって調べていますか? 1.乱流
RASModel(kepsilon)の機能を 調べたい 【createFields.H】 autoPtr<incompressible::RASModel> turbulence ( incompressible::RASModel::New(U, phi, laminarTransport) ); tmp<fvVectorMatrix> UEqn ( fvm::div(phi, U) + turbulence->divDevReff(U) ); RASModelにはdivDevReff以外にも 使える機能がありそう 2.境界条件 使い方不明の境界条件が多数 使い方を調べたい // dambreak/0/p の境界条件部分 atmosphere { type totalPressure; p uniform 0; U U; phi phi; rho rho; psi none; gamma ; value uniform 0; } ここに入るパラメータ 各境界条件ごとに 項目が変わる


Download ppt "OpenFOAM beginner 勉強会 進捗報告"

Similar presentations


Ads by Google