public class two_stage_refrigeration_with_flash_chamber
{
refrigerant refr1;


String s;

double P_evap;//kPa
double P_cond;//kPa
double P_flash;//kPa
double T[];
double P[];
double h[];
double ent[];
double a[];
double x;
double XP[];
double XH[];
double XS[];
double XT[];
double XN[];

          public two_stage_refrigeration_with_flash_chamber(String is,double iP_evap,double iP_cond,double iP_flash)
          {
	          s=is;
	       
	          P_evap=iP_evap;
	          P_cond=iP_cond;     
	          P_flash=iP_flash;
	      }

          public double[][] cıktı()
          {
	      refr1=new refrigerant(s);      
	      T=new double[10];
          P=new double[10];
          h=new double[10];    
	      ent=new double[10];
	      XP=new double[11];
	      XH=new double[11];
	      XS=new double[11];
          XT=new double[11];
	      a=refr1.property("px",P_evap,1.0);//1 noktası için doymuş buhar   
	      T[0]=a[1];
          h[0]=a[3];  
          ent[0]=a[5];
          XT[0]=T[0];
           
	      System.out.println("1 noktası için değerler =  "+"Sıcaklık "+T[0]+" Entalpi "+h[0]+" Entropi "+ent[0]);   
	      ent[1]=ent[0];
	      a=refr1.property("ps",P_flash,ent[1]);
	      T[1]=a[1];
          h[1]=a[3];  
          ent[1]=a[5];   
          XT[1]=T[1];
          System.out.println("2 noktası için değerler =  "+"Sıcaklık "+T[1]+" Entalpi "+h[1]+" Entropi "+ent[1]);       
	      a=refr1.property("px",P_flash,1.0);
	      T[2]=a[1];
          h[2]=a[3];  
          ent[2]=a[5];   
          XT[2]=T[2];
          System.out.println("3 noktası için değerler =  "+"Sıcaklık "+T[2]+" Entalpi "+h[2]+" Entropi "+ent[2]); 
          a=refr1.property("px",P_flash,0.0);
          T[6]=a[1];
          h[6]=a[3];  
          ent[6]=a[5];
          XT[3]=T[6];
          System.out.println("7 noktası için değerler =  "+"Sıcaklık "+T[6]+" Entalpi "+h[6]+" Entropi "+ent[6]);
          a=refr1.property("ph",P_evap,h[6]);  
          T[7]=a[1];
          h[7]=a[3];  
          ent[7]=a[5];
          XT[4]=T[7];
          System.out.println("8 noktası için değerler =  "+"Sıcaklık "+T[7]+" Entalpi "+h[7]+" Entropi "+ent[7]);
          a=refr1.property("px",P_cond,0.0);
          T[4]=a[1];
          h[4]=a[3];  
          ent[4]=a[5];
          XP[1]=P_flash;
          XH[1]=h[1];
          XT[5]=T[4];
          System.out.println("5 noktası için değerler =  "+"Sıcaklık "+T[4]+" Entalpi "+h[4]+" Entropi "+ent[4]);    
	      a=refr1.property("ph",P_flash,h[4]);
          T[5]=a[1];
          h[5]=a[3];  
          ent[5]=a[5];
          XT[6]=T[5];
          System.out.println("6 noktası için değerler =  "+"Sıcaklık "+T[5]+" Entalpi "+h[5]+" Entropi "+ent[5]); 
          
          a=refr1.property("px",P_flash,0.0);
          double hf=a[3];
          a=refr1.property("px",P_flash,1.0);
          double hg=a[3];
          
          x=(h[5]-hf)/(hg-hf);
         
          h[8]=h[1]*(1-x)+h[2]*x;
          
          a=refr1.property("ph",P_flash,h[8]);
          T[8]=a[1];
          h[8]=a[3];  
          ent[8]=a[5];
          XT[7]=T[8];
          System.out.println("9 noktası için değerler =  "+"Sıcaklık "+T[8]+" Entalpi "+h[8]+" Entropi "+ent[8]); 
          
          a=refr1.property("ps",P_cond,ent[8]);
          T[3]=a[1];
          h[3]=a[3];  
          ent[3]=a[5];
           XT[8]=T[3];
          System.out.println("4 noktası için değerler =  "+"Sıcaklık "+T[3]+" Entalpi "+h[3]+" Entropi "+ent[3]); 
          
          double wcomp1=(1-x)*(h[1]-h[0]);
          double wcomp2=(h[3]-h[2]);
          System.out.println("Düşük basınç kompresörü = "+wcomp1+" kj/kg"+" Yüksek basınç kompresörü = "+wcomp2+" kj/kg");
          double qin=(1-x)*(h[0]-h[7]);
          System.out.println("Soğutma alanından çekilen yük (Qin) = "+qin+" kj/kg");
          double COP_Ref=qin/(wcomp1+wcomp2);
          System.out.println("COP_ref = "+COP_Ref);
          double qout=(h[3]-h[4]);
          System.out.println("Isıtılacak alana verilecek yük (Qout) = "+qout+" kj/kg");
          double COP_HP=qout/(wcomp1+wcomp2);
          System.out.println("COP_Heat_Pump = "+COP_HP);
          XP[0]=P_flash;
          XH[0]=h[5];  // 6 noktası
          XS[0]=ent[5];
          
          XP[1]=P_flash;
          XH[1]=h[6];  // 7 noktası için değerler
          XS[1]=ent[6];
          
          XP[2]=P_evap;
          XH[2]=h[7];  // 8 noktası
          XS[2]=ent[7];
          
          XP[3]=P_evap;
          XH[3]=h[0];   // 1 noktası
          XS[3]=ent[0];
          
          XP[4]=P_flash;
          XH[4]=h[1];    // 2 noktası
          XS[4]=ent[1];
          
          XP[5]=P_flash;
          XH[5]=h[8];   // 9 noktası
          XS[5]=ent[8];
          
          XP[6]=P_cond;
          XH[6]=h[3];   // 4 noktası
          XS[6]=ent[3];
          
          XP[7]=P_cond;
          XH[7]=h[4];   // 5 noktası
          XS[7]=ent[4];
          
          XP[8]=P_flash;
          XH[8]=h[5];     // 6 noktası
          XS[8]=ent[5];
          
          XP[9]=P_flash;
          XH[9]=h[2];     // 3 noktası
          XS[9]=ent[2];
          
          XP[10]=P_flash;
          XH[10]=h[8];      
          XS[10]=ent[8];
          
          XN=new double[11];
          XN[0]=wcomp1;
          XN[1]=wcomp2;
          XN[2]=qin;
          XN[3]=COP_Ref;
          XN[4]=qout;
          XN[5]=COP_HP;
          
          
          double[][] depo=new double[5][11];
          for(int i=0;i<11;i++)
          {
	      depo[0][i]=XH[i];    
	      depo[1][i]=XP[i];
	      depo[2][i]=XS[i];    
	      depo[3][i]=XT[i];
	      
	      depo[4][i]=XN[i];
	      }
          
          return depo;
          }

          public void plot()
          {
	          
	        double[] XHH=new double[11];
	        double[] XPP=new double[11];
	        double[] XSS=new double[11]; 
	        double[] XTT=new double[11]; 
	        double[][] dpo=cıktı();
	        for(int i=0;i<11;i++)
	        {
		    XHH[i]=dpo[0][i];    
		    XPP[i]=dpo[1][i];  
		    XSS[i]=dpo[2][i]; 
		    XTT[i]=dpo[3][i];
		    }
	        
	        
	       refr1=new refrigerant(s);  
	       double t; 	  
           double x[],y[];int i=0;
           x=new double[800];
           y=new double[800];
          for(t=-40;t<=refr1.r.Tc;t+=2.0)
          {a=refr1.property("tx",t,0.0);y[i]=a[0];x[i]=a[3];
           //System.out.println("i="+i+"t= "+t+" x="+x[i]+" y="+y[i]);
           i++;
          }   
	        a=refr1.property("tx",refr1.r.Tc,1.0);y[i]=a[0];x[i]=a[3];
           //System.out.println("i="+i+x[i]+" "+y[i]);
            i++;
           double tt=t;
            for(t=tt;t>=-40;t-=2.0)
              {a=refr1.property("tx",t,1.0);y[i]=a[0];x[i]=a[3];
                 //System.out.println("i="+i+x[i]+" "+y[i]);
             i++;}      
	       double xx[]=new double[i];
           double yy[]=new double[i];
           for(int j=0;j<i;j++) {xx[j]=x[j];yy[j]=y[j];}
           Plot pp=new Plot(xx,yy);   
	       pp.setYlogScaleOn(); 
	       pp.addData(XHH,XPP,5,4,7,255);
           pp.setPlabel("Basınç - Entalpi Diyagramı");
           pp.setXlabel("Entalpi h KJ/kg");
           pp.setYlabel("Basınç P kPa");
           pp.setXtic(10);
           pp.setYtic(10);
           pp.setXgrid(1);
           pp.setYgrid(1);
	       pp.plot();   
	       
	      }
	      
	      public static void main(String args[])
	      {
		  String s1="R134a";
		
		  double iP_evapi=100;//Buharlaştırıcı basıncı [kPa]
		  double iP_condi=800;//Yoğuşturucu basıncı [kPa]
		  double iP_flashi= 230;// Flash chamber basıncı
		      
		  two_stage_refrigeration_with_flash_chamber tsrwfc =new two_stage_refrigeration_with_flash_chamber(s1,iP_evapi,iP_condi,iP_flashi); 
		  //tsrwfc.cıktı();
		  tsrwfc.plot();
		      
		  }













}