SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/init_teb_gardenn.F90
Go to the documentation of this file.
00001 !#############################################################
00002 SUBROUTINE INIT_TEB_GARDEN_n(HPROGRAM,HINIT,KI,KSW,PSW_BANDS)
00003 !#############################################################
00004 !
00005 !!****  *INIT_TEB_GARDEN_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 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 USE MODD_TYPE_DATE_SURF
00037 USE MODD_TYPE_SNOW
00038 !
00039 USE MODD_TEB_n,           ONLY: TTIME, NTEB_PATCH, LCANOPY
00040 USE MODD_TEB_VEG_n,       ONLY: CALBEDO, CCPSURF, CROUGH, CPHOTO, CISBA, LTR_ML
00041 USE MODD_TEB_GARDEN_n,    ONLY: TSNOW, XLAI,      &
00042                                 XLAIMIN, XZ0, XVEG, XEMIS,               &
00043                                 XALBNIR_SOIL, XALBVIS_SOIL, XALBUV_SOIL, &
00044                                 XALBNIR, XALBVIS, XALBUV, XWG, XTG,      &
00045                                 XWSAT, XFAPARC, XFAPIRC, XLAI_EFFC, XMUS,&
00046                                 LPAR_GARDEN, XVEGTYPE, XH_TREE,          &
00047                                 NGROUND_LAYER,                           &
00048                                 XALBVIS_DRY, XALBNIR_DRY, XALBUV_DRY,    &
00049                                 XALBNIR_VEG, XALBVIS_VEG, XALBUV_VEG,    &
00050                                 XALBVIS_WET, XALBNIR_WET, XALBUV_WET,    &
00051                                 XPSN, XPSNG, XPSNV, XPSNV_A
00052 USE MODD_DIAG_MISC_TEB_n, ONLY: LSURF_DIAG_ALBEDO
00053 
00054 USE MODD_DATA_COVER_PAR,  ONLY: NVEGTYPE
00055 USE MODD_SURF_PAR,        ONLY: XUNDEF, NUNDEF
00056 
00057 USE MODD_SURF_ATM,        ONLY: LCPL_ARP
00058 !
00059 USE MODI_GET_LUOUT
00060 USE MODI_READ_PREP_GARDEN_SNOW
00061 USE MODI_ALLOCATE_TEB_GARDEN
00062 USE MODI_ABOR1_SFX
00063 USE MODI_GET_CURRENT_TEB_PATCH
00064 USE MODI_READ_TEB_GARDEN_n
00065 USE MODI_INIT_VEG_GARDEN_n
00066 USE MODI_SOIL_ALBEDO
00067 USE MODI_INIT_FROM_DATA_GRDN_n
00068 USE MODI_AVG_ALBEDO_EMIS_GARDEN
00069 !
00070 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00071 USE PARKIND1  ,ONLY : JPRB
00072 !
00073 IMPLICIT NONE
00074 !
00075 !*       0.1   Declarations of arguments
00076 !              -------------------------
00077 !
00078  CHARACTER(LEN=6),                   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00079  CHARACTER(LEN=3),                   INTENT(IN)  :: HINIT     ! choice of fields to initialize
00080 INTEGER,                            INTENT(IN)  :: KI        ! number of points
00081 INTEGER,                            INTENT(IN)  :: KSW       ! number of short-wave spectral bands
00082 REAL,             DIMENSION(KSW),   INTENT(IN)  :: PSW_BANDS ! middle wavelength of each band
00083 !
00084 !
00085 !
00086 !*       0.2   Declarations of local variables
00087 !              -------------------------------
00088 !
00089 INTEGER           :: ILUOUT   ! unit of output listing file
00090 !
00091 INTEGER           :: IDECADE  ! decade of simulation
00092 !
00093 INTEGER :: JTEB_PATCH  ! loop counter on TEB patches
00094  CHARACTER(LEN=3) :: YPATCH ! patch identificator
00095 !
00096 REAL, DIMENSION(KI)               :: ZWG1 ! work array for surface water content
00097 REAL, DIMENSION(KI)               :: ZTG1 ! work array for surface temperature
00098 REAL, DIMENSION(KI,KSW)           :: ZDIR_ALB  ! direct albedo for each band
00099 REAL, DIMENSION(KI,KSW)           :: ZSCA_ALB  ! diffuse albedo for each band
00100 REAL, DIMENSION(KI)               :: ZEMIS     ! emissivity
00101 REAL, DIMENSION(KI)               :: ZTSRAD    ! radiative temperature
00102 !
00103 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00104 !
00105 !-------------------------------------------------------------------------------
00106 !
00107 !               Initialisation for IO
00108 !
00109 IF (LHOOK) CALL DR_HOOK('INIT_TEB_GARDEN_N',0,ZHOOK_HANDLE)
00110  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00111 !
00112 !*       1.     Reading of snow configuration:
00113 !               ------------------------------
00114 !
00115 !* initialization of snow scheme (TSNOW defined in MODD_TEB_GARDEN_n)
00116 !
00117 IF (HINIT=='PRE') THEN
00118   CALL READ_PREP_GARDEN_SNOW(HPROGRAM,TSNOW%SCHEME,TSNOW%NLAYER)
00119 !
00120   IF (TSNOW%SCHEME.NE.'3-L' .AND. TSNOW%SCHEME.NE.'CRO' .AND. CISBA=='DIF') THEN
00121     CALL ABOR1_SFX("INIT_TEB_GARDEN_n: WITH CISBA = DIF, CSNOW MUST BE 3-L OR CRO")
00122   ENDIF
00123   IF (LHOOK) CALL DR_HOOK('INIT_TEB_GARDEN_N',1,ZHOOK_HANDLE)
00124   RETURN
00125 ENDIF
00126 !-------------------------------------------------------------------------------
00127 !
00128  CALL ALLOCATE_TEB_GARDEN(KI, NGROUND_LAYER)  
00129 !
00130 !-------------------------------------------------------------------------------
00131 !
00132 IF( CCPSURF=='DRY' .AND. LCPL_ARP ) THEN
00133   CALL ABOR1_SFX('CCPSURF=DRY must not be used with LCPL_ARP')
00134 ENDIF
00135 !
00136 !-------------------------------------------------------------------------------
00137 !
00138 IF (HINIT/='ALL') THEN
00139   IF (LHOOK) CALL DR_HOOK('INIT_TEB_GARDEN_N',1,ZHOOK_HANDLE)      
00140   RETURN
00141 ENDIF
00142 !
00143 !-------------------------------------------------------------------------------
00144 !
00145 !*      10.     Prognostic and semi-prognostic fields
00146 !               -------------------------------------
00147 !
00148 !* allocation of urban green area variables
00149 !
00150 !
00151   YPATCH='   '
00152   CALL GET_CURRENT_TEB_PATCH(JTEB_PATCH)
00153   IF (NTEB_PATCH>1) WRITE(YPATCH,FMT='(A,I1,A)') 'T',JTEB_PATCH,'_'
00154 !
00155   CALL READ_TEB_GARDEN_n(HPROGRAM,YPATCH)
00156 !
00157 !
00158  CALL INIT_VEG_GARDEN_n(KI, LCANOPY, CROUGH, TSNOW, &
00159                    CPHOTO, XLAIMIN, XH_TREE, XVEGTYPE, XLAI, XZ0, XVEG, XEMIS, &
00160                    LTR_ML, XFAPARC, XFAPIRC, XLAI_EFFC, XMUS, &
00161                    XALBNIR_SOIL, XALBVIS_SOIL, XALBUV_SOIL, XALBNIR, XALBVIS, XALBUV, &
00162                    LSURF_DIAG_ALBEDO, XPSN, XPSNG, XPSNV, XPSNV_A, &
00163                    ZDIR_ALB, ZSCA_ALB, ZEMIS, ZTSRAD )
00164 !
00165 ZWG1(:) = XWG(:,1)
00166 ZTG1(:) = XTG(:,1)
00167 !
00168 IF (.NOT. LPAR_GARDEN) THEN
00169   CALL SOIL_ALBEDO(CALBEDO,                               &
00170                      XWSAT(:,1),ZWG1,                       &
00171                      XALBVIS_DRY,XALBNIR_DRY,XALBUV_DRY,    &
00172                      XALBVIS_WET,XALBNIR_WET,XALBUV_WET,    &
00173                      XALBVIS_SOIL,XALBNIR_SOIL,XALBUV_SOIL  )  
00174 ELSE
00175   IF (TTIME%TDATE%MONTH /= NUNDEF) THEN
00176     IDECADE = 3 * ( TTIME%TDATE%MONTH - 1 ) + MIN(TTIME%TDATE%DAY-1,29) / 10 + 1
00177   ELSE
00178     IDECADE = 1
00179   END IF
00180   CALL INIT_FROM_DATA_GRDN_n(IDECADE,CPHOTO,              &
00181                                PALBNIR_SOIL=XALBNIR_SOIL,   &
00182                                PALBVIS_SOIL=XALBVIS_SOIL,   &
00183                                PALBUV_SOIL=XALBUV_SOIL      )  
00184 END IF
00185 !
00186  CALL AVG_ALBEDO_EMIS_GARDEN(CALBEDO,                                   &
00187                                  XVEG,XZ0,XLAI,ZTG1,                     &
00188                                  PSW_BANDS,                              &
00189                                  XALBNIR_VEG,XALBVIS_VEG,XALBUV_VEG,     &
00190                                  XALBNIR_SOIL,XALBVIS_SOIL,XALBUV_SOIL,  &
00191                                  XEMIS,                                  &
00192                                  TSNOW,                                  &
00193                                  XALBNIR,XALBVIS,XALBUV,                 &
00194                                  ZDIR_ALB, ZSCA_ALB,                     &
00195                                  ZEMIS,ZTSRAD                            )  
00196 !
00197 !
00198 !
00199 !-------------------------------------------------------------------------------
00200 !
00201 IF (LHOOK) CALL DR_HOOK('INIT_TEB_GARDEN_N',1,ZHOOK_HANDLE)
00202 !
00203 !-------------------------------------------------------------------------------
00204 !
00205 !
00206 END SUBROUTINE INIT_TEB_GARDEN_n