回答:
最も一般的な方法は、負の値を小さい正の数にリセットすることです。もちろん、これは数学的に正しい解決策ではありません。動作する可能性があり、簡単な、より一般的なアプローチは、タイムステップのサイズを小さくすることです。
負の値は、双曲線PDEの解でしばしば発生します。これは、ショックの出現により振動が発生する可能性があるためです。用い減少総変化(TVD)または他の非振動(ENO、ウェノの)方法は、この傾向を減少させることができます。これらの方法は、非線形リミッターを使用して解の導関数を計算することに基づいています。ただし、いくつかの理由で負の値が得られる場合があります。
もちろん、David GeorgeのGeoClawコードなど、特定の方程式には他の多くの特殊なアプローチがあります。
ソース項なしで双曲線方程式を解き、物理的な初期条件を提供すると仮定して、使用する数値スキームがTotal Variation Diminishingであることを確認することは、計算された解の「物理性」を保証する良い方法です。TVDスキームは単調性を保持するため、新しい最小値または最大値は作成されず、ソリューションは適切に設定された初期値に制限されたままになります。もちろん、問題はTVDスキームが最も明白なものではないということです。線形スキームのうち、1次スキームのみがTVDです(Godunov 1954)。そのため、50年代以来、双曲線方程式の解法のために高精度と単調性を組み合わせたさまざまな非線形TVDスキームが開発されてきました。
私のアプリケーションでは、大きな圧力/密度勾配を持つNavier-Stokes方程式を解くために、ハイブリッドMUSCL -centralスキームを使用して、大きな勾配/不連続性をキャプチャし、それらから離れて良好な精度を維持します。最初のMUSCLスキーム(MUSCLは、保全法に関するMonotone Upstream-centered Schemesの略)は、1979年にVan Leerによって考案されました。
このテーマについて詳しく知りたい場合は、Harten、Van Leer、Lax、Sod、Toroの作品を参照してください。
上記の答えは時間依存の問題に当てはまりますが、単純な楕円方程式で陽性を要求することもできます。この場合、変分不等式として定式化して、変数の境界を与えることができます。
PETScには、2つのVIソルバーがあります。1つは、アクティブな制約の変数が解決されるシステムから削除される、スペースを削減する方法を使用します。もう1つは、準滑らかなニュートン法を使用します。