はじめに
第1章 OpenFOAM
第2章 環境構築
第3章 チュートリアルケース
第4章 自分で用意したSTLで計算する
第5章 二相流
第6章 オーバーセット
第7章 勉強のモチベーションの持ち続ける方法
第8章 困ったときには
第9章 OpenFOAMの追加機能
流体解析ツールボックス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対応版」(サークル名:はんままにあ)を底本に、加筆・修正を加えています。
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の年表を次に示します。
年月日 | リリースバージョン |
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. |
年月日 | リリースバージョン |
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 |
年月日 | リリースバージョン |
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 |
年月日 | リリースバージョン |
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を含め様々なデータの読み込み、可視化ができます。
OpenFOAMは、様々な現象を解くための標準ソルバが最初から使用できるようになっています。OpenFOAMで解くことができる主な分野は、次の図を参考にしてください。
OpenFOAMのメリットとデメリットを次に示します。
・メリット
─オープンソースなのでライセンス費用はかからない。
─ユーザーによるコミュニティーが発展しているため、ユーザー同士で情報交換ができる。
・デメリット
─マニュアルはあるが、公式の無償サポートはない。
─設定する数値などの目安は、自分たちで考える必要がある(パラメータのデフォルト値はほぼ用意されていない)。
─アプリケーションやユーティリティの操作はCUI(コマンドユーザーインターフェース)のみ。
OpenFOAMは無償で使用できるオープンソースのアプリケーションになりますが、デメリットがないわけでないというのを承知した上で、使うようにしてください。
OpenFOAMはGPL v3ライセンスで提供されています。GPLライセンスは、オープンソースのライセンスのひとつです。このライセンスを適用されたコードから生成されたアプリケーションを持つ人が、開発者にソースコードを開示することが要求されます。また、GPLライセンスは、このライセンスを持つコードが別のプログラムに組み込まれた場合、そのプログラムもGPLライセンスとなるという特徴があります。そのため、GPLライセンスのプログラムは開発において敬遠されることもありますが、不特定多数の人間に公開しないといけないという制約はありません。
GPLライセンスのプログラムを実行して生成されるデータについては、このライセンスの対象外のため、開示の必要性はありません。そのため、単にOpenFOAMを計算コードとして利用する場合は、ライセンスのことで悩む必要はありません。
OpenFOAMは、企業や研究機関で利用されています。無償であることから、ソフトウェアライセンスのコスト問題解消に役立つことが考えられます。また、オープンソースでカスタマイズができることから、理論の実装やソフトウェアの内部ソルバとして組み込むこともできます。たとえば、新しい乱流モデルを組み込む、OpenFOAMを計算ソルバとしてその前後のプリ・ポスト処理を実施するためにGUIを作る、などがあげられます。
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を使用した計算フローを次に示します。
まずは、計算をする対象について考えます。
・どんな計算をするか
・どのような形か
・何の物性を使うのか
・どこに、どの条件を設定するのか
・どれを結果として得るのか
次に形状を作成します。形状作成はCADを使うことが多いですが、簡単な形であればOpenFOAMのメッシングユーティリティで作ることもできます。
形状ができたら、メッシュを作成します。OpenFOAMで提供されているメッシュを作成するユーティリティを次に示します。
・blockMesh : 6面体のメッシュを作成するユーティリティ。形状は設定ファイルで定義する。
・snappyHexMesh : STLファイルで表現される形状に対して、メッシュを作成することができる。最も多く使われており、設定の幅も広い。
・foamyHexMesh : STLファイルで表現される形状に対して、メッシュを作成することができる。メッシュの直交性を改善するために開発されているが、実用レベルまでは達していない。
・cfMesh : STLファイルで表現される形状に対して、メッシュを作成することができる。他の企業から取り込まれたメッシャーで高速にメッシュが作成できるが、マルチリージョンには対応していない。
メッシュができたら条件を設定します。条件は、インプットとなるファイルにテキストエディターなどを使って書き込みます。
条件入力が終われば、あとは計算を実行するだけになります。OpenFOAMの計算実行はいくつか方法があります。
ひとつ目の実行方法としては、直接計算ソルバの名前を打ち込む方法です。これはイメージがしやすい実行方法ですが、計算実行中のログは画面に表示されるだけで、残りません。
$ icoFoam # ソルバの名前を入力する。
本書では各コマンドのどこまでが一つの入力行であるか識別するために各行の最初に$を記述していますが、コマンドを実行する際に入力は不要です。
計算ログを残すためには、foamJobユーティリティを使います。これはユーザーガイドにも載っている方法で、計算ログは自動的にファイルに書き出されます。
$ foamJob # foamJobユーティリティを使用する。
また、チュートリアルのデータには計算実行用スクリプトのAllrunファイルが含まれており、これを実行する方法も選択できます。Allrunファイルはシェルスクリプトです。チュートリアルのデータ以外の計算では、自分で用意する必要があります。Allrunファイルの書き方をマスターすると、インプット作成から結果処理まで処理を自動化できます。
$ ./Allrun # Allrunスクリプトを実行する。
計算が終了したら、ParaViewを使って可視化します。コマンドベースで結果を出力するユーティリティもあり、y+、トルク、任意面の流量などを出力することができます。
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を使って行う計算の基本を学んだあとは、これらの資料を併読することで理解が深まると思います。
本章では、OpenFOAMを使う上での最初の一歩となる環境構築について説明します。環境構築ではパソコンの選び方、続いてOpenFOAMのインストールについて説明します。
本節では環境構築にあたり、まずは計算を実施する計算機の選び方について説明します。数値計算において計算をする計算機は計算速度、規模を決める大事な要素です。この章では、主にパソコンを対象にその選び方を述べます。
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は、主に計算の速度に影響します。自分で購入する場合は、次の2点に注目してください。
・コア数
・クロック周波数
特に、並列計算を実施するのであれば、コア数は重要な選択項目になります。また、クロック周波数は計算の速さに影響します。予算との兼ね合いはありますが、コア数は多めで、クロック数が高いものを選ぶことをおすすめします。ここで注意点です。CPUはコア数が多い方がよいと書きましたが、単純にそうともいえない場合があります。最近は多数のコアを搭載したCPUも市販されており、導入も以前より簡単になりましたが、それらを使って並列計算をしたところ、8コアで並列効率が頭打ちになることもありました。これはメモリーの仕様や、計算しようとする問題の性質も影響していると考えられますが、コア数が多ければ単純に数値計算にかかる時間も短くなるという考え方は、甘いのだと痛感しました。このあたりは、業務で新たに計算機を導入される方は、ベンチマークなどを通して確認されることをおすすめします。ただし、コア数は多い方が並列計算でコアひとつあたりが計算するメッシュ数が減少し、コア当たりの計算負荷は小さくなります。そのため、基本的にはコア数は多めの方がいいという考えが変わるものではありません。
メモリーのサイズは計算規模に影響します。多ければ多いほど大きなモデル、複雑な計算が実行できます。趣味や簡単なモデルで勉強するのであれば、8GBあれば本書の例題は計算できます。現象をより細かく見るのであれば、メッシュ数を多くして、より厳密な計算をすることになりますので、メモリー容量は多いほど、大規模で複雑な計算ができます。また、メモリーには周波数が設定されています。一般的に、メモリー周波数が大きい方が処理は速くなります。なお、CPUとの兼ね合いになりますが、メモリーの枚数はCPUによって制限が設けられていることがあります。64GBのメモリー容量を実現するために、8GB×8枚という選択肢も考えられますが、CPUによっては、8枚メモリーが刺さっているとメモリーの周波数を落とすことがあります。CPUの仕様を確認して購入した方が無難です。
データを記憶する領域ですが、まず容量が多いものを選んでください。流体計算はデータ量が多くなりやすい傾向にあります。いろいろな計算をやりたいのであれば、記憶領域が多いものを選んでください。また、ハードディスクとSSDがありますが、本書ではSSDをおすすめします。データのアクセスが速いため、結果の書き込みが短い時間で済むようになります。ただし、ハードディスクの方が値段に対する容量が大きいため、無理に容量の小さいSSDを選ぶくらいなら、HDDを選んでください。計算データを保管していくと、すぐに容量がパンクします。昔はハードディスク、近年はSSDとなり、データの読み書きの速度が上がってきています。最近ゲーミングPCなどで一般的になってきたm.2 SSDは、データの転送速度が従来の5~6倍など出ることもあり、数値計算でも導入を検討する場面が増えています。
結果処理では、画面に映るモデルやデジタルデータを取り扱います。そんなときにディスプレイが小さいと、操作がしにくくなるときがあります。ノートパソコンの場合、持ち運びという観点からサイズの制限がかかることがありますが、できれば画面が大きいほうが作業はしやすいです。
スペックの話をしましたが、実際にどれを購入すればいいのか悩むという話をよく耳にします。ここでは、個人から企業の予算で購入できる各計算機の例を示しながら、それらの計算可能範囲などを紹介します。
数万円の価格帯で販売されている低価格PCです。メモリーは大体4GB程度と少ないですが、低価格で手に入るのが魅力です。CPUはあまり強力ではないですが、それなりの計算はできます。2次元モデルや粗い3次元計算で操作を学ぶには十分です。ただし、大きなモデルの計算になるとスペックが足りなくなることもあるので、注意してください。
各社から出ている7~8インチのディスプレイを搭載したノートパソコンになります。サイズが小さいため、持ち運びがしやすく、通勤時にも手で持って作業ができます。また、メモリーも8GBを積んでいるものが多く、それなりのモデルで計算できます。ただし、CPUはスペックが低いため、計算自体は時間がかかります。
ゲーミングPCは、わかりやすいハイスペックパソコンです。値段は高めですが、中途半端なマシンを買うよりは、結果として安くなることもあります。よほど大規模な計算でない限り、たいていの計算はこれで足ります。メモリーとCPUは妥協しないことをおすすめします。
ノートパソコンでは取り扱えない規模の計算(数千万メッシュより大きなモデル)は、自作デスクトップやワークステーションといったメモリーや、CPUのコア数が多いものが必要となります。自作であれば、PCショップの店員やコミュニティーのユーザーに聞いてみるのがいいでしょう。ワークステーションであれば、数値計算用と銘打って販売しているものがあるので、販売しているメーカーなどに問い合わせてみてください。