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

Philippe 21/10/2019: CDF2CDF: add OPTDIR option to set directory for writing outfiles

parent b67db3a6
No related branches found
No related tags found
No related merge requests found
...@@ -5,19 +5,20 @@ ...@@ -5,19 +5,20 @@
!----------------------------------------------------------------- !-----------------------------------------------------------------
! Modifications: ! Modifications:
! P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file ! P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
! P. Wautelet 21/10/2019: add OPTDIR option to set directory for writing outfiles
!----------------------------------------------------------------- !-----------------------------------------------------------------
module mode_options module mode_options
USE MODE_FIELD, ONLY: TYPEUNDEF, TYPEINT, TYPELOG, TYPEREAL, TYPECHAR, TYPEDATE USE MODE_FIELD, ONLY: TYPEUNDEF, TYPEINT, TYPELOG, TYPEREAL, TYPECHAR, TYPEDATE
implicit none implicit none
integer,parameter :: NBAVAILOPTIONS = 11 integer,parameter :: NBAVAILOPTIONS = 12
integer,parameter :: MODEUNDEF = -11, MODECDF2CDF = 11, MODELFI2CDF = 12, MODECDF2LFI = 13 integer,parameter :: MODEUNDEF = -11, MODECDF2CDF = 11, MODELFI2CDF = 12, MODECDF2LFI = 13
integer,parameter :: OPTCOMPRESS = 1, OPTHELP = 2, OPTLIST = 3 integer,parameter :: OPTCOMPRESS = 1, OPTHELP = 2, OPTLIST = 3
integer,parameter :: OPTMERGE = 4, OPTOUTPUT = 5, OPTREDUCE = 6 integer,parameter :: OPTMERGE = 4, OPTOUTPUT = 5, OPTREDUCE = 6
integer,parameter :: OPTMODE = 7, OPTSPLIT = 8, OPTVAR = 9 integer,parameter :: OPTMODE = 7, OPTSPLIT = 8, OPTVAR = 9
integer,parameter :: OPTVERBOSE = 10, OPTFALLBACK = 11 integer,parameter :: OPTVERBOSE = 10, OPTFALLBACK = 11, OPTDIR = 12
type option type option
logical :: set = .false. logical :: set = .false.
...@@ -162,6 +163,11 @@ subroutine init_options(options) ...@@ -162,6 +163,11 @@ subroutine init_options(options)
options(OPTFALLBACK)%has_argument = .true. options(OPTFALLBACK)%has_argument = .true.
options(OPTFALLBACK)%type = TYPECHAR options(OPTFALLBACK)%type = TYPECHAR
options(OPTDIR)%long_name = "outdir"
options(OPTDIR)%short_name = 'd'
options(OPTDIR)%has_argument = .true.
options(OPTDIR)%type = TYPECHAR
end subroutine init_options end subroutine init_options
subroutine get_option(options,finished) subroutine get_option(options,finished)
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
! P. Wautelet 01/08/2019: allow merge of entire Z-split files ! P. Wautelet 01/08/2019: allow merge of entire Z-split files
! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) ! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
! P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file ! P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
! P. Wautelet 21/10/2019: add OPTDIR option to set directory for writing outfiles
!----------------------------------------------------------------- !-----------------------------------------------------------------
MODULE mode_util MODULE mode_util
USE MODD_IO_ll, ONLY: TFILE_ELT, TFILEDATA USE MODD_IO_ll, ONLY: TFILE_ELT, TFILEDATA
...@@ -1160,8 +1161,13 @@ END DO ...@@ -1160,8 +1161,13 @@ END DO
KNFILES_OUT = KNFILES_OUT + 1 KNFILES_OUT = KNFILES_OUT + 1
idx = KNFILES_OUT idx = KNFILES_OUT
CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'UNKNOWN','WRITE', & if ( options(OPTDIR)%set ) then
HFORMAT='NETCDF4',OOLD=.TRUE.) CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'UNKNOWN','WRITE', &
HFORMAT='NETCDF4',OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
else
CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'UNKNOWN','WRITE', &
HFORMAT='NETCDF4',OOLD=.TRUE.)
end if
CALL IO_FILE_OPEN_ll(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG) CALL IO_FILE_OPEN_ll(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
IF (options(OPTCOMPRESS)%set) THEN IF (options(OPTCOMPRESS)%set) THEN
...@@ -1173,8 +1179,8 @@ END DO ...@@ -1173,8 +1179,8 @@ END DO
outfiles(idx)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE. outfiles(idx)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE.
END IF END IF
status = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,omode) istatus = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,omode)
IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) IF (istatus /= NF90_NOERR) CALL HANDLE_ERR(istatus,__LINE__)
END IF ! .NOT.osplit END IF ! .NOT.osplit
ELSE ELSE
! !
...@@ -1182,8 +1188,13 @@ END DO ...@@ -1182,8 +1188,13 @@ END DO
! !
KNFILES_OUT = KNFILES_OUT + 1 KNFILES_OUT = KNFILES_OUT + 1
idx = KNFILES_OUT idx = KNFILES_OUT
CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'UNKNOWN','WRITE', & if ( options(OPTDIR)%set ) then
HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.) CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'UNKNOWN','WRITE', &
HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
else
CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'UNKNOWN','WRITE', &
HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.)
end if
LIOCDF4 = .FALSE. !Necessary to open correctly the LFI file LIOCDF4 = .FALSE. !Necessary to open correctly the LFI file
CALL IO_FILE_OPEN_ll(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG) CALL IO_FILE_OPEN_ll(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
LIOCDF4 = .TRUE. LIOCDF4 = .TRUE.
...@@ -1194,8 +1205,13 @@ END DO ...@@ -1194,8 +1205,13 @@ END DO
KNFILES_OUT = KNFILES_OUT + 1 KNFILES_OUT = KNFILES_OUT + 1
idx = KNFILES_OUT idx = KNFILES_OUT
CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','UNKNOWN','WRITE', & if ( options(OPTDIR)%set ) then
HFORMAT='NETCDF4',OOLD=.TRUE.) CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','UNKNOWN','WRITE', &
HFORMAT='NETCDF4',OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
else
CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','UNKNOWN','WRITE', &
HFORMAT='NETCDF4',OOLD=.TRUE.)
end if
CALL IO_FILE_OPEN_ll(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG) CALL IO_FILE_OPEN_ll(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
END IF END IF
...@@ -1249,8 +1265,13 @@ END DO ...@@ -1249,8 +1265,13 @@ END DO
DO ji = 1,nbvar DO ji = 1,nbvar
filename = trim(houtfile)//'.'//TRIM(YVARS(ji)) filename = trim(houtfile)//'.'//TRIM(YVARS(ji))
CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'UNKNOWN','WRITE', & if ( options(OPTDIR)%set ) then
HFORMAT='NETCDF4') CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'UNKNOWN','WRITE', &
HFORMAT='NETCDF4', hdirname = options(OPTDIR)%cvalue )
else
CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'UNKNOWN','WRITE', &
HFORMAT='NETCDF4')
end if
CALL IO_FILE_OPEN_ll(outfiles(ji)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG) CALL IO_FILE_OPEN_ll(outfiles(ji)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
IF (options(OPTCOMPRESS)%set) THEN IF (options(OPTCOMPRESS)%set) THEN
...@@ -1321,7 +1342,7 @@ END DO ...@@ -1321,7 +1342,7 @@ END DO
!split_variable and other attributes were added in MesoNH > 5.4.2 !split_variable and other attributes were added in MesoNH > 5.4.2
ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'split_variable', LEN=ILENG) ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'split_variable', LEN=ILENG)
IF (ISTATUS == NF90_NOERR) THEN IF (ISTATUS == NF90_NOERR) THEN
IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_GET_METADATA_NC4','split variable delcaration inside a split file') IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_GET_METADATA_NC4','split variable declaration inside a split file')
ALLOCATE(CHARACTER(LEN=ILENG) :: YSPLIT) ALLOCATE(CHARACTER(LEN=ILENG) :: YSPLIT)
ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_variable', YSPLIT) ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_variable', YSPLIT)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment