SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/TOPD/read_nam_topd.F90
Go to the documentation of this file.
00001 !----------------------------------------------------------------------------!
00002 !     ##############################################################
00003        SUBROUTINE READ_NAM_TOPD(HPROGRAM,&
00004                                 OBUDGET_TOPD,KNB_TOPD,&
00005                                 OSTOCK_TOPD,&
00006                                 KNB_STOCK,KNB_RESTART,&
00007                                 PSPEEDR,PSPEEDG,PQINIT,PRTOP_D2)
00008 !     ##############################################################
00009 !
00010 !!**** *READ_NAM TOPD* reads namelist NAM_TOPD
00011 !!
00012 !!    PURPOSE
00013 !!    -------
00014 !!
00015 !!    NAM_TOPD is a namelist used to define whether Topmodel coupling
00016 !!    is performed or not and the time step ratio between hydrological 
00017 !!    model and ISBA.
00018 !!    This routine aims at reading and initialising those variables.
00019 !!
00020 !!    METHOD
00021 !!    ------
00022 !!   
00023 !
00024 !!    EXTERNAL
00025 !!    --------
00026 !!
00027 !!    IMPLICIT ARGUMENTS
00028 !!    ------------------
00029 !!
00030 !!    REFERENCE
00031 !!    ---------
00032 !!
00033 !!    AUTHOR
00034 !!    ------
00035 !!
00036 !!    B. Vincendon        Meteo-France
00037 !!
00038 !!    MODIFICATION
00039 !!    ------------
00040 !!
00041 !!    Original    11/2006
00042 !!
00043 !----------------------------------------------------------------------------
00044 !
00045 !*    0.     DECLARATION
00046 !            -----------
00047 !
00048 USE MODD_TOPD_PAR, ONLY : JPCAT
00049 USE MODD_TOPODYN, ONLY : NNCAT
00050 !
00051 USE MODE_POS_SURF
00052 !
00053 USE MODI_GET_LUOUT
00054 USE MODI_OPEN_NAMELIST
00055 USE MODI_CLOSE_NAMELIST
00056 !
00057 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00058 USE PARKIND1  ,ONLY : JPRB
00059 !
00060 IMPLICIT NONE
00061 !
00062 !*    0.1    Declaration of arguments
00063 !            ------------------------
00064 !
00065  CHARACTER(LEN=6),                   INTENT(IN)   :: HPROGRAM     ! Type of program
00066 LOGICAL,                            INTENT(OUT)  :: OBUDGET_TOPD ! budget computation
00067 INTEGER,                            INTENT(OUT)  :: KNB_TOPD     ! Ratio between Topmodel time step and ISBA time step
00068 LOGICAL,                            INTENT(OUT)  :: OSTOCK_TOPD  ! T if use of stock from previous simulation
00069 INTEGER,                            INTENT(OUT)  :: KNB_STOCK    ! number of time step to read in previous simulation
00070 INTEGER,                            INTENT(OUT)  :: KNB_RESTART  ! number of time step to write for next simulation
00071 REAL, DIMENSION(JPCAT),INTENT(OUT)               :: PSPEEDR ! River speed
00072 REAL, DIMENSION(JPCAT),INTENT(OUT)               :: PSPEEDG ! Ground speed
00073 REAL, DIMENSION(JPCAT),INTENT(OUT)               :: PQINIT  ! Initial discharge at catchments outlet
00074 REAL, DIMENSION(JPCAT),INTENT(OUT)               :: PRTOP_D2
00075 !
00076 !*    0.2    Declaration of local variables
00077 !            ------------------------------
00078 !
00079 LOGICAL                           :: LBUDGET_TOPD
00080 LOGICAL                           :: LSTOCK_TOPD
00081 INTEGER                           :: NNB_TOPD
00082 INTEGER                           :: NFREQ_MAPS_WG
00083 INTEGER                           :: NFREQ_MAPS_ASAT
00084 INTEGER                           :: NNB_STP_STOCK
00085 INTEGER                           :: NNB_STP_RESTART
00086 REAL, DIMENSION(JPCAT)            :: XSPEEDR
00087 REAL, DIMENSION(JPCAT)            :: XSPEEDG
00088 REAL, DIMENSION(JPCAT)            :: XQINIT
00089 REAL, DIMENSION(JPCAT)            :: XRTOP_D2
00090 !
00091 INTEGER                           :: ILUOUT    ! output listing logical unit
00092 INTEGER                           :: ILUNAM    ! namelist file logical unit
00093 LOGICAL                           :: GFOUND    ! flag when namelist is present
00094 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00095 !
00096 !*    0.3    Declaration of namelists
00097 !  
00098 NAMELIST/NAM_TOPD/LBUDGET_TOPD, LSTOCK_TOPD, NNB_TOPD, &
00099                   NFREQ_MAPS_WG, NFREQ_MAPS_ASAT,&
00100                   NNB_STP_STOCK, NNB_STP_RESTART, &
00101                   XSPEEDR, XSPEEDG, XQINIT, XRTOP_D2
00102 !-------------------------------------------------------------------------------
00103 IF (LHOOK) CALL DR_HOOK('READ_NAM_TOPD',0,ZHOOK_HANDLE)
00104 !
00105 !*    1.      Initializations of defaults
00106 !             ---------------------------
00107 !
00108 LBUDGET_TOPD = .FALSE.
00109 LSTOCK_TOPD = .FALSE.
00110 NNB_TOPD = 1
00111 NFREQ_MAPS_WG = 0
00112 NFREQ_MAPS_ASAT = 0
00113 NNB_STP_STOCK = 1
00114 NNB_STP_RESTART = 1
00115 XSPEEDR(:) = 3.0 ! default value of river speed (adapted for Cevennes zone)
00116 XSPEEDG(:) = 0.3 ! default value of hillspeed
00117 XQINIT(:) = 0.
00118 XRTOP_D2(:) = 1.
00119 !
00120  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00121 !
00122 !-------------------------------------------------------------------------------
00123 !
00124 !*    2.      Reading of namelist
00125 !             -------------------
00126 !
00127  CALL OPEN_NAMELIST(HPROGRAM,ILUNAM)
00128 !
00129  CALL POSNAM(ILUNAM,'NAM_TOPD',GFOUND,ILUOUT)
00130 IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_TOPD)
00131 !
00132  CALL CLOSE_NAMELIST(HPROGRAM,ILUNAM)
00133 !
00134 !-------------------------------------------------------------------------------
00135 !
00136 !*    3.      Fills output arguments
00137 !             ----------------------
00138 !
00139 OBUDGET_TOPD = LBUDGET_TOPD
00140 OSTOCK_TOPD = LSTOCK_TOPD
00141 KNB_TOPD = NNB_TOPD
00142 KNB_STOCK = NNB_STP_STOCK
00143 KNB_RESTART = NNB_STP_RESTART
00144 PSPEEDR(1:NNCAT) = XSPEEDR(1:NNCAT)
00145 PSPEEDG(1:NNCAT) = XSPEEDG(1:NNCAT)
00146 PQINIT(1:NNCAT) = XQINIT(1:NNCAT)
00147 PRTOP_D2(1:NNCAT) = XRTOP_D2(1:NNCAT)
00148 !
00149 WRITE(ILUOUT,*) 'NAM_TOPD:'
00150 WRITE(ILUOUT,*) 'LBUDGET ',LBUDGET_TOPD
00151 WRITE(ILUOUT,*) 'NNB_TOP',NNB_TOPD
00152 WRITE(ILUOUT,*) 'LSTOCK',LSTOCK_TOPD
00153 WRITE(ILUOUT,*) 'NNB_RESTART,NNB_STOCK',NNB_STP_RESTART,NNB_STP_STOCK
00154 !
00155 IF (LHOOK) CALL DR_HOOK('READ_NAM_TOPD',1,ZHOOK_HANDLE)
00156 !-------------------------------------------------------------------------------
00157 !
00158 END SUBROUTINE READ_NAM_TOPD