16
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

この記事はM2 Macbook Airにオープンソースの流体解析ソフトウェアOpenFOAMをインストールする方法、またチュートリアル(ダムブレイク)の実行方法をまとめた記事です。

はじめに

私は学生時代、土木・海岸工学分野を専攻していました。
現在はIT業界のエンジニアとして働いていますが、改めて海岸工学や土木、数値流体力学を学習したいと強く思い、アウトプットの一環として今回Qiitaに記事を投稿してみました。

私は以前windows環境でOpenFOAMを使った研究を行っていましたが、MacでもOpenFOAMを使いたいと思い、OpenFOAMのインストールを行いました。

そこで、この記事はM2 Macbook AirでopenFOAMをインストールする方法を整理します。

記事の対象読者

  • OpenFOAMに関心のある方・インストールしたい方
  • ITやソフトウェアに深い理解は無いが、計算できる環境を整えたい方

環境

  • M2 MacBook Air
  • OpenFOAM v2012 ※1
  • ParaView -5.10.1 ※2

※1 以前使用していたOpenFOAMのバージョンがv2012なので、今回もv2012をインストールします。
※2 計算結果の可視化にParaViewを使用します。インストール方法は省略します。

OpenFOAMv2012のインストール

公式サイトを参考にdockerを用いてOpenFOAMをインストールします。

※今回は、dockerのインストール方法についての説明は省略します。
(Qiitaを含めて情報はたくさんありそう)

1.OpenFOAM v2012をインストールする準備

# ユーザのホームディレクトリに移動する
$ cd $HOME

# OpenFOAMの作業用ディレクトリを作成し、移動する
$ mkdir OpenFOAM
$ cd OpenFOAM

# openfoam-dockerという名前の空ファイルを作る
$ touch openfoam-docker

次に、作成したopenfoam-dockerファイルにこちらのサイト内のopenfoam-docker scriptの内容をコピーする(コピペすればOK)

2.OpenFOAM v2012をインストールする

# OpenFOAMの作業用ディレクトリに移動する
$ cd $HOME/OpenFOAM

# openfoam-dockerファイルへの実行権限を与える
$ chmod +x openfoam-docker

# openfoam-dockerファイルに対してopenfoam2012-defaultという名前のシンボリックリンクを作成する
$ ln -sf openfoam-docker openfoam2012-default

# OpenFOAM環境のイメージを起動する
$ ./openfoam2012-default

# コマンドの実行結果...なんだかうまくいってそう
---------------------------------------------------------------------------
  =========                 |
  \\      /  F ield         | OpenFOAM in a container [from OpenCFD Ltd.]
   \\    /   O peration     |
    \\  /    A nd           | www.openfoam.com
     \\/     M anipulation  |
---------------------------------------------------------------------------
 Release notes:  https://www.openfoam.com/news/main-news/openfoam-v2012
 Documentation:  https://www.openfoam.com/documentation/
 Issue Tracker:  https://develop.openfoam.com/Development/openfoam/issues/
 Local Help:     more /openfoam/README
---------------------------------------------------------------------------
System   :  Ubuntu 20.04.3 LTS  (admin user: sudofoam)
OpenFOAM :  /usr/lib/openfoam/openfoam2012
Build    :  _269d0ffd5c-20210619 OPENFOAM=2012 patch=210618
                                  一部省略
openfoam2012:~/

# exitと打ち込むとOpenFOAMを終了できる
openfoam$ exit

3.OpenFOAM内でnano、treeを使えるようにする (任意)

前節でOpenFOAMを使える環境を整えた。この節では、nanoエディタやtreeコマンドをOpenFOAM環境内で使えることを目標にする。
この節を飛ばして、次に進んでも計算はできます。

# OpenFOAMの作業用ディレクトリに移動し、Dockerfileを作成する
$ cd $HOME/OpenFOAM
$ touch Dockerfile

Dockerfileの中身をこんな感じにする

FROM opencfd/openfoam-default:2012
RUN apt update && apt install tree && apt install nano

Dockerfileが作成できたら、以下を実行する

# OpenFOAMの作業用ディレクトリに移動
$ cd $HOME/OpenFOAM

# 作成するイメージ名を「myopenfoam」とした。
$ docker build ./ -t myopenfoam

# コンテナの実行、「-it」オプションをつけないと動かなかった
$ docker run -it myopenfoam

# 実行結果、おそらく大丈夫だろう
---------------------------------------------------------------------------
  =========                 |
  \\      /  F ield         | OpenFOAM in a container [from OpenCFD Ltd.]
   \\    /   O peration     |
    \\  /    A nd           | www.openfoam.com
     \\/     M anipulation  |
---------------------------------------------------------------------------
 Release notes:  https://www.openfoam.com/news/main-news/openfoam-v2012
 Documentation:  https://www.openfoam.com/documentation/
 Issue Tracker:  https://develop.openfoam.com/Development/openfoam/issues/
 Local Help:     more /openfoam/README
---------------------------------------------------------------------------
System   :  Ubuntu 20.04.3 LTS  (admin user: sudofoam)
OpenFOAM :  /usr/lib/openfoam/openfoam2012
Build    :  _269d0ffd5c-20210619 OPENFOAM=2012 patch=210618

Docker DesktopのImagesを確認してみると、myopenfoamが追加されている。
これから「myopenfoam」イメージを使用する場合は、「opencfd/openfoam-default」を削除してもOK

スクリーンショット 2024-07-13 9.59.43.png

4.チュートリアルを実施する準備

# OpenFOAMの作業用ディレクトリに移動する
$ cd $HOME/OpenFOAM

# [前節で新たにイメージを作成した場合]

# コンテナ内のデータ(計算結果)を残すために、バインドマウントという方法を用いる
# 計算結果保存用ディレクトリcalDataをローカルに作成
$ mkdir calData

# ホストマシンのディレクトリ 「/Users/username/OpenFOAM/calData」を
# コンテナのディレクトリ 「/root」にバインドマウントをして、OpenFOAM環境のイメージを起動する
$ docker run -it -v /Users/username/OpenFOAM/calData:/root myopenfoam

# [前節で新たなイメージの作成を行っていない場合]
# OpenFOAM環境のイメージを起動する
$ ./openfoam2012-default
# チュートリアルディレクトリに移動する、$FOAM_TUTORIALSはチュートリアルディレクトリへのパス
$ cd $FOAM_TUTORIALS

# 中身を確認する
$ tree -L 1
# treeコマンドが使えない方は以下のコマンドを実行
$ pwd; find . -maxdepth 1 | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g'

# 実行結果
.
|-- Allclean
|-- Allcollect
|-- Allrun
|-- Alltest
|-- AutoTest
|-- DNS
|-- IO
|-- basic
|-- combustion
|-- compressible
|-- discreteMethods
|-- electromagnetics
|-- financial
|-- finiteArea
|-- heatTransfer
|-- incompressible
|-- lagrangian
|-- mesh
|-- modules
|-- multiphase
|-- preProcessing
|-- resources
|-- stressAnalysis
`-- verificationAndValidation

# 今回は、ダムブレイクまで移動
$ cd multiphase/interFoam/laminar/damBreak

# 計算用ディレクトリを作成
$ mkdir -p $FOAM_RUN

# ダムブレイクのチュートリアルを計算用ディレクトリにコピーする
$ cp -r damBreak $FOAM_RUN

# 計算用ディレクトリに移動、中身を確認
$ cd $FOAM_RUN
$ ls

実行結果
damBreak

# コピーしたdambreakディレクトリの名前を変更する (任意)
$ mv damBreak mydamBreak

5.チュートリアルの実施 (ダムブレイク)

無事にインストールできたか確認するためにダムブレイクのチュートリアルを行う。

早速チュートリアルを実行しようと思うが、その前にmydamBreakの中身を確認する。
ディレクトリ名、ファイル名で予想はできるが、簡単な説明を加えた。

# mydamBreakディレクトリに移動する
$ cd $FOAM_RUN/mydamBreak

# mydamBreakディレクトリの中身を確認する
$ tree -L 2
# treeコマンドが使えない方は以下のコマンドを実行
$ pwd; find . -maxdepth 2 | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g'

実行結果
|--0.orig
|  |-- U           #速度ベクトル場の設定
|  |-- alpha.water #水相率場の設定
|  `-- p_rgh       #静水圧を引いた圧力場の設定
|-- Allclean
|-- Allrun
|-- constant
|  |-- g                    #重力加速度の設定
|  |-- transportProperties  #流体物性
|  `-- turbulenceProperties #乱流モデルの設定(中身を確認すると”laminar”と記載がある、
                 このチュートリアルでは乱流モデルは使用せず、層流モデルを使用)
`-- system
    |-- blockMeshDict       #メッシュの生成に関する設定
    |-- controlDict         #解析制御設定(計算時間間隔や最大クーラン数などの設定)
    |-- decomposeParDict    #領域分割の設定(並列計算を行う時に確認が必要)
    |-- fvSchemes           #離散化スキーム設定
    |-- fvSolution          #緩和係数の設定など
    |-- sampling            #波高計の設置やサンプリング間隔の設定(ダムブレイクの計測値を
                                                 触ったことが無く、詳しいことはわからない)
    `-- setFieldsDict       #気相・液相分布の定義(水がある領域、空気だけの領域を指定)

Allrun、Allcleanファイルの中身を確認する。これらのファイルを実行するには「./Allrun」や「./Allclean」と打ち込めば良い。

#Allrunファイルの中身を一部抜粋
#-----------------------------------------------------------------------------
#!/bin/sh
cd "${0%/*}" || exit                                # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions

restore0Dir                                           #0.origの内容を0ディレクトリにコピーする
runApplication blockMesh                 #メッシュ生成
runApplication setFields                 #境界条件を設定
runApplication $(getApplication) #ソルバの実行、今回はinterFoam。interFoam?と思った方は
                                                                   controlDictの中身を確認するといいかも

#-----------------------------------------------------------------------------

#Allcleanファイルの中身を一部抜粋
#-----------------------------------------------------------------------------
#!/bin/sh
cd "${0%/*}" || exit                                # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions

cleanCase0

#-----------------------------------------------------------------------------

いよいよダムブレイクの計算を行う。
今回は、Allrunファイルにある「runApplication 〇〇」の部分はコメントアウトし、
コマンドを直接入力する。
(もちろん コメントアウトせずに「./Allrun」と打ち込んでもOK)

また、controlDictファイルにあるdeltaT(計算時間間隔)を0.01(s)に変更し、
endTimeは3(s)に変更している。

# mydamBreakディレクトリに移動する
$ cd $FOAM_RUN/mydamBreak

# 0.origをコピーした0ディレクトリの作成など
$ ./Allrun

# メッシュの生成
$ blockMesh

# 気相・液相の初期条件を作る
$ setFields

# 計算実行、たくさんログが出るはず
$ interFoam

# ディレクトリの確認、いい感じかも
$ ls
(一部抜粋)
0     0.1   0.2   0.3   0.4   0.5   0.6   0.7   0.8   0.9   0.orig  Allclean  constant        system
0.05  0.15  0.25  0.35  0.45  0.55  0.65  0.75  0.85  0.95  1       Allrun    postProcessing

# .foamファイルを作成 (可視化に必要)
$ touch aa.foam

ParaViewで計算結果の可視化を行う。
計算条件などの議論は置いておいて、計算はできてますね。
ダムブレイク.gif

最後に

今回、MacにOpenFOAMをインストールしてみましたが、意外とすんなりいった?と思いました。しかし、「docker」は若干のハードルかも...。

実は、この記事を執筆する過程で海岸工学分野の研究で用いられる(私も使用していた)OpenFOAMのライブラリをインストールしようと思いましたが、なかなかうまくいかず...別記事でまとめられるといいなと思っています。

16
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?