
Program PCA_Drought

Integer, Parameter :: NYr1=1980, NYr2=2014, Mmon=12, Nmon = 12, Nsea = 4 ! 4 mua (12-2,3-5,6-8,9-11)
Integer, Parameter :: NtrMx = 14                  ! So tram cuc dai co SL (So chi so IDX)
Integer, Parameter :: Nyear=(Nyr2-Nyr1+1), Ntime=Nyear*Nmon
Integer, Parameter :: NMAX=1000, MMAX=20
Character (Len = 11) :: TenTram(NtrMx), VarName(NtrMx), Sample(Nmax)

! Cac bien Output:
Real :: TriRieng(MMax),VTORieng(MMax,MMax),TaiTrong(MMax,MMax),NhanTo(NMax,MMax),TT_DAQUAY(MMax,MMax), NT_DAQUAY(NMax,MMax)
Real :: XMean(MMax), Stdev(MMax), Corr(MMax,MMax)
Real  :: XX(Nmax, Mmax), X1(Nmax, Mmax, Mmon), XX_R(Nmax,Mmax), Xsea(Nmax, Mmax, Nsea)
Integer :: YYDD(Nmax), YY(Nmax)
Real    :: Con


!-----------------------------------------------------------------------

CONTAINS
!----------------------------------------------------------------------------------!

Subroutine Calc_PCs_EOFs
 Integer :: it
     CON = 1.
     VarName(1:Ntr) = TenTram(1:Ntr); it=0
     Do i=1,Nyear
        Do imon=1, Nmon
           it=it+1; write(Sample(it),'(I4.4,I2.2)') YY(i), imon
           XX(it,1:Ntr) = X1(i,1:Ntr,imon)
        Enddo
     Enddo

     Call PTNT(XX,NMAX,MMAX,Nyear*Nmon,Ntr,CON,  & !!!!!               CVarName,Sample, &
               XMean,Stdev,Corr,K_Eigen,TriRieng,VTORieng,TaiTrong,NhanTo,TT_DAQUAY, NT_DAQUAY)
     Open(4,file="My_test_PCA.txt",status="Unknown")
     write(4,"(I3,A,16F8.3)") K_Eigen, " tri rieng: ",(TriRieng(i),i=1,K_Eigen)
     write(4,*) "Cac vector rieng:"
     Do j=1,K_Eigen
        write(4,"(I3,A,16F8.3)") j," : ", (VTORieng(i,j),i=1,Ntr)
     Enddo
     write(4,*) "Ma tran Tai trong nhan to (PCA):"
     Do i=1, Ntr
        write(4,"(A11,16F8.4)") VarName(i), (TaiTrong(i,j),j=1,K_Eigen)
     Enddo
     write(4,*) "Ma tran Tai trong nhan to da quay (PCA):"
     Do i=1, Ntr
        write(4,"(A11,16F8.4)") VarName(i), (TT_DAQUAY(i,j),j=1,K_Eigen)
     Enddo
     write(4,*) "Ma tran nhan to (EOF):"
     Do i=1, Nyear*Nmon
        write(4,"(A11,16F8.4)") Sample(i), (NhanTo(i,j),j=1,K_Eigen)
     Enddo
     write(4,*) "Ma tran nhan to da quay (EOF):"
     Do i=1, Nyear*Nmon
        write(4,"(A11,16F8.4)") Sample(i), (NT_DAQUAY(i,j),j=1,K_Eigen)
     Enddo

     Close(4)
!  Enddo  ! k=1,Nmon
End Subroutine Calc_PCs_EOFs
!-----------------------------------------------------------------------

END  ! Main Prog
!-----------------------------------------------------------------------
Include "/home/tanpv/Mylibs/Factor_PCA_EOF.f90"

