講師コラム

サイトマップサイトマップ よくあるお問合わせよくあるお問合せ リクエストリクエスト セミナー会場セミナー会場へのアクセス
セミナーのメニュー
  ヘルスケア系
ライブ配信
4月
5月
6月
2021年7月〜

化学・電気系 その他各分野
ライブ配信
4月
5月
6月
2021年7月〜
出版物出版物
新刊図書新刊図書 月刊 化学物質管理Gmpeople
通信教育講座通信教育講座
LMS(e-learning)LMS(e-learning)
セミナー収録DVDDVD
電子書籍・学習ソフトDVD
セミナー講師のコラムです。講師コラム
  ↑2021/4/8更新!!
お申し込み・振込み要領お申込み・振込要領
案内登録案内登録
↑ ↑ ↑
新着セミナー、新刊図書情報をお届けします。

※リクエスト・お問合せ等
はこちら→ req@johokiko.co.jp



SSL GMOグローバルサインのサイトシール  


講師コラム:諏訪 好英 先生


『現象解析と数値シミュレーション』




<関連図書>
<業種別>クリーンルーム運用管理事例集


[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
 
第1回 [数値シミュレーションの魅力と落とし穴](2008/9/16)


 今回から本コラムに寄稿させて頂くことになりました諏訪です。私の経験してきたこと、日頃思っていることが読者の皆さんにとって少しでもお役に立てれば幸いです。
 皆さんは数値シミュレーションとかコンピュータシミュレーションという技術をご存じでしょうか?

 テレビの科学技術番組などで、コンピュータグラフィックスなどを駆使してミクロな分子の動きや壮大な宇宙現象を見せてくれる、あの映像のベースになっている技術です。製品の構造設計や品質保証の問題を扱っている方々の中には、応力や温度分布のFEM(有限要素法)シミュレーションを思い浮かべる方もいらっしゃるでしょう。

 私はこれまで、主として流体の数値シミュレーションを応用した屋内環境やクリーンルームの仕事をしてきました。  また、同様の数値シミュレーション技術を応用し、波や水のような液体の流れ、低圧、高圧、超高温など特殊な環境におけるガスの流れ、イオンやプラズマなどの挙動解析も行っています。最近では爆発現象などもシミュレーションするようになり、施設の安全設計などを対象とした仕事も行うようになってきました。

 専門分野以外の仕事でも、求められて始めてみるとついつい面白くなってしまう私の性格が災い(?)している面もあるのかもしれませんが、このようなさまざまな分野の現象を扱うことができるのも、数値シミュレーションの大きな魅力のひとつです。一見、全く異なるように見えるこれらの現象も、ベーシックな部分では同じ流体現象であり、数値シミュレーションを行う手法にも多くの共通点があります。

 実験を行うには高価な実験装置や測定器が必要となる場合が少なくありませんが、数値シミュレーションの場合には、コンピュータとソフトウエアなどの 計算環境さえ整えば、すぐにでも検討を開始することができます。
 昨今ではパソコンの能力が飛躍的に発達していますので、自宅でもさまざまな現象を自宅でも手軽に検討できるようになってきました。

 このように多くの魅力を持つ数値シミュレーション技術ですが、これらはあくまでコンピュータというバーチャルな世界での試行実験でしかありません。想定する現象や仮定を間違えると正しい答は得られませんし、計算の過程で数値的な誤差が蓄積して、本来の現象とは全く異なる結果しか得られないこともよくあることです。
 実験の場合にも同様の危険性はありますが、数値シミュレーションの場合にはコンピュータグラフィックスと組み合わせてそれらしい画像を作ってしまうと、間違いに気付かず、得られた結果に満足してしまうということがしばしばあります。

 その原因のひとつは「思いこみ」にあると思います。
 我々は、実験やシミュレーションなどの手段を用いて現象解析などを行うとき、必ず原因や結果についてある程度の予測を立てます。これは製品設計などを行う場合も同様で、目的に対してこれこれがこういった機能を果たすので目標が達成されるはずだという予測のもとに開発を行うことになると思います。
 そのこと自体は研究開発においても製粉設計においても重要なことだと思います。
 しかしその思いがあまりにも大きいと、「こうなるはずなのに結果が違う」という発想しかできず、袋小路に陥ってしまうことになります。

 実験の場合には、多くの場合あまり大胆な条件設定を行うことができないので、「何度やっても同じ結果に到達する」→「実験の前提や過程は正しい か?」→「実験が正しいなら結果は真実である」→「自分の考えが間違っているのかもしれない」という思考過程が成り立ちます。
 数値シミュレーションの場合には実験に比べ制約が少ないバーチャルな世界なので、前提条件としてかなり大胆な仮定に基づき条件設定することも可能で、いくらでも結果を現象に近づけることは可能です。
 「こうなるはずだ」という考えだけをたよりに前提条件をいじっていくと、間違いに気付かず現実にはあり得ないことを仮定しているということにもなりかねません。数値シミュレーションを現象解析のツールとして使用する場合には、特にこのような「思いこみ」に注意することが必要です。

 私は趣味でマイコン(死語に近いですね)などの回路基板を組んだりするのですが、動くはずの回路が動かないと思いこみ、「ICチップが悪いので は?」「マニュアルが悪いのでは?」と自分以外の要因をさんざん疑います。ほとんどの場合は100%自分のミスによるものなのですが、根底には「自分は正しく製作した」という「思いこみ」があるのです。こういったミスに翻弄されるたび、人間はなんと「思いこみ」に惑わされることが多い生き物かと思い知らされます。

 一方、大胆な条件設定ができるということは、これを十分理解して用いれば、非常に有効に利用することもできます。計算物理(広義の意味で数値シミュレーションの一種と思ってください)の分野でノーベル賞を受賞したAlderとWainwrightは、斥力のみが働く分子モデルを用いて液相から固相への相転移 が生じることをシミュレーションによって示しました(Alder転移)。それまで相転移は引力により引き起こされると考えられていましたが、実際の分子に は斥力とともに引力が働くので、実験的に斥力のみが働く分子を作ることは不可能です。シミュレーションだからこそ検討が可能だったよい例でしょう。

 数値シミュレーションの魅力と落とし穴の関係は、「○○とハサミは・・・」という言葉によくあてはまります。まさに「数値シミュレーションとハサミは使い方次第」でよい結果にも悪い結果にもつながるということです。
 以降のコラムでは、具体的に何に気を付け、何を心がければ数値シミュレー ションの結果を正しく設計や研究に展開していけるのか、私なりに思うところを具体例を交えてお示ししていきたいと思っています。


[topへ]
第2回 決定論的/非決定論的な現象を予測するシミュレーション(2008/9/30)


 自然科学、工学のさまざまな分野において、熱輸送、物質輸送、化学反応などの現象解析手段としてコンピュータを利用した数値シミュレーション技術が多用されています。宇宙や星の成立ちについてまるで数十億年のできごとを見てきたように議論できるのも、あるいは皆さんが運転する自動車が安全に走行できるのも、近年の数値シミュレーションの進歩なくしてはあり得ないことと言っても過言ではないでしょう。

 第1回コラムでは「数値シミュレーションの魅力」について述べましたが、本コラムで今後対象とする「数値シミュレーション」とはどんなものかについて定義付けをしていませんでした。ここでは「工学における数値シミュ レーション」の定義を考えてみることにしましょう。シミュレーションとは 「既知の事実や法則をもとに現実の状態を模擬し、予測をたてたり、根本的な現象の理解を行うこと」です。数値シミュレーションは、これをコンピュータプログラムによって行うものと定義できます。

 しかし、工学における数値シミュレーションにはもう少し違った要素があり、次のような2種類のシミュレーションがあると思います。ひとつは「非決 定論的な現象を予測するシミュレーション」、もうひとつは「決定論的な現象を予測するシミュレーション」です。
 「非決定論的な現象を予測するシミュ レーション」とは、現象を支配する基本的な関係がよくわからない、あるいは個々の関係についてはわかっていてもシステムとして全体がどのように振舞うのかがわからない場合に行われるシミュレーションで、例えば待ち行列による交通渋滞予測などがこれに相当します。交通渋滞予測では、道路や車両性能に関する支配関係はよくわかっていても、各車両を運転するドライバーの癖や心理的な影響はよくわかりません。このような場合、とりあえずある仮定のもとに支配方程式をモデル化してシミュレーションを行い、全体システムがどのように挙動するのかを実際と比較した上でモデルを修正していくといったスタディが行われます。

 多くの場合、「非決定論的な現象を予測するシミュレーション」の対象は離散的な現象(離散系)です。離散系とは、現象を構成している要素を粒子の運動に近似できるもので、「非決定論的な現象を予測するシミュレーション」の多くは、自由度の大きな多粒子系の問題としてモデル化されます。物性研究などに応用されている分子動力学計算や構造物の破壊や礫、土砂の挙動解析に用いられる個別要素法などは、「非決定論的な現象を予測するシミュレーション」の代表例です。

 一方、「決定論的な現象を予測するシミュレーション」とは、現象がきちんと基礎方程式で記述できる現象を解析するシミュレーションです。
 決定論的な現象を記述する基礎方程式は、多くの場合、微分方程式や積分方程式で記述されており、対象とするシステムが単純な場合には、解析的(数学的)に一般解を得ることも可能(決定論的)です。

 しかし、基本的な現象が決定論的であっても、対象の形状が複雑だったり、複数の現象が複合的に作用したりすると、解析的な解を得ることができなくなります。
 工学的な応用では、対象とする問題について特定の解(一般解に対して特殊解とも呼ばれます)を得ればよいので、差分法や有限要素法などの方法を用いて、現象を表す基礎方程式を数値的に解くことが行われるわけですが、このような問題を数値的に解くことも数値シミュレーションと呼ばれています。
 「決定論的な現象を予測するシミュレーション」には、応力、熱、流体、 電磁場など工学分野で対象となるほとんどの物理現象がその対象となるため、工学における数値シミュレーションというと、むしろこの「決定論的な現象を予測するシミュレーション」を指すことがほとんどです。

 また解くべき基礎方程式の多くは微分方程式、積分方程式で記述されるので、狭義の意味で工学分野の数値シミュレーションというと、差分法や有限要素法を用いて微分方程式、積分方程式を数値的に解くことを示します。
 また、一般に「決定論的な現象を予測するシミュレーション」では、連続体または連続体とみなせるものが対象となります。連続体とは固体や流体のように一続きになっている物体のことで、先に述べた離散系とは対局を成す概念です。しかし鉄や水などの連続体を微視的に見れば、離散的な分子の集合ですから、連続体というのは物体をマクロに見たときの近似的なモデル化のひとつであると解釈できます。実際に、気体の運動を分子的な離散系モデルでシミュ レーションしたり、先述した交通モデルを一連の自動車の流れに見立てて連続体としてシミュレーションしたりする例もあります。

 ここに述べた決定論的/非決定論的な現象の違いは、形式的なものと言えるでしょう。実際にその現象が決定論的に定まるものかどうかは別の問題です。最後にこれを示す簡単な例を考えてみましょう。

   例題:
 dX/dt=−σX+σY,dY/dt=ーXZ+rX−Y,dZ/dt=XY−bZ
 で示される方程式系について、与えられた初期条件のもとに任意時刻におけるX,Y,Zを求めよ。

 この問題は非常に簡単な連立方程式で記述されているので、一見すると決定論的に定まる現象が得られるように思われます。しかし各式を離散化して数値的に時間積分を行ってみると、ある特定の条件意外では座標(X,Y,Z)は永遠にランダムな挙動を繰り返し、一点または周期解にはおさまりません。

 実は、この問題は有名なカオス現象のひとつであるローレンツ方程式と呼ばれるものです。ローレンツ方程式を数値的に時間積分したときの座標(X,Y,Z)は、蝶の羽のような形をした一定の領域の中でいつまでもランダムな 軌跡を描き、ローレンツアトラクタと呼ばれています。ローレン方程式は、マサチューセッツ工科大学の気象学者、エドワード・N・ローレンツ (Edward N. Lorenz) が、大気の安定性についてのシミュレーションをしようとして発見したものと言われています。大気の安定性は決定論的に定まる現象のように見えますが、ちょっとした擾乱により不安定化してしまうことがよく知られてい ます。気象庁の天気予報がしばしば大きく外れてしまうのもこのためです。

 ローレンツらはこの大気の安定性について一般解を求めようとして失敗したわけですが、同時に数値的に時間積分をすることで解の不安定な振舞いの全貌を明らかにすることに成功しました。連立微分方程式を数値的に時間積分するという行為は、先に定義した工学における狭義の数値シミュレーション、すなわち「決定論的な現象を予測するシミュレーション」そのものですが、結果的に得られた解は非決定論的であったということになります。
 よく似た現象に天体の三体問題というのがあります。この問題は三つの天体(恒星や惑星)が違いに重力を及ぼし合う場合に、それぞれの天体はどのような軌道を描くかという問題ですが、条件によっては各天体は永遠に非規則な 軌道を繰り返すことになります。

 最近の研究では、太陽系に質量の大きな木星型惑星が木星、土星のふたつ対外にもうひとつ存在していたなら、地球をはじめとする小さな惑星は宇宙の彼方に放り出されていただろうということが明らかにされています。  こういった決定論的に解が定まらない問題は、解析的な方法では解くことができません。数値シミュレーションの実力の見せ所といったところでしょう。


[topへ]
第3回 現象への関心と要求される現象解析の精度(2008/10/14)


 先日、今年のノーベル賞で物理学賞、化学賞あわせて4人の日本人が受賞するというニュースが発表されました。周辺の人々に感想を求めたところ、「同じ日本人として誇りに思う」と同時に「化学賞の内容はよく理解できたが、物理学賞については中身がよくわからない」という意見が大半を占めました。たしかに物理学の話は、古典物理を離れ、相対論や量子力学の世界に踏み込んだとたん、門外漢の私などは遠い世界の話のように感じてしまいます。

 ところで、現代科学において、理論によって最も精度よく現象予測できるのは素粒子分野と宇宙論だと言われているそうです。大規模な加速器による実験精度や宇宙天体望遠鏡による観測精度が向上するたびに、毎年のように実験結果が理論解析の結果に近づいているという話を聞くと、たしかに我々の扱っている工学分野の話とは大きな違いを感じます。工学分野における理論解析の多くは、実験や観測の結果に合わせてモデルや係数を逐次修正、再構築していく必要があり、絶対真理のような理論が先にあるということはまずありません。

 この違いは何によるものなのでしょうか? 私は、これは人間の「現象への関心のマト(的)」の違いによるものではないかと思っています。また「現象への関心のマト」の第一は、現象スケールが人間の寸法に近いかどうかということに関係しているように思います。

 我々は人間として生きている限り、日常生活を営み、これを継続していく必要があります。例え科学者であっても、日々身のまわりでおきているさまざまな現象、例えば「換気扇の効きが悪くなって焦げた食パンの臭いが部屋にこもってしまった」、「子供がコップのミルクをこぼしてしまい、テーブルの下のカーペットの掃除がたいへんだった」などといった日常のできごとに何の関心も持たないという人はいないでしょう。焦げパンの臭いの拡散やミルクのこぼれといった事象は、日常の些細な現象でしかありませんが、その代表スケールは人間の寸法とほぼ同じレベルです。特に重要な顧客との打合せを控えた朝に一張羅のスーツが子供のミルクで汚れてしまうかどうかは、その瞬間においては最も重要な関心事かもしれません。

 コップからこぼれたミルクがテーブル上にどのように広がるのかという問題を正確に予測計算するためには、大変な演算量の計算を行う必要がありますし、コップが倒れる際の微妙な角度などさまざまな初期条件、境界条件について、詳細かつ正確な情報を与える必要がありますが、現代の数値シミュレーション技術を持ってすれば不可能ではありません。

 一方、例えば気体分子運動論の問題において分子間衝突のシミュレーションを行う場合など、分子の衝突断面積や平均衝突頻度などといった統計的な数値が重要ですが、どの分子がどこから飛来した分子と衝突するのかといった個別の情報に関心を抱く必要は全くありません。同様に、量子力学の問題においては、着目する素粒子がある瞬間に原子核のどこにあるのかを(不確定性原理によりもともと不可能なことですが)特定する必要はありませんし、宇宙論においてダークマターの質量を議論する際に、これを構成する銀河や星のひとつひとつの動きを考慮する必要はほとんどありません。

 もちろんミルクの問題についても、おおよその飛散範囲を予測すればよいのであれば、ごく単純なモデルで現象予測することは可能です。しかし繰り返しますが、この場合、大切なのは今日着ていくスーツがたまたま汚れるかどうかなのであり、確率的に例えば30%汚れるということがわかってもあまり意味が無いのです。
 現象解析やシミュレーションを成功させる最も大きな秘訣は、対象とする現象について依頼者がどこまでの結果を求めているのか(どのような結果を...ではない!)をよく理解することであると思います。それによって採るべき現象解析の方法は違ってくるでしょう。

 「現象への関心のマト」の第二は、その現象に関するもともとの感覚的理解の度合いに関係していると思います。
 我々人間は、日頃よく目にする現象については感覚的によく理解していて、現象解析やシミュレーションを行わなくてもおおよその現象を予測することができます。経験を積んだ技術者や職人の方々から受けた助言が、時として数値シミュレーションよりもマトを得た解答となる場合があります。

 これは、経験を積んだ人は、現象そのものについてのモデル的な思考方法と、先にも示したような「依頼者がどこまでの結果を求めているのか」を無意識のうちによく理解し、身につけているためと考えられます。この場合に求められている結果とは、多くの場合、対策などの方向付けを行うための大まかな情報であると思います。しかし勘や経験で現象予測できる範囲は限られており、その次の段階で「現象への関心のマト」として求められるのは、さらに詳細かつ正確な現象予測となります。
 妥当な設定条件の基で行われた数値シミュレーションの結果は、このような詳細かつ正確な情報を与えるものであり、感覚的な理解が進んでいる対象については、シミュレーションはこの段階で初めて威力を発揮します。

 一方、日常的によく経験する現象ではなく、結果が感覚的には予測できないような現象を対象とする場合には、初期の段階から数値シミュレーションが威力を発揮します。もちろんどのような分野についても先駆的な研究論文を調べると、同様の問題についてさまざまな経験式が提案されている場合があります。
 しかしこれら経験式の多くは、それぞれ特定の条件範囲で実験された結果に基づき構築されたものであるため、適用範囲を誤ると妥当な解を得ることはできません。その分野に対する経験がない技術者は、どの式を用いてよいのか戸惑ってしまうことも多いと思います。

 このような場合、筆者は、まずさまざまな設定条件を想定して数値シミュレーションしてみて、おおよその現象について感覚的な現象把握を試みるということを行います。実験的な経験ができない代わりに、数値シミュレーションで擬似的に現象を経験してみるということです。擬似的な現象経験のためのシミュレーションでは、精度的な問題にはしばらく目をつぶります。対象とする現象についての理解がある程度進んだ時点で、改めて詳細かつ正確な現象予測を行うための精密な計算を行えばよいのです。


[topへ]
第4回 基礎式の読み方(2008/10/28)


 数値シミュレーションを実行した場合、コンピュータ内では、与えられた条件のもとで基礎式を計算するということが行われています。数値シミュレーションを市販ソフトウエアで実行する場合、基礎式について考えることは少ないかもしれません。しかし、シミュレーション実行過程で生じるさまざまなトラブルに対応したり、得られた結果やその精度を評価する場合、そのシミュレーションで扱っている基礎式を理解していることが重要となります。

 今回はこの基礎式(多くの場合、多元連立方程式の形になるので基礎方程式とも呼ばれる)の読み方について述べてみたいと思います。

 本コラムの第2回で「決定論的/非決定論的な現象を予測するシミュレーション」について述べました。基礎式はこれらのいずれについても重要ではありますが、特に「決定論的」なシミュレーションでは基礎式が非常に強く結果を支配します。これは、「決定論的」なシミュレーションは、特定の領域や境界条件について基礎式を満足するような数値的な解を求める行為であり、「非決定論的」なシミュレーションが、大きな自由度や長時間の時間積分の結果どうなるか予測できないような現象を対象にしているのと異なるためです。

 したがって、特に「決定論的」なシミュレーションでは、基礎式をよく読むと、シミュレーション結果についてある程度イメージを描くことが可能です。もちろん具体的な結果がわからないからシミュレーションを行うわけですが、数値シミュレーションを実行する場合、ある程度結果をイメージできるということは非常に重要です。シミュレーション結果があらかじめ描いていたイメージと大きく異なるような場合、即座に設定条件や計算上の問題点をチェックすることができます。

 数値シミュレーションに用いられる基礎式は、微分方程式または積分方程式の形で与えられます。後者は特定の領域について基礎式を積分系に書き換えたものと解釈できるので、ほとんどのものは微分方程式の形となります。
 微分がdC/dt などのように微分記号「d 」で表されているものは常微分方程式と呼ばれ、この例では、変数C が時間t のみに従属することを示しています。一方微分記号が「∂」で表される偏微分方程式では、∂C/∂t 、∂C/∂x などの項を持ち、変数C が時間t にも座標x にも従属することを示しています。筆者が専門とする流体力学分野の基礎式のひとつに移流・拡散方程式というものがありますが、この方程式も時間と座標によって変数C が変化する偏微分方程式です。
移流・拡散方程式は次のような式です。

C/∂tuC/∂xD2C/∂x2

 ここで、C:解こうとする変数、t :時間、x :座標、u :流れの速度、D :拡散係数、:変数C の生成・消滅を表す項

 面白いことに、流体に関わるすべての現象、すなわち流体中の物質拡散方程式や熱伝導方程式は、この移流・拡散方程式とまったく同じ形をしています。たとえばC を濃度とすると、流れの中で発生した物質が下流に移動しながら拡散していく様子がこの方程式で計算できます。同様にC を温度とすると、流れの中で熱がどのように移動し、拡散していくのかを計算することができます。さらに面白いことに、流体現象を司る運動量方程式(Navier-Stokes方程式)も、この移流・拡散方程式の変数をベクトルに置き換えたものと同じものになります。

 移流・拡散方程式は次の各パートで構成されています。左から時間項、移流項、拡散項、生成・消滅項と呼ばれており、「変数C の時間変化(時間項)は、流れによる移動(移流項)、拡散(拡散項)および新たに発生したり消滅したりする量(生成・消滅項)で決まる」ことをこの方程式が示していることがわかります。先述したさまざまな基礎式が移流・拡散方程式と同じ形なのは、いずれの現象も移流、拡散、生成・消滅の組合せによって成り立っているからです。

 移流・拡散方程式の各項のうち、移流項はx による一次微分、拡散項は二次微分の項であることに注意してください。一般に一次微分項は、空間にある分布があった場合、その分布を変化させずに全体が移動する現象を表します。移流・拡散方程式の場合、変数C が流れu によって上流から下流にそのまま流されていく現象を表すことになります。一方、二次微分項は拡散のように丸く広がっていく現象を表します。したがって移流・拡散方程式の時間項、移流項のみを残した式を考えると、変数C が拡散せずに流れで移動していくだけの現象を、また時間項、拡散項のみの式では、変数C がただただ広がっていく現象を表す式となることがわかります。実際に、流れの場が関係しない真空中の電場、磁場の問題や固体中の熱伝導、圧力分布を表すポアソン方程式などでは、時間項、拡散項のみの式が用いられます。

 このように、一次微分はそのまま移動する現象、二次微分項は丸く広がる現象を表すものということを覚えておくと、未知の基礎式を見たときも、おおよその現象のイメージをつかむことができます。

 注1:直線状のヒータで平板の一辺を加熱した場合の温度分布や、対向する平行平板電極間の電場は平行に進展し、丸く広がらないではないかというご指摘もあろうかと思います。この場合、直線状のヒータは発熱源が連続的につながったもの、平板電極は電荷が連続的に平面状に分布したものと考えれば理解できると思います。いずれの場合も発熱源や電荷が点源の場合には、先述したように丸く広がる現象となります。

 注2:一般に一次微分項を離散化(連続的な微分方程式、積分方程式を、コンピュータが計算できるよう四則演算式に置き換えること)して解こうとすると、強い不安定性を示し、そのままでは計算を続行できなくなる場合があります(これを発散すると言います)。自然界にも拡散がまったくない流れは存在しないので、通常は時間項と移流項のみで構成される基礎方程式をそのままシミュレーションの対象とすることはありません。シミュレーションにおいても移流項の発散傾向を拡散項が抑えるという効果が働くため、移流項、拡散項を持つ基礎式を解く場合には、計算の安定性が確保できています。移流項の影響が大きな流れ、すなわち流れの速度が大きくなると、実際の現象も不安定な流れに移行し、乱流が発生します。

 数値シミュレーションによく用いられる基礎式の中には、理論的に求められた式ではなく、実験や経験に基づき構成された「経験式」がしばしばあります。この場合、実験的にその式が導かれたときの前提条件を把握しておくことが重要です。数値シミュレーションがこの条件範囲を大きく外れて使用された場合、正しい結果を望むことは難しいでしょう。

 しかし、一般にどの式が純粋な理論式で、どの式が経験式なのかを見分けることは容易ではありません。乱流シミュレーションで多用されているk−ε型乱流モデルのkとεの輸送方程式なども、一見すると理論式のようですが、実験的に各項の係数が求められた半経験式です。分野によっては、よく用いられる経験式の中にかなり強引な経験式が用いられている例があり、次元解析をすると右辺と左辺の次元が異なるようなものもあります。このような場合、その式の適用可能範囲をよく確認して使用すること、単位系をオリジナルにあわせないと数値が違ってしまうことなど十分注意する必要があるでしょう。



[topへ]
第5回 頭の中に現象のイメージを描く(2008/11/11)


 数値シミュレーションや理論式による検討は、問題解決のための重要な示唆を与えてくれます。また大規模な実験装置など製作する必要がないので、実験的な検討よりも比較的容易に実施できることも大きな利点です。しかし、ともするとそれですべての検討ができてしまうように錯覚してしまい、大きな間違いに至ってしまう場合があります。

 理論的な根拠のみをよりどころとした検討だけでは、結果が実際の現象を正しく再現できているのかどうかを判断することは難しいでしょうし、その結果に至った論理構成に間違いがあったのかどうかを判断することはさらに難しくなるでしょう。また論理構成に間違いがなくても、想定した条件が正しく現象を再現していなかったということは、研究開発や設計の場では意外に多く発生します。その意味で、実験、数値シミュレーションのいずれにおいても、各個人が現象に対する正しいイメージを持ってこれらの検討を行うことが重要です。

 筆者が仕事に就いたころ、職場には技術的な勘の鋭いベテラン技術者、ベテラン技能者がたいてい何人かいました。このような先輩たちから「この装置は××ミクロンぐらいの精度は出そうだ」とか、「温度差は△△℃くらいになるだろう」といった意見をいただき、実際に実験してみると、予測にほぼ近い結果が得られるといった場面がしばしばあり、たいへん驚いたことを覚えています。
 今思い返すと、これらの人たちには、長年の経験を基に「現象に対する正しいイメージ」が体得されていたのだと思います。最近では、研究開発の場にも効率化や省コスト化が厳しく強いられるようになり、このようなベテラン技術者、ベテラン技能者の存在がめっきり影を潜めてしまったようですが、我々技術屋は常に実現象をよく観察し、頭の中に「現象に対する正しいイメージ」を描き続けることが重要だと思います。

 実験的な検討では、常に目の前で起きている実現象(例えそれが対象とする現象をモデル化したものであっても)を見て体験しているわけですので、そこで起きている現象をイメージしたり、これに基づき自分の考えている論理構成が正しいかどうかを検証することは、比較的やりやすいと思います。しかし、日頃から数値シミュレーションなどを専門の業務としている方々の場合、意識的にそれぞれの検討結果と実現象との比較を行わないと、「現象に対する正しいイメージ」を描くことができません。そのため筆者が日頃意識するようにしていることを以下に示します。

 ・身近な現象で観察する、または簡単な実験をやってみる
 シミュレーションの対象が特殊な現象であっても、多くの場合、いくつかの基本的な現象に置き換えて考えることは可能だと思います。そのように見ると、我々の身のまわりのさまざまな現象も、大きなヒントを与えてくれる場合があります。また、身のまわりのものを使って簡単に現象を再現してみることも有効です。
 ただしこれらの現象は、そのつもりで観察しないと本来の現象的な側面を見せてはくれません。熱対流の問題であればガラスポットの中のお湯と茶葉の動きが大きなヒントとなる場合もあるでしょうし、応力や変形の問題であればスポンジや発泡スチロールを押し当てて変形させてみることで現象のイメージが描けるかもしれません。

 ・だからこうなるのだという因果関係を考える
 さまざまな現象を観察する場合、なぜそのような動きになったのか、因果関係を常に考えるよう心がけます。実は数値シミュレーションにおいても、この習慣を身に着けておくことは非常に重要です。先述したように、論理構成に間違いがなくても想定した条件が正しく現象を再現していなかったということがしばしばあります。我々は物理の法則を用いるとボールの軌跡を正確に計算することができますが、どの方向にボールが投げられたのかを正しく想定できないと、その行方を予測することはできません。
 数値シミュレーションでは、計算結果に問題があった場合、適用した計算スキームや収束性にその原因を求めがちですが、シミュレーション実施者の想定した初期値や境界条件にもともと問題があったということも少なくありません。日頃から因果関係を考える習慣をつけておくと、計算結果に生じた問題が設定条件に起因するものかどうか判断する際、大いに役立つでしょう。

 ・シミュレーションを実行しながらグラフを書く
 実験的な検討においてもよく言われることですが、データを取りながらグラフを書いて現象の推移を見る習慣をつけることも非常に重要です。数値シミュレーションの場合、グラフィック機能が充実していますので、そういった操作は簡単に実現できると思いますし、早い段階で自分の行っている検討が実現象に沿ったものであるかどうか確認できるという利点もあります。一連の設定条件で複数のシミュレーションを実施するような場合、つい面倒に思い、すべての計算が終了してからまとめてグラフィック処理を行うようなことがありますが、そのような場合、何か問題があった場合にはすべてを実行しなおす必要を生じることもあり、トータルで見ると決して効率的に検討を進めることはできません。

 現象解析にあたり、頭の中に現象のイメージを描くことの重要性について示しましたが、「正しいイメージ」を描けるよう、日頃から心がけることが重要だと思います。ここで言う現象のイメージとは、決して思い込みであってはいけません。現象に対してはあくまで謙虚に捉え、自分のイメージが実現象と異なる場合には、これをよく観察し、頭の中のイメージを随時修正していく柔軟さが必要です。


[topへ]
第6回 シミュレーションとコンピュータグラフィックス(2008/11/26)


 数値シミュレーションを依頼される場合、美しいコンピュータグラフィックス(以下CG)による結果出力を要求されることが多くあります。しかし、CGの作成にあまり凝ってしまうと、その美しさとは裏腹にシミュレーションの目的や具体的成果がうやむやになってしまうこともあります。今回はシミュレーションにおける結果出力のあり方について考察してみたいと思います。

 筆者らがコンピュータシミュレーションを始めた当時(1990年代:今から考えるとずいぶん前のことになってしまいましたが..)、現在のような高性能のパソコンはなく、シミュレーションなどの科学技術計算を行うには、いわゆるスーパーコンピュータ(以下スパコン)を使う必要がありました。スパコンは、文字どおり計算業務を高速にこなしてくれる非常に高価なコンピュータですが、結果の出力は数値データのみです。シミュレーション結果をCGなど人間が理解できる形に加工するためには、グラフィックワークステーション(以下GWS)という、これまた高価なコンピュータを用いる必要がありました。
 通常、スパコンの利用は複数の端末から同時に行うことができ、タイムシェアリングシステム(現在のPCのマルチタスクのようなもの)により並行して複数の計算を実行することができますが、GWSの方は対話式なので、CGの作成は一人づつしか行えません。そのため多くの人が、スパコンで実行するプログラムに文字でグラフを出力する機能を設け、シミュレーションの実行と同時に結果を確認する工夫をしていました。例えばこんな感じです。

   
 
 


 上図は圧力Pと速度UがA〜Eの地点でどのように分布しているのかを示しています。圧力は次第に大きくなっていますが、速度は中央に極大値を持つことが分かります。下図は四角い領域の左から流入した水の流れが*で示した障害物にぶつかって飛び散る様子をシミュレーションしたときの水の分布状態を示したものです。今で言うとメールの後に付ける文字絵のようなものですが、目を細めて見ると何となく様子がわかると思います。

 今考えると、つまらないことに苦労していたなとも思いますが、実はこれらの経験が、筆者自身にとって非常に大事な教訓を残してくれたと思います。
 そのひとつは、前回コラム「第5回:頭の中に現象のイメージを描く」にも示した「シミュレーションを実行しながらグラフを書く」ということを、知らず知らずのうち実行していたことです。計算の実行過程で変数の分布や時間変化を確認しながらシミュレーションを進めることで、入力データの間違いや、収束計算が不安定になった場合には即座に対応することができます。

 もうひとつの教訓は、人間は単純な図しか定量的に理解できないということです。三次元グラフィックスで作成したフルカラーの図を見た場合、見た目はとてもリアルですが、任意の点における変数の値や、その空間的な分布を定量的に判断することは困難です。一方、解析領域に任意の線分を想定し、その上の変数分布をグラフで示した場合には、各点の具体的な数値を読み取ることが可能です。また少なくともその変数が増加しているのか減少しているのか、極大値、極小値を持つのかなどの情報は瞬時に判断できると思います。つまり、人間の頭の中はX-Yの二次元で表した場合に最も理解できるということです。シミュレーションや実験の結果を自分が理解するためにも、人に見せて理解してもらうためにもこのことは重要です。

 シミュレーション結果の出力形態として、CGに基づくアニメーション(動画)の作成も、最近ではよく行われるようになりました。アニメーションを用いると、空間的な分布情報に加えて時間変化も表すことができ、情報量は格段に大きくなります。また静止画像では理解しにくかったような複雑な三次元情報も、視点を移動させながら見せるようにアニメーションを作成すると、よくわかるようになります。このあたりのイメージは、NASAなどのCGアニメーションを想像していただくとよいかと思います。しかし先述したように、情報量が増えるということは定量的な理解を難しくするということですから、その扱いは慎重に考えるべきだと思います。

 シミュレーションにおけるCGアニメーションの作成は、主として解析結果を人に見せるための手段だと理解されている方も多いと思います。そのため、解析対象とするすべて過程をシミュレーションし終わってから、まとめてアニメーションの作成をするということがよく行われます。しかし私は、アニメーションについても、可能なかぎりシミュレーションの途中の段階で作成してみることをお勧めします。この場合、作成するアニメーションはラフなものでかまいません。シミュレーションで発生するエラーの中には、静止画像では発見しにくい現象を伴うことがあります。
 例えば流体シミュレーションや波動シミュレーションにおける流出境界の扱いに伴うエラーがこれに相当します。このような境界条件に伴うエラーはしばしば反復計算を不安定にし、気が付いたときには解が発散していたということが起こります。途中の経過を見直しても、静止画像だけでは原因を発見しづらいため、頭を抱えてしまうということになります。ところがアニメーションを作成してみると、流出するはずの下流側境界から圧力波などが逆流して伝播してくる様子を観察することができ、たちどころに問題を解決できるということも少なくはありません。

 大切なことは、CGもアニメーションも、シミュレーションを実行する本人が現象を理解するためのものと考えることだと思います。単純なグラフや断面図であっても、本人が納得して理解できるものが一番だと思います。シミュレーション結果を人に説明する場合にも同じことが言えるでしょう。


[topへ]
第7回 解が求まらないときもある。そんなときは?(2008/12/09)


 数値シミュレーションに限らず、さまざまな現象を扱っていくと、なかなか解が求まらないことがあります。このような場合、原因を求めて堂々巡りをしてしまうことも多く、やっかいです。特定の期限までに何らかの解答(解決策)を見出すことが要求されている場合には、基本に立ち返るということがしにくい精神状態にありますから、なかなか解決の糸口がつかめないということになりがちです。

 そもそもうまく解が求まらないというのはどんな場合でしょうか?
 これには以下のようにいくつかのパターンがあると思われます(ただし、ここでは数学的な意味で厳密に解が求まらないことを議論しているわけではありません)。

 ・現象そのものに不確定性がある場合
 ・境界条件その他の与条件が不明な場合
 ・解決しようとする課題の精度が、現象解析できる解像度よりも厳しい場合
 ・方針そのものに根本的な誤りがある場合

 「現象そのものに不確定性がある場合」というのは、例えば乱流現象や確率的に発生する事象など、もともとの現象に確定的でない要素が含まれる場合です。このような問題には通常、定常的な解が存在しないため、長時間の時間積分を行ったりランダムな条件で計算を実施して、平均量や各種統計データから現象を統計的に評価することが必要となります。確率事象に対してランダムな条件を作成し、次々とこれらを当てはめてシミュレーションしていく方法は、賭博で有名な地名に合わせモンテ・カルロ法と呼ばれています。

 乱流現象などは、単純な乱数的に事象が推移するものではなく、ある程度の秩序を保った状態でランダムな現象を含むことになります。したがって、シミュレーションを行う場合にも、予測したい現象がどの程度の不確定性を持つものなのかをよく認識しておくことが重要です。このことは第3回コラムに述べた「現象への関心のマト」とも関係すると思います。工学的な応用を考えた場合、大局的な流の構造や平均的な作用力のみわかればよいという場合がしばしばあります。このような場合、乱流中に発生する大小の渦流れについて詳細な情報を得ることはほとんど必要なく、時間平均乱流モデルなどを適用し、確定論的に時間平均解(定常解)を求めることになります。

 しかし、これらの渦や乱れの現象そのものや、これらによって発生する非定常な圧力変動が解くべき対象となる場合には、その立場は大きく変わってくるでしょう。この場合、シミュレーションでも非定常な時間変化を再現するような方法を採用し、得られた膨大なデータを統計解析して現象を評価することが必要となります。

 「境界条件その他の与条件が不明な場合」というのも、しばしば解かねばならない問題として与えられます。この種の問題は、言い換えれば「投げ方がわからないボールの軌跡を計算する」問題のようなものです。ピッチャーがカーブを投げるかストレートで来るのかは与条件に相当し、それがあらかじめわかっていれば、おそらくかなり正確にボールの軌跡を計算することができるでしょう。逆に、適当な設定条件に従い計算した場合には、ボールはあらぬ方向に飛んでしまうことになります。与条件が不明な問題というのは、依頼者が意地悪をして教えてくれないということではありません。実際に現象を毎日扱っていても、初期状態がどのようになっているのか、周囲との現象のやりとり(境界条件)がどの程度あるのかなど、さっぱりわからないということもしばしばあるのです。
 このような場合、解析を実行する者は、解析対象とする問題を理解し、初期条件、境界条件をどのように設定すればシミュレーションを現実の条件に近づけることができるのか、これまでに培った経験や知識を総動員してよく検討する必要があります。そのためには単なる「計算屋」ではなく、日頃からさまざまなものに興味を持ち、感覚を養っておくことが重要と考えています。

 「解決しようとする課題の精度が、現象解析できる解像度よりも厳しい」ということもよくあります。例えば、与条件として与えられる周辺温度の変動が大きいのに、特定の対象領域に要求される温度変動幅が極めて厳しい場合や、そこに設置されている電子機器が誤動作しないかどうかの解答を求められるような場合が、これにあたります。まるで1cm単位に目盛がふられたモノサシで1mm単位で寸法を読むような感じです。1cmモノサシで1mm単位ならまだしも、1μm単位で寸法を読めと言われた場合には、さすがにお手上げです。この種の問題に対応するためにも、初期条件、境界条件のばらつきや変動が結果にどのような影響を与えるのか「日頃から感覚を養っておく」ことが重要と思われます。

 4つ目の「方針そのものに根本的な誤りがある場合」については、なかなかそれに気付かないことが多く、思い込みにより貴重な時間を浪費するということもよくあります。現象解析を行う場合、結果についてある程度の予測を立てておくことは重要だと思いますし、私自身もたいていの場合はそのようにします。しかし自分が予測した結果にあまりこだわってしまうと、シミュレーション結果が予測と合致しない場合には、その前提が間違っていたと認めることがなかなかできません。自身の技術にこだわりとプライドを持つことは、技術屋にとって重要なことです。自分自身が立てた予測や前提に苦しまされるのは、技術屋の悲しい習性なのかもしれませんね。
 しかし、このような場合こそ冷静に予測を立て直し、何度もトライしてみる余裕が必要です。そのためには、対象とする現象や物をできるだけ単純化し、基本的な原理・原則から見て矛盾はないか、素直な気持ちで考えてみることをぜひ行ってみてください。

 プログラミングなど行っている場合には、特にこのことが大事だと痛感させられます。作業に集中してしまうとついつい細部にばかり目がいってしまいがちです。しかし、気分転換を兼ねて全体の流れや方向性を見直してみると、もともとの前提にとんでもない誤りがあることに気付くこともあります。

 私たちの身の回りには、最後まで答のわからない問題が山のようにあります。しかし、その都度与えられた条件のもとに最適と思われる解(あるいは解決策)を求め、解決していくことが技術の進歩にとって重要なのだと思います。



[topへ]
第8回 基本原理に戻って考える(2008/12/24)



 どうしても克服できない難問にぶつかったとき、皆さんはどうやってその難局を乗り越えますか?
 このようなときこそ頭の中を整理して、基本原理に戻って考えることが重要だと思います。...とは言っても、解答期限が迫り、やらなくてはならない仕事が山のようにあるといった状況で、「基本原理」なんて言われても、とてもそんな気持ちになれないというのも事実でしょう。しかし、急がば回れのことわざのとおり、気持ちを静めて基本に返るということをした方がかえって早道であったということは、私自身もよく経験することです。

 簡単に「基本原理に戻る」といっても、何をしたらよいのか戸惑われる方も多いと思います。私は次のようなことを実行したり考えてみたりするようにしています。
  ・枝葉を取り除き、問題や現象の本質がどこにあるのかを見てみる
  ・保存するはずのものは何かを考え、その量が保存されているかどうかを調べる
  ・その分野の最もやさしい初歩の本を読んでみる

 「枝葉を取り除き、問題や現象の本質がどこにあるのかを見てみる」というのは、「数値シミュレーションで計算がうまくいかないとき、特殊な境界条件や複雑な物性値モデルをそぎ落として計算してみる」行為を思い浮かべてみると、理解しやすいでしょう。このような形で問題を単純化すると、原理的にあり得ない設定に気付いたり、本来の現象について基本的な思い違いをしていたことに気付いたりして、問題の解決に大いに役立つことがあります。また、うまく解けなかった問題について徐々に特殊な部分を削っていき、ある時点でうまく解けるようになったならば、その直前に削除した箇所に問題点を絞り込むことができます。

 単純化したモデルを想像し、頭の中でイメージしてみるのもひとつの方法です。人間の頭の中は実にシンプルですので、単純な現象でないと具体的にイメージすることができません。このため、頭の中で現象をイメージしようとすることで「枝葉を取り除く」という作業を気付かぬうちにしていることになります。人の頭はよくできていて、描いたイメージが基本原理にしたがっていない場合にはとても不自然に感じます。このような方法はスポーツ選手がよく行 うイメージトレーニングに近いと思いますが、特に動きのある現象を扱う場合に効果的です。

 どうしても現象をイメージできない場合には、とにかく紙とペンを持って絵に描いてみるとよいでしょう。手を使って書いてみることで問題を整理することができ、基本原理に戻って考えることがしやすくなります。この作業にコンピュータを使うことはあまり推奨できません。必ず紙とペン、できれば鉛筆を使って考えてみるのがよいと思います。

 「保存するはずのものは何かを考え、その量が保存されているかどうかを調べる」ことは、現象解析にとって最も重要な基本原理だと思います。
 実際の現象では、質量やエネルギーなどの物理量は、現象の前後やその過程において常に保存されるはずです。数値シミュレーションにおいても、基本的にこれらの量が保存される必要があります。しかし、シミュレーションでは有限の領域を部分的に切り出してモデル化したりするので、解析領域について必ずしも物理量が保存されるとは限りません。流体や熱伝導の問題で、連続的な領域からその一部を切り出してきて解析するような場合がこれにあたります。 このような場合、解析領域内で物理量の保存が再現できるよう、境界条件を工夫したり、部分的に切り出す領域を工夫したりします。最も確実な方法は、リソースの許す限り大きな領域を解析モデルに組み込んでしまうことでしょう。

 一方、分子動力学計算における温度コントロールで分子振動に制御をかける場合など、温度一定の条件を得るためエネルギーの保存を犠牲にしてしまう場合もあります。この場合「条件設定を実現すること」と「実現象を忠実に再現する」ことはトレードオフの関係となります。このような例では、シミュレー ションにより知りたい情報が何であるかを明確にした上で、何を生かして何を犠牲にすべきかをモデル化の段階でよく吟味していく必要があるでしょう。

 「その分野の最もやさしい初歩の本を読んでみる」ことも基本原理に戻るひとつの方法です。扱う現象が高度になるほど、専門的な知識が必要となることは確かですが、その場合、基本的なことは解決できていることが前提となりま す。初歩的な書籍をあらためて読んでみると、それまで解決していると理解していた基本的なところに大きな問題があったと気付く場合も多いです。
 工学分野の問題では、古典的な力学やベクトルなど基本的な数学や物理の知 識を必要とする場合も多くあります。私がよく利用する参考書の中には、高校時代からずっと世話になっている大学受験用参考書(赤とか青とか読んでいたもの)もあります。

 初歩的な書籍を参考にするという方法は、初めての分野の問題に取組むときなども非常に有効です。このような場合、私はいきなり専門書を読むのではなく、まずは「・・・の話」などといった初心者向けの本を読むことにしていま す。技術分野によっては、専門的な議論の前提として理解しておくべき基本の範囲が大きく異なるためです。また初心者向けの入門書では、その現象や技術がどのように使われているのか、我々の生活の中でどのように関わっているの かなどわかりやすく示されていることがあります。高度に細分化された専門書では、これらは基本的に理解されていることが前提となっていることが多く、 結局その技術をどのように利用したらよいのかわからずに終わってしまうという場合もあります。最近ではさまざまな科学技術分野について入門的な書籍が一般の書店にも出ていますが、ちょっと調べてみたいという程度であれば、町の図書館に行くことをお勧めします。たまの休日には家族を連れて図書館に行き、リラックスした気分で仕事にも役立つ基礎的な知識を収集する。理想的なライフスタイルではないでしょうか?



[topへ]
第9回 とりあえずやってみる(2009/1/20)



 ある現象に関して数値シミュレーションや理論解析を実行するためには、さまざまな知識が必要です。 それだけを聞くとげんなりしてしまう人も多いかもしれません。現象の基礎的な理論から勉強しようとするとそれだけで膨大な時間がかかってしまいますし、逆に現象そのものを詳細に追求したい場合、数値シミュレーションの利用に伴うテクニカルな問題についていちいち立ち入っていたのでは、本来行うべき研究がなかなか進まないということもあるでしょう。

 理想を言えばすべての知識やノウハウを身につけ、その上で事にあたるのが望ましいのでしょう。しかし、私は必ずしも最初からその必要はないと考えています。現象や手法の基礎を理解し、知識やノウハウを自分のものとして身に付けることと、その知識やノウハウを応用できるといことは、基本的に等価ではない筆者は思うからです。
 もちろん現象解析を実施するための最低限の基礎知識は習得しておく必要はありますが、まずは「習うより慣れろ」の精神でとりあえずやってみること、いろいろと経験してみて、それによって得られた結果を現象を理解するための一助にしていくことが大事だと思います。

 ・「とりあえずやってみる」事ができる現在の環境
 筆者らが数値シミュレーションを研究として行い始めた頃には、現在とは事情が大きく違いました。当時は今日のパソコンのように強力なパフォーマンスを持つ個人的な計算環境などありませんでしたし、シミュレーションソフトの多くは自分でプログラミングして利用するしかありませんでした。このような環境では、解析対象とする現象やシミュレーションに用いる解法、プログラミング上の細かなテクニックなどを総動員しないと正しい答にたどり着けないという状況がありました。
 しかし、さまざまな汎用ソフトウエアが市販ソフトやフリーウエアとして提供されており、各人が比較的自由にこれらを利用できるようになった今日では、とりあえず計算を実行してみて、結果を考察することが可能です。数値シミュレーションを模擬実験ととらえ、さまざまな入力条件で実行した結果がどのように変化していくのかを自分なりに考察していくと、本来の現象の姿がだんだんと見えていくでしょう。

 ・初学者に限らず「とりあえずやってみる」
 これは、シミュレーションや現象解析の初学者の場合に限ったことではありません。私自身も、自分にとって新しい分野にチャレンジする場合など、まずは「とりあえずやってみる」ことを実践するようにしています。まずはいろいろと試行錯誤してみて、その結果から対象を理解していこうというわけです。事前に必要な基礎知識は、第8回「基本原理に戻って考える」でも述べたように、「その分野の最もやさしい初歩の本を読んでみる」ことで集めることができます。
 最近になって、このような考え方はますます必要になってきているように思います。例えば、我々のようにFORTRAN言語などを使ってプログラミングを行ってきた者には、最近のプログラム環境の多様化にはなかなかついて行けないところがあります。専門雑誌や解説書などを読むと、次から次に新たな用語や概念が出てきて、まず理解してから事にあたることは不可能なのではないかと思ってしまうほどです。しかし、とりあえず試しに例題を基にプログラムを組んでみると、解説書を何度読んでも理解できなかった用語や概念の意味が次第に見えてくるようになります。すなわちどんなものも、とっかかりとしては中身を理解しなくても利用することは可能なのです。使ってみてから「なんだこんなことか」と、理解していけばよいのです。
 筆者は仕事がら、地方に出張することも多いのですが、しばしば新幹線での移動時間をこのような「とりあえず(または試しに)やってみる」時間に割り当てています。きちんと定期的に時間を作って実行しようとすると、このような作業は億劫になりがちですが、「とりあえず試してみる」には、移動時間の2〜3時間がちょうど手頃です。また、このような作業は、継続的にいろいろと試してみることが重要です。頻繁に出張がある筆者の場合、移動時間を利用するこの方法は、億劫がり屋の性格にもよく合っているようです。
 大学などで学生にパソコンを割り振る際、以前は先生から「これで遊んでいてはだめだ」と念を押されたものですが、最近の状況を見ると、私は「とりあえずこれでおおいに遊ぶように」と言うのが正解になってきているのではないかと思います。もちろん勉強や自己啓発と全く関係のない遊び方はだめですが、とりあえず試しの数値シミュレーションを実行してみるような遊びなら、どんどんやるべきでしょう。

 ・実際の現象や実測、実験と比較してみる
 ここまで「とりあえずやってみる」ことの大事さを強調しましたが、現象解析や数値シミュレーションの知識、ノウハウを広げていくためには、やはり やりっぱなしではいけません。実際の現象や実験・実測結果と比較してみて、自分のシミュレーション結果が正しく現象を再現しているのか、実際の現象とシミュレーションとの違いは何か、またその違いはどのような原因で生じるのかなどいろいろと考察してみることが重要です。その過程で、実際の現象や実験データに触れ、現象に対する理解を掘り下げることが可能だと思っています。またシミュレーションによる誤差の要因を調査するためには、どうしても数値解法や現象モデル化の詳細について理解する必要が出てきます。
 このようにしてその都度、必要に応じて知識を付けていけばよいでしょう。さらに、汎用ソフトでは対応できない高度な条件設定やモデルの組込みが必要になった場合に、あらためてプログラム開発することなどを検討すればよいのではないかと思います。それでも、最近の商用ソフトにはさまざまな機能が当初から含まれており、特殊なモデルの組込みもユーザーサブルーチンなどにより対応可能な場合がほとんどですので、一からプログラム開発をしなければならないという状況は、従来に比べて少ないでしょう。

 「継続は力なり」と言います。「とりあえずやってみる」、「習うより慣れろ」とともに「実際の現象と比較し、考察する」ことを心がけることで、自分なりのノウハウやセオリー(この場合は現象に対する理論ではありません。自分なりの仕事の進め方)を身につけていくことが重要だと思います。



[topへ]
第10回 エピローグ:数値シミュレーションでできること、できないこと(2009/2/3)



 早いもので、「現象解析と数値シミュレーション」と題して記してきた本コラムも今回で最終回を迎えました。
 これまで、数値シミュレーションの魅力や、これを用いた現象解析を行う上での注意点や考え方などに触れてきましたが、最後に「数値シミュレーションでできることは何か?」また「できないことは何か?」について、改めて考えてみたいと思います。
 数値シミュレーションは、たしかに魅力的なツールではありますが、その限界をよく理解して用いることが重要です。数値シミュレーションでできないはずのことを検討し、何らかの解が得られたとしても、その解の信頼性を保証することはできないでしょう。またその解に基づき、設計や研究開発を進めてしまったとしたら、最終的に大きな損失や事故につながる危険性もあります。

 多くの場合、数値シミュレーションは次の要素から構成されています。すなわち、
  ・現象を記述する基礎方程式
  ・構成則などのモデル式
  ・基礎式、モデル式の離散化手法
  ・入力、設定条件
  ・対象を領域分割した解析対象モデル
  ・マトリックスや収束計算を実行するソルバー
  ・結果出力、グラフィック

 このうち、基礎方程式は、解析しようとする現象を記述する最も重要な要素です。多くの場合、例えば流体計算におけるNavier−Stokes方程式のような理論式が使われますが、場合によっては実験や経験に基づき構成された「経験式」が用いられる場合もあります。また基礎式の補足的な役割を持たせたり、現象にフィットさせる目的で、構成則などのモデル式が用いられます。
 これらの数式群が、その数値シミュレーションがどこまでの現象に適用できるのかを決定つける大きな要素です。もともとの基礎式が適用できない範囲の問題に、その基礎式に基づいた数値シミュレーションを適用するわけにはいかないからです。特に経験式を用いている場合には、そのよりどころとなった実験の範囲を超えた条件について適用することは危険です。

 一方、問題が基礎式の適用範囲にあったとしても、入力、設定条件、特に境界条件などの設定方法や、領域分割方法、マトリックスソルバーとの整合性により、正しい解が得られるかどうかは、必ずしも保証されません。その意味で、シミュレーション結果と実験・実測結果を比較、照合しておくことは非常に重要です。

 離散的なデータから任意の値を推定する方法に「内挿補間」と「外挿補間」があることはよくご存知だと思います。内挿補間では、推定しようとする範囲よりも上側、下側の既知のデータを使うので、推定結果が現実から大きく外れることはありません。一方、外挿補間では、データが既知である点の情報を用いて全体のカーブを予測し、その延長上にある任意の値を推定する形となり、データが既知な点から離れるほどその精度は保証しにくいことになります。
 シミュレーション結果と実験・実測結果を比較する場合も同じことが言えるでしょう。検討する範囲の上側、下側2点の実験データとの照合ができており、これらの内側条件について数値シミュレーションを実行するならば、その結果は高い信頼性を持つものと考えられます。データ推定の例で言えば「内挿補間」に相当することになるからです。

 しかしこのように理想的な条件がそろうことはむしろ稀で、せいぜいひとつの実験値を照合できる程度という場合が多いでしょう。この場合、データの推定としては「外挿補間」に近い形になります。しかも実験値がひとつということであれば、全体の傾向が右上がりなのか左上がりなのかも推定することはできません。したがってこのような場合、実験条件に極めて近い条件について数値シミュレーションした場合であれば、そこそこ信頼できるという程度の判断しかできないことになります。
 「実験データとの比較ができているので、本シミュレーション結果は正しい」という言葉を耳にしますが、照合した実験条件は、ここに述べたような推定可能範囲にあるのかということをよく考える必要があります。

 またこれもよくある例ですが、検討しているほぼすべての条件について実験とシミュレーションを行っている研究発表を目にする場合があります。これでは、何のために数値シミュレーションを利用しているのかがわかりません。すべて実験できるのであれば数値シミュレーションする意味があまりないからです。
 なお、実験との照合といっても、その都度実験を行う必要があるということではありません。過去の論文などで公表されている実験データや、信頼性が保証されている別の数値シミュレーション結果でもよいでしょう。重要なのは、先述の「内挿補間」または「外挿補間」の考え方で、きちんとそのシミュレーション結果の信頼性を保証できるかということです。
 逆に言うと、数値シミュレーションは「実験・実測で既知のデータを持つ条件をもとに内挿補間あるいは外挿補間的に未知の条件での解を求めるためのツール」とも見ることができ、それが「数値シミュレーションでできること」のひとつの側面であると思います。

 現象解析を行う上では、理論解析(基礎式を微分方程式の解法など用いて解析的に解く方法)も重要な意味を持ちます。「数値シミュレーションでできないこと」のうち最も重要なことは、計算時間の制約から、長時間にわたる現象変化を扱ったり、多数のパラメータに対して現象変化の傾向を見るような用途に適していないということです。同様の問題について理論的なモデルにより検討が可能であれば、少なくとも現象の傾向などを把握することができ、数値シミュレーションを補ったり、数値シミュレーション結果の信頼性を検証する上で大いに役立ちます。

 一般に、数値シミュレーションでは、各条件についての結果を得るまでに長時間を要します。特に大規模な問題では、たった1ケースの解を求めるのに数日にわたる計算が必要となることも珍しくはありません。現象の空間的な挙動を詳細に検討していく場合、三次元数値シミュレーションの結果は大いに役立ちますが、長時間にわたる現象の推移を考察することは(多くの場合)困難です。このような場合、理論解析モデルの併用が現象解析のツールとして重要な意味を持つこととなります。
 また数値シミュレーションでは、1ケースの計算を実行するのにも大きな時間とリソースが必要となるため、さまざまなパラメータについて現象解析を行うことが難しいという問題点があります。設計や研究開発にはさまざまなパラメータステディが必要ですから、数値シミュレーションによる検討のみでは不十分な場合も出てきます。このような場合にも理論解析が併用できるなら、パラメータの変化に対して現象がどのような傾向を示すのかなど検討することが容易に行うことができます。
 このあたりが「数値シミュレーションは万能ではない、数値シミュレーションでできないこともある」を認識しておくべきでしょう。

 最後に「数値シミュレーションでできること」として述べておきたいのは、同時に多数のデータが得られるということです。これまで述べてきたように、実験との照合などにより信頼性が保証されている数値シミュレーションであれば、その膨大な解析データをさまざまな用途に利用することが可能となります。さまざまな断面をコンピュータグラフィックで示し、現象の三次元的な状況を、あるいはその時間変化(多くの場合長時間ではありませんが)を把握することができます。
 シミュレーションでは、領域分割した要素や節点(差分法、有限体積法ではセル、格子点)ごとにデータがあり、また時間方向にも時間刻みごとのデータを得ることができ、実測では困難な統計解析などを行うことも可能となります。
 この点は、たかだか数点〜数十点の測定点しか設定できない実感・実測とは大きく違う点で、「数値シミュレーションでできること」の重要な要素です。

 パーソナルコンピュータの性能向上や汎用シミュレーションソフトウエア(フリーソフトを含む)の普及に伴い、最近では、数値シミュレーションは「誰でも利用できる技術」になってきました。「数値シミュレーションでできること、できないこと」をよく理解し、設計や現象解析のツール(道具)として数値シミュレーションを有効に活用していただければと思います。本コラムの一連の記述が多少なりともそのお手伝いになればと願う次第です。


[topへ]
諏訪先生のご紹介


【ご所属】
(株)大林組 技術研究所 環境技術研究部 主任研究員 諏訪 好英 先生


【略歴】
 昭和58年東京理科大学理工学部機械工学科卒,
 (株)東芝生産技術研究所にて精密機器の開発,電子デバイス製造技術の研究に従事。
 平成4年より(株)大林組技術研究所にてクリーンルームおよび屋内外気流の数値シミュレーション技術に関する研究に従事。
 平成8年東京工業大学より学位取得 博士(工学)。
 平成15〜18年東京工業大学大学院客員助教授兼務。
 現在 東京工業大学非常勤講師兼務。

【関連学協会での活動】
 日本建築学会,日本機械学会,空気調和・衛生工学会,日本空気清浄協会,水素エネルギー協会,日本新エネルギー学会 会員日本エアロゾル学会 常任理事

会社概要 プライバシーポリシー 通信販売法の定めによる表示 商標について リクルート
Copyright ©2011 情報機構 All Rights Reserved.