SURFEX v7.3
General documentation of Surfex
|
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