import javax.swing.*;
import java.io.*;

public class radoSUN_out2
	{
	public static void main(String arg[])
		{
			int day=12; 
			int mounth=7; 
			//double standartTime=12.0*60.0; 
			
			double enlem=38.4;  //40;// Latitude - enlem açısı; kuzey yarım küre için pozitif, güney yarım küre için negatif (-90'< fi <90')
			double boylam=-27.25;//-32;//      // yerel boylam( Batı boylamları (+), doğu boylamları (-))
			
			double ssboylamı=-45.0;
			double yukseklik=0.01; 
			int iklim=2;  // yarı tropikal
			double yatay_egim=30.0; //yüzey eğim açısı
			double azimuth=-45.0; //yüzey azimut açısı
			double ro=0.8;  //yansıma oranı
			
			radoSUN r=new radoSUN( enlem, boylam, ssboylamı, yukseklik, iklim);
	
			//Grafik çizdirme hasaslık oranı
        	int oran=2;	
        	double	orann=oran;
        	
        	
        	//...................................Yatay bir yüzeye gelen  ışınım şiddeti
			double xx[] = new double[24*oran+1] ;
          	double yy[] = new double[24*oran+1] ;
          	double x0,x1=0;
          	double toplam=0;
          	double average=0;	

	for(int i=0; i<=(24*oran); i++)
			{
				x0=i*(60/oran);
				
				double t=r.radiation(day,mounth,x0);
				
	  		xx[i]=x1;
      		yy[i]=t;
      		x1+=(1/orann);
      		toplam+=t;
 			}
    		average=toplam/(24*oran);
    	
    		Plot pp=new Plot(xx,yy);    		
    		pp.setPlabel("Yatay bir yüzeye gelen  ışınım şiddeti");
 			pp.setYlabel("Işınım, W/m^2");
 			pp.setXlabel("saat");
 			pp.plot();
      	
 	  System.out.println("\n");		      		
      System.out.println(" Yatay bir yüzeye gelen ışınım şiddeti \n");
      System.out.println(" Gün boyu otalama:"+average+" W/m^2 \n");
      System.out.println(" Saat                   Işınım \n");
	for(int j=0; j<=(24*oran); j++)
			{
				
				System.out.print(" "+xx[j]+"                     "+yy[j]+" \n");
 			}
			
 			
 			
			//...................................Eğimli bir yüzeye gelen  ışınım şiddeti
 			double xx1[] = new double[24*oran+1] ;
          	double yy1[] = new double[24*oran+1] ;
          	double x00,x11=0;
          	double toplam1=0;
          	double average1=0;	

	for(int i=0; i<=(24*oran); i++)
			{
				x00=i*(60/oran);
				
				double t=r.angles_surface(day,mounth,x00, yatay_egim, azimuth, ro);
				
	  		xx1[i]=x11;
      		yy1[i]=t;
      		x11+=(1/orann);
      		toplam1+=t;
 			}
 			average1=toplam1/(24*oran);
 			
 			Plot pp1=new Plot(xx1,yy1);    		
    		pp1.setPlabel("Eğimli bir yüzeye gelen  ışınım şiddeti");
 			pp1.setYlabel("Işınım, W/m^2");
 			pp1.setXlabel("saat");
 			pp1.plot();
      
 	  System.out.println("\n");	
      System.out.println(" Eğimli bir yüzeye gelen  ışınım şiddeti \n");
      System.out.println(" Gün boyu otalama:"+average1+" W/m^2 \n");
      System.out.println(" Saat                   Işınım \n");
      
	for(int j=0; j<=(24*oran); j++)
			{
				
				System.out.print(" "+xx1[j]+"                     "+yy1[j]+" \n");
 			}
 			
 			//...................................CSP_APmodel  ışınım şiddeti
 			double xx2[] = new double[24*oran+1] ;
          	double yy2[] = new double[24*oran+1] ;
          	double x000,x111=0;
          	double toplam2=0;
          	double average2=0;		

	for(int i=0; i<=(24*oran); i++)
			{
				x000=i*(60/oran);
				
				double t=r.CSP_APmodel(day,mounth,x000, ro);
				
	  		xx2[i]=x111;
      		yy2[i]=t;
      		x111+=(1/orann);
      		toplam2+=t;
 			}
 			average2=toplam2/(24*oran);
 			
 			Plot pp2=new Plot(xx2,yy2);    		
    		pp2.setPlabel("CSP_APmodel  ışınım şiddeti şiddeti");
 			pp2.setYlabel("Işınım, W/m^2");
 			pp2.setXlabel("saat");
 			pp2.plot();
      
    
      System.out.println("\n");
      System.out.println(" CSP_APmodel  ışınım şiddeti şiddeti \n");
      System.out.println(" Gün boyu otalama:"+average2+" W/m^2 \n");
      System.out.println(" Saat                   Işınım \n");
      
	for(int j=0; j<=(24*oran); j++)
			{
				
				System.out.print(" "+xx2[j]+"                     "+yy2[j]+" \n");
 			}
      
      
      /*
      	//........Storage model...........CSP_APmodel  ışınım şiddeti
 			double xx3[] = new double[24*oran+1] ;
          	double yy3[] = new double[24*oran+1] ;
          	double x0000,x1111=0;
          	double toplam3=0;
          	double average3=0;		

	for(int i=0; i<=(24*oran); i++)
			{
				x0000=i*(60/oran);
				
				double tt=r.CSP_APmodel_Storage(day,mounth,x0000, ro);
				//double tt=r.average_day_CSP_APmodel(day,mounth, ro);
				
	  		xx3[i]=x1111;
      		yy3[i]=tt;
      		x1111+=(1/orann);
      		toplam3+=tt;
 			}
 			average3=toplam3/(24*oran);
 			
 			Plot pp3=new Plot(xx3,yy3);    		
    		pp3.setPlabel("CSP_APmodel Storage ışınım şiddeti şiddeti");
 			pp3.setYlabel("Işınım, W/m^2");
 			pp3.setXlabel("saat");
 			pp3.plot();
      
    
      
      System.out.println(" CSP_APmodel Storage ışınım şiddeti şiddeti \n");
      System.out.println(" Gün boyu otalama:"+average3+" W/m^2 \n");
      System.out.println(" Saat                   Işınım \n");
      
	for(int j=0; j<=(24*oran); j++)
			{
				
				System.out.print(" "+xx3[j]+"                     "+yy3[j]+" \n");
 			}
 	
 			   //  */
 			
 			System.out.println("Yatay yüzey Gün boyu otalama:"+average+" W/m^2 \n");
 			System.out.println("Eğimli yüzey Gün boyu otalama:"+average1+" W/m^2 \n");
 			System.out.println("CSP_APmodel Gün boyu otalama:"+average2+" W/m^2 \n");
 			
 			
 			System.out.print("CSP_APmodel maksimum olduğu gün:"+r.maximum_CSP_APmodel(ro)[0]+". yılın gün\n");
 			System.out.print("CSP_APmodel maksimum olduğu saat:"+r.maximum_CSP_APmodel(ro)[1]/60+"saat \n");
 			System.out.print("CSP_APmodel maksimum olduğu ışınım:"+r.maximum_CSP_APmodel(ro)[2]+" W/m^2 \n");
 			System.out.print("CSP_APmodel maksimum olduğu ay:"+r.maximum_CSP_APmodel(ro)[3]+".ay \n");
 			System.out.print("CSP_APmodel maksimum olduğu ayın günü:"+r.maximum_CSP_APmodel(ro)[4]+".gün \n");
 			
 			System.out.println("CSP_APmodel Gün boyu otalama:"+r.average_day_CSP_APmodel(day,mounth, ro)+" W/m^2(metodla) \n");
 			System.out.println("CSP_APmodel yıl boyu otalama:"+r.average_year_CSP_APmodel(ro)+" W/m^2(metodla) \n");
 			System.out.println("Yatay yüzey yıl boyu otalama:"+r.average_year_angles_surface(yatay_egim,azimuth, ro)+" W/m^2(metodla) \n");
 			
			/*
			radoSUN r=new radoSUN( enlem, boylam,ssboylamı, yukseklik, iklim);
        		r.radiation(day,mounth,standartTime);
			System.out.println(r.cikti());

		 		r.angles_surface(day,mounth,standartTime, yatay_egim, azimuth, ro);
			System.out.println(r.cikti());
			// */
		}
	}