SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TRIP/init_diag_tripn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE INIT_DIAG_TRIP_n (KLUOUT,HFILE,KLON,KLAT,HTITLE,HTIMEUNIT,OTIME)
00003 !     #######################################################################
00004 !
00005 !!****  *INIT_DIAG_TRIP_n*  
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !     Define the name and unit of each trip output variable.
00011 !     
00012 !!    REFERENCE
00013 !!    ---------
00014 !!      
00015 !!    AUTHOR
00016 !!    ------
00017 !!      B. Decharme     
00018 !!
00019 !!    MODIFICATIONS
00020 !!    -------------
00021 !!      Original    27/05/08 
00022 !-------------------------------------------------------------------------------
00023 !
00024 !*       0.     DECLARATIONS
00025 !               ------------
00026 !
00027 USE MODE_TRIP_NETCDF
00028 !
00029 USE MODD_TRIP_n,   ONLY : CGROUNDW, CVIT, LFLOODT, LNCPRINT, LTRIP_DIAG_MISC
00030 USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF
00031 !
00032 USE MODD_DIAG_TRIP_n
00033 !
00034 !
00035 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00036 USE PARKIND1  ,ONLY : JPRB
00037 !
00038 USE MODI_GET_LONLAT_TRIP
00039 !
00040 IMPLICIT NONE
00041 !
00042 include 'netcdf.inc'
00043 !
00044 !*      0.1    declarations of arguments
00045 !
00046 !
00047  CHARACTER(LEN=*), INTENT(IN) :: HFILE, HTITLE, HTIMEUNIT
00048 !
00049 INTEGER, INTENT(IN)          :: KLUOUT, KLON, KLAT
00050 !
00051 LOGICAL, INTENT(IN)          :: OTIME
00052 !
00053 !*      0.2    declarations of output variables
00054 !
00055  CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVNAME  !Name of each output variable
00056  CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVLNAME !Long name of each output variables
00057  CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YUNIT   !Unit of each output variable
00058 !
00059  CHARACTER(LEN=nf_max_name) :: YFILE,YTITLE,YTIMEUNIT
00060 !
00061 REAL, DIMENSION(:), ALLOCATABLE ::  ZLON
00062 REAL, DIMENSION(:), ALLOCATABLE ::  ZLAT
00063 !
00064 INTEGER :: INDIAG, INCID, INUM
00065 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00066 !
00067 !-------------------------------------------------------------------------------
00068 !-------------------------------------------------------------------------------
00069 !
00070 ! * Number of output variable
00071 !
00072 IF (LHOOK) CALL DR_HOOK('INIT_DIAG_TRIP_N',0,ZHOOK_HANDLE)
00073 INUM   = 0
00074 INDIAG = 2
00075 IF(LTRIP_DIAG_MISC) INDIAG = INDIAG + 1
00076 IF(CGROUNDW/='DEF') INDIAG = INDIAG + 2
00077 IF(CVIT=='VAR')     INDIAG = INDIAG + 2
00078 IF(LFLOODT)THEN
00079   INDIAG = INDIAG + 3
00080   IF(LTRIP_DIAG_MISC) INDIAG = INDIAG + 8
00081 ENDIF
00082 !
00083 ! * Allocate netcdf file attributs
00084 !
00085 ALLOCATE(YVNAME  (INDIAG))
00086 ALLOCATE(YVLNAME (INDIAG))
00087 ALLOCATE(YUNIT   (INDIAG))
00088 !
00089 ALLOCATE(ZLON(KLON))
00090 ALLOCATE(ZLAT(KLAT))
00091 !
00092 ! * Initialyse netcdf file attributs
00093 !
00094 INUM = INUM + 1
00095 YVNAME (INUM) = 'SURF_STO                  '
00096 YVLNAME(INUM) = 'River storage             '
00097 YUNIT  (INUM) = 'kg m-2                    '
00098 !
00099 INUM = INUM + 1
00100 YVNAME (INUM) = 'QDIS                      '
00101 YVLNAME(INUM) = 'Discharge                 '
00102 YUNIT  (INUM) = 'm3 s-1                    '
00103 !
00104 IF(LTRIP_DIAG_MISC)THEN
00105   INUM = INUM + 1
00106   YVNAME (INUM) = 'QSIN                      '
00107   YVLNAME(INUM) = 'Inflow to the river       '
00108   YUNIT  (INUM) = 'm3 s-1                    '
00109 ENDIF
00110 !
00111 IF(CGROUNDW/='DEF')THEN
00112 ! 
00113   INUM = INUM + 1
00114   YVNAME (INUM) = 'GROUND_STO                '
00115   YVLNAME(INUM) = 'Groundwater storage       '
00116   YUNIT  (INUM) = 'kg m-2                    '
00117 !     
00118   INUM = INUM + 1
00119   YVNAME (INUM) = 'QGF'
00120   YVLNAME(INUM) = 'Groundwater flow to river '
00121   YUNIT  (INUM) = 'm3 s-1                    '
00122 !
00123 ENDIF
00124 !
00125 IF(CVIT=='VAR')THEN
00126 !
00127   INUM = INUM + 1
00128   YVNAME (INUM) = 'VEL                       '
00129   YVLNAME(INUM) = 'Stream flow velocity      '
00130   YUNIT  (INUM) = 'm s-1                     '
00131 !
00132   INUM = INUM + 1
00133   YVNAME (INUM) = 'HSTREAM                   '
00134   YVLNAME(INUM) = 'Stream river depth        '
00135   YUNIT  (INUM) = 'm                         '
00136 !
00137 ENDIF
00138 !
00139 IF(LFLOODT)THEN
00140 !        
00141   INUM = INUM + 1
00142   YVNAME (INUM) = 'FLOOD_STO                 '
00143   YVLNAME(INUM) = 'Floodplain storage        '
00144   YUNIT  (INUM) = 'kg m-2                    '
00145 !
00146   INUM = INUM + 1
00147   YVNAME (INUM) = 'FFLOOD_T                  '
00148   YVLNAME(INUM) = 'TRIP flooded fraction     '
00149   YUNIT  (INUM) = '-                         '
00150 !
00151   INUM = INUM + 1
00152   YVNAME (INUM) = 'HFLOOD_T                  '
00153   YVLNAME(INUM) = 'Flood depth               '
00154   YUNIT  (INUM) = 'm                         '
00155 !
00156   IF(LTRIP_DIAG_MISC)THEN
00157 !
00158     INUM = INUM + 1
00159     YVNAME (INUM)= 'FSOURCE                      '
00160     YVLNAME(INUM)= 'Floodplains source (Pf-Ef-If)'
00161     YUNIT  (INUM)= 'kg m-2                       '
00162 !
00163     INUM = INUM + 1
00164     YVNAME (INUM)= 'VFIN                      '
00165     YVLNAME(INUM)= 'River to flood velocity   '
00166     YUNIT  (INUM)= 'm s-1                     '
00167 !
00168     INUM = INUM + 1
00169     YVNAME (INUM)= 'QRF                       '
00170     YVLNAME(INUM)= 'River flow to floodplain  '
00171     YUNIT  (INUM)= 'm3 s-1                    '
00172 !
00173     INUM = INUM + 1
00174     YVNAME (INUM)= 'VFOUT                     '
00175     YVLNAME(INUM)= 'Flood to river velocity   '
00176     YUNIT  (INUM)= 'm s-1                     '
00177 !
00178     INUM = INUM + 1
00179     YVNAME (INUM)= 'QFR                       '
00180     YVLNAME(INUM)= 'Flood flow to river       '
00181     YUNIT  (INUM)= 'm3 s-1                    '
00182 !
00183     INUM = INUM + 1
00184     YVNAME (INUM)= 'HSF                         '
00185     YVLNAME(INUM)= 'River-Flood depth comparison'
00186     YUNIT  (INUM)= 'm                           '
00187 !
00188     INUM = INUM + 1
00189     YVNAME (INUM)= 'WF                          '
00190     YVLNAME(INUM)= 'Flood width during dt       '
00191     YUNIT  (INUM)= 'm                           '
00192 !
00193     INUM = INUM + 1
00194     YVNAME (INUM)= 'LF                          '
00195     YVLNAME(INUM)= 'Flood lenght during dt      '
00196     YUNIT  (INUM)= 'm                           '
00197 !
00198   ENDIF
00199 !
00200 ENDIF
00201 !
00202 ! * Allocate and initialyse diagnostic variables
00203 !
00204 ALLOCATE(XDIAG_SURF_STO(KLON,KLAT))
00205 ALLOCATE(XDIAG_QDIS    (KLON,KLAT))
00206 XDIAG_SURF_STO(:,:) = 0.0
00207 XDIAG_QDIS    (:,:) = 0.0
00208 !
00209 IF(LTRIP_DIAG_MISC)THEN
00210   ALLOCATE(XDIAG_QIN(KLON,KLAT))
00211   XDIAG_QIN(:,:) = 0.0
00212 ELSE
00213   ALLOCATE(XDIAG_QIN(0,0))
00214 ENDIF
00215 !
00216 IF(CGROUNDW/='DEF')THEN
00217   ALLOCATE(XDIAG_GROUND_STO (KLON,KLAT))
00218   ALLOCATE(XDIAG_QGF        (KLON,KLAT))
00219   XDIAG_GROUND_STO (:,:) = 0.0
00220   XDIAG_QGF        (:,:) = 0.0
00221 ELSE
00222   ALLOCATE(XDIAG_GROUND_STO (0,0))
00223   ALLOCATE(XDIAG_QGF        (0,0))
00224 ENDIF
00225 !
00226 IF(CVIT=='VAR')THEN
00227   ALLOCATE(XDIAG_VEL(KLON,KLAT))
00228   ALLOCATE(XDIAG_HS (KLON,KLAT))
00229   XDIAG_VEL(:,:) = 0.0
00230   XDIAG_HS (:,:) = 0.0
00231 ELSE
00232   ALLOCATE(XDIAG_VEL(0,0))
00233   ALLOCATE(XDIAG_HS (0,0))
00234 ENDIF        
00235 !
00236 IF(LFLOODT)THEN
00237   ALLOCATE(XDIAG_FLOOD_STO (KLON,KLAT))
00238   ALLOCATE(XDIAG_FF        (KLON,KLAT))
00239   ALLOCATE(XDIAG_HF        (KLON,KLAT))
00240   XDIAG_FLOOD_STO (:,:) = 0.0
00241   XDIAG_FF        (:,:) = 0.0
00242   XDIAG_HF        (:,:) = 0.0
00243   IF(LTRIP_DIAG_MISC)THEN
00244     ALLOCATE(XDIAG_QFR   (KLON,KLAT))
00245     ALLOCATE(XDIAG_QRF   (KLON,KLAT))
00246     ALLOCATE(XDIAG_VFIN  (KLON,KLAT))
00247     ALLOCATE(XDIAG_VFOUT (KLON,KLAT))
00248     ALLOCATE(XDIAG_WF    (KLON,KLAT))
00249     ALLOCATE(XDIAG_LF    (KLON,KLAT))
00250     ALLOCATE(XDIAG_HSF   (KLON,KLAT))
00251     ALLOCATE(XDIAG_SOURCE(KLON,KLAT))
00252     XDIAG_QFR   (:,:) = 0.0
00253     XDIAG_QRF   (:,:) = 0.0
00254     XDIAG_VFIN  (:,:) = 0.0
00255     XDIAG_VFOUT (:,:) = 0.0
00256     XDIAG_WF    (:,:) = 0.0
00257     XDIAG_LF    (:,:) = 0.0
00258     XDIAG_HSF   (:,:) = 0.0
00259     XDIAG_SOURCE(:,:) = 0.0
00260   ELSE
00261     ALLOCATE(XDIAG_QFR   (0,0))
00262     ALLOCATE(XDIAG_QRF   (0,0))
00263     ALLOCATE(XDIAG_VFIN  (0,0))
00264     ALLOCATE(XDIAG_VFOUT (0,0))
00265     ALLOCATE(XDIAG_WF    (0,0))
00266     ALLOCATE(XDIAG_LF    (0,0))
00267     ALLOCATE(XDIAG_HSF   (0,0))
00268     ALLOCATE(XDIAG_SOURCE(0,0))
00269   ENDIF
00270 ELSE
00271   ALLOCATE(XDIAG_FLOOD_STO (0,0))
00272   ALLOCATE(XDIAG_HF        (0,0))
00273   ALLOCATE(XDIAG_FF        (0,0))
00274   ALLOCATE(XDIAG_QFR       (0,0))
00275   ALLOCATE(XDIAG_QRF       (0,0))
00276   ALLOCATE(XDIAG_VFIN      (0,0))
00277   ALLOCATE(XDIAG_VFOUT     (0,0))
00278   ALLOCATE(XDIAG_WF        (0,0))
00279   ALLOCATE(XDIAG_LF        (0,0))
00280   ALLOCATE(XDIAG_HSF       (0,0))
00281   ALLOCATE(XDIAG_SOURCE    (0,0))
00282 ENDIF
00283 !
00284 ! * Create netcdf file
00285 !
00286 YFILE     = HFILE(1:LEN_TRIM(HFILE))
00287 YTITLE    = HTITLE(1:LEN_TRIM(HTITLE))
00288 YTIMEUNIT = HTIMEUNIT(1:LEN_TRIM(HTIMEUNIT))
00289 !
00290  CALL GET_LONLAT_TRIP(KLON,KLAT,ZLON,ZLAT)
00291 !
00292  CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT,ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,OTIME)
00293 !
00294  CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID)
00295 !
00296 ! * Deallocate netcdf file attributs
00297 !
00298 DEALLOCATE(YVNAME  )
00299 DEALLOCATE(YVLNAME )
00300 DEALLOCATE(YUNIT   )
00301 DEALLOCATE(ZLON    )
00302 DEALLOCATE(ZLAT    )
00303 IF (LHOOK) CALL DR_HOOK('INIT_DIAG_TRIP_N',1,ZHOOK_HANDLE)
00304 !
00305 !-------------------------------------------------------------------------------
00306 !-------------------------------------------------------------------------------
00307 END SUBROUTINE INIT_DIAG_TRIP_n