Температура укупорки — 2D уравнение теплопроводности с ode15

#matlab #ode #temperature #pde

#matlab #ода #температура #pde

Вопрос:

Я пытаюсь решить 2D-уравнение теплопроводности, и я решаю с помощью ode15, мне было указано, что уравнение dT / dt необходимо будет скорректировать. Можно ли было бы получить какие-то рекомендации о том, как мне следует это сделать?

Я последовал этому примеру из Matlab: https://uk.mathworks.com/matlabcentral/fileexchange/59916-simple-heat-equation-solver?s_tid=srchtitle

Как может

 du = alpha/dx^2*(u(1:end-2,2:end-1)-2*u(2:end-1,2:end-1) u(2:end-1,3:end)...
      u(2:end-1,1:end-2)-2*u(2:end-1,2:end-1) u(3:end,2:end-1));

du = du(:);
 

часть функции getRHS из примера может быть изменена, чтобы ограничить температуру, до которой она поднимается?

Ответ №1:

просто добавьте его перед ode в качестве порога thr u0 , например:

 thr=0.5; % just some # I picked, 
u0(u0>thr)=thr;
 

Комментарии:

1. Привет, я пробовал код, и, похоже, он выводит только ограничивающую температуру для меня? Извините…

2. играйте с пороговым значением. используйте, например inf . это ничего не должно делать. если это не так, то вы не реализовали это так, как я предложил…

3. Привет, я понял, что забыл «;» в коде, который я ввел. Однако он все еще не работал. Я также попытался просто скопировать и вставить предложенный вами код, и вот попытка: imgur.com/a/ok66z99

4. вы понимаете, что в этом примере поток тепла будет только уменьшаться в зависимости от времени? поэтому, когда вы ограничиваете температуру при t = 0 (что в примере по ссылке на самом деле u0(u0>thr)=thr; находится за пределами функции getRHS), она будет ограничена, но затем только уменьшится. Я отредактировал свой ответ.