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