Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

Getting error: Error using .* Matrix dimensions must agree. Please help. The code the given below.

2 Ansichten (letzte 30 Tage)
Nx = 100;
Ny = 20;
Nt = 400;
x = 0:10/Nx:10;
y = -1:2/Ny:1;
t = 0:1/Nt:1;
Dx = 10/Nx; % delta x
Dy = 2/Ny; % delta y
Dt = 1/Nt; % delta t
%%Numerical Solution using alpha (a) = 1
% Constants
a = 1.0; % alpha
Xd = a*Dt/(Dx^2); % Diffusion Length Scale in x
Yd = a*Dt/(Dy^2); % Diffusion Length Scale in y
c = Dt/(2*Dx); % Convection Length Scale
% Boundary Conditions
T = zeros(Ny+1,Nx+1,Nt+1); % Scalar field
T(1,1:end,:) = 0; % Bottom Wall
for m = 1:Ny+1
T(m,1,:) = (1 - (y(m).*y(m))).^2; % Inlet
end
% Forward Euler in Time, Central Differencing in Space
maxiter = 500;
for k = 1:maxiter
Tlast = T; % saving the last guess
T(:,:,1) = Tlast(:,:,end); % initialize the scalar field at t = 0 to the last guess
for i = 2:Nt+1
T(2:end-1,2:end-1,i) = (1-(2*Xd)-(2*Yd))*T(2:end-1,2:end-1,i-1) + (Xd-((3/2)*c*(1-(y(2:end-1).^2)))).*T(2:end-1,3:end,i-1) + (Xd+((3/2)*c*(1-(y(2:end-1).^2)))).*T(2:end-1,1:end-2,i-1) + Yd*T(3:end,2:end-1,i-1) + Yd*T(1:end-2,2:end-1,i-1);
T(end,1:end,i) = (4*T(end-1,1:end,i) - T(end-2,1:end,i))/3; % Top Wall (dT/dy = 0)
T(1:end,end,i) = (4*T(1:end,end-1,i) - T(1:end,end-2,i))/3; % Outlet (dT/dx = 0)
end
err(k) = max(abs(T(:)-Tlast(:))); % finding the residual value between two successive iterations
if err(k) < 1E-04
break; % stopping the solution is the residual value is small
end
end
  3 Kommentare
Walter Roberson
Walter Roberson am 3 Dez. 2012
The code here is close enough to the code in your other question that I would suspect siilar problems.

Antworten (0)

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by