|
I am creating a 1D global energy balance model, and am having issues with getting subscript dimension mismatch errors. The code is pasted below. Any ideas? I get the first error when calculating T_o, but I presume I would get the same one for T_a. The size of all matrices is the same (360x3)
nphi = 360;
phi = linspace(0,pi,nphi);
dphi = phi(2) - phi(1);
nt = 182;
totaltime = 365;
t = linspace(0,totaltime,nt);
dt = t(2) - t(1);
rho_a = 1.25; % kg*m^-3
rho_o = 1e3; % kg*m^-3
cp_a = 1004; % J*K^-1*kg^-1
cp_o = 4218; % J*K^-1*kg^-1
epsilon = 0.7; % unitless
sigma = 5.67e-8; % J*s^-1*m^-2*K^-4
alpha = 0.3; %unitless
kappa_o = 0.58; % J*m^-1*s^-1*K^-1
kappa_a = 2.4e-2; % J*m^-1*s^-1*K^-1
delz_a = 5e3; % m
delz_o = 100; % m
R = 6.3781e6; % m
T_a = zeros(nphi,3);
T_o = zeros(nphi,3);
T_o_phi = T_o;
T_o_phiphi = T_o;
T_a_phi = T_o;
T_a_phiphi = T_o;
S = T_o;
temp_atm = zeros(nt,nphi);
temp_oc = temp_atm;
for i = 1:nphi
for n = 1:3
T_o(i,n) = 0;
T_a(i,n) = 0;
end
end
for n = 1:nt
for i = 2:nphi - 1
phi(i) = i*dphi;
t(n) = n*dt;
T_o_phi(i,2) = (T_o(i+1,2) - T_o(i-1,2))/(2*dphi);
T_o_phiphi(i,2) = (T_o(i+1,1) - 2*T_o(i,1) + T_o(i-1,1))/(dphi*dphi);
S(i,2) = 125 + 125*sin(1.6*pi*i/nphi + 2.75 + 2.75*sin(2*pi*n/nt + 3*pi/2));
C1 = ones(3,1)*(2*dt*kappa_o./(R^2.*sin(phi).*cp_o*rho_o*delz_o));
C2 = ones(3,1)*sin(phi);
C3 = ones(3,1)*cos(phi);
T_o(i,3) = T_o(i,1) + C1'.*(C2'.*T_o_phiphi(i,2) + C3'.*T_o_phi(i,2) + (1 - alpha).*S(i,2) - sigma.*T_o(i,2).^4 + epsilon.*sigma.*T_a(i,2).^4);
T_a_phi(i,2) = (T_a(i+1,2) - T_a(i-1,2))/(2*dphi);
T_a_phiphi(i,2) = (T_a(i+1,1) - 2*T_a(i,1) + T_a(i-1,1))/(dphi*dphi);
C4 = ones(3,1)*(2*dt*kappa_a./(R^2*sin(phi)*cp_a*rho_a*delz_a));
T_a(i,3) = T_a(i,1) + C4'*(C2'*T_a_phiphi + C3'*T_a_phi - 2*epsilon*sigma*T_a(i,2).^4 + epsilon*sigma*T_o(i,2).^4);
end
T_a(nphi,n) = T_a(nphi-1,n);
T_a(2,n) = T_a(1,n);
T_a(:,1) = T_a(:,2);
T_a(:,2) = T_a(:,3);
T_o(nphi,n) = T_o(nphi-1,n);
T_o(2,n) = T_o(1,n);
T_o(:,1) = T_o(:,2);
T_o(:,2) = T_o(:,3);
temp_atm(n,:) = T_a(:,3)';
temp_oc(n,:) = T_o(:,3)';
end
|