モデリカで偏導関数を使用する必要がある場合、どのように使用できますか。偏導関数がモデリカで解決できるかどうかはわかりませんが、使用できる場合はどのように実装する必要があるかを知りたいです。
2 に答える
あなたが望むかもしれない2つの異なる潜在的な「部分導関数」があります。1 つは、空間変数に関する偏導関数 (偏微分方程式の解決に関心がある場合)、またはシミュレーション変数に関する式の偏導関数が必要な場合です。
しかし、どちらも Modelica では表現できないため、問題ありません。
あなたの動機が偏微分方程式を解くことである場合は、結果の方程式が単純な ODE になるように、モデルの空間的側面を処理するだけでよいのではないかと思います (ある種の離散化、弱い定式化などを使用)。
時間以外の変数に関する式の導関数を計算したい場合、問題は...なぜですか? これが本当に必要なアプリケーションを考えるのは難しいです。ただし、ユースケースを説明していただければ、その処理方法についてさらにコメントできます。
Modelica で解を得るために PDE システムを離散化しました: 熱方程式、波動方程式、二重管熱交換器からの PDE、パイプラインの圧力サージをモデル化するためのウォーター ハンマーからの PDE など
単純なレベルでは、空間導関数を中心差分近似に置き換えてから、for ループを使用して ODE のセット全体を生成できます。例えば。これは、熱方程式を単純に離散化するための Modelica コード スニペットです。
parameter Real L = 1 "Length";
parameter Integer n = 50 "Number of sections";
parameter Real alpha = 1;
Real dL = L/n "Section length";
Real[n] u(each start = 0);
equations
u[1] = 273; //boundary condition
u[n] =0; //boundary condition
for i in 2:n-1 loop
der(u[i]) = alpha * (u[i+1] - 2 * u[i] + u[i-1]) / dL^2;
end for;
これは私の頭の中で入力した簡単な例ですので、間違っている場合はご容赦ください。
具体的な例やアプリケーションはありますか?