public class rankine4
{
//...........İdeal Ara Isıtmalı - Ara buhar almalı Rankine çevrimi
//...........The ideal Reheat - Regenerative Rankine Cycle
// steam sınıfını kullanır
// çağrı
// steam b=new steam();
// double a[]=b.property("tp",30.0,1.01325);
// girdi parametreleri
// termodinamik set "tv" "tp" "th" "tu" "ts"tx"
//                  "pv" "pt" "ph" "pu" "ps" "px"
// çıkış parametreleri(a) a[0]=P a[1]=T a[2]=V a[3]=h
// a[4]u a[5]=s a[6]=x

double T[];
double P[];
double h[];
double s[];
double x[];
double etait1,etait2;            // türbin verimleri
double etaip1,etaip2,etaip3;	// pompa verimleri
double etacevrim;
double m;
double Wt,Wt1,Wt2,Wp,Wp1,Wp2,W;
double Qkazan,Qkaynama,Qsuperheat,Qyogusturucu;
double y;//türbinden ara ısıtıcıya gönderilen buhar yüzdesi
steam b;
//double c1[][];
//double c3[][];
public rankine4(double mi,double T9,double P9, double T3,double P3,double P4,double etait1i, double etait2i,double etaip1i,double etaip2i)
{
m=mi;
b=new steam();
T=new double[15];
P=new double[15];
h=new double[15];
s=new double[15];
x=new double[15];
T[1]=T1;
P[1]=P1;
T[3]=T3;
P[3]=P3;
P[2]=P3;
P[0]=P3;//2i
P[4]=P4;
P[11]=P4;//4i
P[9]=P4;
P[5]=P4;
P[6]=P[2];
P[7]=P[6];
P[12]=P[6];//6i
P[10]=P1;
P[8]=P1;
P[13]=P1;//8i
P[14]=P1;
etait1=etait1i;
etait2=etait2i;
etaip1=etaip1i;
etaip2=etaip2i;
//c=new double[4][2][20];
} 
public void cevrimhesabi()
{
// Türbin 1 girişi
double a1[]=b.property("tp",T[9],P[9]);
h[9]=a1[3];
s[9]=a1[5];
// isentropik Türbin 1 çı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];
x[0]=a0[6];
// gerçek türbin 1 çıkışı
h[2]=h[1]-etait1*(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];

// Türbin 2 girişi
double a3[]=b.property("tp",T[3],P[3]);
h[3]=a3[3];
s[3]=a3[5];
// isentropik Türbin 2 çıkışı
s[11]=s[1];
//P[11]=P[4];
double a11[]=b.property("ps",P[11],s[11]);
T[11]=a11[1];
h[11]=a11[3];
x[11]=a11[6];
// gerçek türbin 2 çıkışı
h[4]=h[3]-etait2*(h[3]-h[11]);
double a4[]=b.property("ph",P[4],h[4]);
T[4]=a4[1];
x[4]=a4[6];
s[4]=a4[5];

// yoğuşturucu doyma buhar noktası
x[9]=1.0;
double a9[]=b.property("px",P[9],x[9]);
T[9]=a9[1];
h[9]=a9[3];
s[9]=a9[5];
// yoğuşturucu çıkışı
x[5]=0.0;
double a5[]=b.property("px",P[5],x[5]);
T[5]=a5[1];	
h[5]=a5[3];
s[5]=a5[5];

// isentropik pompa 1 (12=6i)
s[12]=s[5];
double a12[]=b.property("ps",P[12],s[12]);
h[12]=a12[3];
s[12]=a12[5];
// gerçek pompa 1
h[6]=h[5]+(h[12]-h[5])/etaip1;
double a6[]=b.property("ph",P[6],h[6]);
T[6]=a6[1];
s[6]=a6[5];
//ara kızdırıcı çıkışı
x[7]=0.0;
double a7[]=b.property("px",P[7],x[7]);
T[7]=a7[1];	
h[7]=a7[3];
s[7]=a7[5];

// isentropik pompa 2 (13=8i)
s[13]=s[7];
double a13[]=b.property("ps",P[13],s[13]);
h[13]=a13[3];
s[13]=a13[5];
// gerçek pompa 2
h[8]=h[7]+(h[13]-h[7])/etaip2;
double a8[]=b.property("ph",P[8],h[8]);
T[8]=a8[1];
s[8]=a8[5];

// kazan kaynama  bölgesi girişi
x[10]=0.0;
double a10[]=b.property("px",P[10],x[10]);
T[10]=a10[1];
h[10]=a10[3];
s[10]=a10[5];

// kazan kızgın buhar bölgesi çıkışı

x[14]=1.0;
double a14[]=b.property("px",P[14],x[14]);
T[14]=a14[1];
h[14]=a14[3];
s[14]=a14[5];
// 
/*
if(s[2]>s[8])
{double dt1=(T[2]-T[8])/19;
double t=T[8];
for(int i=0;i<20;i++)
{double b8[]=b.property("tp",t,P[8]);
c3[0][i]=b8[5];c3[1][i]=b8[1];t+=dt1;
}
}
double dt=(T[1]-T[7])/19;
double t=T[7];
for(int i=0;i<20;i++)
{double b7[]=b.property("tp",t,P[7]);
c1[0][i]=b7[5];c1[1][i]=b7[1];t+=dt;
}
*/
y=(h[7]-h[6])/(h[2]-h[6]);
Wt1=m*(h[1]-h[2]);
Wt2=m*(1-y)*(h[3]-h[4]);
Wt=Wt1+Wt2;
Wp1=m*(1-y)*(h[6]-h[5]);
Wp2=m*(h[8]-h[7]);
Wp=Wp1+Wp2;
W=Wt-Wp;
Qkaynama=m*(h[1]-h[8]);
Qsuperheat=m*(1-y)*(h[3]-h[2]);
Qkazan=Qkaynama+Qsuperheat;
Qyogusturucu=m*(1-y)*(h[4]-h[5]);
etacevrim=W/Qkazan;
}

public String cikti()
{
cevrimhesabi();
String s="Açık ön ısıtıcılı 2 kademe türbinli Rankine çevrimi\n";
s+=" çevrim verimi    = "+etacevrim+"\n";
s+=" Türbin 1 çıkışı    = "+Wt1+" kW\n";
s+=" Türbin 2 çıkışı    = "+Wt2+" kW\n";
s+=" Toplam Türbin çıkışı    = "+Wt+" kW\n";

s+=" Pompa 1 girişi     = "+Wp1+" kW\n";
s+=" Pompa 2 girişi     = "+Wp2+" kW\n";
s+=" Toplam Pompa girişi= "+Wp+" kW\n";	
s+=" Net iş çıkışı    = "+W +" kW\n";
s+=" Kazan ısı girişi = "+Qkaynama +" kW\n";
s+=" Ara kızdırıcı ısı girişi = "+Qsuperheat +" kW\n";
s+=" Toplam Kazan ısı girişi = "+Qkazan +" kW\n";
s+=" Yoğuşturucu ısı çıkışı = "+Qyogusturucu +" kW\n";
return s;
}
/*
public double[][] TS1()
{
double a[][]=Text.readDoubleT("steam.txt");
return a;
}	
	
public double[][] TS()
{
double a[][]=new double[2][201];
double tc=b.Tc-273.15;
double dt=(tc-10.0)/100.0;
int i=0;
double t;
for(t=10.0;t<=tc;t+=dt)
{double a1[]=b.property("tx",t,0.0);
 a[1][i]=t;
 a[0][i]=a1[5];
 i++;
}
double a3[]=b.property("tx",tc,1.0);
 a[1][i]=t;
 a[0][i]=a3[5];
 i++;
for(t=tc;t>=10;t-=dt)
{double a2[]=b.property("tx",t,1.0);
 a[1][i]=t;
 a[0][i]=a2[5];
 i++;
}
return a;	
}

public void plot()
{
 Plot pp=new Plot(TS1());
 double t1[]={T[1],T[2]};
 double t2[]={T[8],T[3],T[4],T[6],T[7]};
 double s1[]={s[1],s[2]};
 double s2[]={s[8],s[3],s[4],s[6],s[7]};

 pp.addData(s1,t1);
 pp.addData(c1[0],c1[1]);
 pp.addData(s2,t2);
 if(s[2]>s[8])
 { pp.addData(c3[0],c3[1]);}

 pp.setPlabel("Rankine Çevrimi");
 pp.setYlabel("T, derece C");
 pp.setXlabel("s entropi kJ/kgK");
 pp.plot();
}
*/
}