ゲーム日記趣味と勉強

LinuxでFortran

 先日、Linuxでpythonという記事を書きましたが、月末に頼まれている講演用資料のスライドを作るために、久しぶりにLinuxのGNU Fortran (gfortran)を使って数値計算してみましたので、備忘録としてメモしておきます。Fortranと聞いて、そもそも知らない人や、なに未だに原始的な言語を使っているのかと思われた人もいるかもしれません。でも、数値計算の研究分野では、C言語と並んで、Fortranはいまだ現役です。pythonは現在幅広い分野で利用されていますが、基本インタープリターなので、大規模な数値計算には向きません。隠居しているのに、いまさら何すんのと思われた人もおられるかもしれません。でも、私にとって数値計算は、シミュレーションゲームそのものです。大方のシミュレーションゲーム、ANNO1800も含めて、現在一段落している状況では、唯一のお楽しみ。変なやつ?と思われるかもしれませんが、何度も書いているように、数値計算しているとやめられなくなり、気が付くと1日があっという間に終わっています。シミュレーションゲームをやっているときと、まったく同じ状況に陥ります。実は文書を書いているときも、ほぼ同じですが。

 前置きが長くなりましたが、自宅にある一世代前の自作PCに現在、Linux Mint Ver.21.3が入っており、pythonもgfortranもタダで使えます。これまで研究用に作った2次元の数値計算プログラムは、ほぼそのまま動きます。このPCも、すでに11年前に組み立てたものです。もともと、Windows7がCore i7上で動いていましたが、4年ほど前に新しいPCを組み立てたので、Linux Mintに入れ換えて使っています。それでも、11年前のPCとは思えないほど、十分な性能を発揮しています。体感的には、新しいPCよりも2倍くらい処理が遅い感じですが、その程度です。ただし、Editor環境はターミナルが使えない人にはたぶん不便かと。私は40年以上、ターミナル上でvi editorを使っていたこともあり、指がコマンドを覚えてしまい、勝手に動きます。

 少し専門的な内容になりますが、航空機翼周りの2次元遷音速流れを計算してみました。RAE2822翼という翼周りの流れですが、30年以上昔に同業者がこぞって数値計算して実験結果と照らし合わせていた、いわゆるベンチマークに使われていた流れ問題です。いまでこそ、こんなショボい?流れを数値計算する人はいませんが、この分野の研究をやり始めるには、うってつけの初心者用ベンチマークです。最近は、計算結果を綺麗に可視化してくれるParaviewなどの可視化ソフトが、Linuxのみならず、WindowsやMacでもタダで使えることから、研究費などなくても(お金をかけずに)数値計算が実行できます(楽しめます)。さらにLinuxに標準装備されている、LibreOffice Calcを使えば、Excelとほぼ同じ機能で、計算結果のグラフも作成できます。その過程でひさしぶりに、L2-normという解の収束履歴を出力してみました。最近では、スパコンを使った大規模計算が主流で、それを使っている学生などは、平気で100万反復計算とかしていますが、ちゃんと計算すれば、この手の基本問題でしたら数千回で解は収束します。

 ここまでならば、趣味の範囲で終わってしまうのですが、講演に使うこともあり、さらに研究の域に踏み込んで、この流れに粗大液滴を含めて計算してみました。すると、粗大液滴は空気の流れには沿わず、独自に流れる結果が得られました。RAE2822翼周り流れのようなシンプルな流れでも、粗大液滴を含めた流れは未知の領域です。同じ研究分野で、いままさに研究者が取り組んでいるテーマです。私だけでなく、その気になれば(アイデアさえあれば)皆さんもお金をかけず、自宅のPCで研究ができます。私も、そこまでモチベーションが上がれば、一つ論文でも書いてみようと思いますが、現状ではまだそこまで至っていません。