From fc83fdb9a434e5983eed3846f2f5c0ac2b45f57e Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 23 Feb 2018 15:27:56 +0100 Subject: [PATCH] Philippe 23/02/2018: IO: add HFORMAT optional argument to IO_FILE_ADD2LIST (necessary for LFI2CDF) --- .../SURCOUCHE/src/mode_io_manage_struct.f90 | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 index 7707fe94d..48f874689 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 @@ -574,10 +574,12 @@ END SUBROUTINE POPULATE_STRUCT END SUBROUTINE IO_PREPARE_BAKOUT_STRUCT ! SUBROUTINE IO_FILE_ADD2LIST(TPFILE,HNAME,HTYPE,HMODE, & - HFORM,HACCESS,KLFINPRAR,KLFITYPE,KLFIVERB,KRECL,TPDADFILE,TPDATAFILE,OOLD) + HFORM,HACCESS,HFORMAT,KLFINPRAR,KLFITYPE,KLFIVERB,KRECL,TPDADFILE,TPDATAFILE,OOLD) ! -USE MODD_BAKOUT, ONLY : LOUT_COMPRESS,LOUT_REDUCE_FLOAT_PRECISION,NOUT_COMPRESS_LEVEL -USE MODE_MODELN_HANDLER, ONLY : GET_CURRENT_MODEL_INDEX +USE MODD_BAKOUT, ONLY: LOUT_COMPRESS,LOUT_REDUCE_FLOAT_PRECISION,NOUT_COMPRESS_LEVEL +USE MODD_CONF, ONLY: CPROGRAM +! +USE MODE_MODELN_HANDLER, ONLY: GET_CURRENT_MODEL_INDEX ! TYPE(TFILEDATA),POINTER, INTENT(INOUT) :: TPFILE !File structure to return CHARACTER(LEN=*), INTENT(IN) :: HNAME !Filename @@ -585,6 +587,7 @@ CHARACTER(LEN=*), INTENT(IN) :: HTYPE !Filetype (backup, o CHARACTER(LEN=*), INTENT(IN) :: HMODE !Opening mode (read, write...) CHARACTER(LEN=*), OPTIONAL,INTENT(IN) :: HFORM !Formatted/unformatted CHARACTER(LEN=*), OPTIONAL,INTENT(IN) :: HACCESS !Direct/sequential +CHARACTER(LEN=*), OPTIONAL,INTENT(IN) :: HFORMAT !Fileformat (NETCDF4, LFI, LFICDF4...) INTEGER(KIND=LFI_INT), OPTIONAL,INTENT(IN) :: KLFINPRAR !Number of predicted articles of the LFI file (non crucial) INTEGER, OPTIONAL,INTENT(IN) :: KLFITYPE !Type of the file (used to generate list of files to transfers) INTEGER, OPTIONAL,INTENT(IN) :: KLFIVERB !LFI verbosity level @@ -648,6 +651,18 @@ IF(PRESENT(HACCESS)) THEN CALL PRINT_MSG(NVERB_ERROR,'IO','IO_FILE_ADD2LIST','HACCESS should be DIRECT or SEQUENTIAL and not '//TRIM(HACCESS)) END IF ! +IF (PRESENT(HFORMAT)) THEN + IF(CPROGRAM=='LFICDF') THEN + IF (HFORMAT/='LFI' .AND. HFORMAT/='NETCDF4') & + CALL PRINT_MSG(NVERB_ERROR,'IO','IO_FILE_ADD2LIST','invalid HFORMAT ('//TRIM(HFORMAT)//')') + ELSE + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_ADD2LIST','optional argument HFORMAT not tested for CPROGRAM='//TRIM(CPROGRAM)) + END IF +ELSE + IF(CPROGRAM=='LFICDF') & + CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_ADD2LIST','optional argument HFORMAT is necessary for CPROGRAM='//TRIM(CPROGRAM)) +END IF +! IF(PRESENT(KLFINPRAR)) THEN ILFINPRAR = KLFINPRAR ELSE @@ -771,7 +786,9 @@ SELECT CASE(TPFILE%CTYPE) CASE DEFAULT IF (TRIM(HMODE)=='READ') THEN - IF (LLFIREAD) THEN + IF (PRESENT(HFORMAT)) THEN + TPFILE%CFORMAT = TRIM(HFORMAT) + ELSE IF (LLFIREAD) THEN TPFILE%CFORMAT = 'LFI' TPFILE%NLFINPRAR = ILFINPRAR ELSE IF (LIOCDF4) THEN @@ -780,7 +797,9 @@ SELECT CASE(TPFILE%CTYPE) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_ADD2LIST','invalid format for file '//TRIM(HNAME)) END IF ELSE IF (TRIM(HMODE)=='WRITE') THEN - IF (LLFIOUT .AND. LIOCDF4) THEN + IF (PRESENT(HFORMAT)) THEN + TPFILE%CFORMAT = TRIM(HFORMAT) + ELSE IF (LLFIOUT .AND. LIOCDF4) THEN TPFILE%CFORMAT = 'LFICDF4' TPFILE%NLFINPRAR = ILFINPRAR ELSE IF (LIOCDF4) THEN -- GitLab