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

Philippe 09/03/2018: IO/LFI: add NFILENAMELGTMAXLFI parameter and use it to...

Philippe 09/03/2018: IO/LFI: add NFILENAMELGTMAXLFI parameter and use it to force size in LFI file of MY_NAME and DAD_NAME
This is done for backward compatibility.
parent b594f9cd
No related branches found
No related tags found
No related merge requests found
......@@ -492,6 +492,9 @@ END SUBROUTINE IO_READ_FIELD_LFI_L1
!
!
SUBROUTINE IO_READ_FIELD_LFI_C0(TPFILE,TPFIELD,HFIELD,KRESP)
!
USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAXLFI
!
USE MODE_MSG
!
IMPLICIT NONE
......@@ -514,6 +517,14 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_READ_FIELD_LFI_C0',TRIM(TPFILE%CNAME)//': re
!
ILENG = LEN(HFIELD)
!
!Special treatment for MY_NAME and DAD_NAME fields (for backward compatibility)
IF (TPFIELD%CMNHNAME=='MY_NAME' .OR. TPFIELD%CMNHNAME=='DAD_NAME') THEN
ILENG = NFILENAMELGTMAXLFI
IF (LEN(HFIELD)<NFILENAMELGTMAXLFI) &
CALL PRINT_MSG(NVERB_WARNING,'IO','IO_READ_FIELD_LFI_C0',TRIM(TPFILE%CNAME)// &
': LEN(HFIELD)<NFILENAMELGTMAXLFI')
END IF
!
CALL IO_READ_CHECK_FIELD_LFI(TPFILE,TPFIELD,ILENG,IWORK,ITOTAL,IRESP,GGOOD)
!
IF (GGOOD) THEN
......@@ -1269,6 +1280,8 @@ END SUBROUTINE IO_WRITE_FIELD_LFI_L1
!
SUBROUTINE IO_WRITE_FIELD_LFI_C0(TPFILE,TPFIELD,HFIELD,KRESP)
!
USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAXLFI
!
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
......@@ -1290,6 +1303,14 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_C0','writing '//TRIM(TPFIELD
ILENG=LEN(HFIELD)
IF (ILENG==0) ILENG=1
!
!Special treatment for MY_NAME and DAD_NAME fields (for backward compatibility)
IF (TPFIELD%CMNHNAME=='MY_NAME' .OR. TPFIELD%CMNHNAME=='DAD_NAME') THEN
ILENG = NFILENAMELGTMAXLFI
IF (LEN_TRIM(HFIELD)>ILENG) &
CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_C0',TRIM(TPFILE%CNAME)// &
': MY_NAME was truncated from '//TRIM(HFIELD)//' to '//HFIELD(1:NFILENAMELGTMAXLFI))
END IF
!
CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP)
!
IF (IRESP==0) THEN
......
......@@ -297,12 +297,13 @@ CONTAINS
SUBROUTINE IO_WRITE_HEADER(TPFILE,HDAD_NAME)
!
USE MODD_CONF
USE MODD_CONF_n, ONLY : CSTORAGE_TYPE
USE MODD_CONF_n, ONLY: CSTORAGE_TYPE
USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAXLFI
!
TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File structure
CHARACTER(LEN=*),OPTIONAL,INTENT(IN) :: HDAD_NAME
!
CHARACTER(LEN=28) :: YDAD_NAME !Necessary to use a character string of the right length for LFI files
CHARACTER(LEN=:),ALLOCATABLE :: YDAD_NAME
!
CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_HEADER','called for file '//TRIM(TPFILE%CNAME))
!
......@@ -321,16 +322,21 @@ CONTAINS
CALL IO_WRITE_FIELD(TPFILE,'PROGRAM', CPROGRAM)
CALL IO_WRITE_FIELD(TPFILE,'STORAGE_TYPE',CSTORAGE_TYPE)
CALL IO_WRITE_FIELD(TPFILE,'MY_NAME', TPFILE%CNAME)
!
IF ( ASSOCIATED(TPFILE%TDADFILE) ) THEN
YDAD_NAME = TPFILE%TDADFILE%CNAME
ALLOCATE(CHARACTER(LEN=MAX(NFILENAMELGTMAXLFI,LEN_TRIM(TPFILE%TDADFILE%CNAME))) :: YDAD_NAME)
YDAD_NAME(:) = TPFILE%TDADFILE%CNAME
ELSE IF (PRESENT(HDAD_NAME)) THEN
YDAD_NAME = HDAD_NAME
ALLOCATE(CHARACTER(LEN=MAX(NFILENAMELGTMAXLFI,LEN_TRIM(HDAD_NAME))) :: YDAD_NAME)
YDAD_NAME(:) = HDAD_NAME
ELSE
CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_HEADER',TRIM(TPFILE%CNAME)// &
': TPFILE%TDADFILE not associated and HDAD_NAME not provided')
YDAD_NAME = ' '
ALLOCATE(CHARACTER(LEN=NFILENAMELGTMAXLFI) :: YDAD_NAME)
YDAD_NAME(:) = ' '
ENDIF
CALL IO_WRITE_FIELD(TPFILE,'DAD_NAME',YDAD_NAME)
DEALLOCATE(YDAD_NAME)
!
END SUBROUTINE IO_WRITE_HEADER
......
......@@ -68,7 +68,7 @@ INTEGER,SAVE, DIMENSION(JPMODELMAX,JPMODELMAX) :: NMSG_END ! timestep END
! MeSsaGes concerning
INTEGER,SAVE, DIMENSION(JPMODELMAX,JPMODELMAX) :: NMSG_AVR_END ! AVeRage END
!
CHARACTER(LEN=28),SAVE, DIMENSION(JPMODELMAX) :: CMY_NAME,CDAD_NAME
CHARACTER(LEN=NFILENAMELGTMAX),SAVE, DIMENSION(JPMODELMAX) :: CMY_NAME,CDAD_NAME
! names of the initial FM-Files
! then generic names of output FM-Files
! of each model "m"
......
......@@ -83,7 +83,9 @@ INTEGER, PARAMETER :: JPOUTVARMAX = 192 ! Maximum allowed number of variables in
INTEGER, PARAMETER :: NMNHNAMELGTMAX = 32 ! Maximum length of a MNH variable name
INTEGER, PARAMETER :: NSTDNAMELGTMAX = 64 ! Maximum length of the standard name of a variable (CF convention)
!
INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name
INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name (must be at least NFILENAMELGTMAXLFI)
INTEGER, PARAMETER :: NFILENAMELGTMAXLFI = 28 ! Maximum length of a file name in LFI file (this is necessary
! to keep backward compatibility), MUST BE 28
!
INTEGER, PARAMETER :: JPLIMACCNMAX = 10 ! Maximum allowed number of CCN modes in LIMA
INTEGER, PARAMETER :: JPLIMAIFNMAX = 10 ! Maximum allowed number of IFN modes in LIMA
......
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