module mnavo use mkinds use mdates use mncio use mutil use mgdem use mgrid use mhycom use miotsis use mpobs use mprep contains subroutine navoglb2tgt(cdtg) implicit none integer(i4) :: fid,i,j,iunit,k character(:), allocatable :: filename,fname character(:), allocatable :: vname integer(i4) :: vtype integer(i4) :: vdims(2),vdim(1) integer(i4),parameter :: src_nx=3600,src_ny=1801 integer(i4) :: dst_nx,dst_ny real(r4), allocatable :: src_lon(:),src_lat(:),src_sst(:,:),src_sst_err(:,:) real(r4), allocatable :: dst_lon(:,:),dst_lat(:,:),dst_sst(:,:),dst_sst_err(:,:) real(r4) :: ptlon, ptlat,grdi1,grdj1,grdi2,grdj2 real(r4),allocatable :: depth(:,:), grid_lat(:,:) real(r4),allocatable :: w1(:),w2(:,:),L4sst(:,:),L4sst_err(:,:) integer(i4) :: offset,iif,iil,jjf,jjl,nf,iwp,npass,den,nob_grp logical(bl) :: lexist,lmask(src_nx,src_ny) integer(i4) :: iw(src_nx,src_ny) character(cl) :: buffer,depthFile character(10) :: cdtg integer(i4),allocatable :: indx(:,:),ob_grp_present(:) !model info character(len=20) :: model,fcst_file,anl_file logical(bl) :: lglb,fcst_file_out character(len=5) :: pfx NAMELIST/model_info/model,sigver,lglb,fcst_file,anl_file,fcst_file_out,pfx OPEN(21,FILE='tsis.nlist') READ(21,NML=model_info) CLOSE(21) nob_grp=3 allocate(ob_grp_present(nob_grp)) allocate(w1(src_nx)) allocate(w2(src_nx,src_ny)) allocate(src_lon(src_nx)) allocate(src_lat(src_ny)) allocate(src_sst(src_nx,src_ny)) allocate(src_sst_err(src_nx,src_ny)) allocate(dst_sst(nx,ny)) allocate(dst_sst_err(nx,ny)) !!Alex filename=trim(sst_data_location)//cdtg(1:8)//"-NAVO-L4HR1m-GLOB-v01-fv01_0-K10_SST.nc" filename=trim(sst_data_location)//cdtg(1:8)//"000000-NAVO-L4_GHRSST-SST1m-K10_SST-GLOB-v02.0-fv01.0.nc" INQUIRE(FILE=filename, EXIST=lexist) if(lexist) then !!Alexwrite(*,*) "GHRSST: NAVO-K10 ",cdtg(1:8)//"-NAVO-L4HR1m-GLOB-v01-fv01_0-K10_SST.nc" write(*,*) "GHRSST: NAVO-K10 ",cdtg(1:8)//"000000-NAVO-L4_GHRSST-SST1m-K10_SST-GLOB-v02.0-fv01.0.nc" call nciopn(filename,fid) call nciorv(filename,fid,"lon",src_lon) call nciorv(filename,fid,"lat",src_lat) call nciorv(filename,fid,"analysed_sst",src_sst) call nciorv(filename,fid,"analysis_error",src_sst_err) call nciocl(filename,fid) ! scale values src_sst=0.1*src_sst src_sst_err=0.01*src_sst_err w1=src_lat do j=1,src_ny i=j-1 src_lat(j)=w1(src_ny-i) enddo w2=src_sst do j=1,src_ny k=j-1 do i=1,src_nx src_sst(i,j)=w2(i,src_ny-k) enddo enddo w2=src_sst_err do j=1,src_ny k=j-1 do i=1,src_nx src_sst_err(i,j)=w2(i,src_ny-k) enddo enddo !open(unit=10,file="sst.txt",status="unknown") ! do j=1,src_ny,10 ! do i=1,src_nx,10 ! if(src_sst(i,j)>-2.0) then ! write(10,'(3F12.4)'), src_lon(i),src_lat(j),src_sst(i,j) ! endif ! enddo ! enddo !close(10) nf=1 npass=0 iw=0 do while(npass<50) npass=npass+1 lmask=.true. WHERE (src_sst(:,:)>-2) iw=1 !print *, "Executing pass no: ", npass, sum(iw) WHERE (iw == 0 ) lmask=.false. DO j=1,src_ny jjf=j-nf ; jjl =j+nf jjf=MAX(1,jjf) ; jjl=MIN(src_ny,jjl) DO i=1,src_nx iif=i-nf ; iil=i+nf iif=MAX(1,iif) ; iil=MIN(src_nx,iil) den=SUM(iw(iif:iil,jjf:jjl) ) IF ( den /= 0 .and. iw(i,j)==0 ) THEN src_sst(i,j)= SUM(src_sst(iif:iil,jjf:jjl), mask=lmask(iif:iil,jjf:jjl) )/den src_sst_err(i,j)= SUM(src_sst_err(iif:iil,jjf:jjl), mask=lmask(iif:iil,jjf:jjl) )/den ENDIF END DO END DO enddo where(src_sst<-5.0) src_sst=-2.0 src_sst_err=2.0 end where call ifld(src_nx,src_ny,nx,ny,src_lon,src_lat,src_sst,src_sst_err,dst_sst,dst_sst_err) where(mdepth>=2.00**100) dst_sst=2.00**100 dst_sst_err=2.00**100 end where where(dst_sst_err<0.0) dst_sst_err=2.0 !fname="tsis_obs_"//cdtg//".nc" fname=trim(tsis_obs_location)//"tsis_obs_"//trim(pfx)//"_"//cdtg//".nc" call nciopn(fname,fid) call nciowv(fname,fid,"sst",dst_sst) call nciowv(fname,fid,"sst_err",dst_sst_err) call nciorv(fname,fid,"ob_grp_present",ob_grp_present) ob_grp_present(3)=1 call nciowv(fname,fid,"ob_grp_present",ob_grp_present) call nciocl(fname,fid) else Write(*,*) "Navo SST file not present" endif end subroutine end module mnavo