はじめに
記事に主たる目的は研究の引き継ぎとサークル(鳥人間,ラジコン)におけるOpenFOAM利用促進です.そのため,外部視点では情報が不十分な場合もあると思います.その場合はコメントに書いていただくか,ChatGPTにでも聞いてください.
Windows10とMacOSで,以下の手順に従って構築した環境でのバックステップ流れチュートリアルの動作を確認しています.それ以外の環境でもDockerが動作すれば問題ないはずです.
Dockerとは
誤りを恐れずに非常に簡単に言うと,Dockerとはパソコンの中にまた別のパソコンを用意するようなものです.これによって,実際に存在するパソコン(ホスト)の中に規定されている環境と異なる環境を作ることができます.
もしDockerを使用しない場合,実体のあるパソコン上に複数の開発環境を形成することになって,それはさまざまなエラーを引き起こすリスクがあります.また,今回取り扱うOpenFOAMのように,そもそもDockerがなければ特定の環境で満足に動かないこともありえます.
Dockerで開発環境ごとに仮想的なパソコンを用意することでそれらの問題を解決することができます.
Dockerの使い方
先ほどまでの話で出てきた「仮想的なパソコン」とはDockerの用語で言うと,「container」になります.このcontainerには環境の構成に関係するファイルが必ず入っていて,同時に定められた上限までのファイルを好きに保存することができます.
このcontainer内部に構築する環境を定義しているものが,「image」です.imageはDocker Hubから入手することもできるし,自身のcontainerから作ることもできます.今回はOpenFOAMの環境が構築されたimageをそのまま使用して,最低限のOpenFOAMが使える環境を作ります.
実際の手順としては,
1.Dockerをインストールする.
2.Docker HubからOpenFOAMの環境が定義されたimageを貰う.
3.そのimageに基づいてOpenFOAMの環境が構築されたcontainerを作る.
4.containerにVSCodeやDocker Desktopなどでアクセスして計算を行う.
という手順となります.
詳細な手順
1.Dockerをダウンロードしてインストールする
Docker公式からダウンロードすれば基本問題ないです.
(もしNox playerなどゲーム用のAndroidエミュレータを利用されていると,Hyper-V関係の衝突が起こってdockerが動作しない場合があります.その場合はどちらかを諦めるか,それぞれのソフトウェアのガイドに従って調整しましょう.)
2.OpenFOAMの環境が構築されたimageを取得する
いろいろなimageが候補に上がりますが,今回は使い慣れているopencfd/openfoam-defaultを使用します.コマンドラインで以下のコマンドを入力するとダウンロードが始まります.
# docker pull opencfd/openfoam-default
場合によってはsudoもしくは管理者権限コマンドプロンプトを使用してください.ダウンロードが成功したかはDocker Desctopまたはコマンド「docker images」で確認できます.
3.imageをcontainerにする.
まず作業用ディレクトリを作ります.これは自分で管理できるところならどこでも良いです.
imageは「docker run」コマンドでコンテナにすることができます.今回はエラー防止とホスト側のストレージを共有するために追加の引数をつけるので以下のようになります.
# docker run -it --mount type=bind,source=(作業用ディレクトリの絶対パス),target=/root opencfd/openfoam-default
これで与えたパスをcontainer上のルートディレクトリにしたcontainerが作られます.カッコ書きで示したパスは,例えばC:\Users\(ユーザ名)\OpenFOAM_WORKDIRやD:\OpenFOAM_WORKDIRのように与えます.(windowsでなくmacやlinuxの場合はその様式に従う.)
4.containerに入る.
Docker Desktopからターミナルを開いてもいいですし,「docker exec」コマンドで入っても良いですが,おすすめはVScodeを用いた方法です.
VSocdeの拡張機能で「Remote Exproler」を追加してください.
これを追加するとサイドバーにこのアイコンが追加されると思います.
Docker Desktopを起動した状態でこれを開くと,以下のようにコンテナが表示されます.
このコンテナにカーソルを合わせると初回はattachと選択肢が出てくるので,そこから入ります.初回以降はもう一つ出てくるopenの方から入りましょう.
開いた状態がこのような形です.上のツールバーからターミナルを開くと,container内のターミナルが開かれます.
OpenFOAM本体を動かす場合はこのターミナルを介して命令を送りましょう.