非線形問題への対応

先頭へ  前へ  次へ

 

 

FlexPDEは問題が非線形であるかどうかを自動的に認識し、解法戦略をそれに適した形に変更します。FlexPDEで使用される解法は修正ニュートン-ラフソン反復法(modified Newton-Raphson iteration procedure)と呼ばれるものです。これは下降法であり、エネルギー汎関数の勾配を下ることによってその最小値を求めようとするものです(最小点では汎関数の勾配は0となります)。単純な拡散型問題の場合がその一例ですが、汎関数が2次関数に近いものであった場合には、この探索法は2次関数的に収束します(反復を繰り返すごとに相対誤差は2乗の形で小さくなります)。FlexPDEで実装されているデフォルトの探索法は通常ユーザの助けがなくても解を見つけることができます。しかし非線形性が強いときには、FlexPDEが正しい解に向かうようユーザのガイドが必要となる場合があります。そのためのテクニックにはいくつかあります。

 

時間依存型問題

 

非線形の時間依存型問題の場合、いかなる非線形性もタイムステップコントローラによって感知され、そのタイムステップの調整が初期条件からの系の正確な展開を保証するとの仮定に基づき、それぞれのタイムステップではニュートン法のステップを1つしか進めないというのがデフォルトの設定です。この場合、解の微分値はタイムステップの開始時点でのみ計算され、アップデートされることはありません。

 

より難しい局面にも頑強に対応できるような(従って演算時間を要する)選択肢がいくつか用意されています。キーとなるのは PREFER_STABILITY という選択肢ですが、これを指定した場合には各タイムステップにおいてニュートン法の反復が最大3回まで行われるようになります。その場合、微分値は反復ごとに再計算されます。またそれは誤差の重み付けスキームを変更し、より局所的な変動に重きを置くようにします。また PREFER_STABILITY は NRUPDATE と TNORM の値をリセットします。

 

定常問題

 

非線形の定常問題の場合には状況はさらに複雑化します。系がユニークな解を持つという保証がないばかりか、仮にそうだとしてもFlexPDEがそれを見出せるという保証がないからです。

 

(1) 良い初期値からスタートする

 

真の解に近い初期値を与えることは解探索にとってこの上ない助けとなります。ただしその初期値は境界条件に合致したものとしてください。そうでない場合にはあらぬ方向へ求解が流れることとなり解探索に支障を来たします。

 

(2) ステージング機能を使って非線形項をアクティベートする

 

FlexPDEのステージング機能を使えば非線形項の強度を徐々に増やしてゆくことができます。まずは線形に近い系からスタートし、FlexPDEが境界条件を満たす解を見つけられるように仕向けます。それを起点にしてより非線形性の強い系に対する解探索を行わせます。ステージングをうまく使うと非常にたちの悪い問題の解にも近づいて行くことが可能です。

 

(3) 人為的な拡散項を利用して解を安定化させる

 

信号処理において不連続な信号をフーリエ成分から再構成しようとするとGibbs現象が発生します。この現象の特徴は顕著なもので、復元された信号中に上下に振動する数多くのピークが混入する結果となります。メッシュ密度が十分でない状態で急激な変位をモデル化しようとすると、有限要素法においても同様の現象が発生します。信号処理の場合には窓関数(window function)を用いることによって信号を平滑化することができます。これは実質的に信号中の高周波成分を取り除くローパスフィルタとして機能します。偏微分方程式の問題においては拡散演算子 Div(grad(u)) が同様のローパスフィルタの役割を果たします。技術的な詳細についてはテクニカルノート "Smoothing Operators in PDE" を参照ください。要はPDE中に eps*Div(Grad(u)) という項を導入することによって空間的広がりDを持った振動を平滑化することができます。ここに eps=D^2/pi^2 (定常問題)、または eps=2*D*c/pi (時間依存型問題)です(c は信号伝播速度)。ただし方程式の他の部分と次元上の整合性を維持するため、必要に応じて項のスケールは調整してください。このような項の使用は、解の空間周波数成分を有限要素メッシュ上でうまく扱える範囲に抑える効果を持ちます。

 

(4) CHANGELIM による刻みの制御

 

セレクタ CHANGELIM を選択することによって、ニュートン-ラフソン法の各ステップにおいて節点の値が変化する量に制限を加えることができます。1次元のニュートン法の場合と同様、近似解が汎関数の極大点の近傍にあった場合には、次の近似解への刻み(ステップ)が非常に大きな値となってしまうことがあります。FlexPDEは節点における変化の量を        CHANGELIM*(変数の平均値) 以下に抑えるよう制御します。CHANGELIM のデフォルト値は 0.5 ですが、この値の場合には、初期値(あるいは途中の近似解)の位置が真の解の位置から遠いときに解探索に大きな乱れ(wild excursions)を生じることがあります。CHANGELIM の値を 0.1 とか、場合によっては 0.01 にまで小さくしてみてください。適切な初期値が与えられた場合には CHANGELIM=0.01 でも驚くほど短時間に解に収束することができます。CHANGELIM はそれぞれの局所値ではなくRMSの平均値に乗ぜられるため、その効果は解に到達した時点で消え、最後の収束は依然2次関数的に推移します。

 

(5) 負の値に注意

 

FlexPDEは解を近似するのに区間ごとに定義された多項式(piecewise polynomials)を使用します。解が単一セル上で急激に変動するような場合には、早い段階ではほぼ間違いなくunder-shootが発生します。このため、たとえ変数値は正に留まるはずという仮定があったとしてもそうはなりません。負の値となったときに方程式が成立しなくなるような場合には、該当変数を対数化した上で方程式を組みなおしてみてください。この場合、対数値はたとえ負になることがあっても、実際の変数値は正に留まります。

 

(6) 時間依存型問題への変形

 

定常問題はどのようなものであっても時間依存型問題の無限時間後の状態と考えることができます。定常問題の解からの乖離を小さくする方向に誘導する時間微分項を偏微分方程式に追加してみてください。(良い例が時間依存型の拡散方程式 DIV(K*GRAD(U)) = DT(U) です。Divergenceが負値であることは解が極大の状態にあることを意味するので、その値は減少する方向に推移します。)この場合、時間は架空の変数であるわけですが、このように時間依存型の方程式にすることによってタイムステップコントローラを利用した形での解の誘導が可能になります。