PDEModelsの最良の方法
保存型対流と非保存型対流
一般的に,対流は保存型と非保存型でモデル化することができる.保存型はConservativeConvectionPDETermとして表され,をモデル化する.別の方法はConvectionPDETermを使うというものであり, をモデル化する. の位置が違うことに注目のこと.
スケールの違いで数値解が台無しになる
微分方程式モデルを数値的に解く場合,モデルのコンポーネントのスケールおよびその相対サイズ・絶対サイズに注意を払うことが大切である.例えば,形状と材料パラメータのスケールが大きく異なると解が台無しになることがある.また計算機イプシロンと比較した形状の絶対サイズが解の精度に悪影響を及ぼすこともある.一番の問題は,これが起こるときほぼ警告メッセージはなく,モデル作成者がこの影響を考慮しなければならないという点である.
この影響を調べるために,幅 ,閉込めポテンシャル の量子井戸を例に取る.ここではシュレーディンガー方程式を解き最初の数個の束縛固有状態を求める.
ここで は粒子の質量, は換算プランク定数である.パラメータは"SIBase"単位で指定されていることに注意する. したがって長さの単位は"Meters"になる.同時に井戸の長さはわずか "Angstroms"である.つまり領域の次元は "Meters"のスケールになる.また,換算プランク定数の"SIBase"単位は"Kilograms" "Meters"^2 /"Seconds"である.つまりこの換算プランク定数の長さの単位は "Meters"になる.
領域の長さの次元は,対応するモデルパラメータの長さの次元と数桁異なり,$MachineEpsilonよりも小さいことが分かる.
この問題の境界条件を構築する際に,物理学的な見地から気を付けなければならないのは,波動関数は井戸からの距離が無限大に近づくにつれてゼロに減衰する必要があるという点である.しかし,数値的に無限領域を定義することは不可能なので,十分大きい領域を発見的に選び,後で外側境界で となるようなディリクレ条件を定義する.ここの問題では,波動関数の減衰には井戸の長さの4倍の距離が適切と思われる.
演算子の係数のスケールは10-20と10-39であり,計算機イプシロンよりずっと小さい.
固有値 vals を見ると,これらも計算機イプシロンより小さいことが分かる.これは解が正しくない可能性があることを示している.
上のプロットでは,一見エネルギーの最初の状態の確率密度だけが量子井戸の基底状態で想定される関数形式に似ているように見える.それにもかかわらず,他の2つの確率密度は想定される形状にならない.
この時点で,シミュレーション結果を照合することは常に良い習慣だと言える.利用できる場合は解析結果を,または別の数値メソッドを使うかするとよい.ここでは解析解がある.解析解の詳細はここでは冗長になるので,以下のセクションで解析解を定義する.解析結果の代りに2つ目の数値結果が利用可能になってもプロセスは変わらない.
解析固有値に対する誤差率に基づくと,得られた数値固有値のいずれも受け入れられないということは明らかである.特に2つ目と3つ目の固有値は,1つ目の状態と比較して,対応する解析値からは遠く離れている.これはプロットでより簡単に可視化できる.
これらの問題を回避する方法として,よりよく整列するように形状および係数を適切にスケールするというものがある.これを行うために,井戸の長さを前に使った"Meters"の代りにスケール
に再定義する.形状の次元が変わったので,PDE演算子と境界条件を再定義する必要がある.井戸の長さが再定義されたため,まずパラメータ"SchrodingerPotential"を更新しなければならない.さらにSchrodingerPDEComponentはデフォルトでは"SIBase"単位を使うため,長さの単位は"Meters"である.それに応じてPDE演算子を再定義するために,"ScaleUnits"パラメータを使う.この場合"ScaleUnits"->{"Meters"->"Angstroms"}を使う.これで物理的パラメータの長さの単位すべてが"Angstroms"に再スケールされ,必要なPDE演算子が提供される.
この場合,物理的パラメータの長さの単位を"Meters"から"Angstroms"に変えたので,得られた固有状態もそれに応じた単位を持つ.特にエネルギー固有値には,固有値を所望のエネルギー単位(この場合"Millielectronvolts")に変換する前に"Meters"を"Angstroms"に変換することを除いて、対応する"SIBase"エネルギー単位を割り当てる.
形状の単位はAngstromsなので,波動関数の単位は通常のではなくになる.モデル作成者が波動関数で事後計算を行いたい場合は,このことを考慮に入れる必要がある.
また,確率密度と解析解を比較するためにも,単位の違いを考慮に入れる必要がある.解析波動関数の単位はである.そのため,解析確率密度出力および独立変数はだけスケールダウンされる.
確率密度は量子井戸に囲まれた最初の3つの境界状態について,予想された関数形式を示している.さらに,エネルギーレベルの数値はその解析エネルギーレベルにほぼ一致する.
解析解
Rationalizeを使って,井戸の長さの10分の1の許容誤差を持つ方程式の厳密係数を得る.
副次未知数量の不連続性
主要な未知変数から副次数量を計算しなければならない場合がある.このような副次数量は,主要な未知変数の第一導関数に比例することが多い.主要な未知変数とは異なり,副次変数は要素境界において不連続となり得る.
以下の例は,従属変数 の導関数を取る際に発生する不連続性を示している.また,副次数量 が要素数が増えるに従ってどのように正確になっていくかも示している.
解く方程式は係数 を持つ拡散項と空間で二次式的に変化するソース項である.方程式はから までの1D領域で解かれる.
3つの異なるメッシュを使う.最初のメッシュには2本の線の要素,2つのメッシュには4本線の要素,最後のメッシュには20本線の要素がある.
行の両端で2つのDirichletConditionを指定する.左では値1,右では値0を指定する.
この問題には以下で与えられる解析解がある.解が4次になる点に注目する.つまり,補間関数で使える二次要素が完全には解を補間できないということである.
主要数量で見る故tができるように,解は要素数が多いほど正確になる.
解の補間関数は二次である.ここで解の導関数を計算すると,二次補間関数は実質的に線形になる.さらに線形要素が要素境界において不連続性を導入するというこてゃ有限要素の特徴である.しかしこれらの不連続性は次に示すようにメッシュを調整することで削減することができる.
各要素の交点で不連続性を見ることができるが,不連続性は最初のものよりも小さくなっている.
ディラックのデルタ関数
正則化デルタ関数は,音響学等多数の物理分野で単極音源を実装するために使われる.
単極音源を使うためには,音源は になければならない.単極音源項 は以下のように書ける:
しかし,ディラックのデルタ関数は離散化された空間領域では解けないので,数値シミュレーションでは問題が起こる.これは,ディラックのデルタ関数が音源位置 において特異だからである.従ってディラックのデルタ関数の近似が必要になる.ディラックのデルタ関数の近似の過程は正則化と呼ばれる.
利用できる正則化デルタ関数 にはいくつかある.例として以下がある:
ここで は正則化デルタ関数 のサポートを制御する正則化パラメータである.通常 はメッシュ間隔 に匹敵する大きさである.
を変更すると正則化デルタ関数の幅が変わるが,では空間積分は常に1である.
平滑化ステップ関数
いくつかの例では,熱流束 や表面温度 等の過渡パラメータに対する時間プロファイルを規定するために平滑化ステップ関数 を使う.平滑化ステップ関数以下のように定義される:
ここで関数 が到達できる最小値と最大値はそれぞれ と で表される.ステップの位置は で制御され,平滑化勾配は で制御される.
メモリ負荷の高いPDEを解く
有限要素法のドキュメントには「メモリを多く必要とする偏微分方程式を解く」というセクションがあるので,PDEを解く上で知っておくと役に立つ.
単位
幾何学単位
幾何学単位は再スケールすることができる.これは「要素メッシュの生成」チュートリアルで説明してある.
材料単位
幾何学単位が材料単位と異なる場合,材料単位はスケールすることができる.
内部的にはすべての材料データは"SIBase"単位に変換される.その結果長さのデフォルト単位は"Meters"になる.幾何学単位もメートルであれば,何も変更は必要ない.幾何学単位がメートルでなければ,PDEと材料特性を幾何学単位にスケールするか,機関学単位を"Meters"にスケールするかしなければならない.PDEと材料特性の単位をスケールするためには,パラメータ"ScaleUnits"を与えることができる.明示的に述べられていない場合,このノートブックの例ではデフォルトの"SIBase"単位を使う.
材料パラメータが数量として与えられていても,手順は同じである.