1 / 10

OpenFOAM beginner 勉強会 進捗報告

OpenFOAM beginner 勉強会 進捗報告. 2011年2月27日 髙橋 功一. 進捗概要. データ付与・抽出ツールの使用法 セルデータ付与( setFields) 数値データ出力( controlDict の function, sample) ・・・ 勉強中 ソース読解トライ Eclipse (なんとかつかえるところまで) SimpleFoam から勉強 狭間さん講義の予習. setFields の使い方:探索してみました. Dambreak チュートリアル setFieldsDict. FoamFile {

niloufer
Download Presentation

OpenFOAM beginner 勉強会 進捗報告

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

  8. p // values of field within certain range fieldToCell //フィールド値の範囲で指定(ベクトル値Uはmag(U)と指定) { fieldName p; // Note: uses mag(U) since volVectorField min 300; max 500; 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; p0 uniform 0; U U; phi phi; rho rho; psi none; gamma 1; value uniform 0; } ここに入るパラメータ 各境界条件ごとに 項目が変わる

More Related