ゼロから始める OpenFOAM @ windows [01]

必要なもの
OpenFORM.org では3つの方法が紹介されています。1. Windows10にインストールできるUbuntu上、2.Windows10で動くunix バーチャル環境上、3. Blue-CFD-core、です。最近は、この手のアプリケーションソフトも多様なベンチで稼働するので、選択時に悩みます。Windows PC に導入するにも上述のようにいろいろ方法がありますが、基本的には unix 環境を構築するみたいです。このUnix環境の構築の手法も Windows10 からは Windows10の付加機能で対応でき、その環境(bash:unixシェル(Ubuntu ; Linux)の中でのインストールも可能になっています。

参考;
 Windows しか使ったことのない方へ。linux などのOSでは、一般的にはファイル名等、大文字と小文字は区別されます。linux環境内のコマンドラインでプログラム等を実行する場合は、大文字と小文字を意識してください。
例 ; paraFoam など。

あと、ユーザーマニュアル

英語版 ユーザーマニュアル(sourceforge, Ver.6, 2018)
日本語版 ユーザーマニュアル一般社団法人 オープンCAE研究会


Windows Subsystem for Linux あるいは Bash on Ubuntu on Windows のインストール

【手順】

  1. ウインドウズマーク(スタートボタン)を右クリック
  2. 「プログラムと機能」を左クリック
  3. 開いたウインドウ左側の「Windowsの機能の有効化または無効化」を左クリック
  4. 開いたウインドウの「Windows Subsystem for Linux(Beta)」にチェックを入れOKボタンをクリック
  5. 変更が適用されます
  6. 再起動します
  7. 開発者モードを有効化するために、スタートメニュー→左下の歯車(設定)→開いたウインドウの「更新とセキュリティ」→左側下方の「開発者向け」をクリック。
  8. 「開発者モード」をチェック、警告に「はい」をクリック。インストールされる。
  9. 再び再起動
  10. スタートボタンを右クリックして一覧から「コマンドプロンプト」を開く
  11. コマンドプロンプト内で「bash」と打ち込んで Enter
    途中の確認で「y」入力。ユーザー登録とパスワード設定。

    Microsoft Windows [Version 10.0.14393]
     (c) 2016 Microsoft Corporation. All rights reserved.
    C:Userstomna>bash
    -- ベータ機能 --
    これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
     次のサイトに示される条件に基づいてライセンスされています。
    https://aka.ms/uowterms
    続行するには、"y" を入力してください: y
     Windows ストアからダウンロードしています... 46%
    
    Windows ストアからダウンロードしています... 100%
    ファイル システムを展開しています。この処理には数分かか ります...
    既定の UNIX ユーザー アカウントを作成してください。ユー ザー名は、Windows のユーザー名と一致する必要はありません。
    詳細: https://aka.ms/wslusers を参照してください
    新しい UNIX ユーザー名を入力してください: yourID
    新しい UNIX パスワードを入力してください:*************
    新しい UNIX パスワードを再入力してください: *************
    passwd: password updated successfully
    インストールが正常に終了しました
    環境が間もなく開始されます...
    ドキュメントを参照できる場所: https://aka.ms/wsldocs
    yourID@yourMACHIN:/mnt/c/Users/yourID$
  12.  インストール終了後、アップデートをしておきます。これは随時実行してください
    sudo apt update
    sudo apt upgrade
  13. ホスト名登録ファイルの作成
    sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'

この環境で、Linux(ubuntu)用の openFOAM を以下を参考にインストールしてもかまいません。

  1. 最新の apt package list を得るために以下のコマンドを打つ
    sudo apt-get update
  2. OpenFOAM (4 in the name refers to version 4.1) と paraviewopenfoam50 とが一緒にインストールされます。※パッケージが見つからないと言われます・・・
    sudo apt-get -y install openfoam4

この記事ではこの方法はとらずに、以下のパッケージを使用してインストールします。
# ホントにインストール方法はどっちでもかまいません。

 

blueCFD-Core (非公式版 openFOAM) のインストール

blueCFD-Core は、直接 Windows にインストールできるパッケージのようです。とりあえずインストールして使用するにはあまり問題はありません。ただ、非公式版なので、アップデートが遅れたりする可能性があるかもしれません。でも、とりあえず使うのは気にしなくてよいでしょう。メリットは、bash環境やいろんなツールをまとめて簡単にインストールできることです。パッケージされているツールは、OpenFOAM、ParaView、MSYS2、MS-MPI、Gnuplot、Notebad2 の6種です。フォルダの総容量は800MBほどですのでそれなりの容量のノートパソコンでもインストールできます。

 

  1. ソースをダウンロード
    配布先サイト blueCFD-Core Project から blueCFD-Core-2017-2-win64-setup.exe 等、お好みのバージョンををダウンロードする
  2. ダウンロードが終了したらインストールファイル blueCFD-Core-2017-2-win64-setup.exe を開く(実行する)
    注意
    インストールフォルダは、program files ではなく、フォルダ名にスペースを含まないあらたなフォルダを作成して入れる方が無難です
  3. 対話形式の指示に従って、Full Instration でインストールしてしまいます。→インストール finish
  4. スタートメニューから “blueCFD-Core terminal” を実行すれば、Msys2でbash が起動します

 

以上で、openFOAM のインストールが終了します。

 

お待たせしました、ここからが openFOAM の最初の一歩です

openFOAM は、複数のファイルの大集合体です。それは、インストールしたフォルダをたどっていくとよくわかります。チュートリアルがついていますので、とりあえずこれらを利用すると雰囲気を体感できますが、そのまえに、非常におおざっぱな openFOAM の概要を示します。

terminal を最初に実行する際は、windowsの”管理者として実行”をしておかないと、起動時に permission denied のエラーが表示される可能性があります。一度設定されるとエラーが出なくなります。

openFOAM をインストールしたフォルダの中に 9つほどのフォルダができています。

AddOns : gunuplot や 可視化ポスト処理アプリの paraview, notpad2 が入っています
msys64 :bash 関係が入っているようです。端末ソフト Msys2
OpenFOAM-4.x : OpenFOAM の本体等が入っています。ここの中にある tutorials を利用します

【OpenFOAMでの計算実行手順】

    1. 基本的には DOS コンソール上の操作です。 Blue-CFD には Blue-CFD-Core terminal というコンソールがあります。おそらくパス等の環境変数をセットしてくれているので、すんなりと動きます(OpenFORM以外は動いてますが再確認中:2019/04)。

    2. caseフォルダを作成する。
      自分がこれから数値計算の入力、出力ファイルを置くフォルダを好きなどこかに好きな名前で作る。この作業フォルダの必要なファイルを含む必要最小のフォルダをcaseフォルダと呼ぶようです。
    3. 上述のtutorials のフォルダから好きなサンプルを 1. で作成したcaseフォルダにコピーする。
      (フォルダ名が長くて)カレントディレクトリィの変更が面倒かもしれないが tutorials を丸ごとコピーしてもかまわない。一般には、チュートリアルのサンプルとしては、  ./tutorials/incompressible/icoFoam/cavity/cavity が使用されます。
    4. カレントディレクトリィをサンプルのフォルダ(caseフォルダ)へ変更(移動)する
      (cavityだけコピーした場合は、その cavity がケースフォルダ)

      cd d://YourFolder//cavity
    5. cavityのなかには、三つのフォルダがあります。0
      constant
      systemこの場合は、この三つのフォルダが必要最小単位です。
      最初の 0 は、時刻0 の 0 です。なかには p と u というファイルがあります。初期状態の速度と圧力のようです。ほかにも温度の T などがあるようです。
      system の中には、○○dict というファイルが二つありますが、これはディクショナリィファイルと呼ばれるようです。MeshModelDict はメッシュモデルに関するもの、controlDictは計算方法に関する記述が入っているようです。計算開始時刻をある時刻を指定して開始することもできます。
      残りの二つは、計算手法に関する設定ファイルです。
      constant は、今回は動粘度 ν(nu)が定義されているようです。
      これらの記述書式は、ネット上でも説明されています。
    6. まず、グリッドデーターを作成する。
      OpenFOAM では、オリジナル書式のグリッドモデルファイル形式のようです。同梱されているツールを使うと、stl形式のファイルなどからメッシュモデルが作成されるようです。caseフォルダ内にて blockMesh と入力して Enter をおす(実行)

      D:YourFoldercavity> blockmesh
      /*---------------------------------------------------------------------------*
      | =========                 |                                                 |
      | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
      |  \    /   O peration     | Version:  5.x                                   |
      |   \  /    A nd           | Web:      www.OpenFOAM.org                      |
      |    \/     M anipulation  |                                                 |
      *---------------------------------------------------------------------------*/
      /*   Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt   *
      |  Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com   |
      *---------------------------------------------------------------------------*/
      Build  : 5.x-963176928289
      Exec   : blockmesh
      Date   : Apr 12 2019
      Time   : 19:32:50
      Host   : "FSET-PRD01"
      PID    : 19020
      I/O    : uncollated
      Case   : O:/0_PRG/OpenFORM/cavity
      nProcs : 1
      SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
      fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
      allowSystemOperations : Allowing user-supplied system call operations
      
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      Create time
      
      Creating block mesh from
          "O:/0_PRG/OpenFORM/cavity/system/blockMeshDict"
      Creating block edges
      No non-planar block faces defined
      Creating topology blocks
      Creating topology patches
      
      Creating block mesh topology
      
      Check topology
      
              Basic statistics
                      Number of internal faces : 0
                      Number of boundary faces : 6
                      Number of defined boundary faces : 6
                      Number of undefined boundary faces : 0
              Checking patch -> block consistency
      
      Creating block offsets
      Creating merge list .
      
      Creating polyMesh from blockMesh
      Creating patches
      Creating cells
      Creating points with scale 0.1
          Block 0 cell size :
              i : 0.005 .. 0.005
              j : 0.005 .. 0.005
              k : 0.01 .. 0.01
      
      
      Writing polyMesh
      ----------------
      Mesh Information
      ----------------
        boundingBox: (0 0 0) (0.1 0.1 0.01)
        nPoints: 882
        nCells: 400
        nFaces: 1640
        nInternalFaces: 760
      ----------------
      Patches
      ----------------
        patch 0 (start: 760 size: 20) name: movingWall
        patch 1 (start: 780 size: 60) name: fixedWalls
        patch 2 (start: 840 size: 800) name: frontAndBack
      
      End
      
      
      D:YourFoldercavity>
      
      
      

constant/PolyMesh というフォルダに何か生成されています。

  1. ソルバー icoForm を実行する。
    この “icoForm” というのがソルバーで、今回の caseフォルダーである cavity の中に納められている各ファイルの内容を自動的に読み込んでその条件に従って計算を行うプログラム実行シェル本体です。icoFoam は、「非定常層流解析ソルバー」です。ほかにもいろいろあります。 tutorialsのフォルダ分類は、ソルバーの種類を反映させた分類になっていたわけです。

    D:YourFoldercavity> icoFoam

おもなソルバーの名称と対象問題: 標準ソルバでもかなりの種類があります。ユーザーガイドの3章後半を見れば、大抵のものができそうに思います。

    1.  basic : 基本グループ
      • potentialFoam : ポテンシャル流れソルバ
      • laplacianFoam ラプラシアン方程式ソルバ/固体の熱伝導などに使用
      • potentialFoam ポテンシャル流ソルバ{NS方程式コード用の初期場作成にも利用します)
      • scalarTransportFoam パッシブスカラー用の輸送方程式ソルバ
    2. scalarTransportFoam : スカラー輸送方程式ソルバー
    • icoFoam : 非定常層流解析ソルバー
    • incompressible : 非圧縮性流体
        • icoFoam : 非定常層流解析ソルバ
        • simpleFoam : 定常乱流解析ソルバー (SIMPLE 法)
        • pisoFoam : 非定常乱流解析ソルバー (PISO 法)
        • pimpleFoam : 非定常乱流解析ソルバー (PIMPLE = PISO + SIMPLE 法)
      • laplacianFoam : 拡散方程式ソルバー

実行すると、端末画面に時間ステップごとの情報が表示されて、どんどん上へ流れていきます。cavity フォルダの中に時刻を表す数字のファイルがたくさんできます。これらが各時間ステップの計算結果です。controlDict の、開始時刻、タイムステップ、データ書きだしステップ、などをいじくって、ファイルの数が増減したり、時間ステップが変わったりする様子を確認してみてください。これでなんとなく、OpenFOAM の使い方やファイルの存在意義がわかったのではないでしょうか。各ファイルの記述、作成方法については、ネットやマニュアルで勉強してみてください。

この結果ファイルを可視化してくれるのが paraView です。bash が計算用フォルダ cavity にいれば(=カレントディレクトリィがcavity ならば)、paraFoam というスクリプトを実行すると自動的に可視化してくれます。三角ボタンを押せばアニメーションになります。が、インストールによってはバグがあって、ファイルやライブラリィが見つからないという致命的エラー(Fatal Error)を出して動きません。paraViewは動きますので、表示ファイルを指定して試してみてください(ところがこれも慣れがいるようです、paraViewについてはまたあらためて。。。)

さて、最後ですが、このOpenFORMは、基本的には2つの要素で構成されているとあります。

ソルバとユーティリティ、

です。これらをまとめてアプリケーションと呼び、実体は数値解析のためのC ++ライブラリです。ソルバは差分方程式の記述部分が含まれ、ユーティリティは初期条件ほかさまざまなデータの操作を受け持ちます。したがって、新しい問題や解法にも対応が可能になっています。計算対象モデルは常に3次元で、2次元流れには境界条件等で対応します。座標系は直交系です。そうです、一般人の物理は今なおハエが支配しています。

 

以上が、ざくっとした OpenFOAM の導入です。

ゼロから初めて、まずは使い方がわかり、やがてプログラムをいじくることができれば、オープンソースの本来の目的である、新しいソルバー開発と製作で、OpenFOAMに是非、貢献してください。

[02]では、設定ファイルの中身を見てみます。

Blue CFD Core 2017 の BlueCFD-Core terminal を起動した直後の画面、

Setting environment for OpenFOAM 5.x mingw-w64 Double Precision (of5-64), using MSMPI71 – please wait…
Environment is now ready. Notes:
– You can change between installed versions by running: ofmenu
– You can change to other predefined versions by running: ofmenuNew

userID@machiName MINGW64 OpenFOAM-5.x~

 

Setting environment for OpenFOAM 5.x mingw-w64 Double Precision (of5-64), using MSMPI71 – please wait…

    Your “mingw_w64” operating system is not supported by the modifications
    made to OpenFOAM. For further assistance, please report at:
        https://github.com/blueCFD/Core/issues

Environment is now ready. Notes:
   – You can change between installed versions by running: ofmenu
   – You can change to other predefined versions by running: ofmenuNew

user@MACHINENAME MINGW64 OpenFOAM-5.x ~
$ ofmenuNew
———- Setting up OpenFOAM variables for new build ———-
— Current MPI chosen for parallel operations: MSMPI71
Choose one option for selecting the new build architecture:
    1 – OpenFOAM 5.x mingw-w64 Single Precision (of5-64S)
    2 – OpenFOAM 5.x mingw-w32 Double Precision (of5-32)
    3 – OpenFOAM 5.x mingw-w32 Single Precision (of5-32S)
Choose one of the numbers 1 to 3 (any other for none) then press Enter:
1
Setting environment for OpenFOAM 5.x mingw-w64 Single Precision (of5-64S), using MSMPI71 – please wait…
Environment is now ready. Notes:
   – You can change between installed versions by running: ofmenu
   – You can change to other predefined versions by running: ofmenuNew

user@MACHINENAME MINGW64 OpenFOAM-5.x ~
$