非線形偏微分方程式のシステムでの解析エラー[バグ?]、Mathematica 12.0.0

Aug 18 2020

12.0で導入され、12.1.1まで存続するバグ-バージョン:12.2で修正

12.0.0を使用すると次の動作が見つかります。(編集:私は友人に12.1.1でそれを試すように頼みました、そして彼は同じ結果を見つけます。)

これは、NDSolve解析できない結合非線形偏微分方程式のシステムです(システム自体について心配する必要はありません。この動作を生成するのは、私が見つけた最も単純な例です)。

c = {{1, 0}, {0, v[x, y]}};
alpha = {0, -u[x, y]};
NDSolveValue[{-Inactive[Div][c.Inactive[Grad][u[x, y], {x, y}], {x, y}] == 0, 
     -Inactive[Div][Inactive[Times][alpha, v[x, y]], {x, y}] ==0}, {u[x, y], v[x, y]}, 
Element[{x, y}, Disk[]]]

出力は

NDSolveValue :: femper:Div [{{1,0}、{0、v}}。Grad $ 9730]のPDE解析エラー。方程式の次元に一貫性がありません。

非常に基本的な機能がバグのようです。たぶん私は何か簡単なものが欠けています。Inactiveパーサーが係数を特定するのに問題がないように、大量の呼び出しを含めてみました。そうしないと、非線形システムではあいまいになる可能性があります。

同様の線形問題では、構文解析は問題にならないことに注意してください。

c = {{1, 0}, {0, 1}};
alpha = {0, -1};

また、従属変数を({u}ではなく{u,v})1次元に縮小する場合でも、解析に問題はありませんが、非線形に保ちます(例c1 = {{1, 0}, {0, u[x, y]}})。したがって、この問題は、結合と非線形の組み合わせが原因であると思われます。

また、明らかな回避策があることに注意してください。これは、「FEMプログラミング」ルートを使用し、を介して偏微分方程式係数を指定することですInitializePDECoefficients。しかし、それでも...ここには何がありますか?

回答

user21 Dec 17 2020 at 08:50

これはバグであり、バージョン12.2で修正されています。

c = {{1, 0}, {0, v[x, y]}};
alpha = {0, -u[x, y]};
NDSolveValue[{-Inactive[Div][
     c . Inactive[Grad][u[x, y], {x, y}], {x, y}] == 
   0, -Inactive[Div][Inactive[Times][alpha, v[x, y]], {x, y}] == 
   0}, {u[x, y], v[x, y]}, Element[{x, y}, Disk[]]]

境界条件の欠落について予期される警告が表示されますが、それ以外は解決策が返されます。

NamNguyen Nov 03 2020 at 18:57

NDSolveにも同じバグがあります。Mathematica11の場合は動作します。しかし、同じノートブックがMathematica 12.0で実行され、それは以下を生成します:

NDSolveValue::ndnum: Encountered non-numerical value for a derivative at t == 0.`.



In[2]:= $Version

Out[2]= "12.0.0 for Microsoft Windows (64-bit) (April 6, 2019)"