SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE INIT_PARAM_TRIP_n (KLUOUT,HFILE,KLON,KLAT,HTITLE,HTIMEUNIT) 00003 ! ####################################################################### 00004 ! 00005 !!**** *INIT_PARAM_TRIP_n* 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 ! Define the name and unit of each trip parameter. 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 00030 USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF, NTRIPTAB 00031 ! 00032 ! 00033 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00034 USE PARKIND1 ,ONLY : JPRB 00035 ! 00036 USE MODI_GET_LONLAT_TRIP 00037 ! 00038 IMPLICIT NONE 00039 ! 00040 include 'netcdf.inc' 00041 ! 00042 !* 0.1 declarations of arguments 00043 ! 00044 ! 00045 CHARACTER(LEN=*), INTENT(IN) :: HFILE, HTITLE, HTIMEUNIT 00046 ! 00047 INTEGER, INTENT(IN) :: KLUOUT, KLON, KLAT 00048 ! 00049 !* 0.2 declarations of output variables 00050 ! 00051 CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVNAME !Name of each output variable 00052 CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVLNAME !Long name of each output variables 00053 CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YUNIT !Unit of each output variable 00054 ! 00055 CHARACTER(LEN=nf_max_name) :: YFILE,YTITLE,YTIMEUNIT 00056 ! 00057 LOGICAL, DIMENSION(:), ALLOCATABLE :: LZLEN 00058 ! 00059 REAL, DIMENSION(:), ALLOCATABLE :: ZLON 00060 REAL, DIMENSION(:), ALLOCATABLE :: ZLAT 00061 ! 00062 INTEGER :: INPARAM, INCID, INUM 00063 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00064 ! 00065 !------------------------------------------------------------------------------- 00066 !------------------------------------------------------------------------------- 00067 ! 00068 ! * Number of output variable 00069 ! 00070 IF (LHOOK) CALL DR_HOOK('INIT_PARAM_TRIP_N',0,ZHOOK_HANDLE) 00071 INPARAM = 6 00072 IF(CGROUNDW/='DEF') INPARAM = INPARAM + 1 00073 IF(CVIT=='VAR')INPARAM = INPARAM + 3 00074 IF(LFLOODT)INPARAM = INPARAM + 5 00075 ! 00076 ! * Allocate netcdf file attributs 00077 ! 00078 ALLOCATE(YVNAME (INPARAM)) 00079 ALLOCATE(YVLNAME (INPARAM)) 00080 ALLOCATE(YUNIT (INPARAM)) 00081 ALLOCATE(LZLEN (INPARAM)) 00082 ! 00083 ALLOCATE(ZLON(KLON)) 00084 ALLOCATE(ZLAT(KLAT)) 00085 ! 00086 ! * Initialyse netcdf file attributs 00087 ! 00088 YVNAME (1) = 'FLOWDIR ' 00089 YVLNAME(1) = 'Flow direction ' 00090 YUNIT (1) = '- ' 00091 LZLEN (1) = .FALSE. 00092 ! 00093 YVNAME (2) = 'RIVSEQ ' 00094 YVLNAME(2) = 'River sequence ' 00095 YUNIT (2) = '- ' 00096 LZLEN (2) = .FALSE. 00097 ! 00098 YVNAME (3) = 'RIVLEN ' 00099 YVLNAME(3) = 'River length ' 00100 YUNIT (3) = 'm ' 00101 LZLEN (3) = .FALSE. 00102 ! 00103 YVNAME (4) = 'NUM_BAS ' 00104 YVLNAME(4) = 'Trip basin reference number' 00105 YUNIT (4) = '- ' 00106 LZLEN (4) = .FALSE. 00107 ! 00108 YVNAME (5) = 'ELEV ' 00109 YVLNAME(5) = 'Surface elevation along the river channel' 00110 YUNIT (5) = 'm ' 00111 LZLEN (5) = .FALSE. 00112 ! 00113 YVNAME (6) = 'DR_AREA ' 00114 YVLNAME(6) = 'Trip drainage area ' 00115 YUNIT (6) = 'm2 ' 00116 LZLEN (6) = .FALSE. 00117 ! 00118 INUM = 6 00119 ! 00120 IF(CGROUNDW/='DEF')THEN 00121 ! 00122 INUM = INUM + 1 00123 ! 00124 YVNAME (INUM) = 'TAUG ' 00125 YVLNAME(INUM) = 'Groundwater transfert time (0=permafrost area)' 00126 YUNIT (INUM) = 'days ' 00127 LZLEN (INUM) = .FALSE. 00128 ! 00129 ENDIF 00130 ! 00131 IF(CVIT=='VAR')THEN 00132 ! 00133 INUM = INUM + 1 00134 YVNAME (INUM) = 'N_RIV ' 00135 YVLNAME(INUM) = 'Manning coefficient ' 00136 YUNIT (INUM) = '- ' 00137 LZLEN (INUM) = .FALSE. 00138 ! 00139 INUM = INUM + 1 00140 YVNAME (INUM) = 'WIDTHRIV ' 00141 YVLNAME(INUM) = 'Stream river width ' 00142 YUNIT (INUM) = 'm ' 00143 LZLEN (INUM) = .FALSE. 00144 ! 00145 INUM = INUM + 1 00146 YVNAME (INUM) = 'SLOPERIV ' 00147 YVLNAME(INUM) = 'Stream River slope ' 00148 YUNIT (INUM) = 'm/m ' 00149 LZLEN (INUM) = .FALSE. 00150 ! 00151 ENDIF 00152 ! 00153 IF(LFLOODT)THEN 00154 ! 00155 INUM = INUM + 1 00156 YVNAME (INUM) = 'RIVDEPTH ' 00157 YVLNAME(INUM) = 'Stream River Depth (Hc) ' 00158 YUNIT (INUM) = 'm ' 00159 LZLEN (INUM) = .FALSE. 00160 ! 00161 INUM = INUM + 1 00162 YVNAME (INUM) = 'NFLOOD ' 00163 YVLNAME(INUM) = 'Manning coef for flood ' 00164 YUNIT (INUM) = '- ' 00165 LZLEN (INUM) = .FALSE. 00166 ! 00167 INUM = INUM + 1 00168 YVNAME (INUM) = 'TABF ' 00169 YVLNAME(INUM) = 'Potential flood fraction ' 00170 YUNIT (INUM) = '- ' 00171 LZLEN (INUM) = .TRUE. 00172 ! 00173 INUM = INUM + 1 00174 YVNAME (INUM)= 'TABH ' 00175 YVLNAME(INUM)= 'Topographic height ' 00176 YUNIT (INUM)= 'm ' 00177 LZLEN (INUM)= .TRUE. 00178 ! 00179 INUM = INUM + 1 00180 YVNAME (INUM)= 'TABVF ' 00181 YVLNAME(INUM)= 'Potential flood volume ' 00182 YUNIT (INUM)= 'kg ' 00183 LZLEN (INUM)= .TRUE. 00184 ! 00185 ENDIF 00186 ! 00187 ! * Create netcdf file 00188 ! 00189 YFILE = HFILE(1:LEN_TRIM(HFILE)) 00190 YTITLE = HTITLE(1:LEN_TRIM(HTITLE)) 00191 YTIMEUNIT = HTIMEUNIT(1:LEN_TRIM(HTIMEUNIT)) 00192 ! 00193 CALL GET_LONLAT_TRIP(KLON,KLAT,ZLON,ZLAT) 00194 ! 00195 IF(ALL(.NOT.LZLEN(:)))THEN 00196 CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT, & 00197 ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,.FALSE.) 00198 ELSE 00199 CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT, & 00200 ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,.FALSE.,NTRIPTAB,LZLEN) 00201 ENDIF 00202 ! 00203 CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) 00204 ! 00205 ! * Deallocate netcdf file attributs 00206 ! 00207 DEALLOCATE(YVNAME ) 00208 DEALLOCATE(YVLNAME ) 00209 DEALLOCATE(YUNIT ) 00210 DEALLOCATE(ZLON ) 00211 DEALLOCATE(ZLAT ) 00212 IF (LHOOK) CALL DR_HOOK('INIT_PARAM_TRIP_N',1,ZHOOK_HANDLE) 00213 ! 00214 !------------------------------------------------------------------------------- 00215 !------------------------------------------------------------------------------- 00216 END SUBROUTINE INIT_PARAM_TRIP_n