SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TRIP/init_param_tripn.F90
Go to the documentation of this file.
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