目次

はじめに

本書について
本書の対象について
お問い合わせ先
免責事項
謝辞
表記関係について
底本について

第1章 OpenFOAM

1.1 OpenFOAMについて
1.2 ライセンスについて
1.3 利用事例について
1.4 OpenFOAMを始めるには
1.5 学習方法について

第2章 環境構築

2.1 計算機の選び方
2.2 計算機の例
2.3 Windows10へのインストール
2.4 Linuxへのインストール
2.5 Macへのインストール
2.6 ParaViewのインストール

第3章 チュートリアルケース

3.1 cavityを実行してみる
3.2 チュートリアルファイルを持ってくる
3.3 メッシュ作成
3.4 条件設定
3.5 計算実行
3.6 ポスト処理

第4章 自分で用意したSTLで計算する

4.1 バックステップ流れ
4.2 チュートリアルケースを持ってくる
4.3 モデルを作る
4.4 メッシュの作成
4.5 条件設定
4.6 計算実行
4.7 残差の確認
4.8 ポスト処理

第5章 二相流

5.1 崩壊する液柱
5.2 チュートリアルケースを持ってくる
5.3 メッシュ作成
5.4 条件設定
5.5 計算実行
5.6 ポスト処理

第6章 オーバーセット

6.1 オーバーセットメッシュについて
6.2 オーバーセットの境界条件
6.3 オーバーセット領域の判別
6.4 計算結果の可視化について
6.5 剛体回転をやってみる
6.6 チュートリアルケースを持ってくる
6.7 baseフォルダー
6.8 oversetフォルダー
6.9 計算実行
6.10 ポスト処理

第7章 勉強のモチベーションの持ち続ける方法

7.1 誰も触っていない機能を使ってみる
7.2 チュートリアルケースプロジェクトに参加する
7.3 人のネタを自分なりにやってみて違う観点でまとめてみる
7.4 TwitterでOpenFOAMを検索する
7.5 論文のトレースに挑戦する
7.6 自分で簡易試験装置を作ってみる
7.7 作る時間がないときはAmazonで実験キットを探してみる
7.8 オープンCAE勉強会で何かやりたがっている人に乗っかってみる
7.9 OpenFOAM Google Groupで質問に回答する

第8章 困ったときには

8.1 勉強会に行ってみる
8.2 学会、企業のイベントに参加する
8.3 ブログに記事を書く
8.4 Twitterでつぶやく
8.5 Google groupで検索する、投稿する

第9章 OpenFOAMの追加機能

9.1 ユーザーアップグレードガイド
9.2 開発者アップグレードガイド
9.3 前処理
9.4 数値演算
9.5 ソルバーと物理モデル
9.6 境界条件
9.7 後処理
9.8 並列計算
9.9 ユーザビリティ

はじめに

本書について

 流体解析ツールボックスOpenFOAMは、オープンソースのソフトです。OpenFOAMのソースコードを眺めだすと、非常に広大でかつ深い世界が広がっていることがわかります。本書は、そんなOpenFOAMの世界を歩くための最初の道しるべとして書きました。稚拙な文章ではありますが、少しでも参考になれば幸いです。

 本書は学習コストの高さを少しでも下げるために、環境構築からOpenFOAMの操作の基本、実際に計算をする上でどう扱っていったらいいのかを説明します。応用事例として利用ニーズの高い、二相流やオーバーセット(重合格子)の実行方法についても触れます。

 本書では、数値計算手法や物理現象に関する解説はいたしません。各分野の専門書をご覧ください。

 本書はOpenFOAMの歩き方 第2版を、2020年12月にリリースされたOpenFOAM v2012に対応させたものになります。最新バージョンでの変更点やリリースノートについて追記し、OpenCFD版の最新OpenFOAMの使い方がわかるように見直しています。

 第1章はOpenFOAMについて、アプリケーションの構成、リリースの歴史から説明し、ライセンスや利用事例について述べます。

 第2章はOpenFOAMの環境構築について説明します。計算に絶対必要となるパソコンの選び方を紹介し、Windows10、Linux、MacにOpenFOAMをインストールする方法を述べます。また、結果の可視化に必要なオープンソースの可視化アプリケーションParaViewのインストールも説明します。

 第3章では、OpenFOAMの計算の基本として付属しているチュートリアルケースの実行方法を説明します。チュートリアルケースからキャビティ流れを計算するcavityを対象として、OpenFOAMのインプットファイルの構成と基本の実行コマンドについて述べます。

 第4章は、STLファイルを使った計算について説明します。OpenFOAMでは、任意形状の計算を行うためにSTLファイルを形状定義のデータとして使用します。STLファイルをもとに計算メッシュを作成するために、snappyHexMeshを使用します。snappyHexMeshが参照する設定ファイルの中身について修正する箇所を中心に説明します。

 第5章は、二相流計算について説明します。二相流計算では、それぞれの相を示す変数が増えます。各相の初期状態を設定するsetFieldsユーティリティについて、設定ファイルの内容から実行方法まで述べます。また、この章ではOpenFOAMの計算で基本となる、複数のチュートリアルケースのインプットを組み合わせて計算する方法について学びます。

 第6章で、OpenCFD版のOpenFOAMに搭載されているオーバーセットメッシュ(重合格子)機能を使用した計算方法について、用意したSTLを使って計算する方法を述べます。この章では、5章よりもさらにチュートリアルケースのインプットを組み合わせて計算します。このインプットの準備が理解できれば、OpenFOAMの計算インプットを用意する基本はマスターしたといえるでしょう。

 第7章は、OpenFOAMの勉強をするにあたり、モチベーションを維持する方法について述べます。OpenFOAMはオープンソースのため、アプリケーションの金銭的な導入コストはかかりませんが、学習コストが高いことはよく知られています。ある程度長期的に学習を行うため、モチベーションを下げないための方法は重要であると思い、代表的な学習のやり方を述べました。

 第8章は、OpenFOAMで困ったときの対処法について述べました。OpenFOAMは機能のすべてを網羅したマニュアルを持ちません。計算の設定にはカット&トライが必要になります。大なり小なり壁にあたることも多いため、そういったときの対処法について説明しています。

 第9章では、v2012の新機能について説明しています。OpenCFD版のOpenFOAMは半年に1回バージョンアップを行いますが、機能の大きな変更や追加も多いため、リリースノートを読むことは重要です。本書では、和訳したリリースノートをもとに最新の機能について紹介しています。

本書の対象について

 本書は、OpenFOAMのOpenCFD版v2012を対象にしています。結果処理はParaViewのバージョン5.8.1を使用します。旧バージョンとは、画面の構成が異なる場合があるのでご注意ください。

 本書は指定がない場合、Windows10での実行を対象としています。

お問い合わせ先

 本書に関するお問い合わせは、hammamania@gmail.comまでお願いいたします。

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。本書の内容による開発、計算の結果について、筆者はいかなる責任も負いません。

謝辞

 本書の内容についてシリーズ最初の版である上巻、下巻版をレビューいただきました高木洋平氏、出口良平氏に感謝いたします。また、OpenFOAMをはじめとするオープンCAEの世界に引き込んでくださった、オープンCAE勉強会@関西の初代幹事である冨原大介氏、2代目幹事として一緒に運営をいただいている片山達也氏に、厚く御礼申し上げます。また、普段よりご指導いただいております今野雅氏をはじめとするオープンCAE学会の関係者の皆様に御礼申し上げます。最後に、勉強会等の活動を見守ってくれている家族に深く感謝いたします。

表記関係について

 "OpenFOAM®"はソフトウェアの開発・配布元であるOpenCFD社の登録商標です。本書はOpenFOAMソフトウェアの開発・配布元であるOpenFOAM®およびOpenCFD®の商標権を持つOpenCFD社によって公認されたものではありません。

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典10」にて配布した同人誌「OpenFOAMの歩き方 第2版 v2006対応版」(サークル名:はんままにあ)を底本に、加筆・修正を加えています。

第1章 OpenFOAM

1.1 OpenFOAMについて

 OpenFOAMは、オープンソースのCFD(Computational Fluid Dynamics)ツールボックスです。200を超えるアプリケーションとユーティティがインストール後から使用でき、それらを組み合わせて、CFDの計算を実行できます。また、オープンソースであることから、カスタマイズや機能の追加も可能です。OpenFOAMはC++をメイン言語として書かれています。

 OpenFOAMは、1989年にFOAM(Field Operation And Manipulation)として開発され、2004年にOpenFOAM(Open source Field Operation And Manipulation)としてリリースされました。2011年、ESIに買収され、以降、本家となるOpenFOAM Foundation版、OpenFOAM Foundation版やExtend版と呼ばれる派生版から機能を集約したOpenCFD版のふたつのOpenFOAMが提供されています。


 ・OpenFOAM Foundation版: https://openfoam.org

 ・OpenCFD版: https://openfoam.com


 先進的な機能が多く含まれているため、最近ではOpenCFD版を使うユーザーが増えています。ただ、アップデートを重ねるごとにソースコードの構成が複雑化していることもあり、カスタマイズの資産を持っている開発者などは、OpenFOAM Foundation版を使うこともあります。

 OpenFOAMの年表を次に示します。

表1.1: OpenFOAMの年表 2004~2012年
年月日 リリースバージョン
2004/12/10 OpenCFD release OpenFOAM 1.0
2005/1/12 OpenCFD release OpenFOAM 1.0.2
2005/3/11 OpenCFD release OpenFOAM 1.1
2005/8/22 OpenCFD release OpenFOAM 1.2
2006/2/1 OpenCFD release OpenFOAM 1.3 alpha
2006/3/29 OpenCFD release OpenFOAM 1.3
2007/1/10 OpenCFD secure the OpenFOAM tredemaark
2007/1/12 OpenCFD release OpenFOAM 1.4 alpha
2007/4/11 OpenCFD release OpenFOAM 1.4
2007/8/3 OpenCFD release OpenFOAM 1.4.1
2008/5/16 OpenCFD release OpenFOAM 1.5beta
2008/7/14 OpenCFD release OpenFOAM 1.5
2008/7/28 OpenCFD release OpenFOAM 1.6
2010/6/25 OpenCFD release OpenFOAM 1.7.0
2010/8/26 OpenCFD release OpenFOAM 1.7.1
2011/6/16 OpenCFD release OpenFOAM 2.0.0
2011/8/4 OpenCFD release OpenFOAM 2.0.1
2011/8 OpenCFD acquired by Silicon Graphics International (SGI)
OpenCFD transfers its copyrights on OpenFOAM software
to OpenFOAM Foundation Inc.
OpenCFD and SGI create the OpenFOAM Foundation Inc.
2011/12/19 OpenCFD prepares OpenFOAM 2.1.0
OpenFOAM 2.1.0 released by OpenFOAM Foundation Inc.
2012/05/31 OpenCFD prepares OpenFOAM 2.1.1
OpenFOAM 2.1.1 released by OpenFOAM Foundation Inc.
2012/8/9 OpenCFD transfers its copyrights on its development
and bug-fix repositories to OpenFOAM Foundation Inc.
2012/9/12 OpenCFD acquired by Engineering Systems International (ESI) Group
ESI Group representatives replace SGI as board members of
the OpenFOAM Foundation Inc.
表1.2: OpenFOAMの年表 2013~2014年
年月日 リリースバージョン
2013/2 OpenCFD transfers ts copyrights on its development
repository to OpenFOAM Foundation Inc.
leading to the 2.2.0 release
2013/3/6 OpenCFD prepares OpenFOAM 2.2.0;
OpenFOAM 2.2.0 released by OpenFOAM Foundation Inc.
2013/6 OpenCFD transfers its copyrights on its bug-fix
repository to OpenFOAM Foundation Inc.
leading to the 2.2.1 release
2013/7/11 OpenCFD prepares OpenFOAM 2.2.1;
OpenFOAM 2.2.1 released by OpenFOAM Foundation Inc.
2013/10 OpenCFD transfers its copyrights on its bug-fix
repository to OpenFOAM Foundation Inc.
leading to the 2.2.2 release
2013/10/14 OpenCFD prepares OpenFOAM 2.2.2;
OpenFOAM 2.2.2 released by OpenFOAM Foundation Inc.
2014/1 OpenCFD transfers its copyrights on its development
repository to OpenFOAM Foundation Inc.
leading to the 2.3.0 release
2014/2/17 OpenCFD prepares OpenFOAM 2.3.0;
OpenFOAM 2.3.0 released by OpenFOAM Foundation Inc.
2014/4/25 OpenFOAM Foundation Ltd. incorporated in the UK,
with ESI Group board representation
2014/11 OpenCFD transfers its copyrights on its bug-fix repository
to OpenFOAM Foundation Ltd. leading to the 2.3.1 release
2014/12/10 OpenFOAM Foundation Ltd. releases OpenFOAM 2.3.1
表1.3: OpenFOAMの年表 2015~2017年
年月日 リリースバージョン
2015/3 OpenCFD transfers its copyrights on its development
repository to OpenFOAM Foundation Ltd.
2015/4 OpenCFD transfers its copyrights on new twoPhaseEulerFoam
mass transfer and reactions functionality to OpenFOAM
Foundation Ltd.
2015/5/22 OpenFOAM Foundation Ltd. releases OpenFOAM 2.4.0
2015/5 OpenCFD transfers its copyrights on its bug-fix patches
for 2.3.x to OpenFOAM Foundation Ltd.
2015/9/22 OpenCFD publishes its development line as the
OpenFOAM-history repository
2015/9 OpenCFD transfers its copyrights on its development repository
to OpenFOAM Foundation Ltd.
2015/10/14 OpenCFD releases OpenFOAM for Windows 2.4.0
2015/11/3 OpenFOAM Foundation Ltd. releases OpenFOAM 3.0.0
2015/11/20 OpenCFD releases OpenFOAM for Windows 3.0.0
2015/12/15 OpenFOAM Foundation Ltd. releases OpenFOAM 3.0.1
2016/1/13 OpenCFD releases OpenFOAM v3.0+
2016/6/28 OpenFOAM Foundation Ltd. released OpenFOAM 4.1
2016/6/30 OpenCFD releases OpenFOAM v1606+
2016/10/13 OpenFOAM Foundation Ltd. released OpenFOAM 4.1
2016/12/23 OpenCFD releases OpenFOAM v1612+
2017/6/30 OpenCFD releases OpenFOAM v1706
2017/7/26 OpenFOAM Foundation Ltd. released OpenFOAM 5
2017/12/31 OpenCFD releases OpenFOAM v1712
表1.4: OpenFOAMの年表 2018~2020年
年月日 リリースバージョン
2018/6/29 OpenCFD releases OpenFOAM v1806
2018/7/10 OpenFOAM Foundation Ltd. released OpenFOAM 6
2018/12/20 OpenCFD releases OpenFOAM v1812
2019/6/27 OpenCFD releases OpenFOAM v1906
2019/7/8 OpenFOAM Foundation Ltd. released OpenFOAM 7
2019/12/23 OpenCFD releases OpenFOAM v1912
2020/6/30 OpenCFD releases OpenFOAM v2006
2020/7/22 OpenFOAM Foundation Ltd. released OpenFOAM 8
2020/12/23 OpenCFD releases OpenFOAM v2012

 OpenFOAMはソルバ以外にもプリプロセス、ポストプロセスを助けるユーティリティが提供されています。メッシュや初期条件を設定するユーティリティもあれば、計算結果のファイルから追加で結果を生成するユーティリティなどもあります。

 OpenFOAMでは、計算結果の可視化にParaViewを使用します。ParaViewはKitWare社から配布されているオープンソースの可視化アプリケーションで、OpenFOAMを含め様々なデータの読み込み、可視化ができます。

図1.1: OpenFOAMの基本構成

 OpenFOAMは、様々な現象を解くための標準ソルバが最初から使用できるようになっています。OpenFOAMで解くことができる主な分野は、次の図を参考にしてください。

図1.2: OpenFOAMで計算できる分野

 OpenFOAMのメリットとデメリットを次に示します。


 ・メリット

  ─オープンソースなのでライセンス費用はかからない

  ─ユーザーによるコミュニティーが発展しているため、ユーザー同士で情報交換ができる。


 ・デメリット

  ─マニュアルはあるが、公式の無償サポートはない

  ─設定する数値などの目安は、自分たちで考える必要がある(パラメータのデフォルト値はほぼ用意されていない)。

  ─アプリケーションやユーティリティの操作はCUI(コマンドユーザーインターフェース)のみ


 OpenFOAMは無償で使用できるオープンソースのアプリケーションになりますが、デメリットがないわけでないというのを承知した上で、使うようにしてください。

1.2 ライセンスについて

 OpenFOAMはGPL v3ライセンスで提供されています。GPLライセンスは、オープンソースのライセンスのひとつです。このライセンスを適用されたコードから生成されたアプリケーションを持つ人が、開発者にソースコードを開示することが要求されます。また、GPLライセンスは、このライセンスを持つコードが別のプログラムに組み込まれた場合、そのプログラムもGPLライセンスとなるという特徴があります。そのため、GPLライセンスのプログラムは開発において敬遠されることもありますが、不特定多数の人間に公開しないといけないという制約はありません。

 GPLライセンスのプログラムを実行して生成されるデータについては、このライセンスの対象外のため、開示の必要性はありません。そのため、単にOpenFOAMを計算コードとして利用する場合は、ライセンスのことで悩む必要はありません

1.3 利用事例について

 OpenFOAMは、企業や研究機関で利用されています。無償であることから、ソフトウェアライセンスのコスト問題解消に役立つことが考えられます。また、オープンソースでカスタマイズができることから、理論の実装やソフトウェアの内部ソルバとして組み込むこともできます。たとえば、新しい乱流モデルを組み込む、OpenFOAMを計算ソルバとしてその前後のプリ・ポスト処理を実施するためにGUIを作る、などがあげられます。

1.4 OpenFOAMを始めるには

OpenFOAMを始めるために必要なもの

 OpenFOAMの計算を始めるには、いくつか準備が必要です。それらを次の図に示します。

図1.3: OpenFOAMを始めるには

 まず、計算を実行する計算機が必要です。これがないと計算が実行できません。ただし、高性能な計算機ほど、予算が多く必要になります。アカデミックでは、大学などのスパコンが利用できます。企業だと、FOCUSなどのスパコンが利用できます。Rescaleというクラウドサービスも、OpenFOAMに対応しています。


 ・アカデミック

  ─東京大学: 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/


 ・産業利用

  ─FOCUS: https://www.j-focus.or.jp/focus/

  ─Rescale: https://www.rescale.com/jp/


 次に、OpenFOAMのインストールが必要です。OpenFOAMはWindowsなどで使うアプリケーションのように、インストーラーがあるわけではありません。WindowsだとWSL(Windows Subsystem for Linux)を使ったインストール、Linuxではコンパイルが必要で、MacではDockerを使用します。また、各OS共通で使える仕組みとしてVirtualBoxのような仮想マシンも挙げられますが、マシンスペックをフルに活用できないため、本書では細かい説明は省略します。それぞれの特徴は次の通りです。


 ・WSLを使うスタイル

  ─Windows10上でLinuxを使うことができる機能。WindowsでOpenFOAMを使う場合はスタンダードになりつつある。


 ・Linuxでソースコードをコンパイルするストロングスタイル

  ─最も基本のスタイル。サポート外のLinuxだと地獄が待っているかもしれない。


 ・公式のDockerスタイル(Mac、Linux、Windows)

  ─インストールはそれほど難しくない。

  ─Dockerの知識が多少必要。


 ・伝統的な仮想マシンスタイル

  ─VirtualBoxやVMWareを使って計算機に仮想マシンを構築する(例:DEXCS、CAE Linux)。使い捨てできるが、仮想マシンのOSがホストOSとリソースを取り合うため、計算機の能力をフルに使えない。

OpenFOAMを使用した計算フローについて

 OpenFOAMを使用した計算フローを次に示します。

図1.4: OpenFOAMを使用した計算のフロー図

 まずは、計算をする対象について考えます。


 ・どんな計算をするか

 ・どのような形か

 ・何の物性を使うのか

 ・どこに、どの条件を設定するのか

 ・どれを結果として得るのか


 次に形状を作成します。形状作成はCADを使うことが多いですが、簡単な形であればOpenFOAMのメッシングユーティリティで作ることもできます。

 形状ができたら、メッシュを作成します。OpenFOAMで提供されているメッシュを作成するユーティリティを次に示します。


 ・blockMesh : 6面体のメッシュを作成するユーティリティ。形状は設定ファイルで定義する。

 ・snappyHexMesh : STLファイルで表現される形状に対して、メッシュを作成することができる。最も多く使われており、設定の幅も広い。

 ・foamyHexMesh : STLファイルで表現される形状に対して、メッシュを作成することができる。メッシュの直交性を改善するために開発されているが、実用レベルまでは達していない。

 ・cfMesh : STLファイルで表現される形状に対して、メッシュを作成することができる。他の企業から取り込まれたメッシャーで高速にメッシュが作成できるが、マルチリージョンには対応していない。


 メッシュができたら条件を設定します。条件は、インプットとなるファイルにテキストエディターなどを使って書き込みます。

 条件入力が終われば、あとは計算を実行するだけになります。OpenFOAMの計算実行はいくつか方法があります。

 ひとつ目の実行方法としては、直接計算ソルバの名前を打ち込む方法です。これはイメージがしやすい実行方法ですが、計算実行中のログは画面に表示されるだけで、残りません。

$ icoFoam        # ソルバの名前を入力する。

 本書では各コマンドのどこまでが一つの入力行であるか識別するために各行の最初に$を記述していますが、コマンドを実行する際に入力は不要です。


 計算ログを残すためには、foamJobユーティリティを使います。これはユーザーガイドにも載っている方法で、計算ログは自動的にファイルに書き出されます。

$ foamJob        # foamJobユーティリティを使用する。

 また、チュートリアルのデータには計算実行用スクリプトのAllrunファイルが含まれており、これを実行する方法も選択できます。Allrunファイルはシェルスクリプトです。チュートリアルのデータ以外の計算では、自分で用意する必要があります。Allrunファイルの書き方をマスターすると、インプット作成から結果処理まで処理を自動化できます。

$ ./Allrun        # Allrunスクリプトを実行する。

 計算が終了したら、ParaViewを使って可視化します。コマンドベースで結果を出力するユーティリティもあり、y+、トルク、任意面の流量などを出力することができます。

1.5 学習方法について

 OpenFOAMは、学習コストが高いアプリケーションであるといわれています。その理由のひとつとして、公式ドキュメントですべての機能が説明されていないことが挙げられます。ユーザーおよび開発者は、実施したい計算や組み込みたい機能のためにOpenFOAMのソースコードやチュートリアルデータを自分で読解する場面が出てきます。

 本書はこの学習コストを少しでも下げるために書いていますが、網羅するのではなく、あくまで必須の知識に重点を置いて書いています。そのため、より深くOpenFOAMを知るためには、様々な資料を参考にする必要があります。これから、参考となる資料について紹介していきたいと思います。

 OpenFOAMのOpenCFD版はドキュメントが拡充され、以前より情報が得やすくなっています。ユーザーガイドはOpenFOAMを使うにあたり、最初に覚えるべき操作についてまとめられている資料で、初級者はこちらを読むことをお勧めします。


 ・ユーザーガイド: https://openfoam.com/documentation/user-guide


 また、ユーザーガイドを読み終わった後は、チュートリアルガイドを読んで、実行できる計算を増やしていきます。


 ・チュートリアルガイド: https://openfoam.com/documentation/tutorial-guide


 また、チュートリアルなどを整理している公式のWikiもあります。


 ・公式Wiki: https://wiki.openfoam.com/Main_Page


 開発をしたい人向けに、Extended Code Guideも用意されています。こちらはOpenFOAMのソースコードの中身について整理されており、カスタマイズをする際の手助けになります。


 ・Extended Code Guide: https://openfoam.com/documentation/guides/latest/doc


 また、公式ではありませんが、OpenFOAMの日本語の書籍も出ています。対応バージョンは最新でないものもありますが、有益な情報が日本語で読めるので、英語が全く駄目だという方はこちらを参考にするのもよいかと思います。

 1冊目は、オープンCAE学会編のOpenFOAMによる熱移動と流れの数値解析です。この本はOpenFOAMの操作だけでなく、流体解析における用語や理論の説明を含んでいて、初学者から中級者まで幅広くお勧めできます。


 ・OpenFOAMによる熱移動と流れの数値解析: https://www.morikita.co.jp/books/book/2779


 2冊目はSourcefluxから発売され、日本で翻訳されたOpenFOAMプログラミングです。この本は翻訳の期間もあり、OpenFOAMの対応バージョンは2と古いですが、カスタマイズについて取り上げている本は少なく、考え方という点では参考になります。


 ・OpenFOAMプログラミング: https://www.morikita.co.jp/books/book/3157


 3冊目はOpenFOAMのクラスライブラリーを説明した本になります。OpenFOAMをカスタマイズする上で、クラスライブラリーの理解は重要です。この本を読むことで理解が深まります。


 ・OpenFOAMライブラリーリファレンス: https://www.morikita.co.jp/books/book/3435


 最後に、OpenFOAMをはじめとするオープンソースのCAEコードの普及などを目的とするオープンCAE学会から、技術系同人誌が発行されています。

 ひとつ目はOpenFOAMコード検証です。OpenFOAMのコードをいくつかのテーマを挙げて検証した結果をまとめた本になります。検証結果だけでなく、検証方法も参考になります。


 ・OpenFOAMコード検証: https://techbookfest.org/product/4525691181727744?productVariantID=4604886333259776


 ふたつ目はOpenFOAMでメッシュ作成です。こちらは学会が開催したサマースクールの資料を再編したもので、メッシュの作成方法についてまとめてあります。本書ではメッシュ作成の細かなノウハウまではまとめていませんので、メッシュ作成で困ったときはこちらの書籍が参考になります。


 ・OpenFOAMでメッシュ作成: https://techbookfest.org/product/5752199185432576?productVariantID=5498280718893056


 本書でOpenFOAMを使って行う計算の基本を学んだあとは、これらの資料を併読することで理解が深まると思います。

第2章 環境構築

 本章では、OpenFOAMを使う上での最初の一歩となる環境構築について説明します。環境構築ではパソコンの選び方、続いてOpenFOAMのインストールについて説明します。

2.1 計算機の選び方

 本節では環境構築にあたり、まずは計算を実施する計算機の選び方について説明します。数値計算において計算をする計算機は計算速度、規模を決める大事な要素です。この章では、主にパソコンを対象にその選び方を述べます。

OS

 OpenFOAMは、計算機のOSとしてLinuxでの利用を前提としています。そのため、最近までWindowsではVirtualBoxという仮想マシンを計算機上に構築するソフトウェアを使用して、Windowsの中でLinuxマシンを動かすという手法を用いていました。しかし、Windows10からWSL(Windows Subsystem for Linux)が新たに機能として追加され、Windowsの機能として、Linuxの環境構築が使用できるようになりました。そのため、Windows10でWSLが使えるマシンであれば、OpenFOAMの導入は容易となりました。

 また、公式のインストール方法としてDockerというコンテナ型の仮想環境を構築するアプリケーションを使用して、OpenFOAMを導入する方法も主流となっています。この方法であれば、MacでもOpenFOAMはコンパイルの必要なく、導入可能です。

 OSのbit数は、原則64bitのものを選択してください。

CPU

 CPUは、主に計算の速度に影響します。自分で購入する場合は、次の2点に注目してください。


 ・コア数

 ・クロック周波数


 特に、並列計算を実施するのであれば、コア数は重要な選択項目になります。また、クロック周波数は計算の速さに影響します。予算との兼ね合いはありますが、コア数は多めで、クロック数が高いものを選ぶことをおすすめします。ここで注意点です。CPUはコア数が多い方がよいと書きましたが、単純にそうともいえない場合があります。最近は多数のコアを搭載したCPUも市販されており、導入も以前より簡単になりましたが、それらを使って並列計算をしたところ、8コアで並列効率が頭打ちになることもありました。これはメモリーの仕様や、計算しようとする問題の性質も影響していると考えられますが、コア数が多ければ単純に数値計算にかかる時間も短くなるという考え方は、甘いのだと痛感しました。このあたりは、業務で新たに計算機を導入される方は、ベンチマークなどを通して確認されることをおすすめします。ただし、コア数は多い方が並列計算でコアひとつあたりが計算するメッシュ数が減少し、コア当たりの計算負荷は小さくなります。そのため、基本的にはコア数は多めの方がいいという考えが変わるものではありません。

メモリー

 メモリーのサイズは計算規模に影響します。多ければ多いほど大きなモデル、複雑な計算が実行できます。趣味や簡単なモデルで勉強するのであれば、8GBあれば本書の例題は計算できます。現象をより細かく見るのであれば、メッシュ数を多くして、より厳密な計算をすることになりますので、メモリー容量は多いほど、大規模で複雑な計算ができます。また、メモリーには周波数が設定されています。一般的に、メモリー周波数が大きい方が処理は速くなります。なお、CPUとの兼ね合いになりますが、メモリーの枚数はCPUによって制限が設けられていることがあります。64GBのメモリー容量を実現するために、8GB×8枚という選択肢も考えられますが、CPUによっては、8枚メモリーが刺さっているとメモリーの周波数を落とすことがあります。CPUの仕様を確認して購入した方が無難です。

ハードディスク、SSD

 データを記憶する領域ですが、まず容量が多いものを選んでください。流体計算はデータ量が多くなりやすい傾向にあります。いろいろな計算をやりたいのであれば、記憶領域が多いものを選んでください。また、ハードディスクとSSDがありますが、本書ではSSDをおすすめします。データのアクセスが速いため、結果の書き込みが短い時間で済むようになります。ただし、ハードディスクの方が値段に対する容量が大きいため、無理に容量の小さいSSDを選ぶくらいなら、HDDを選んでください。計算データを保管していくと、すぐに容量がパンクします。昔はハードディスク、近年はSSDとなり、データの読み書きの速度が上がってきています。最近ゲーミングPCなどで一般的になってきたm.2 SSDは、データの転送速度が従来の5~6倍など出ることもあり、数値計算でも導入を検討する場面が増えています。

その他

 結果処理では、画面に映るモデルやデジタルデータを取り扱います。そんなときにディスプレイが小さいと、操作がしにくくなるときがあります。ノートパソコンの場合、持ち運びという観点からサイズの制限がかかることがありますが、できれば画面が大きいほうが作業はしやすいです。

2.2 計算機の例

 スペックの話をしましたが、実際にどれを購入すればいいのか悩むという話をよく耳にします。ここでは、個人から企業の予算で購入できる各計算機の例を示しながら、それらの計算可能範囲などを紹介します。

ローエンド ノートPC

 数万円の価格帯で販売されている低価格PCです。メモリーは大体4GB程度と少ないですが、低価格で手に入るのが魅力です。CPUはあまり強力ではないですが、それなりの計算はできます。2次元モデルや粗い3次元計算で操作を学ぶには十分です。ただし、大きなモデルの計算になるとスペックが足りなくなることもあるので、注意してください。

図2.1: 低価格PC(Altair VH-AD3L)

UMPC

 各社から出ている7~8インチのディスプレイを搭載したノートパソコンになります。サイズが小さいため、持ち運びがしやすく、通勤時にも手で持って作業ができます。また、メモリーも8GBを積んでいるものが多く、それなりのモデルで計算できます。ただし、CPUはスペックが低いため、計算自体は時間がかかります。

図2.2: UMPC(GPD Pocket)

ゲーミングPC

 ゲーミングPCは、わかりやすいハイスペックパソコンです。値段は高めですが、中途半端なマシンを買うよりは、結果として安くなることもあります。よほど大規模な計算でない限り、たいていの計算はこれで足ります。メモリーとCPUは妥協しないことをおすすめします。

図2.3: ゲーミングPC(RAZER BLADE)

自作デスクトップPC、ワークステーション

 ノートパソコンでは取り扱えない規模の計算(数千万メッシュより大きなモデル)は、自作デスクトップやワークステーションといったメモリーや、CPUのコア数が多いものが必要となります。自作であれば、PCショップの店員やコミュニティーのユーザーに聞いてみるのがいいでしょう。ワークステーションであれば、数値計算用と銘打って販売しているものがあるので、販売しているメーカーなどに問い合わせてみてください。

試し読みはここまでです。
この続きは、製品版でお楽しみください。