0

PDE 集合を解くために NDsolve 関数を使用しようとしています。

私はMathematica にかなり慣れていません。これが私が入れたコードです。

NDSolve[{D[Cm[t, x], t] == Dm*D[Cm[t, x], x, x] + Kg*Cs[t, x] - Ka*Cm[t, x],
    D[Cs[t, x], t] == Ds*D[Cs[t, x], x, x] + Ka*Cm[t, x] - Kg*Cs[t, x],
    Cm[0, x] == Cm0,
    Cs[0, x] == Cs0,
    Dm*ND[Cm[t, 0]] == 0.5*FT,
    Ds*ND[Cs[t, 0]] == 0.5*FT,
    Cm[t, Infinity] == Cm0,
    Cs[t, Infinity] == Cs0}
   {Cm[t, x], Cs[t, x]}, {t, 0, 1000}, {x, 0, Infinity}];
plot3D[Cs, {t, 0, 1000}, {x, 0, 10000}]

Dm = 9 e - 8;
Ds = 5 e - 9;
Cm0 = 1.276 e + 15;
Cs0 = 1.276 e + 20;
Ka = 1;
Kg = 1 e - 5;
FT = 1 e + 11;

したがって、基本的に、2 つの PDE、2 つの初期条件、および 4 つの境界条件 (2 つの定数 BC、2 つのフラックス BC) があります。パラメータの値はすべてわかっています。それがフォーマットの問題なのか境界選択の問題なのかはわかりません。システムは

"Thread::tdlen: オブジェクトの長さが等しくない"

誰かがいくつかの貴重な提案をすることができますか?

ありがとう


アップデート

Dm = 9*10^-8;
Ds = 5*10^-9;
Cm0 = 1.276*10^+15;
Cs0 = 1.276*10^+20;
Ka = 1;
Kg = 1*10^-5;
FT = 1*10^+11;
NDSolve[{D[Cm[t, x], t] == 
    Dm*D[Cm[t, x], x, x] + Kg*Cs[t, x] - Ka*Cm[t, x],
   D[Cs[t, x], t] == Ds*D[Cs[t, x], x, x] + Ka*Cm[t, x] - Kg*Cs[t, x],
   Cm[0, x] == Cm0,
   Cs[0, x] == Cs0,
   Dm*(D[Cm[t, x], x] /. x -> 0) == 0.7*FT,
   Ds*(D[Cs[t, x], x] /. x -> 0) == 0.3*FT,
   Cs[t, 10000] == Cs0,
   Cm[t, 10000] == Cm0},
  {Cm[t, x], Cs[t, x]}, {t, 0, 1000}, {x, 0, 10001}, 
  PrecisionGoal -> 2];
Animate[Plot[Cs[t, x], {x, 0, 10000}, 
  PlotRange -> {{0, 1000}, {0, 5*10^20}}], {t, 0, 1000}]
4

1 に答える 1