Дискретизация PDE в пространстве для использования с modelica - PullRequest
1 голос
/ 13 октября 2019

В настоящее время я прохожу курс под названием «Моделирование динамических систем», и мне было поручено моделировать резервуар с теплой водой в modelica с распределенным описанием температуры.

Большинство задач прошло хорошо,и моя группа осталась с задачей введения теплового потока из-за эффектов плавучести в модель. Вот где мы застряли.

получено следующее уравнение: При заданном PDE

Но как мы можем преобразовать это в нечто, что мы можем использовать в modelica?

Дискретизированная версия, с которой мы в итоге пришли, была такой:

(Qd_pp_b[k+1] - Qd_pp_b[k]) / h_dz = -K_b *(T[k+1] - 2 * T[k] + T[k-1]) / h_dz^2

, где Qd_pp_b - левая переменная, то есть тепловой поток, k - текущий срез резервуара, а T - температура. в ломтиках.

Мы на правильном пути? или совершенно не так?

1 Ответ

2 голосов
/ 16 октября 2019

Это, кажется, не дифференциальное уравнение (как есть), так что это не имеет смысла без окружающих проблем. Для второй производной вы всегда должны создавать вспомогательные переменные, а для каждой частной производной - отдельное уравнение. Я добавил фиктивные значения для параметров и фиктивные уравнения для T[k]. Это можно смоделировать, это то, что вы ожидали?

model test
  constant Integer n = 10;
  Real[n] Qd_pp_b;
  Real[n] dT;
  Real[n] T;
  parameter Real K_b = 1;
equation
    for k in 1:n loop
      der(Qd_pp_b[k]) = -K_b *der(dT[k]);
      der(T[k]) = dT[k];
      T[k] = sin(time+k);
    end for;
end test;
...