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

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

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Products

Release

R2023a

Tags

Asked:

on 13 Jun 2023

Edited:

on 13 Jun 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!