Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
!! EXTERNAL
!! --------
!!
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! S.Malardel *METEO-FRANCE*
!!
!! MODIFICATIONS
!! -------------
!!
!! original 01/08/03
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!----------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!

WAUTELET Philippe
committed
use modd_field, only: tfieldmetadata, TYPEINT

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILE_SURFEX
USE MODD_IO_SURF_MNH, ONLY: NMASK, CMASK, &
NIU, NJU, NIB, NJB, NIE, NJE
USE MODD_PARAMETERS, ONLY: NUNDEF

WAUTELET Philippe
committed
use MODE_IO_FIELD_WRITE, only: IO_Field_write
USE MODE_MSG
USE MODE_WRITE_SURF_MNH_TOOLS

WAUTELET Philippe
committed
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
!

RODIER Quentin
committed
CHARACTER(LEN=MNH_LEN_HREC),INTENT(IN) :: HREC ! name of the article to write
INTEGER, INTENT(IN) :: KL ! number of points

WAUTELET Philippe
committed
INTEGER, DIMENSION(KL), INTENT(IN) :: KFIELD ! the integers to be written
INTEGER, INTENT(OUT) :: KRESP ! return-code if a problem appears
CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! Comment string
CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
! ! 'H' : field with
! ! horizontal spatial dim.
! ! '-' : no horizontal dim.
!
!* 0.2 Declarations of local variables
!
INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK ! work array written in the file
!

WAUTELET Philippe
committed
CHARACTER(LEN=5) :: YMSG
TYPE(TFIELDMETADATA) :: TZFIELD
!-------------------------------------------------------------------------------
!
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFN1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CALL PREPARE_METADATA_WRITE_SURF(HREC,'--',HCOMMENT,0,TYPEINT,1,'WRITE_SURFN1_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,KFIELD,KRESP)

WAUTELET Philippe
committed
!
ALLOCATE(IWORK(NIU,NJU))
IWORK(:,:) = NUNDEF

WAUTELET Philippe
committed
!
CALL UNPACK_1D_2D(NMASK,KFIELD,IWORK(NIB:NIE,NJB:NJE))

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CALL PREPARE_METADATA_WRITE_SURF(HREC,'XY',HCOMMENT,4,TYPEINT,2,'WRITE_SURFN1_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,IWORK(:,:),KRESP)

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
END IF

WAUTELET Philippe
committed
IF (KRESP /=0) THEN
WRITE ( YMSG, '( I5 )' ) KRESP
CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFN1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
END IF
!-------------------------------------------------------------------------------
END SUBROUTINE WRITE_SURFN1_MNH
!
! #############################################################
SUBROUTINE WRITE_SURFC0_MNH(HREC,HFIELD,KRESP,HCOMMENT)
! #############################################################
!

WAUTELET Philippe
committed
!!**** *WRITEC0* - routine to write an integer
!!
!! PURPOSE
!! -------
!

WAUTELET Philippe
committed
! The purpose of WRITEC0 is
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! S.Malardel *METEO-FRANCE*
!!
!! MODIFICATIONS
!! -------------
!!
!! original 01/08/03
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!----------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!

WAUTELET Philippe
committed
USE MODD_CONF_n, ONLY: CSTORAGE_TYPE

WAUTELET Philippe
committed
use modd_field, only: tfieldmetadata, TYPECHAR, TYPELOG

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILE_SURFEX
USE MODD_IO_SURF_MNH, ONLY: NIU_ALL, NJU_ALL

WAUTELET Philippe
committed
use MODE_IO_FIELD_WRITE, only: IO_Field_write
USE MODE_MSG
USE MODE_WRITE_SURF_MNH_TOOLS
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
!

RODIER Quentin
committed
CHARACTER(LEN=MNH_LEN_HREC),INTENT(IN) :: HREC ! name of the article to write

WAUTELET Philippe
committed
CHARACTER(LEN=40), INTENT(IN) :: HFIELD ! the string to write
INTEGER, INTENT(OUT) :: KRESP ! return-code if a problem appears
CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! Comment string
!
!* 0.2 Declarations of local variables
!

WAUTELET Philippe
committed
LOGICAL :: GCARTESIAN
TYPE(TFIELDMETADATA) :: TZFIELD
CHARACTER(LEN=5) :: YMSG
!-------------------------------------------------------------------------------
!
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFC0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))

WAUTELET Philippe
committed
!
IF ( (CSTORAGE_TYPE=='PG' .OR. CSTORAGE_TYPE=='SU') &
.AND. HREC=='GRID_TYPE ' ) THEN
IF (HFIELD(1:10)=='CONF PROJ ') THEN
GCARTESIAN = .FALSE.
ELSE IF (HFIELD(1:10)=='CARTESIAN ') THEN
GCARTESIAN = .TRUE.
END IF

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,'CARTESIAN',GCARTESIAN,KRESP)

WAUTELET Philippe
committed
!
IF (KRESP /=0) THEN
WRITE ( YMSG, '( I5 )' ) KRESP
CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFC0_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
END IF
!

WAUTELET Philippe
committed
END IF
!

WAUTELET Philippe
committed
CALL PREPARE_METADATA_WRITE_SURF(HREC,'--',HCOMMENT,0,TYPECHAR,0,'WRITE_SURFC0_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,HFIELD,KRESP)

WAUTELET Philippe
committed
!
IF (KRESP /=0) THEN
WRITE ( YMSG, '( I5 )' ) KRESP
CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFC0_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
END IF
!-------------------------------------------------------------------------------
END SUBROUTINE WRITE_SURFC0_MNH
!
! #############################################################
SUBROUTINE WRITE_SURFL1_MNH(HREC,KL,OFIELD,KRESP,HCOMMENT,HDIR)
! #############################################################
!

WAUTELET Philippe
committed
!!**** *WRITEL1* - routine to write a logical array
!!
!! PURPOSE
!! -------
!

WAUTELET Philippe
committed
! The purpose of WRITEL1 is
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! S.Malardel *METEO-FRANCE*
!!
!! MODIFICATIONS
!! -------------
!!
!! original 01/08/03
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!----------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!

WAUTELET Philippe
committed
USE MODD_CONF_n, ONLY: CSTORAGE_TYPE

WAUTELET Philippe
committed
use modd_field, only: tfieldmetadata, TYPEINT, TYPELOG

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILE_SURFEX
USE MODD_IO_SURF_MNH, ONLY: NMASK, CMASK, &
NIU, NJU, NIB, NJB, NIE, NJE

WAUTELET Philippe
committed
use MODE_IO_FIELD_WRITE, only: IO_Field_write
USE MODE_MSG
USE MODE_WRITE_SURF_MNH_TOOLS

WAUTELET Philippe
committed
USE MODI_UNPACK_1D_2D

WAUTELET Philippe
committed
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
!

RODIER Quentin
committed
CHARACTER(LEN=MNH_LEN_HREC),INTENT(IN) :: HREC ! name of the article to write
INTEGER, INTENT(IN) :: KL ! number of points
LOGICAL, DIMENSION(KL), INTENT(IN) :: OFIELD ! array containing the data field

WAUTELET Philippe
committed
INTEGER, INTENT(OUT) :: KRESP ! return-code if a problem appears
CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! Comment string
CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
! ! 'H' : field with
! ! horizontal spatial dim.
! ! '-' : no horizontal dim.
!
!* 0.2 Declarations of local variables
!
LOGICAL, DIMENSION(:,:), ALLOCATABLE :: GWORK ! work array written in the file
INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK ! work array written in the file

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CHARACTER(LEN=5) :: YMSG
TYPE(TFIELDMETADATA) :: TZFIELD
!-------------------------------------------------------------------------------

WAUTELET Philippe
committed
!
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFL1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))

WAUTELET Philippe
committed
!
IF (HDIR=='-') THEN
IF( (CMASK /= 'FULL ').AND. (HREC=='COVER') ) THEN

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFL1_MNH',TRIM(HREC)//' with mask '// &
TRIM(CMASK)//' not written in file by externalized surface')

WAUTELET Philippe
committed
CALL PREPARE_METADATA_WRITE_SURF(HREC,'--',HCOMMENT,0,TYPELOG,1,'WRITE_SURFL1_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,OFIELD(:),KRESP)

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
!
ALLOCATE(GWORK(NIU,NJU))
GWORK(:,:) = .FALSE.

WAUTELET Philippe
committed
!
CALL UNPACK_1D_2D(NMASK,OFIELD,GWORK(NIB:NIE,NJB:NJE))

WAUTELET Philippe
committed
!
ALLOCATE(IWORK(NIU,NJU))
IWORK = 0
WHERE(GWORK) IWORK = 1

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CALL PREPARE_METADATA_WRITE_SURF(HREC,'XY',HCOMMENT,4,TYPEINT,2,'WRITE_SURFL1_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,IWORK(:,:),KRESP)

WAUTELET Philippe
committed
DEALLOCATE(IWORK)
DEALLOCATE(GWORK)
!
END IF
!

WAUTELET Philippe
committed
IF (KRESP /=0) THEN
WRITE ( YMSG, '( I5 )' ) KRESP
CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFL1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
END IF
!-------------------------------------------------------------------------------
END SUBROUTINE WRITE_SURFL1_MNH
!
!
! #############################################################
SUBROUTINE WRITE_SURFL0_MNH(HREC,OFIELD,KRESP,HCOMMENT)
! #############################################################
!

WAUTELET Philippe
committed
!!**** *WRITEL1* - routine to write a logical
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
!!
!! PURPOSE
!! -------
!
!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! S.Malardel *METEO-FRANCE*
!!
!! MODIFICATIONS
!! -------------
!!
!! original 01/08/03
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!----------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!

WAUTELET Philippe
committed
USE MODD_CONF_n, ONLY: CSTORAGE_TYPE

WAUTELET Philippe
committed
use modd_field, only: tfieldmetadata, TYPELOG

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILE_SURFEX
USE MODD_IO_SURF_MNH, ONLY: CMASK

WAUTELET Philippe
committed
use MODE_IO_FIELD_WRITE, only: IO_Field_write
USE MODE_MSG
USE MODE_WRITE_SURF_MNH_TOOLS
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
!

RODIER Quentin
committed
CHARACTER(LEN=MNH_LEN_HREC),INTENT(IN) :: HREC ! name of the article to write

WAUTELET Philippe
committed
LOGICAL, INTENT(IN) :: OFIELD ! array containing the data field
INTEGER, INTENT(OUT) :: KRESP ! return-code if a problem appears
CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! Comment string
!
!* 0.2 Declarations of local variables
!

WAUTELET Philippe
committed
CHARACTER(LEN=4), PARAMETER :: YSUFFIX = '_SFX'

WAUTELET Philippe
committed
CHARACTER(LEN=5) :: YMSG
TYPE(TFIELDMETADATA) :: TZFIELD
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFL0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))

WAUTELET Philippe
committed
!
IF( (CMASK /= 'FULL ').AND. (HREC=='COVER') ) THEN
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFL0_MNH',TRIM(HREC)//' with mask '// &
TRIM(CMASK)//' not written in file by externalized surface')
RETURN

WAUTELET Philippe
committed
! Add a suffix to logical variables coming from SURFEX
! This is done because some variables can have the same name than MesoNH variables
! This suffix has been added in MesoNH 5.6.0
CALL PREPARE_METADATA_WRITE_SURF(TRIM(HREC)//YSUFFIX,'--',HCOMMENT,0,TYPELOG,0,'WRITE_SURFL0_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,OFIELD,KRESP)

WAUTELET Philippe
committed
END IF
!
IF (KRESP /=0) THEN
WRITE ( YMSG, '( I5 )' ) KRESP
CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFL0_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
END IF
!-------------------------------------------------------------------------------
END SUBROUTINE WRITE_SURFL0_MNH
!
! #############################################################
SUBROUTINE WRITE_SURFT0_MNH(HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
! #############################################################
!

WAUTELET Philippe
committed
!!**** *WRITET0* - routine to write a MESO-NH date_time scalar
!!
!! PURPOSE
!! -------
!

WAUTELET Philippe
committed
! The purpose of WRITET0 is
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! V. MASSON *METEO-FRANCE*
!!
!! MODIFICATIONS
!! -------------
!!
!! original 18/08/97
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!----------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!

WAUTELET Philippe
committed
USE MODD_CONF_n, ONLY: CSTORAGE_TYPE

WAUTELET Philippe
committed
use modd_field, only: tfieldmetadata, TYPEDATE

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILE_SURFEX
USE MODD_TYPE_DATE

WAUTELET Philippe
committed
use MODE_IO_FIELD_WRITE, only: IO_Field_write
USE MODE_IO_FILE

WAUTELET Philippe
committed
USE MODE_MSG

WAUTELET Philippe
committed
USE MODE_WRITE_SURF_MNH_TOOLS

WAUTELET Philippe
committed
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
!

RODIER Quentin
committed
CHARACTER(LEN=MNH_LEN_HREC), INTENT(IN) :: HREC ! name of the article to be written
INTEGER, INTENT(IN) :: KYEAR ! year
INTEGER, INTENT(IN) :: KMONTH ! month
INTEGER, INTENT(IN) :: KDAY ! day
REAL, 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=MNH_LEN_HREC) :: YRECFM ! Name of the article to be written

WAUTELET Philippe
committed
INTEGER, DIMENSION(3) :: ITDATE
CHARACTER(LEN=5) :: YMSG
TYPE (DATE_TIME) :: TZDATA
TYPE(TFIELDMETADATA) :: TZFIELD
!-------------------------------------------------------------------------------
!
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
!
IF( HREC=='DTCUR' .AND. CSTORAGE_TYPE/='SU' ) THEN

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT0_MNH',TRIM(HREC)//' not written in file by externalized surface')
RETURN
TZDATA%nyear = kyear
TZDATA%nmonth = kmonth
TZDATA%nday = kday
TZDATA%xtime = PTIME

WAUTELET Philippe
committed
CALL PREPARE_METADATA_WRITE_SURF(HREC,'--',HCOMMENT,0,TYPEDATE,0,'WRITE_SURFT0_MNH',TZFIELD)

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,TZDATA,KRESP)

WAUTELET Philippe
committed
!
IF (KRESP /=0) THEN
WRITE ( YMSG, '( I5 )' ) KRESP
CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFT0_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
!
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
! #############################################################
SUBROUTINE WRITE_SURFT1_MNH(HREC,KL1,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
! #############################################################
!
!!**** * - routine to write a date vector
!!
!! PURPOSE
!! -------
!
!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! G.TANGUY *METEO-FRANCE*
!!
!! MODIFICATIONS
!! -------------
!!
!! original 03/03/09
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!----------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!

WAUTELET Philippe
committed
use modd_field, only: tfieldmetadata, TYPEINT, TYPEREAL

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILE_SURFEX
USE MODD_CONF_n, ONLY: CSTORAGE_TYPE

WAUTELET Philippe
committed
use MODE_IO_FIELD_WRITE, only: IO_Field_write
USE MODE_IO_FILE

WAUTELET Philippe
committed
USE MODE_MSG

WAUTELET Philippe
committed
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
!

RODIER Quentin
committed
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
!
!

WAUTELET Philippe
committed
CHARACTER(LEN=5) :: YMSG
INTEGER, DIMENSION(3,KL1) :: ITDATE
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

WAUTELET Philippe
committed
CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT1_MNH',TRIM(HREC)//' not written in file by externalized surface')
RETURN

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
ITDATE(1,:) = KYEAR (:)
ITDATE(2,:) = KMONTH (:)
ITDATE(3,:) = KDAY (:)

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
TZFIELD = TFIELDMETADATA( &
CMNHNAME = TRIM(HREC)//'%TDATE', &
CSTDNAME = '', &
CLONGNAME = TRIM(HREC)//'%TDATE', &
CUNITS = '', &
CDIR = '--', &
CCOMMENT = TRIM(HCOMMENT), &
NGRID = 0, &
NTYPE = TYPEINT, &
NDIMS = 2, &
LTIMEDEP = .FALSE. )

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,ITDATE(:,:),KRESP)

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
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

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
TZFIELD = TFIELDMETADATA( &
CMNHNAME = TRIM(HREC)//'%xtime', &
CSTDNAME = '', &
CLONGNAME = TRIM(HREC)//'%xtime', &
CUNITS = '', &
CDIR = '--', &
CCOMMENT = TRIM(HCOMMENT), &
NGRID = 0, &
NTYPE = TYPEREAL, &
NDIMS = 1, &
LTIMEDEP = .FALSE. )

WAUTELET Philippe
committed
!

WAUTELET Philippe
committed
CALL IO_Field_write(TFILE_SURFEX,TZFIELD,PTIME(:),KRESP)

WAUTELET Philippe
committed
!
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

WAUTELET Philippe
committed
!