1D Heat Equation Explicit Scheme
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Gabriel Quattromani
le 24 Avr 2022
Réponse apportée : Alan Stevens
le 25 Avr 2022
Hi, I am trying to write a program to find the minimum depth required to avoid pipes at a depth of xm from freezing, after a temperature of -15oC for 60 days.
I am getting the error message "Index in position 1 is invalid. Array indices must be positive integers or logical values."
Here is my code.
clear all
p=2050; % density(kg/m^3)
k=0.52; % conductivity(W/m-K)
c=1840; % specific heat capacity(J/kg-K)
T_ini=20; % initial temperature(K)
T_inf=-15; % external temperature(K)
alpha=k/(p*c); % Let thermal diffusivity be alpha
M=100; % number of time steps
t=60;
DELTA_t=t/(M); % time step duration(s)
for j=1:M
time(j)=(j-1)*DELTA_t;
end
N=10;
L=0.05;
DELTA_x=L/(N);
x=0:DELTA_x:L;
%Initial wall temperatures T(i,1)
for i=1:N+1
T(i,1)=T_ini;
T(i,N)=0;
end
% Step trough time
for j=1:(M-1)
for i=1:(N)
if (alpha*DELTA_t)/(DELTA_x^2)<=0.5
T(i,j+1)=T(i,j)+((alpha*DELTA_t)/((DELTA_x)^2))*(T(i+1,j)-2*T(i,j)+T(i-1,j));
end
end
end
0 commentaires
Réponse acceptée
Alan Stevens
le 25 Avr 2022
Look at
for i=1:(N)
if (alpha*DELTA_t)/(DELTA_x^2)<=0.5
T(i,j+1)=T(i,j)+((alpha*DELTA_t)/((DELTA_x)^2))*(T(i+1,j)-2*T(i,j)+T(i-1,j));
end
You have a term T(i-1,j). When i is 1 this would be T(0,j), but Matlab indices must start at 1, not 0.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Heat and Mass Transfer dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!