Problem with if statement
1 view (last 30 days)
Show older comments
Hi in this program I take data from an excel file, interpolate them with a spline, this part of the code doesn't appear because it works. The problem here is that a certain point we should enter in the if cycle with the last value of i and start another calculation, until the index j arrives to Nt, but the program never enter in the if cycle, even if the if statement is true, I don't know why?. maybe i should choose a comlpletely different structure using while, but how can I index the variables with while ?
kind regards
Francesco Renzulli
P.S I have the latest version of matlab
for i=1:Nt-1
H_t_e(i) = ppval(H_ts,T(i));% ppval per valutare il polinomio
dQ(i)=m_vap(i)*H_t_e(i);
Cp_liq_e(i)=ppval(Cp_liqs,T(i));
dT(i)=(-dQ(i))/(m_liq(i)*Cp_liq_e(i));
T(i+1)=T(i)+dT(i);
rho_liq_e(i)=ppval(rho_liqs,T(i+1));
rho_vap_e(i)=ppval(rho_vaps,T(i+1));
P_tank(i)=ppval(P_vaps,T(i+1));
P_cham(i)=0.4*P_tank(i);
m_dot_liq(i)=N*A_orifice*sqrt((2*rho_liq_e(i)*(P_tank(i)-P_cham(i)))/2.0);
m_tot(i+1)=m_tot(i)-m_dot_liq(i)*dt(i);
m_liq(i+1)=m_liq(i)-m_dot_liq(i)*dt(i);
m_vap(i+1)=+m_liq(i+1)-((V_tank-(m_tot(i)/rho_vap_e(i)))/((1/rho_liq_e(i))-(1/rho_vap_e(i))));
if m_liq(i+1)>m_liq(i)
for j=i:Nt
P_tank(j)=ppval(P_vaps,T(j));
C_liq_eg(j)=ppval(Cp_liqs,T(j));
rho_vap_e(j)=ppval(rho_vaps,T(j));
Z(j)=ppval(Zs,T(j));
m_dot_vap(j)=N*A_orifice*sqrt((2*rho_vap_e(j)*(P_tank(j)-P_cham))/C_liq_eg(j));
m_vap(j+1)=m_vap(j)-m_dot_vap(j)*dt;
m_tot(j+1)=m_tot(j)-m_dot_vap(j)*dt;
Z1(j+1)=0.9*Z(j);
T1(j+1)=T(j)*(((Z1(j+1)*m_vap(j+1))/Z(j)*m_vap(j))^(gamma-1));
Z2(j+1)=(Z(j)*m_vap(j)*((T(j+1)-T(j))^(1/(gamma-1))))/m_vap(j+1);
T2(j+1)=T(j)*(((Z2(j+1)*m_vap(j+1))/Z(j)*m_vap(j))^(gamma-1));
Z3(j+1)=(Z(j)*((T(j+1)-T(j))^(1/(gamma-1))))/m_vap(j+1);
T(j+1)=T(j)*(((Z3(j+1)*m_vap(j+1))/Z(j)*m_vap(j))^(gamma-1));
end
end
end
2 Comments
madhan ravi
on 13 Jan 2021
Just a guess , since I can't run your code it seems to me that m_liq(i+1) keeps decreasing in each iteration whereas you assume it to be the other way around.
Answers (1)
Gaurav Garg
on 25 Jan 2021
Hi Francesco,
The best workaround in such situations is to place a breakpoint where you feel the problem is and check all the variables and their values there.
For example, in your case, you should place a breakpoint at if m_liq(i+1)>m_liq(i) and then check the values of m_liq(i+1) and m_liq(i).
0 Comments
See Also
Categories
Find more on Fluid Network Interfaces Library 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!