SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/init_teb_veg_optionsn.F90
Go to the documentation of this file.
00001 !#############################################################
00002 SUBROUTINE INIT_TEB_VEG_OPTIONS_n(HPROGRAM)
00003 !#############################################################
00004 !
00005 !!****  *INIT_TEB_TEB_VEG_n* - routine to initialize ISBA
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      A. Lemonsu  *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    09/2009
00031 !!      B. Decharme 07/2011 : read pgd+prep
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 USE MODD_READ_NAMELIST,   ONLY : LNAM_READ
00037 !
00038 USE MODD_TYPE_DATE_SURF
00039 USE MODD_TYPE_SNOW
00040 !
00041 USE MODD_TEB_VEG_n,       ONLY: CROUGH,CISBA,CPEDOTF,LTR_ML,CPHOTO,CRUNOFF,CALBEDO,   &
00042                                 CSCOND, CC1DRY, CSOILFRZ, CDIFSFCOND, CSNOWRES,       &
00043                                 CRESPSL,NNBIOMASS, CSOC,                              & 
00044                                 CCPSURF, CHORT, CKSAT, CTOPREG, XCGMAX, XCDRAG
00045 !
00046 USE MODD_TEB_GARDEN_n,    ONLY: NGROUND_LAYER, XSOILGRID
00047 
00048 USE MODD_CH_TEB_n,        ONLY: CCH_DRY_DEP, LCH_BIO_FLUX  
00049 
00050 USE MODD_DATA_COVER_PAR,  ONLY: NVEGTYPE
00051 USE MODD_SURF_PAR,        ONLY: XUNDEF, NUNDEF
00052 USE MODD_DIAG_MISC_TEB_n, ONLY: LSURF_DIAG_ALBEDO
00053 !
00054 USE MODD_ISBA_PAR,        ONLY : XOPTIMGRID
00055 !
00056 USE MODN_TEB_n,           ONLY : XTSTEP
00057 !
00058 USE MODI_DEFAULT_ISBA
00059 USE MODI_DEFAULT_CH_DEP
00060 USE MODI_DEFAULT_CH_BIO_FLUX
00061 USE MODI_READ_DEFAULT_TEB_VEG_n
00062 USE MODI_READ_TEB_VEG_CONF_n
00063 USE MODI_GET_LUOUT
00064 USE MODI_READ_SURF
00065 !
00066 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00067 USE PARKIND1  ,ONLY : JPRB
00068 !
00069 IMPLICIT NONE
00070 !
00071 !*       0.1   Declarations of arguments
00072 !              -------------------------
00073 !
00074  CHARACTER(LEN=6),                   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00075 !
00076 !
00077 !
00078 !*       0.2   Declarations of local variables
00079 !              -------------------------------
00080 !
00081 INTEGER           :: IVERSION, IBUGFIX  ! surface version
00082 INTEGER           :: ILUOUT   ! unit of output listing file
00083 INTEGER           :: IRESP    ! Error code after redding
00084  CHARACTER(LEN=12) :: YRECFM   ! Name of the article to be read
00085 !
00086 !
00087 REAL                              :: ZOUT_TSTEP
00088  CHARACTER(LEN=3)                  :: YRAIN 
00089 LOGICAL                           :: GCANOPY_DRAG
00090 LOGICAL                           :: GGLACIER
00091 LOGICAL                           :: GTRIP
00092 LOGICAL                           :: GFLOOD
00093 LOGICAL                           :: GVEGUPD
00094 LOGICAL                           :: GSPINUPCARBS
00095 LOGICAL                           :: GSPINUPCARBW
00096 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00097 !
00098 !-------------------------------------------------------------------------------
00099 !
00100 !               Initialisation for IO
00101 !
00102 IF (LHOOK) CALL DR_HOOK('INIT_TEB_VEG_OPTIONS_N',0,ZHOOK_HANDLE)
00103  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00104 !
00105 !               Other little things
00106 !
00107 LSURF_DIAG_ALBEDO = .FALSE.
00108 !
00109 IF (LNAM_READ) THEN
00110  !
00111  !*       1.     Defaults
00112  !               --------
00113  !
00114  !        1.1. Hard defaults
00115  !      
00116  !       Definition of default options for ISBA (in MODD_TEB_VEG_n)
00117  !       REM - TSTEP, OUT_TSTEP, CANOPY_DRAG are defined as local variables
00118  !             because they are already in init_teb.f90 (these options are 
00119  !             forced to the same values for TEB and urban green areas)
00120  !
00121  CALL DEFAULT_ISBA(XTSTEP, ZOUT_TSTEP,                         &
00122                    CROUGH, CRUNOFF, CALBEDO, CSCOND,           &
00123                    CC1DRY, CSOILFRZ, CDIFSFCOND, CSNOWRES,     &
00124                    CCPSURF, XCGMAX, XCDRAG, CKSAT, CSOC,       &
00125                    CTOPREG, YRAIN, CHORT, GFLOOD, GTRIP,       &
00126                    GGLACIER, GCANOPY_DRAG, GVEGUPD,            &
00127                    GSPINUPCARBS, GSPINUPCARBW                  )  
00128  !
00129  CALL DEFAULT_CH_DEP(CCH_DRY_DEP)
00130  CALL DEFAULT_CH_BIO_FLUX(LCH_BIO_FLUX)
00131  !
00132 ENDIF
00133 !        1.2. Defaults from file header
00134 !    
00135  CALL READ_DEFAULT_TEB_VEG_n(HPROGRAM)
00136 !
00137  CALL READ_TEB_VEG_CONF_n(HPROGRAM)
00138 !
00139 !-------------------------------------------------------------------------------
00140 CRESPSL = 'DEF'
00141 !-------------------------------------------------------------------------------
00142 !
00143 !         Initialisation for IO
00144 !
00145 !*       2.     Definition of version
00146 !               ---------------------
00147 !
00148 YRECFM='VERSION'
00149  CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP)
00150 !
00151 YRECFM='BUG'
00152  CALL READ_SURF(HPROGRAM,YRECFM,IBUGFIX,IRESP)
00153 !
00154 !*       2.     Initialisation of ISBA options
00155 !               ------------------------------
00156 !
00157 !
00158 YRECFM='TWN_ISBA'
00159 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_ISBA'
00160  CALL READ_SURF(HPROGRAM,YRECFM,CISBA,IRESP)
00161 !
00162 IF (IVERSION>=7) THEN
00163   !
00164   YRECFM='TWN_PEDOTF'
00165   IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_PEDOTF'
00166   CALL READ_SURF(HPROGRAM,YRECFM,CPEDOTF,IRESP)
00167   !
00168 ELSE
00169   CPEDOTF = 'CH78'
00170 ENDIF
00171 !
00172 YRECFM='TWN_PHOTO'
00173 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_PHOTO'
00174  CALL READ_SURF(HPROGRAM,YRECFM,CPHOTO,IRESP)
00175 !
00176 YRECFM='TWN_LAYER'
00177 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_LAYER'
00178  CALL READ_SURF(HPROGRAM,YRECFM,NGROUND_LAYER,IRESP)
00179 !
00180 !* new radiative transfert
00181 !
00182 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=2) THEN
00183   !
00184   YRECFM='TWN_TR_ML'
00185   IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_TR_ML'
00186   CALL READ_SURF(HPROGRAM,YRECFM,LTR_ML,IRESP)
00187   !
00188 ELSE 
00189   LTR_ML = .FALSE.
00190 ENDIF
00191 !
00192 !* Reference grid for DIF
00193 !
00194 IF(CISBA=='DIF') THEN
00195   ALLOCATE(XSOILGRID(NGROUND_LAYER))
00196   XSOILGRID=XUNDEF
00197   IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=2) THEN
00198     YRECFM='TWN_SOILGRID'
00199     IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM='GD_SOILGRID'
00200     CALL READ_SURF(HPROGRAM,YRECFM,XSOILGRID,IRESP,HDIR='-')
00201   ELSE
00202     XSOILGRID(1:NGROUND_LAYER)=XOPTIMGRID(1:NGROUND_LAYER)
00203   ENDIF
00204 ELSE
00205   ALLOCATE(XSOILGRID(0))
00206 ENDIF
00207 !
00208 !* number of biomass pools
00209 !
00210 NNBIOMASS=1
00211 IF (CPHOTO=='NIT') NNBIOMASS=3
00212 !
00213 !-------------------------------------------------------------------------------
00214 !
00215 !
00216 IF (LHOOK) CALL DR_HOOK('INIT_TEB_VEG_OPTIONS_N',1,ZHOOK_HANDLE)
00217 END SUBROUTINE INIT_TEB_VEG_OPTIONS_n