Problem with if statement
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
madhan ravi
il 13 Gen 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.
Risposte (1)
Gaurav Garg
il 25 Gen 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 Commenti
Vedere anche
Categorie
Scopri di più su Actuators in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!