第二夜CFDプログラム

 流れのコンピュター・シミュレーションは、基本的にはノイマン型の計算機で実行されます。ノイマン型と言っても、計算機科学を学んだ人以外には、あまり一般的な言葉ではありませんから、少し解説します。ノイマンの名前は、アメリカの数学者であるジョン・フォン・ノイマン(John von Neumann)によります。一般に計算機は、記憶部、演算部、外部出入力部などを持ちますが、ノイマン型コンピュータでは、記憶部に演算手順のプログラムが内蔵され、演算部では、この演算手順を読み出し、合わせて記憶部のデータを読み出して演算を実行します。PCやワークステーションなどCFDを実行する、今日の一般的なコンピュータシステムのほとんどは、このノイマン型です。計算機の内部で行われている動作を、逐一、理解することは、とても興味深いことです。ただ、専任の計算機技術者でない限り、日常の業務に忙しいCFD利用者にとっては、学生時代など学びの時間を確保された時期以外、その詳細を学ぶことはかなり難しいことと思います。

 CFDは、ノイマン型の計算機で実行されますので、CFDの実行には、そのためのプログラムが必要です。一体この計算プログロムは、どの程度のものでしょうか。

 いきなり横道にそれますが、CFDシミュレーションのプログラムは、Microsoft社の表計算ソフトであるExcelで組むこともできます。実際、数十年前の大学院演習で流体基礎方程式の数値解法の演習として、二次元の非圧縮粘性流をExcelで解かせた教授先生を知っています。流れ場基礎方程式の数値解法をExcelの演算に落とし込むことは、比較的簡単です。流れの境界面を含む場所での扱いを、境界面がない場所と、ほぼ同様の手続き行うための工夫などに多少、頭を使う程度と思います。インターネット検索すると、Excelに基づくCFD解析の教科書を数冊以上、ヒットするので、未だその教育効果は、衰えていないのでしょう。流れの方程式は、変数が連続かつ微分可能であることを基本にしていますので、時間的、空間的に変化する変数の微係数を十分な精度で捕捉するには、対応する微細な時間的、空間的分解能を必要とします。筆者は、実用的な流れ場解析をExcelプログラムで計算することは、PCの能力を無駄に使う部分が多く、「労多くして、益少なし」と考えています。

 さて、本題のCFD計算機プログラムに戻ります。ノイマン型計算機は、汎用の計算機処理、情報処理を可能とすることを目的の一つにしていますので、ハード的(計算機の演算部で実行されるという意味で)な演算の数は限られており、記憶部へのアクセスも限定されています。多くの数学的な演算処理は、そのハード的な演算や記憶部へのアクセスをひとまとまりの手続きとしてまとめ、人が容易に理解可能なプログラム開発環境として提供されています。こうしたプログラム開発環境の初期で、特に有名なものが、IBM社により開発された手続型プログラム言語であるFORTRANです。FORTRANで記述されたプログラムは、ハード的なプログラムに翻訳し、実行可能な形にするため、FORTRAN CompilerやLinkerにより、計算機上で実行可能な形にされ、プログラムが実行されます。FORTRANは開発よりすでに半世紀以上を経ており、多くの科学技術計算のプログラムはFORTRANで作成されています。FORTRANで三次元の非圧縮粘性流体の解析プログラムを作るとしたら、一体、どの程度長さになるかが、今回の話題でした。筆者の答えは、微分方程式の数値解析部分のソルバーで、境界条件の処理も含めて、FORTRANプログラムで一般に500~1000行程度(1行80Byte以下)で記載できます。行列演算や連立多元方程式の解法などの様々なLibraryプログラムを引用せず、すべてinlineでプログラム化してです。ただし、プログラムの実行を高速化するには、行列計算など様々なテクニックがあり、これらのテクニックを導入すれば、プログラムは、そのオリジナルに比べ、数倍、数十倍と肥大化します。また、解析領域の定義や、境界条件の記述、数値解析実行上の様々なパラメーターなどの入力や入力データのチェック、計算結果の出力などが必要となりますが、こうした部分の手続きプログラムも含めていません。これらの部分を含めると、すぐソルバープログラムの、数倍、数十倍に肥大化します。しかし、CFD解析の本質部分を知るには、このソルバー部分を知ることで十分です。CFD解析の教科書は、様々なものが出版されています。CFD解析プログラムが掲載されているものも多くあります。時間と興味があれば、一度、ご覧いただくと良いかもしれません。