モンテカルロ放射解析
理論:光線を数えて放射を求める
概要
モンテカルロ法は乱数を使うんですよね。そんな方法で正確な答えが出るんですか?
光線を十分たくさん飛ばせば出る。ただし誤差は光線の数の平方根でしか小さくならないので、精度を上げるほど計算は重くなる。その代わり、形が複雑でも、波長や向きで性質が変わっても、気体が光を吸収・散乱しても、光線をたどるという同じ手順で扱える。厳密解のある2枚の円板の形態係数と、吸収のある層の透過率で、モンテカルロ法がどこまで合うか、光線の数でどう変わるかを確かめよう。
形態係数と統計誤差
面1の上の点を一様に選び、方向は拡散放射に合うよう余弦分布で選ぶ($R$ は0〜1の一様乱数)。面2に当たった割合が形態係数になる。当たる・当たらないの二項分布なので、ばらつきは $\sqrt{F(1-F)/N}$。
吸収のある層
$s$ は吸収されるまでの距離で、吸収係数 κ の指数分布から選ぶ。拡散光は斜めに進む光線が長い距離を通るので、平行光より透過しにくい。
ロスアラモスから熱放射へ
モンテカルロ法は1940年代、アメリカのロスアラモスでウラムやフォン・ノイマンらが中性子の動きを計算するために考えた方法で、名前はカジノで有名なモナコの地区から取られた。熱放射への応用は1960年代にハウエルらが進め、複雑な形の炉や宇宙機の放射の計算に使われるようになった。今では、映画のコンピュータグラフィックスでも、同じ光線追跡の考え方で光の明るさを計算している。
計算例
例1:向かい合う円板の形態係数
半径1、間隔1の同軸の2枚の円板。厳密値は0.38197。光線の本数ごとに乱数の種を変えて10回ずつ計算した。
| 光線数 | 平均 | 標準偏差 | 理論の標準偏差 |
|---|---|---|---|
| 100 | 0.3710 | 0.0671 | 0.0486 |
| 1,000 | 0.3876 | 0.0122 | 0.0154 |
| 10,000 | 0.3829 | 0.0038 | 0.0049 |
| 100,000 | 0.3820 | 0.0012 | 0.0015 |
| 1,000,000 | 0.3819 | 0.0006 | 0.0005 |
例2:吸収のある層の透過率
| 光学的厚さ κL | 平行光 MC | exp(−κL) | 拡散光 MC | 2E₃(κL) |
|---|---|---|---|---|
| 0.1 | 0.9045 | 0.9048 | 0.8323 | 0.8326 |
| 1 | 0.3678 | 0.3679 | 0.2185 | 0.2194 |
| 3 | 0.0503 | 0.0498 | 0.0180 | 0.0179 |
各20万本の光線で計算した。
100万本でやっと小数第4位がそろうんですね。けっこう大変ですね。
そこがモンテカルロ法の弱点だ。誤差を10分の1にするには光線を100倍にしなければならない。でも、どんなに形が複雑でも、面の数がどれだけ多くても、誤差の減り方は変わらない。面の数が増えると形態係数の行列が急に大きくなる方法と比べて、複雑な問題ほど有利になる。実務では、必要な精度(例えば熱流束で1%)から光線数の目安を決め、本数を2倍、4倍と変えて結果が落ち着くことを確かめる。分散を小さくする工夫(重点サンプリング、相反関係の利用)で、同じ本数でも精度を上げられる。
解析のポイント
- まず厳密解のある簡単な形でコードを確かめる。
- 光線数を2倍ずつ増やし、結果のばらつきが1/√Nで減ることを確認する。
- 相反関係 A₁F₁₂ = A₂F₂₁ や総和則 ΣF = 1 で結果を点検する。
- 小さな面や当たりにくい面では誤差が大きくなるので、光線を重点的に配分する。
- 乱数の質と種を記録し、結果を再現できるようにする。
「小さなセンサーの温度がばらついた」
ある炉の放射解析で、壁に付いた小さな温度センサーの計算温度が、計算するたびに数十Kもばらついた。センサーの面積が炉全体に比べて非常に小さく、そこに当たる光線がわずかしかなかったのだ。センサーに向けて光線を多く飛ばし、その分の重みを小さくする重点サンプリングを使うと、同じ計算時間でばらつきは数Kに収まった。モンテカルロ法では、注目する場所に十分な光線が届いているかを確かめる必要がある。
よくある間違い
間違いと対策
| 間違い | 起きること | 対策 |
|---|---|---|
| 方向を一様分布で選ぶ | 拡散放射と合わない | 余弦分布を使う |
| 光線数が少ない | 結果がばらつく | 1/√Nで決める |
| 小さな面に光線が届かない | 局所の誤差 | 重点サンプリング |
| 相反関係を確認しない | バグを見逃す | 総和と相反で点検 |
| 乱数の種を固定しない | 再現できない | 種を記録 |
関連する内容も知りたいです。
関連トピック
なった
詳しく
報告