0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

preCICE / OpenFOAM v9 on Macのカスタマイズ

Last updated at Posted at 2021-07-29

はじめに

MacでFSIをしたい!ということで、その方法をまとめたものです(未完、随時更新中)。
なお、先の記事をベースに執筆していますので重複している箇所が先の記事と多々ありますこと、ご承知おきください。

なお、OpenFOAMはFoundation版、ESI版の両方が使いたいということで、Foundation版をベースにDocker Imageのカスタマイズを行うという、回りくどいことをやっております。
FSIだけに注力するのであれば、ESI版のイメージをもってきた方が良いです。

OFv9のMacへのインストールの詳細はこちらのQiitaページやこちらのcfdengineのページも参考になると思います。

Dockerのインストール

Dockerサイトから,Docker Desktopをダウンロード,インストールします。ここでは特筆事項はありません・・・(楽でいいですよね)。

インストールが終了しましたら,Docker Desktopを起動します。こんな感じで右上にクジラマークが現れます。

Screen Shot 2020-10-17 at 23.41.46.png

OpenFOAMv9のインストール

FoundationにあるFoundationに従ってインストールします。openfoamというディレクトリを作成し,その中で,以下のコマンドを打ち込みます。

本家から抜粋
sudo curl --create-dirs -o /usr/local/bin/openfoam9-macos http://dl.openfoam.org/docker/openfoam9-macos
sudo chmod 755 /usr/local/bin/openfoam9-macos

OpenFOAMコンテナ

openfoamのディレクトリ内で以下のコマンド(スクリプト)を実行することにより,OpenFOAMの環境が立ち上がります。

openfoam9-macos

これでblockMeshやsolversが使えるようになっています。

イメージのカスタマイズ方法

まず,イメージのIDを確認します。

docker images

Screen Shot 2020-10-16 at 22.37.49.png

この__Image ID__をメモしておきます。その後,rootでImageを立ち上げます。

docker run -it -u=root <Image ID>

スクリプトで立ち上げた場合は,aptなどでアプリをインストールしても,記録されません。が,rootで起動した場合はカスタマイズや各種設定変更はコンテナに記録されます。この状態で自分の所望のアプリをインストールします。

FSIを行うのに必要なアプリ・パッケージは後述します。

その後,コンテナを停止(ログアウト),__Container ID__を確認します。

docker ps -a

変更を加えたコンテナをイメージにcommitさせます。

docker commit <container ID> <Repository>

Repositoryですがデフォルト設定を活かし,openfoam/openfoam8-graphical-appとしておくのが良いです。ここでRepositoryを自分の好きな名に変えることも可能ですが,その際は起動スクリプト/usr/local/bin/openfoam8-macos内のDOCKER_IMAGESを修正する必要があります。

たとえば,Repositoryをopenfoam8としたいのであれば,

example
docker commit <container ID> openfoam8
openfoam8-macos
DOCKER_IMAGE='openfoam8' 

とします。

FSIの追加パッケージリスト

個人的には,lv, gmshgit, htop, python3.8, ffmpeg, cmake, gfortran, python3-pip(numpy, pandas, torch, tensorflow, scikit-learn, Pillow, matplotlib)1, などがあると良いと思います。

そのうえで、FSIを行うためのパッケージは、

  • calculix-cgx & calculix-ccx
  • libprecice2,
  • OpenFOAM v2112 & ThirdParty 3
    になります。

それでは個別にインストール方法を見ていきます。

calclulix

Ubuntuのパッケージライブラリに登録されていますので、aptをするだけでインストールできます。

apt install caculix-cgx calculix-cxx
apt install libarpack2-dev libspooles-dev libyaml-cpp-dev

なお、rootでDockerイメージを立ち上げた際は、sudo は不要です。

calculixの結果ファイルfrdをvtk形式に変換する場合は、

apt install mono-complete

をインストールしたのち、

mcs -out:frdToVTKConverter.exe frdToVTKConverter.cs

でコンバーターを作成します。実際にデータ変換する場合は、

mono frdToVTKConverter.exe /path/to/frdFile.frd

とすればvtkファイルが得られます。

preCICE

preciceのインストールはQuickstartが参考になります。

wget https://github.com/precice/precice/releases/download/v2.3.0/libprecice2_2.3.0_focal.deb
apt install ./libprecice2_2.3.0_focal.deb

openfoam-adapter

preciceのOFアダプターのコンパイルに必要なパッケージをまずはインストールします。

apt install build-essential pkg-config cmake git

ESI版OFの環境にしたうえで、

git clone --branch=master --depth 1 https://github.com/precice/openfoam-adapter
cd openfoam-adapter
./Allwmake

これでadapterが出来上がります。

quickstart tutorial

OpenFOAM / preciceの連携がとれているかの確認のチュートリアルを動かしてみます。

quickstart-setup.png

具体的には、c++で作成されたrigid body solverとOpenFOAMとの連携を行います。
まずはチュートリアルファイルをダウンロードします。

git clone --branch=master --depth 1 https://github.com/precice/tutorials.git
cd tutorials/quickstart

次いで、c++のrigid body solverをコンパイルします。

cd solid-cpp
cmake . && make

あとは実際に実行するだけですが、FSI実行には2つのターミナルを立ち上げる必要があります5
片方のターミナルで

terminal-1
cd solid-cpp
run.sh

としたうえで、他方のターミナルで

terminal-2
cd fluid-openfoam
run.sh

とするとカップリング計算が開始されます。

計算結果をParaviewで可視化すると、

quickstart-result.png

のような結果がえられます。

最後に

OpenFOAMのDockerイメージのカスタマイズし、FSIができるような環境構築の方法をまとめてみました。
かならい回りくどいやり方をしております。簡単な方法がありましたら、お教えいただければと思います。

  1. torchインストール時にここにあるようなエラーでインストールできないという事象が発生しました。torchをここから直接ダウンロードし,pip3でインストールすることにより解決できます。または,pip --no-cache-dir install torchとしても解決することができます。

  2. https://github.com/precice/precice/releases/tag/v2.2.1

  3. https://develop.openfoam.com/Development/openfoam/-/blob/master/doc/Build.md

  4. https://precice.org/quickstart.html より

  5. docker exec -it <container id> /bin/bash とすると同一コンテナに入れます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?