2020年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM

 4月は勉強会も開催できませんでしたので、毎年恒例の入門講習ができませんでした。その代わりといっては何ですが、こちらの方で入門の記事などを書いていきたいと思います。

OpenFOAMについて

 OpenFOAMはオープンソース(GPLライセンス)のCFD(Computational Fluid Dynamics)ツールボックスです。250を超えるアプリケーションを内包しており、それらの組み合わせで流体計算を実施します。

 OpenFOAMは企業や学術・研究機関で使用されています。Google ScholarでOpenFOAMと検索すると17000件ヒットします。

 OpenFOAMは二つのバージョンがあります。もともと開発を行っていたThe OpenFOAM Foundation Ltd(https://openfoam.org/)から出ているバージョンと、ESI傘下のOpenCFD Ltd から出ているバージョンがあります。どちらも開発はリンクしていますが、全く同じ機能が載っているわけではなく、ソースコードの構成も異なっていたりします。使うときは自分の欲しい機能が載っているバージョンを選択することになります。

 OpenFOAMに含まれているアプリケーションは主にプリプロセスとソルバ―、ポストプロセスに分かれます。

OpenFOAMの3要素

 OpenFOAMはいろいろな計算ができる標準ソルバが搭載されています。これらのソルバを使うことで、さまざまな問題が計算できます。次の図に計算ができる分野を示します。これらはOpenFOAMが計算できる分野の一部です。

OpenFOAMの計算分野

 OpenFOAMには長所と短所があります。ざっくりとそれらを紹介します。

[長所]
 ・ユーザーによるコミュニティが発展しているため
  使用者同士での情報提供や助言等の恩恵が受けられます。

[短所]
 ・マニュアルはありますが、公式のサポートはありません。
  設定する数値などの目安は自分たちで考える必要があります。
  (デフォルト値はありません)
 ・操作はCUI(コマンドベース)です。

blockMesh  // メッシュ作成
foamJob  // 計算実行
simpleFoam  // ソルバの実行

はじめるために

 OpenFOAMを始めるためにはいくつかの準備が必要です。それらを図に表しました。

OpenFOAMの計算に必要なもの

 まずはインストールです。

 一つ目はLinuxでソースコードをコンパイルするストロングスタイルで最も基本のスタイルです。サポート外のLinuxだと地獄が待っているかもしれません。

 二つ目はWindows限定WSL(Windows Subsystem for Linux)を使うスタイルです。WSLはWindows10上でLinuxを使うことができる機能 です。最近はスタンダードになりつつあります。

 三つめは公式のDockerスタイル(Mac、Linux、Windows)です。Macなどではこれを利用すると導入が楽だったりします。

 最後は伝統的な仮想マシンスタイルです。VirtualBoxやVMWareを使ってPC上に仮想のマシンを構築します。日本初のOpenFOAMプリインストールOSのDEXCSや海外のCAE Linuxを使うと、ソフトインストールを省略できます。ただ、仮想マシンの場合はマシンの能力をフルに使えない欠点があります。

 次に計算用のマシンが必要です。大学、企業なら数値計算用のワークステーションやブレードサーバを購入すればいいと思います。趣味ならゲーミングPCがベターです。CPU、GPUともにハイスペックでメモリも多いので、そこそこの計算ができます。

 OpenFOAMはCPUとメモリが重要です。OpenFOAMはライセンスコストがかからないため、多くのCPUを使って計算ができます。そのためCPUの数で計算の速度が変わります。

 スパコンを使うという選択もあります。産業利用ならFOCUSという産業利用向けの公的スーパーコンピュータがあります。FOCUSは公益財団法人 計算科学振興財団(https://www.j-focus.or.jp/focus/)のページをご覧ください。

 アカデミックなら大学関係のスパコンを借りることも視野に入れます。代表的なスパコンのページを紹介します。
  ・東京大学
   https://www.cc.u-tokyo.ac.jp/supercomputer/

  ・九州大学
   https://www.cc.kyushu-u.ac.jp/scp/system/new-system.html

  ・名古屋大学
   http://www.icts.nagoya-u.ac.jp/ja/sc/

  ・京都大学
   http://www.iimc.kyoto-u.ac.jp/ja/services/comp/

 クラウドサービスも最近では計算機の選択肢に入ります。クラウドで計算を流す方法も豊富(AWS、Azureなど)になってきていますが、もっと簡単にOpenFOAMを実行する環境としてRescale(https://www.rescale.com/jp/)があります。企業、大学、個人でも契約可能です。サーバーの準備はブラウザ上で設定をクリックして決めていく形になります。従量課金、デポジットの両方が使用可能です。

計算の仕方

 一般的な解析のフローを図に示します。この記事ではこのフローに従って説明します。

計算のフロー

計算の仕様を考える
 どんな計算をするか、どのような形か、何の物性を使うのか、どこに、どの条件を設定するのか、どれを結果として得るのか、これらを最初に考えます。ここの仕様が間違っていると出てくる計算結果も間違ってしまいますので、慎重に決めます。

計算の仕様

形状作成
 大体のモノの形状は複雑のため、3DCADを使って形状を作ります。オープンソースのCADソフトだと「FreeCAD」があります。OpenFOAMではSTLファイルを使って形状を定義します。

形状作成

メッシュ作成
 OpenFOAMにはメッシャーが含まれています。一つはblockMeshでブロック形状の組み合わせで形を作るメッシャーになります。ブロックが基本形状のため、複雑な形のメッシュを作るは難しいです。

画像7

 複雑な形状にはsnappyHexMeshが使えます。このメッシャーは形状を定義したSTLファイルにベースメッシュをスナップさせて目的のメッシュ作ります。

画像8

条件設定
 条件はテキストファイルに書き込みます。ファイルの中身それぞれで書く内容が違うため、サンプルのデータなどを見て書き方を学ぶ必要があります。

条件設定

計算実行
 OpenFOAMだと計算実行はコマンド入力で行います。

 一つは直接計算ソルバの名前を打ち込むイメージしやすいやり方です。計算実行中のログは画面に表示されるだけで残りません(>log.txtなどを付けてファイルにログを出力すれば残ります)。

 二つ目はfoamJobコマンドを使う方法です。マニュアル記載の計算実行方法で計算ログはファイルに書き出されます。

 三つ目は計算実行用スクリプトAllrunを実行する方法です。基本的に自分で用意します。チュートリアルの問題に入っていることが多いので、それを参考に作ります。マスターすると処理を自動化できます。

$ icoFoam  //ソルバの直接実行
$ foamJob  
$ ./Allrun //Allrunの事項

ポスト処理
 ポスト処理はParaViewを使います。OpenFOAMの計算結果はParaViewで読み込むことができます。コンタや流線、ベクトル図などが作成できます。

画像10

 コマンドベースで結果を出力するユーティリティもあります。y+、トルク、任意面の流量などが出力できます。

勉強の仕方

マニュアル
 ユーザーマニュアルが公開されています。
 ・ESI版
  https://www.openfoam.com/documentation/user-guide/
  https://www.openfoam.com/documentation/tutorial-guide/

 ・Foundation版
  https://cfd.direct/openfoam/user-guide/

 どちらも機能を完全に網羅しているわけではありません。後述のチュートリアルは避けて通れないです。

書籍

 日本語の書籍は二つあります。一つは「OpenFOAMによる熱移動と流れの数値解析」です。広くOpenFOAMの使い方に書いてあります。

https://www.amazon.co.jp/OpenFOAM%E3%81%AB%E3%82%88%E3%82%8B%E7%86%B1%E7%A7%BB%E5%8B%95%E3%81%A8%E6%B5%81%E3%82%8C%E3%81%AE%E6%95%B0%E5%80%A4%E8%A7%A3%E6%9E%90-%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3CAE%E5%AD%A6%E4%BC%9A/dp/4627691017/ref=cm_cr_arp_d_product_top?ie=UTF8

 二つ目は「OpenFOAMプログラミング」です。OpenFOAMのコードの中身について解説した本で非常な有用な情報が書かれていますが、バージョンは5年ほど前のバージョンとなっています。バージョンの差について呑み込めるようになってから読んだ方が無難です。最近のバージョンでは本に書いているコードはコンパイルできません。

https://www.amazon.co.jp/OpenFOAM%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Tomislav-Mari%C2%B4c/dp/4627670915/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=OpenFOAM%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&qid=1587295926&s=books&sr=1-1

同人誌

・OpenFOAMの歩き方(合本版)v1912対応版

同人誌表紙

 手前味噌ですみません。日本語の商業誌の前に読む本として書いた本になります。OpenFOAMを使っている人がどうやってインプットを用意しているか思考に沿って解説することをコンセプトに書きました。

Boothで販売中(1500円)
https://hammamania.booth.pm/items/1741607

 環境構築、チュートリアルの実行、自分で用意した形状で計算、応用範囲のソルバの使い方、ネタ探しなどいろいろと書いています。バージョンアップに追従するようにしています。

チュートリアルケース

 OpenFOAMのインストールフォルダに入っているチュートリアル問題です。これが真のマニュアルです。読むためにはOpenFOAMのインプット構成が分かっている必要があるため、前述のマニュアルや本を読む必要があります。チュートリアルケースは次の図のように分野ごとにフォルダ分けされています。

画像12

XSim
 OpenFOAMはコマンドベースなので、GUIに慣れている人にはとっつきにくいです。その中でWeb上でOpenFOAMのインプットを作れるサービスである「XSim(https://www.xsim.info/)」があります。

 現時点で無料で利用でき、形状を定義するSTLファイルのサイズは5MBまで使えます。またTwitterIDでログインすればデータを5個まで残せます。

 画面上で条件を設定して、インプットをダウンロードするとOpenFOAMを実行する直前のデータになっていて、同梱されているAllrunを実行すると計算ができます。

画像13

コミュニティ
 日本ではOpenFOAMのコミュニティが全国的に広がっています。OpenFOAMなどオープンソースのCAEソフトウェアを取り扱う学会があり、オープンCAE学会(http://www.opencae.or.jp/)といいます。年2回、6月総会と12月シンポジウムで講習会を開催しています。シンポジウムでは講演会があり、ユーザーの使用事例などが聞けます。

オープンCAE勉強会というOpenFOAMなどを取り扱う勉強会も日本の各地で行われています。ユーザー同士の勉強会で東京、大阪、岐阜、富山などで開催していて、いろいろな人に直接質問することができます。

まとめ

 OpenFOAMはオープンソースのソフトで誰でも使用してよい流体解析のツールボックスです。

 OpenFOAMはサポートがあるわけではないので、マニュアル、書籍、コミュニティを活用して学習する必要があります。そのためOpenFOAMは商用コードと逆で、学習コスト>>>ライセンス料という難しいアプリケーションになっていますが、それを補うほどの恩恵があります。

 最近は先人の残した遺産がたくさんあるのでコツさえつかめば何とかなるオープンソースCAEコードになっていますので、ぜひ、学会や勉強会に行っていろんな情報を集めるようにしてください。

良いOpenFOAMライフを!!!

この記事が気に入ったらサポートをしてみませんか?