SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/ol_write_coord.F90
Go to the documentation of this file.
00001 SUBROUTINE OL_WRITE_COORD(HFILE, KFILE_ID, KDDIM, HATT_TITLE, HNAME_DIM, &
00002                           HUNIT1, HUNIT2, KDIM1, HDATE, PX, PY)
00003 !
00004 USE MODD_OL_FILEID,   ONLY : XID, XOUT
00005 USE MODN_IO_OFFLINE,  ONLY : LWRITE_COORD
00006 !
00007 USE MODI_DEF_VAR_NETCDF
00008 !
00009 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00010 USE PARKIND1  ,ONLY : JPRB
00011 !
00012 IMPLICIT NONE
00013 include 'netcdf.inc'
00014 !
00015  CHARACTER(LEN=50),     INTENT(IN) :: HFILE
00016 INTEGER,               INTENT(IN) :: KFILE_ID
00017 INTEGER, DIMENSION(:), INTENT(IN) :: KDDIM
00018  CHARACTER(LEN=100), DIMENSION(:), INTENT(IN) :: HATT_TITLE
00019  CHARACTER(LEN=100), DIMENSION(:), INTENT(IN) :: HNAME_DIM
00020  CHARACTER(LEN=13) , DIMENSION(:), INTENT(IN) :: HUNIT1, HUNIT2
00021 INTEGER, INTENT(IN) :: KDIM1
00022  CHARACTER(LEN=40),DIMENSION(:), INTENT(IN) :: HDATE
00023 REAL,DIMENSION(:), INTENT(IN)              :: PX, PY
00024 !
00025 INTEGER, DIMENSION(:), ALLOCATABLE :: ITEMP
00026 INTEGER :: IVAR_ID, JRET
00027 INTEGER :: INDIMS
00028 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00029 !
00030 IF (LHOOK) CALL DR_HOOK('OL_WRITE_COORD',0,ZHOOK_HANDLE)
00031 !
00032 IF ( LWRITE_COORD ) THEN
00033   CALL DEF_VAR_NETCDF(KFILE_ID,'xx','abscissas',KDDIM(1:1),HATT_TITLE,(/''/))
00034   CALL DEF_VAR_NETCDF(KFILE_ID,'yy','ordinates',KDDIM(1:1),HATT_TITLE,(/''/))
00035 ELSEIF (KDIM1.NE.0) THEN
00036   CALL DEF_VAR_NETCDF(KFILE_ID,TRIM(HNAME_DIM(1)),'',KDDIM(1:1),HATT_TITLE,HUNIT1)
00037   CALL DEF_VAR_NETCDF(KFILE_ID,TRIM(HNAME_DIM(2)),'',KDDIM(2:2),HATT_TITLE,HUNIT2)
00038 ENDIF
00039 INDIMS = SIZE(KDDIM)
00040  CALL DEF_VAR_NETCDF(KFILE_ID,'time','',KDDIM(INDIMS:INDIMS),HATT_TITLE,HDATE)
00041 !
00042 JRET=NF_OPEN(HFILE, NF_WRITE,KFILE_ID)
00043 IF (KDIM1.NE.0) THEN
00044   JRET = NF_INQ_VARID      (KFILE_ID, HNAME_DIM(1), IVAR_ID)
00045   JRET = NF_PUT_VAR_DOUBLE (KFILE_ID, IVAR_ID, PX)
00046   JRET = NF_INQ_VARID      (KFILE_ID, HNAME_DIM(2), IVAR_ID)
00047   JRET = NF_PUT_VAR_DOUBLE (KFILE_ID, IVAR_ID, PY)
00048 ELSEIF (LWRITE_COORD) THEN
00049   JRET = NF_INQ_VARID      (KFILE_ID, 'xx', IVAR_ID)
00050   JRET = NF_PUT_VAR_DOUBLE (KFILE_ID, IVAR_ID, PX)
00051   JRET = NF_INQ_VARID      (KFILE_ID, 'yy', IVAR_ID)
00052   JRET = NF_PUT_VAR_DOUBLE (KFILE_ID, IVAR_ID, PY)
00053 ENDIF
00054 !
00055 ALLOCATE(ITEMP(XOUT))
00056 ITEMP(SIZE(XID)+1:XOUT) = KFILE_ID
00057 IF (SIZE(XID).GT.0) ITEMP(1:SIZE(XID))=XID
00058 DEALLOCATE(XID)
00059 ALLOCATE(XID(XOUT))
00060 XID=ITEMP
00061 DEALLOCATE(ITEMP)
00062 !
00063 IF (LHOOK) CALL DR_HOOK('OL_WRITE_COORD',1,ZHOOK_HANDLE)
00064 !
00065 END SUBROUTINE OL_WRITE_COORD