!--------------------------------------- LICENCE BEGIN ----------------------------------- !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END --------------------------------------module burpFiles_mod 4,1 use mpivar_mod
implicit none save private ! public variables public :: burp_nfiles,burp_cfamtyp,burp_cfilnam ! public procedures public :: burp_setupfiles integer, parameter :: jpfiles=64 integer :: burp_nfiles character(len=2) :: burp_cfamtyp(jpfiles) character(len=128) :: burp_cfilnam(jpfiles) contains
SUBROUTINE burp_setupfiles(datestamp) 1 implicit none !s/r setup_burpfiles -INITIALZE BURP FILE NAMES and return datestamp ! ! INTEGER IER,INBLKS,nulburp,JJ INTEGER FNOM,FCLOS,NUMBLKS CHARACTER(len=20) :: CLVALU(JPFILES) CHARACTER(len=2) :: CFAMI(JPFILES) CHARACTER(len=4) :: cmyidx, cmyidy CHARACTER(len=9) :: cmyid CHARACTER(len=128) :: burpin LOGICAL isExist_L INTEGER KTIME,KDATE INTEGER IHANDL,ILONG,DATESTAMP INTEGER ITIME,IFLGS,IDBURP,ILAT,ILON,IDX,IDY INTEGER IALT,IDELAY,IDATE,IRS,IRUNN,INBLK,ISUP,IXAUX INTEGER INSUP,INXAUX INTEGER, ALLOCATABLE :: IBUF(:) INTEGER INRECS INTEGER MRFCLS,MRFOPN,MRFOPC,MRBHDR,MRFLOC,MRFGET INTEGER MRFMXL INTEGER NBRPDATE,NBRPHH,ISTAMPOBS,INEWHH,NEWDATE REAL*8 DELHH INTEGER IVALS CHARACTER*9 CLSTNID EXTERNAL FCLOS,FNOM,MRFCLS,MRFOPN,MRFOPC,MRBHDR,MRFLOC,MRFGET,MRFMXL,NUMBLKS write(cmyidy,'(I4.4)') (mpi_npey-mpi_myidy) write(cmyidx,'(I4.4)') (mpi_myidx+1) cmyid = trim(cmyidx)//'_'//trim(cmyidy) CLVALU( 1) = 'brpuan' CLVALU( 2) = 'brpuas' CLVALU( 3) = 'brpai' CLVALU( 4) = 'brpain' CLVALU( 5) = 'brpais' CLVALU( 6) = 'brpaie' CLVALU( 7) = 'brpaiw' CLVALU( 8) = 'brpsfc' CLVALU( 9) = 'brpsf' CLVALU(10) = 'brptov' CLVALU(11) = 'brpssmis' CLVALU(12) = 'brpairs' CLVALU(13) = 'brpto_amsua' CLVALU(14) = 'brpto_amsub' CLVALU(15) = 'brpcsr' CLVALU(16) = 'brpiasi' CLVALU(17) = 'brpsw' CLVALU(18) = 'brpswgoes9' CLVALU(19) = 'brpswgoese' CLVALU(20) = 'brpswgoesw' CLVALU(21) = 'brpswmodis' CLVALU(22) = 'brpswmtsate' CLVALU(23) = 'brpswmtsatw' CLVALU(24) = 'brpgo' CLVALU(25) = 'brpsc' CLVALU(26) = 'brppr' CLVALU(27) = 'brpro' CLVALU(28) = 'brphum' CLVALU(29) = 'brpsat' CLVALU(30) = 'brpssm' CLVALU(31) = 'brpo3' CLVALU(32) = 'brpoz' CLVALU(33) = 'brpgp' CLVALU(34) = ' ' CFAMI( 1) = 'UA' CFAMI( 2) = 'UA' CFAMI( 3) = 'AI' CFAMI( 4) = 'AI' CFAMI( 5) = 'AI' CFAMI( 6) = 'AI' CFAMI( 7) = 'AI' CFAMI( 8) = 'SF' CFAMI( 9) = 'SF' CFAMI(10) = 'TO' CFAMI(11) = 'TO' CFAMI(12) = 'TO' CFAMI(13) = 'TO' CFAMI(14) = 'TO' CFAMI(15) = 'TO' CFAMI(16) = 'TO' CFAMI(17) = 'SW' CFAMI(18) = 'SW' CFAMI(19) = 'SW' CFAMI(20) = 'SW' CFAMI(21) = 'SW' CFAMI(22) = 'SW' CFAMI(23) = 'SW' CFAMI(24) = 'GO' CFAMI(25) = 'SC' CFAMI(26) = 'PR' CFAMI(27) = 'RO' CFAMI(28) = 'HU' CFAMI(29) = 'ST' CFAMI(30) = 'MI' CFAMI(31) = 'OZ' CFAMI(32) = 'OZ' CFAMI(33) = 'GP' CFAMI(34) = ' ' IER =MRFOPC('MSGLVL','FATAL') IVALS=8 KDATE=-9999 KTIME=-9999 burp_nfiles=0 DO JJ=1,JPFILES IF(CLVALU(JJ) == '') EXIT nulburp=0 burpin=trim(CLVALU(JJ))//'_'//trim(cmyid) INQUIRE(FILE=trim(burpin),EXIST=isExist_L) IF (.NOT. isExist_L )THEN burpin=trim(CLVALU(JJ)) INQUIRE(FILE=trim(burpin),EXIST=isExist_L) END IF IF ( isExist_L )THEN IER=FNOM(nulburp,burpin,'RND+OLD',0) WRITE(*,*)' Open File : ',burpin IF ( IER .EQ. 0 ) THEN INBLKS= -1 INBLKS=NUMBLKS(nulburp) IF ( INBLKS .GT. 0 ) THEN INRECS=MRFOPN(NULBURP,'READ') ILONG =MRFMXL(NULBURP) ALLOCATE(IBUF(ILONG + 20)) IBUF(1)=ILONG + 20 IHANDL =MRFLOC(NULBURP,0,'>>*******',-1,-1,-1,-1,-1,-1,0) IF ( IHANDL .LT. 0 ) THEN IHANDL=MRFLOC(NULBURP,0,'*********',-1,-1,-1,-1,-1,-1,0) ENDIF IF ( IHANDL .LT. 0 ) THEN WRITE(*,*) 'AUCUN ENREGISTREMENT VALIDE DANS LE FICHIER BURP' ELSE burp_nfiles=burp_nfiles + 1 burp_cfilnam(burp_nfiles)=burpin burp_cfamtyp(burp_nfiles)=CFAMI(JJ) INSUP=0 INXAUX=0 IER=MRFGET(IHANDL,IBUF) IER=MRBHDR(IBUF,ITIME,IFLGS,CLSTNID,IDBURP,ILAT, & ILON,IDX,IDY, IALT,IDELAY,IDATE,IRS,IRUNN,INBLK, & ISUP,INSUP,IXAUX,INXAUX) KTIME=ITIME KDATE=IDATE ENDIF DEALLOCATE(IBUF) IER=MRFCLS(NULBURP) ENDIF ENDIF IER= FCLOS(nulburp) ENDIF END DO WRITE(*,*) ' ' WRITE(*,*)' NUMBER OF BURP FILES IS :',burp_nfiles WRITE(*,*)'TYPE NAME ' WRITE(*,*)'---- ---- ' DO JJ=1,burp_nfiles WRITE(*,'(1X,A2,1X,A128)' ) burp_cfamtyp(JJ),burp_cfilnam(JJ) END DO ! Make sure all mpi tasks have a valid date (important for split burp files) call rpn_comm_allreduce(kdate,kdate,1,"MPI_INTEGER","MPI_MAX","GRID",ier) call rpn_comm_allreduce(ktime,ktime,1,"MPI_INTEGER","MPI_MAX","GRID",ier) ier = newdate(istampobs,kdate,ktime,3) delhh = 3.0d0 call INCDATR (datestamp, istampobs, delhh) ier = newdate(datestamp,nbrpdate,inewhh,-3) nbrphh=KTIME/100 if (nbrphh .ge. 21 .or. nbrphh .lt. 3) then nbrphh = 0 elseif(nbrphh .ge. 3 .and. nbrphh .lt. 9) then nbrphh = 6 elseif(nbrphh .ge. 9 .and. nbrphh .lt. 15) then nbrphh = 12 else nbrphh = 18 endif ier = newdate(datestamp,nbrpdate,nbrphh*1000000,3) WRITE(*, *)' BURP FILES VALID DATE (YYYYMMDD) : ',nbrpdate WRITE(*, *)' BURP FILES VALID TIME (HH) : ',nbrphh END SUBROUTINE burp_setupfiles end module burpFiles_mod