solve thFile: Copy_of_heattransfer.m Line: 18 Column: 13 Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for misme error
Show older comments
k_steel = 50; %w/m-k conductivity
k_copper = 500;
[xs,ts,u_steel,flux_s] = FDM(k_steel); % Temperature distribution in steel rode
[xc,tc,u_copper,flux_c] = FDM(k_copper); % Temperature distribution in copper rode
figure()
plot(ts,u_steel(:,6),tc,u_copper(:,6),'LineWidth',3)% Maximum temperature
title('Maximum Temperature Distribution')
xlabel('Time (s)')
ylabel('Maximum Temperature (Degree C)')
legend('Steel','Copper')
figure ()
plot(ts,flux_s,tc,flux_c,'LineWidth',3)% Maximum temperature
title('Heat Flux')
xlabel('Time (s)')
ylabel('Heat Flux (W/m^2)')
legend('Steel','Copper')
function[x,t;u;flux]= FDM(k) % Explicit finite difference methode
rho = 8000; %kg/m3 densityk_steel
cp = 400; %J/kg-k specific heat
q = 5000; %W/m3 Heat generation rate
dx = 0.1; %m step size
alpha = k/(rho*cp);
dt = 25;
%dt = 0.5*dx^2/alpha;
if k == 50
tle = 'Steel';
else
tle = 'Copper';
end
x = 0:dx:1;
t = 0:dt:2000;
u0 = -q/(2*k)*x.^2+q/(2*k)*x+30;
u = zeros(length(t),length(x));
u(1,:) = u0;
u(:,1) = 30;
u(:,end) = 30;
for i = 1:(length(t)-1)
for j = 2:length(x)-1
u(i+1,j) = u(i,j)+dt*alpha/dx^2*(u(i,j-1)-2*u(i,j)+u(i,j+1));
end
end
flux = -k*(u(:,2)-u(:,1))/dx;
[X,T] = meshgrid(x,t);
figure()
surf(X,T,u)
xlabel('Length (m)')
ylabel('Time (s)')
title(tle)
figure()
plot(x,u(find(t==500),:),x,u(find(t==1000),:),x,u(find(t==1500),:),x;u(find(t==2000,:);'LineWidth';3)
legend('t= 500 s','t= 1000 s','t= 1500 s','t= 2000 s')
xlabel('Length (m)')
ylabel('Temperature (Degree C)')
title(tle)
end
Answers (1)
k_steel = 50; %w/m-k conductivity
k_copper = 500;
[xs,ts,u_steel,flux_s] = FDM(k_steel); % Temperature distribution in steel rode
[xc,tc,u_copper,flux_c] = FDM(k_copper); % Temperature distribution in copper rode
figure(1)
plot(ts,u_steel(:,6),tc,u_copper(:,6),'LineWidth',3)% Maximum temperature
title('Maximum Temperature Distribution')
xlabel('Time (s)')
ylabel('Maximum Temperature (Degree C)')
legend('Steel','Copper')
figure(2)
plot(ts,flux_s,tc,flux_c,'LineWidth',3)% Maximum temperature
title('Heat Flux')
xlabel('Time (s)')
ylabel('Heat Flux (W/m^2)')
legend('Steel','Copper')
function[x,t,u,flux]= FDM(k) % Explicit finite difference methode
rho = 8000; %kg/m3 densityk_steel
cp = 400; %J/kg-k specific heat
q = 5000; %W/m3 Heat generation rate
dx = 0.1; %m step size
alpha = k/(rho*cp);
dt = 25;
%dt = 0.5*dx^2/alpha;
if k == 50
tle = 'Steel';
else
tle = 'Copper';
end
x = 0:dx:1;
t = 0:dt:2000;
u0 = -q/(2*k)*x.^2+q/(2*k)*x+30;
u = zeros(length(t),length(x));
u(1,:) = u0;
u(:,1) = 30;
u(:,end) = 30;
for i = 1:(length(t)-1)
for j = 2:length(x)-1
u(i+1,j) = u(i,j)+dt*alpha/dx^2*(u(i,j-1)-2*u(i,j)+u(i,j+1));
end
end
flux = -k*(u(:,2)-u(:,1))/dx;
[X,T] = meshgrid(x,t);
figure()
surf(X,T,u)
xlabel('Length (m)')
ylabel('Time (s)')
title(tle)
figure()
plot(x,u(find(t==500),:),x,u(find(t==1000),:),x,u(find(t==1500),:),x,u(find(t==2000),:),'LineWidth',3)
legend('t= 500 s','t= 1000 s','t= 1500 s','t= 2000 s')
xlabel('Length (m)')
ylabel('Temperature (Degree C)')
title(tle)
end
1 Comment
In the below lines, there are misplaced parenthesis used for plot function and also for vector u at different times
plot(x,u(find(t==500),:),x,u(find(t==1000),:),x,u(find(t==1500),:),x,u(find(t==2000),:),'LineWidth',3)
There are also ; being used as separaters for plotting multiple data sets in plot function. Matlab recommends to use comma , instead
Categories
Find more on MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




