
      Subroutine Write_EOF_PCA_for_Fcs (F_pca, F_eof)
         Character (Len=*) :: F_eof, F_pca
         Character (Len=255) :: var_ln, t_unit
         Integer :: i,j,k,iidx,it, ivar, Nlat, Nlon, Nz, Ntime 
         Real :: tmp
         Real, Allocatable :: PCA(:,:,:), xmode(:), EOF1(:,:), X1(:), Xtmp(:)
         Real, Allocatable :: lon(:), lat(:), xgrd(:), xtime(:)

         !-------------------------------------------------------------------------         
         ! Write to PCs file:
         Nlon=LT; Nlat=Nmon;
         !print*,"nlon,nlat,Nx,Nmode=",nlon,nlat,Nx,Nmode
         Allocate (lon(Nlon),lat(Nlat),xmode(Nmode),xgrd(Nx))
         Allocate (Xtmp(Nmode))

         Do i=1,LT; lon(i)=i; Enddo          ! Leadtime (lon)
         Do i=1,Nmon; lat(i)=i; Enddo        ! Nmon     (lat)
         Do i=1,Nx; xgrd(i)=i; Enddo         ! Grid points (t)
         Do i=1,Nmode; xmode(i)=i; Enddo     ! Nmode    (z)

         var_ln="PCs of all variables: leadtime=1-6, mon=1-12, "// &
                 "grdpt=So diem luoi, mode=so mode duco giu lai"
         t_unit="years since 1983-01-01 "

         Call wr_ncdf_4d (F_pca,lon,lat,xgrd,xmode,nlon,nlat,Nx,Nmode,PCall,"pc", &
                 t_unit, var_ln,"-", "leadtime", "mon","grdpt","mode", Miss)
         !-------------------------------------------------------------------------
         var_ln="Eigen values for each LT, each mon: 1-Nmode"
         Call wr_ncdf_3d_apd (F_pca,Eigall,"eig",nlon,nlat,nx,var_ln, &
                              "-","leadtime","mon","grdpt", Miss)

         var_ln="Mean values for each LT, each mon at each grdpoints"
         Call wr_ncdf_3d_apd (F_pca,xtball,"mean",nlon,nlat,nx,var_ln, &
                              "-","leadtime","mon","grdpt", Miss)

         var_ln="Stdev values for each LT, each mon at each grdpoints"
         Call wr_ncdf_3d_apd (F_pca,sxall,"std",nlon,nlat,nx,var_ln, &
                              "-","leadtime","mon","grdpt", Miss)

         var_ln="Sample sizes for all cases (=Nt)"
         Call wr_ncdf_3d_apd (F_pca,Nsple,"nt",nlon,nlat,nx,var_ln, &
                              "-","leadtime","mon","grdpt", Miss)
         !-------------------------------------------------------------------------
         Do ilt=1,LT
            Do imon=1,Nmon
               tmp=0.0
               Do i=1,Mcount
                  tmp=tmp+Eigall(ilt,imon,i)
                  if (I<=Nmode) then
                     ECum(ilt,imon,i)=0
                     Do j=1,I
                        ECum(ilt,imon,i)=ECum(ilt,imon,i)+Eigall(ilt,imon,i)
                     Enddo
                  endif
               Enddo
               Do i=1,Nmode
                  ECum(ilt,imon,i)=ECum(ilt,imon,i)/tmp
                  EVari(ilt,imon,i)=Eigall(ilt,imon,i)/tmp
               Enddo
            Enddo
         Enddo
         var_ln="Cumuluted Eigenvalues"
         Call wr_ncdf_3d_apd (F_pca,ECum,"cum",nlon,nlat,nx,var_ln, &
                              "-","leadtime","mon","grdpt", Miss)

         var_ln="Percent Contribution of PCs"
         Call wr_ncdf_3d_apd (F_pca,EVari,"var",nlon,nlat,nx,var_ln, &
                              "-","leadtime","mon","grdpt", Miss) 
         !-------------------------------------------------------------------------
         ! Write to EOF file:
         if (Allocated(xtime)) Deallocate (xtime); Allocate (xtime(1:Nt))
         Do it=1, Nt; xtime(it)=it+1982; Enddo     ! year since 1983
         var_ln="Timeseries of eofs: of all variables: LT=1-6, mon=1-12"
         Call wr_ncdf_4d (F_eof,lon,lat,xtime,xmode,nlon,nlat,Nt,Nmode,EOFall,"eof", &
                 t_unit, var_ln,"-", "leadtime","mon","year","mode",Miss)

         print*,"Write_EOF_PCA: Done !!!"
      End Subroutine Write_EOF_PCA_for_Fcs
      !---------------------------------------------------------------------------------

