import java.util.*;
import java.lang.*;
import java.io.*;

class bilesik_gaz_buhar_main
{	
	double Tturbine;
	double Wturbine;

     public static void main (String args[]) throws IOException
     {
     // Doğal gaz
     // ch4 0.908
     // c2h6 0.059
     // c3h8 0.006
     // n2 0.009
     // co2 0.018    
     //YANMA ODASI////////////////////////////////////////////////////
     String s1[]={"ch4","c2h6","c3h8","n2","co2"};
     double n1[]={0.908,0.059,0.006,0.000,0.018};
     
     double Q=0;//adyabatic combustion
     double Tfuel=300.0;//K
     double Tair=300.0;//K
     
     double Texhaust=973.0;//K
    // double Tturbine;	 Tturbine=Texhaust; 
     double w_turbine,q_giren;
         
     double excess_air=1.2;
     boolean Higher_heating_value=true;//üst ısıl değer üzerinden analiz
     double Pinlet=8;  //bar
     double Pexit=1;   //bar
     double etaturbin=0.9;
     
        boiler k1=new boiler(s1,n1,Tfuel,Tair,Texhaust,excess_air,Higher_heating_value);
        excess_air=k1.hki(s1,n1,Tfuel,Tair,Texhaust,Higher_heating_value,Q);
         Gmix g=k1.exhaust;
         Gmix e=k1.fuel;
        g.mole=true;    
        // g.base("mole");                                                           
  ////////////////////////////////////////////////////////////////////
        
        
  ////////////////////   Gaz türbinin çevrimi  ////////////////////////////////
     	 double T3g=Texhaust;
	     double P2g=Pinlet;
	     double P3g=Pinlet;
	     double P4g=Pexit;
	     double P1g=Pexit;
	  //1 noktası
	 double a1e[]=e.property(Tair, P1g);
	 double h1e=a1e[4];
	 double pr1=a1e[18];
	 double pr2=P2g/P1g*pr1;
	 System.out.println("T1="+Tair+" h1e="+h1e);
     //2 noktası
     double T2ie=e.Ti(pr2,P2g);
     double a2e[]=e.property(T2ie, P2g);
     double h2e=a2e[4];
     System.out.println("T2ie="+T2ie+" h2e="+h2e);
	  //3 noktası
     double a3g[]=g.property(T3g, P3g);
     double h3g=a3g[4];
     double s3g=a3g[6];
     double pr3=a3g[18];
     //for(int i=0;i<a3g.length;i++)
     //{System.out.println("i="+i+"a="+a3g[i]);}
     double pr4=P1g/P2g*pr3;
     System.out.println("pr3="+g.pr(T3g)+"P1g="+P1g+"P2g="+P2g);
     System.out.println("t3="+T3g+" h3="+h3g+" s3="+s3g+" pr3="+pr3+" pr4="+pr4);
     //4i noktası
     double T4ig=g.Ti(pr4,P1g);
     double a4ig[]=g.property(T4ig,P1g);
     double h4ig=a4ig[4];
     double Cp4ig=a4ig[10];
     System.out.println("t4i="+ T4ig +" h4i="+ h4ig +" Cp4i="+ Cp4ig);
     //4 noktası
     double h4g=h3g-etaturbin*(h3g - h4ig);
     double T4g=(h4g - h4ig )/Cp4ig + T4ig;
     double a4g[]=g.property(T4g, P1g);
     double s4g=a4g[6];
     System.out.println("t4="+T4g+" h4="+h4g+" s4="+s4g);
     w_turbine=(h3g-h4g)/g.M;
     q_giren= (h3g-h2e)/g.M;
     double w_komp=(h2e-h1e)/g.M; 
    /////////////////////////////////////////////////////////////////////////// 
     
    ////////////// Gaz-Buhar ısı değiştiricisi /////////
     double T5g=150;//K
     double a5g[]=g.property(T5g,P1g); 
     double h5g=a5g[4];
     double s5g=a5g[6];
     System.out.println("t5="+T5g+" h5="+h5g+" s4="+s5g);    
     double m_g=2;// gazın kütlesel debisi kg/s
     double m_s=0.131;// buharın kütlesel debisi  kg/s
     double y=m_s/m_g;
     double deltabuhar;
     double Eg;
     double Eç;
     Eg=m_g*( h4g-h5g)/g.M;
     Eç=Eg;
     deltabuhar=Eç/m_s;
     ////////////////////////////////////////////////////////////////////
     
     // Türbinden sonra rankine çevrimi///////////////////////////////////////////
     double T[];
	double P[];
	double h[];
	double s[];
	double x[];
	double etait,etaip;
	double etacevrim;
	double Wt,Wp,W;
	double Qkazan,Qyogusturucu;
	steam b;
	
	
	b=new steam();
	T=new double[9];
	P=new double[9];
	h=new double[9];
	s=new double[9];
	x=new double[9];
	//T[1]=500;//C   bu yok olacak
	P[1]=70;
	P[2]=0.05;
	etait=0.9;
	etaip=0.9;
     
	
	//////// Buhar Çevrimi Hesabı ////////
	
Qkazan=m_s*(deltabuhar);	//Qkazan=m_s*(h[1]-h[4]);
	

// yoğuşturucu çıkışı
P[3]=P[2];
x[3]=0.0;
double a3[]=b.property("px",P[3],x[3]);
T[3]=a3[1];	
h[3]=a3[3];
s[3]=a3[5];

// isentropik pompa
P[5]=P[1];
s[5]=s[3];
double a5[]=b.property("ps",P[5],s[5]);
h[5]=a5[3];
s[5]=a5[5];

// gerçek pompa
h[4]=h[3]+(h[5]-h[3])/etaip;
P[4]=P[1];
double a4[]=b.property("ph",P[4],h[4]);
T[4]=a4[1];
s[4]=a4[5];

// ısı değiştirici kazan işlevi görür ve suyu ısıtır

h[1]=h[4]+deltabuhar;


// Türbin girişi	
double a1[]=b.property("ph",P[1],h[1]);
T[1]=a1[1];
s[1]=a1[5];


// isentropik Türbin çıkışı
s[0]=s[1];
P[0]=P[2];
double a0[]=b.property("ps",P[0],s[0]);
T[0]=a0[1];
h[0]=a0[3];
// gerçek türbin çıkışı
h[2]=h[1]-etait*(h[1]-h[0]);
double a2[]=b.property("ph",P[2],h[2]);
T[2]=a2[1];
x[2]=a2[6];
s[2]=a2[5];


/*

// kazan kaynama  bölgesi girişi
P[6]=P[1];
x[6]=0.0;
double a6[]=b.property("px",P[6],x[6]);
T[6]=a6[1];
s[6]=a6[5];
// kazan kızgın buhar bölgesi girişi
P[7]=P[1];
x[7]=1.0;
double a7[]=b.property("px",P[7],x[7]);
T[7]=a7[1];
s[7]=a7[5];
// yoğuşturucu kızgın buhar bölgesi çıkışı
P[8]=P[2];
x[8]=1.0;
double a8[]=b.property("px",P[8],x[8]);
T[8]=a8[1];
s[8]=a8[5];
*/


 Wt=m_s*(h[1]-h[2]);
Wp=m_s*(h[4]-h[3]);
W=Wt-Wp;
double w=W/m_s;

Qyogusturucu=m_s*(h[2]-h[3]);
etacevrim=W/Qkazan;       
        
      String s2="Basit Rankine çevrimi\n";
s2+=" deltabuhar = "+deltabuhar+"kj/kg \n";  
s2+=" T[1]    = "+T[1]+"C \n";     
s2+=" çevrim verimi    = "+etacevrim+"\n";
s2+=" Türbin çıkışı    = "+Wt+" kW\n";
s2+=" Pompa girişi     = "+Wp+" kW\n";	
s2+=" Net iş çıkışı    = "+W +" kW\n";
s2+=" Kazan ısı girişi = "+Qkazan +" kW\n";
s2+=" Yoğuşturucu ısı çıkışı = "+Qyogusturucu +" kW\n";
s2+=" h1 türbin girişi = "+h[1] +" kJ/kg\n";
s2+=" h2 türbin çıkışı = "+h[2] +" kJ/kg\n";
s2+=" h3 yoğuşturucu çıkışı = "+h[3] +" kJ/kg\n";
s2+=" h4 pompa çıkışı = "+h[4] +" kJ/kg\n";   
         
        System.out.println(s2);                             
        
        
        
  double etacevrim_g_s= ((w_turbine-w_komp)+y*w)/q_giren;
         
        String s3="Birleşik gaz buhar çevrimi\n";
//s3+=" deltabuhar = "+deltabuhar+"kj/kg \n";  
s3+=" w_komp    = "+w_komp+" \n";     
s3+=" çevrim verimi    = "+etacevrim_g_s+"\n";
//s3+=" Türbin çıkışı    = "+Wt+" kW\n";
//s3+=" Pompa girişi     = "+Wp+" kW\n";	
//s3+=" Net iş çıkışı    = "+W +" kW\n";
//s3+=" Kazan ısı girişi = "+Qkazan +" kW\n";
//s3+=" Yoğuşturucu ısı çıkışı = "+Qyogusturucu +" kW\n";
//s3+=" h1 türbin girişi = "+h[1] +" kJ/kg\n";
//s3+=" h2 türbin çıkışı = "+h[2] +" kJ/kg\n";
//s3+=" h3 yoğuşturucu çıkışı = "+h[3] +" kJ/kg\n";
//s3+=" h4 pompa çıkışı = "+h[4] +" kJ/kg\n";   
         
        System.out.println(s3);                                                      

     }
}
