diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90 index 90c856c9487f6d529a733f23ee7a0acbf3c5a52b..30b46a66ca64063d5061b49bebf99d63bcdd751b 100644 --- a/src/MNH/write_surf_mnh.f90 +++ b/src/MNH/write_surf_mnh.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2023 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1997-2024 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -1450,7 +1450,6 @@ USE MODD_IO, ONLY: TFILE_SURFEX USE MODD_TYPE_DATE use MODE_IO_FIELD_WRITE, only: IO_Field_write -USE MODE_IO_FILE USE MODE_MSG USE MODE_WRITE_SURF_MNH_TOOLS @@ -1539,84 +1538,48 @@ END SUBROUTINE WRITE_SURFT0_MNH !* 0. DECLARATIONS ! ------------ ! -use modd_field, only: tfieldmetadata, TYPEINT, TYPEREAL +use modd_field, only: tfieldmetadata, TYPEDATE USE MODD_IO, ONLY: TFILE_SURFEX -USE MODD_CONF_n, ONLY: CSTORAGE_TYPE +USE MODD_TYPE_DATE use MODE_IO_FIELD_WRITE, only: IO_Field_write -USE MODE_IO_FILE USE MODE_MSG +USE MODE_WRITE_SURF_MNH_TOOLS IMPLICIT NONE ! !* 0.1 Declarations of arguments ! -CHARACTER(LEN=MNH_LEN_HREC), INTENT(IN) :: HREC ! name of the article to be written -INTEGER, INTENT(IN) :: KL1 ! number of points -INTEGER, DIMENSION(KL1), INTENT(IN) :: KYEAR ! year -INTEGER, DIMENSION(KL1), INTENT(IN) :: KMONTH ! month -INTEGER, DIMENSION(KL1), INTENT(IN) :: KDAY ! day -REAL, DIMENSION(KL1), INTENT(IN) :: PTIME ! time -INTEGER, INTENT(OUT) :: KRESP ! KRESP : return-code if a problem appears -CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! Comment string +CHARACTER(LEN=MNH_LEN_HREC), INTENT(IN) :: HREC ! name of the article to be written +INTEGER, INTENT(IN) :: KL1 ! number of points +INTEGER, DIMENSION(KL1), INTENT(IN) :: KYEAR ! year +INTEGER, DIMENSION(KL1), INTENT(IN) :: KMONTH ! month +INTEGER, DIMENSION(KL1), INTENT(IN) :: KDAY ! day +REAL, DIMENSION(KL1), INTENT(IN) :: PTIME ! time +INTEGER, INTENT(OUT) :: KRESP ! KRESP : return-code if a problem appears +CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! Comment string !* 0.2 Declarations of local variables ! ! -CHARACTER(LEN=5) :: YMSG -INTEGER, DIMENSION(3,KL1) :: ITDATE -TYPE(TFIELDMETADATA) :: TZFIELD +CHARACTER(LEN=5) :: YMSG +TYPE (DATE_TIME), DIMENSION(KL1) :: TZDATA +TYPE(TFIELDMETADATA) :: TZFIELD !------------------------------------------------------------------------------- ! CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC)) ! -IF( HREC=='DTCUR' .AND. CSTORAGE_TYPE/='SU' ) THEN - CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT1_MNH',TRIM(HREC)//' not written in file by externalized surface') - RETURN -ELSE - ! - ITDATE(1,:) = KYEAR (:) - ITDATE(2,:) = KMONTH (:) - ITDATE(3,:) = KDAY (:) - ! - TZFIELD = TFIELDMETADATA( & - CMNHNAME = TRIM(HREC)//'%TDATE', & - CSTDNAME = '', & - CLONGNAME = TRIM(HREC)//'%TDATE', & - CUNITS = '', & - CDIR = '--', & - CCOMMENT = TRIM(HCOMMENT), & - NGRID = 0, & - NTYPE = TYPEINT, & - NDIMS = 2, & - LTIMEDEP = .FALSE. ) - ! - CALL IO_Field_write(TFILE_SURFEX,TZFIELD,ITDATE(:,:),KRESP) - ! - IF (KRESP /=0) THEN - WRITE ( YMSG, '( I5 )' ) KRESP - CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFT1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG) - END IF - ! - TZFIELD = TFIELDMETADATA( & - CMNHNAME = TRIM(HREC)//'%xtime', & - CSTDNAME = '', & - CLONGNAME = TRIM(HREC)//'%xtime', & - CUNITS = '', & - CDIR = '--', & - CCOMMENT = TRIM(HCOMMENT), & - NGRID = 0, & - NTYPE = TYPEREAL, & - NDIMS = 1, & - LTIMEDEP = .FALSE. ) - ! - CALL IO_Field_write(TFILE_SURFEX,TZFIELD,PTIME(:),KRESP) +TZDATA(:)%nyear = kyear(:) +TZDATA(:)%nmonth = kmonth(:) +TZDATA(:)%nday = kday(:) +TZDATA(:)%xtime = PTIME(:) ! - IF (KRESP /=0) THEN - WRITE ( YMSG, '( I5 )' ) KRESP - CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFT1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG) - END IF +CALL PREPARE_METADATA_WRITE_SURF( HREC, '--', HCOMMENT, 0, TYPEDATE, 1, 'WRITE_SURFT1_MNH', TZFIELD ) +CALL IO_Field_write( TFILE_SURFEX, TZFIELD, TZDATA, KRESP ) ! +IF ( KRESP /=0 ) THEN + WRITE ( YMSG, '( I5 )' ) KRESP + CALL PRINT_MSG( NVERB_ERROR, 'IO', 'WRITE_SURFT1_MNH', 'error when writing article ' // TRIM(HREC) // ' KRESP=' // YMSG ) END IF ! END SUBROUTINE WRITE_SURFT1_MNH