function [P2,T2,m2,W,P,Pis,es,Pst,Tst,Wst,POWst,P_up,T_up,m_up] = sprezarka_nst(P1,T1,m1,Pist,e_st,Bup)

% Funkcja
% [P2,T2,m2,W,P,Pis,es,Pst,Tst,Wst,POWst,P_up,T_up,m_up] 
%                       = sprezarka_nst(P1,T1,m1,Pist,e_st,Bup)
% 
% do obliczeń sprężarki składającej się z n stopni. Parametry wejściowe:
% P1 - ciśnienie całkowite na wejściu do sprężarki
% T1 - temperatura całkowita na wejściu do sprężarki
% m1 wydatek powietrza na wejściu do sprężarki
% Pist - spręż stopni sprężarkie Pist=[Pist1, Pist2,..., Pistn]
% e_st - sprawność stopni sprężarkie e_st=[e_st1, e_st2, ..., e_stn]
%      - gdy e_st=e_st - wtedy wszystkie stopnie mają są samą sprawność
% Bup - względny wydatek powietrza za i_tym stopniem
% Bup = [ 0 0 0 Bup4, 0, Bup6] - przykłąd dla przypadku gdy upust występuje
% za 4 tym i 6-tym stopniem.
%
% Parametry wyjściowe:
% P2 - ciśnienie całkowite za sprężarką
% T2 - temperatura całkowita za sprężarką
% m2 - wydatek masowy za sprężarką
% W - praca sprężarki
% P - moc sprężarki
% Pis - spręż sprężarki
% es - sprawność sprężarki
% Pst - ciśnienie za i-tym sptopniem Pst = [Pst1, Pst2 ... Pstn]
% Tst - Temperatura za i-tym stopniem Tst = [Tst1, Tst2, ... Tstn]
% Wst - Praca i-tego stopnia Wst = [Wst1, Wst2, ... Wstn]
% POWst - Moc i-tego stopnia POWst = [POWst1, POWst2, ... POWstn]
% P_up - Ciśnienie upuszczanego powietrza [Pup1, Pup2..]
% T_up - Temperatura upuszczanego powietrza [Tup1, Tup2, ...]
% m_up - wydatek masowy upuszczanego powietrza [mup1, mup2, ..]


nst=length(Pist);  % identyfikujemy ilość stopni w sprężarce
es_il=length(e_st);  % identyfikacja ilości parametrów określajacych sprawność stopni

% Realizowana jest koncepcja, że gdy es_il=nst - to każdemu stopniowi
% przypisana jest inna sprawność. Gdy es_il=1, to wsystkie stopnie mają tą
% samą sprawność

% Przypisanie tej samej wartości sprawności dla wszystkich elementów
% wektora e_st
if es_il==1
    e_st(1:nst)=e_st(1);
end

%wprowadzenie danych gazu:
k=1.4;

% Inicjowanie wartości początkowych dla wartości liczonych iteracyjnie
W=0;
P=0;
Pis=1;
m2=m1;
mst_in=m1;  % Masa na wejciu do stopnia
P1_in=P1;
T1_in=T1;

% Inicjujemy zmienne dotyczące upustów z wartością NaN

P_up=NaN;
T_up=NaN;
m_up=NaN;


%Iteracyjne obliczenia dla poszczególnych stopni sprężarki
for i=1:nst
    % Wykorzystanie funkcji sprezarka_st
    [Pst(i),Tst(i),Wst(i),POWst(i)] = sprezarka_st(P1_in,T1_in,mst_in,Pist(i),e_st(i));
     mst_in=mst_in-Bup(i)*m1;  % masa na wejściu do i+1 stopień
     P1_in=Pst(i);
     T1_in=Tst(i);
     W=W+Wst(i);
     P=P+Pst(i);
     Pis=Pis*Pist(i);
     
     % tworzenie zmiennych dotyczących upuszczanego powietrza dla przypadku, gdy występuje upust za stopniem
     if Bup(i)~=0
         if isnan(P_up)
             P_up=P1_in;
             T_up=T1_in;
             m_up=Bup(i)*m1;
         else
             P_up=[P_up,P1_in];
             T_up=[T_up, T1_in];
             m_up=[m_up, Bup(i)*m1];  
         end
     end
end

% Parametry wyjściowe T2 i P2, dla których przypisane są ostatnie elemnty
% wektorów określajćych T i P za posczególnym stopniem
T2=Tst(i);
P2=Pst(i);
m2=mst_in;

% obliczanie sprawności
es=T1*(Pis^((k-1)/k)-1)/(T2-T1);
end
         
         
         
         
         
         
         
         