Skip to content
Snippets Groups Projects
Commit 977ce63f authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 29/09/2016: added new fields (and renamed 2 of them) to TFILEDATA...

Philippe 29/09/2016: added new fields (and renamed 2 of them) to TFILEDATA datatype and began to use them
parent 3df84777
No related branches found
No related tags found
No related merge requests found
......@@ -49,8 +49,19 @@ END TYPE TOUTBAK
!Structure describing the characteristics of a file
TYPE TFILEDATA
CHARACTER(LEN=28) :: CFILENAME !Filename
CHARACTER(LEN=7) :: CFILETYPE = "UNKNOWN" !Filetype (backup, output...)
CHARACTER(LEN=28) :: CNAME !Filename
CHARACTER(LEN=7) :: CTYPE = "UNKNOWN" !Filetype (backup, output...)
CHARACTER(LEN=7) :: CFORMAT = "UNKNOWN" !Fileformat (NETCDF4, LFI...)
CHARACTER(LEN=7) :: CMODE = "UNKNOWN" !Opening mode (read, write...)
LOGICAL :: LOPENED = .FALSE. !Is the file opened
INTEGER :: NOPEN = 0 !Number of times the file has been opened (during the current execution)
!
! Fields for LFI files
INTEGER :: NLFINPRAR = 0 !Number of predicted articles of the LFI file (non crucial)
INTEGER :: NLFININAR = -1 !Number of articles present at opening of the LFI file
INTEGER :: NLFITYPE = -1 !Type of the file (used to generate list of files to transfers)
INTEGER :: NLFIVERB = 1 !LFI verbosity level
!
TYPE(TFILEDATA),POINTER :: TFILE_PREV => NULL()
TYPE(TFILEDATA),POINTER :: TFILE_NEXT => NULL()
END TYPE TFILEDATA
......
......@@ -278,6 +278,7 @@ USE MODD_LUNIT
USE MODD_GRID, ONLY: XLONORI,XLATORI
USE MODD_SERIES, ONLY: LSERIES
USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI
USE MODD_IO_ll, ONLY: TFILEDATA
!
USE MODD_SUB_MODEL_n
USE MODD_GET_n
......@@ -428,6 +429,7 @@ INTEGER :: INPRAR ! number of articles predicted in
INTEGER :: ININAR ! number of articles present in
! the LFIFM file
INTEGER :: ITYPE ! type of file (cpio or not)
INTEGER :: IVERB ! LFI verbosity level
LOGICAL :: GSTEADY_DMASS ! conditional call to mass computation
!
! for computing time analysis
......@@ -525,6 +527,8 @@ REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZTMP
TYPE(LIST_ll), POINTER :: TZFIELDC_ll ! list of fields to exchange
TYPE(HALO2LIST_ll), POINTER :: TZHALO2C_ll ! list of fields to exchange
!
TYPE(TFILEDATA),POINTER :: TZFILE
CHARACTER(LEN=:),ALLOCATABLE :: YMODE
!-------------------------------------------------------------------------------
!
!* 0. MICROPHYSICAL SCHEME
......@@ -906,12 +910,21 @@ IF (IOUT < NOUT_NUMB ) THEN
IF (KTCOUNT == TOUTBAKN(IOUT+1)%NSTEP) THEN
IOUT=IOUT+1
GCLOSE_OUT=.TRUE.
INPRAR = 22 +2*(4+NRR+NSV)
!
YFMFILE = TOUTBAKN(IOUT)%TFILE%CFILENAME
TZFILE => TOUTBAKN(IOUT)%TFILE
YFMFILE = TZFILE%CNAME
YDADFILE = TOUTBAKN(IOUT)%CDADFILENAME
YMODE = TZFILE%CMODE
INPRAR = TZFILE%NLFINPRAR
ITYPE = TZFILE%NLFITYPE
IVERB = TZFILE%NLFIVERB
!
CALL FMOPEN_ll(YFMFILE,YMODE,CLUOUT,INPRAR,ITYPE,IVERB,ININAR,IRESP)
!
TZFILE%NLFININAR = ININAR
TZFILE%LOPENED = .TRUE.
TZFILE%NOPEN = TZFILE%NOPEN + 1
!
CALL FMOPEN_ll(YFMFILE,'WRITE',CLUOUT,INPRAR,ITYPE,NVERB,ININAR,IRESP)
YDESFM=ADJUSTL(ADJUSTR(YFMFILE)//'.des')
!
CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT)
......@@ -923,12 +936,12 @@ IF (IOUT < NOUT_NUMB ) THEN
CALL WRITE_SURF_ATM_n(YSURF_CUR,'MESONH','ALL',.FALSE.)
END IF
!
! Reinitialize Lagragian variables at every model output
! Reinitialize Lagragian variables at every model backup
IF (LLG .AND. LINIT_LG .AND. CINIT_LG=='FMOUT') THEN
CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
IF (NVERB>=5) THEN
IF (IVERB>=5) THEN
WRITE(UNIT=ILUOUT,FMT=*) '************************************'
WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' output'
WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' backup'
WRITE(UNIT=ILUOUT,FMT=*) '************************************'
END IF
END IF
......@@ -1900,6 +1913,7 @@ XT_STEP_BUD = XT_STEP_BUD + ZTIME2 - ZTIME1 + XTIME_BU
IF (GCLOSE_OUT) THEN
GCLOSE_OUT=.FALSE.
CALL FMCLOS_ll(YFMFILE,'KEEP',CLUOUT,IRESP)
TZFILE%LOPENED = .FALSE.
END IF
!
!-------------------------------------------------------------------------------
......
......@@ -243,6 +243,7 @@ USE MODD_BUDGET
USE MODD_DYN
USE MODD_FMOUT
USE MODD_NESTING
USE MODD_NSV, ONLY: NSV
!
USE MODE_GRIDCART
USE MODE_GRIDPROJ
......@@ -717,9 +718,26 @@ DO IMI = 1, NMODEL
TFILE_LAST => TFILE_LAST%TFILE_NEXT
ENDIF
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE => TFILE_LAST
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CFILETYPE="BACKUP"
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CTYPE="BACKUP"
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CMODE="WRITE"
WRITE (YNUMBER,FMT="('.',I3.3)") IPOS
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CFILENAME=ADJUSTL(ADJUSTR(IO_SURF_MNH_MODEL(IMI)%COUTFILE)//YNUMBER)
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CNAME=ADJUSTL(ADJUSTR(IO_SURF_MNH_MODEL(IMI)%COUTFILE)//YNUMBER)
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFITYPE=1 !1: to be transfered
!PW: TODO: set NLFIVERB only when useful (only if LFI file...)
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFIVERB=NVERB
IF (LIOCDF4) THEN
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CTYPE='NETCDF4'
IF (LLFIOUT) THEN
PRINT *,'Warning: LLFIOUT + LIOCDF4 = .TRUE. not yet implemented with new IO data structures'
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFINPRAR= 22+2*(4+NRR+NSV)
END IF
ELSE IF (LLFIOUT) THEN
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CTYPE='LFI'
OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFINPRAR= 22+2*(4+NRR+NSV)
ELSE
PRINT *,'Error: unknown backup fileformat'
CALL ABORT
ENDIF
END IF
END DO
!
......@@ -733,7 +751,7 @@ DO IMI = 1, NMODEL
IF (NDAD(IMI) == IMI .OR. IMI == 1) THEN
OUT_MODEL(IMI)%TOUTBAKN(:)%NOUTDAD = 0
!Check IPOS>0 because TOUTBAKN(0) does not exist (IPOS=0 only if no backups)
IF(IPOS>0) OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CDADFILENAME = OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CFILENAME
IF(IPOS>0) OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CDADFILENAME = OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CNAME
ELSE
DO IPOS = 1,OUT_MODEL(IMI)%NOUT_NUMB
IDX = 0
......
......@@ -376,7 +376,7 @@ YCOMMENT=' '
IGRID=0
ILENCH=LEN(YCOMMENT)
IF (PRESENT(TPFILE)) THEN
CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TPFILE%CFILETYPE,IGRID,ILENCH,YCOMMENT,IRESP)
CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TPFILE%CTYPE,IGRID,ILENCH,YCOMMENT,IRESP)
ELSE
CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,"UNKNOWN",IGRID,ILENCH,YCOMMENT,IRESP)
ENDIF
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment