mercredi 21 octobre 2020

How to fix "if statement" issue in my code?

Here is my code. I want P_ABP and P_ACP values to be zero if they are smaller than 0. But I still get negative values when I plot the graph.

day = 40;

angle_mu = 8;

lat = 30.43;

Ps = 1000;

elev = 59.9;

time = linspace(0,24,24);

alpha = 360/24*(time-12);

dec = 23.44sind(360(day-80)/365.25);

zen = acosd(sind(dec).*sind(lat)+cosd(dec).*cosd(lat).*cosd(alpha));

tan_azi = atand(sind(alpha)./sind(lat).*cos(alpha)-cosd(lat).*tand(dec));

azi = atand(tan_azi);

for i = 1:length(alpha)

if alpha(i) >=0 && tan_azi(i) >=0

azi(i) = 180 + azi(i); 

elseif alpha(i) >=0 && tan_azi(i) <=0

azi(i) = 360 + azi(i); 

elseif alpha(i) <=0 && tan_azi(i) >=0

azi(i) = azi(i); 

elseif alpha(i) <=0 && tan_azi(i) <=0

azi(i) = 180 + azi(i); 

end

end

A = 0.433*2;

surf_aziABP = 0;

surf_aziACP = 0;

P_ABP = 0;

P_ACP = 0;

rotation = linspace(1,8,24);

for a = 1:length(time)

surf_aziABP = 60-angle_mu + (rotation(a).*time);

surf_aziACP = 60+angle_mu + (rotation(a).*time);

for b = 1:length(time)

P_ABP = (Ps.*(cosd(elev).*cosd(zen)+sind(elev).*sind(zen).*cosd(azi- surf_aziABP(b))));  
P_ACP = (Ps.*(cosd(elev).*cosd(zen)+sind(elev).*sind(zen).*cosd(azi- surf_aziACP(b)))); 

end

end

if P_ABP < 0

P_ABP = 0; 

elseif P_ACP < 0

P_ACP = 0; 

end

Power_Total = P_ABP + P_ACP;

POW = A.*Power_Total;

plot(rotation,POW)

grid on

xlabel('Angular Velocity/Hour')

ylabel('Power (W/m^2')

sumPOW = sum(POW)

trapz(time,POW)

Aucun commentaire:

Enregistrer un commentaire