SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/pgd_teb.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE PGD_TEB(HPROGRAM,OECOCLIMAP,OGARDEN)
00003 !     ##############################################################
00004 !
00005 !!**** *PGD_TEB* monitor for averaging and interpolations of TEB physiographic fields
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!    METHOD
00011 !!    ------
00012 !!   
00013 !
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!    AUTHOR
00024 !!    ------
00025 !!
00026 !!    V. Masson        Meteo-France
00027 !!
00028 !!    MODIFICATION
00029 !!    ------------
00030 !!
00031 !!    Original    10/12/97
00032 !!    A. Lemonsu      05/2009         Key for garden option
00033 !!    G. Pigeon     /09/12: WALL, ROOF, FLOOR, MASS LAYER default to 5
00034 !!
00035 !----------------------------------------------------------------------------
00036 !
00037 !*    0.     DECLARATION
00038 !            -----------
00039 !
00040 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
00041 USE MODD_TEB_n,          ONLY : XCOVER, LCOVER, XZS,                   &
00042                                 NROAD_LAYER, NWALL_LAYER, NROOF_LAYER, &
00043                                 LECOCLIMAP, LGARDEN, NTEB_PATCH,       &
00044                                 CBLD_ATYPE, CBEM, LGREENROOF, LHYDRO 
00045 USE MODD_BEM_n,          ONLY : NFLOOR_LAYER, CCOOL_COIL, CHEAT_COIL, LAUTOSIZE
00046 USE MODD_TEB_GRID_n,     ONLY : CGRID, XGRID_PAR, XLAT, XLON, XMESH_SIZE, NDIM
00047 !
00048 USE MODI_GET_SURF_SIZE_n
00049 USE MODI_PACK_PGD
00050 USE MODI_PGD_TEB_PAR
00051 USE MODI_PGD_TEB_VEG
00052 USE MODI_GET_LUOUT
00053 USE MODI_READ_NAM_PGD_TEB
00054 USE MODI_TEST_NAM_VAR_SURF
00055 USE MODI_PGD_BEM_PAR
00056 USE MODI_ABOR1_SFX
00057 !
00058 !
00059 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00060 USE PARKIND1  ,ONLY : JPRB
00061 !
00062 USE MODI_WRITE_COVER_TEX_TEB
00063 !
00064 IMPLICIT NONE
00065 !
00066 !*    0.1    Declaration of arguments
00067 !            ------------------------
00068 !
00069  CHARACTER(LEN=6), INTENT(IN)  :: HPROGRAM   ! Type of program
00070 LOGICAL,          INTENT(IN)  :: OECOCLIMAP ! T if parameters are computed with ecoclimap
00071 !                                           ! F if all parameters must be specified
00072 LOGICAL,          INTENT(IN)  :: OGARDEN    ! T if urban green areas
00073 !
00074 !
00075 !*    0.2    Declaration of local variables
00076 !            ------------------------------
00077 !
00078 INTEGER         :: ILUOUT    ! output listing logical unit
00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00080 !
00081 !-------------------------------------------------------------------------------
00082 !
00083 !*    1.      Initializations of defaults
00084 !             ---------------------------
00085 !
00086 IF (LHOOK) CALL DR_HOOK('PGD_TEB',0,ZHOOK_HANDLE)
00087  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00088 
00089 NROOF_LAYER  = 5
00090 NROAD_LAYER  = 5
00091 NWALL_LAYER  = 5
00092 NFLOOR_LAYER = 5
00093 !
00094 !-------------------------------------------------------------------------------
00095 !
00096 !*    2.      Reading of namelist
00097 !             -------------------
00098 !
00099  CALL READ_NAM_PGD_TEB(HPROGRAM,NTEB_PATCH,CBEM,CCOOL_COIL,CHEAT_COIL,LAUTOSIZE,&
00100                       NROAD_LAYER,NROOF_LAYER,NWALL_LAYER,NFLOOR_LAYER,        &
00101                       LGREENROOF,LHYDRO                                        )
00102 !
00103 !-------------------------------------------------------------------------------
00104 !
00105 !*    3.      Coherence of options
00106 !             --------------------
00107 !
00108  CALL TEST_NAM_VAR_SURF(ILUOUT,'CBLD',CBEM,'DEF','BEM ')
00109  CALL TEST_NAM_VAR_SURF(ILUOUT,'CCOOL_COIL',CCOOL_COIL,'IDEAL ','DXCOIL')
00110  CALL TEST_NAM_VAR_SURF(ILUOUT,'CHEAT_COIL',CHEAT_COIL,'IDEAL ','FINCAP')
00111 !
00112 IF (.NOT. OGARDEN) THEN
00113   IF (LGREENROOF) CALL ABOR1_SFX('ERROR: You cannot activate LGREENROOF if LGARDEN is FALSE')
00114   IF (LHYDRO    ) CALL ABOR1_SFX('ERROR: You cannot activate LHYDRO     if LGARDEN is FALSE')
00115 ENDIF
00116 !
00117 !-------------------------------------------------------------------------------
00118 !
00119 !*    4.      Number of points and packing
00120 !             ----------------------------
00121 !
00122  CALL GET_SURF_SIZE_n('TOWN  ',NDIM)
00123 !
00124 ALLOCATE(LCOVER     (JPCOVER))
00125 ALLOCATE(XCOVER     (NDIM,JPCOVER))
00126 ALLOCATE(XZS        (NDIM))
00127 ALLOCATE(XLAT       (NDIM))
00128 ALLOCATE(XLON       (NDIM))
00129 ALLOCATE(XMESH_SIZE (NDIM))
00130 !
00131  CALL PACK_PGD(HPROGRAM, 'TOWN  ',                    &
00132                 CGRID,  XGRID_PAR,                   &
00133                 LCOVER, XCOVER, XZS,                 &
00134                 XLAT, XLON, XMESH_SIZE               )  
00135 !
00136 !-------------------------------------------------------------------------------
00137 !
00138 !*    5.      TEB specific fields
00139 !             -------------------
00140 !
00141 LECOCLIMAP = OECOCLIMAP
00142  CALL PGD_TEB_PAR(HPROGRAM,OGARDEN,LGREENROOF,CBLD_ATYPE)
00143 !
00144 !-------------------------------------------------------------------------------
00145 !
00146 !*    6.      Prints of cover parameters in a tex file
00147 !             ----------------------------------------
00148 !
00149 IF (OECOCLIMAP) CALL WRITE_COVER_TEX_TEB
00150 !
00151 !
00152 !-------------------------------------------------------------------------------
00153 !
00154 !*    7.      Case of urban green areas (and hydrology)
00155 !             -----------------------------------------
00156 !
00157 LGARDEN       = OGARDEN
00158 !
00159 IF (LGARDEN) CALL PGD_TEB_VEG(HPROGRAM)
00160 !
00161 !-------------------------------------------------------------------------------
00162 !
00163 !*    8.      Case of Building Energy Model
00164 !             -----------------------------
00165 !
00166 IF (CBEM .EQ. 'BEM') CALL PGD_BEM_PAR(HPROGRAM,LAUTOSIZE)
00167 !
00168 IF (LHOOK) CALL DR_HOOK('PGD_TEB',1,ZHOOK_HANDLE)
00169 !
00170 !-------------------------------------------------------------------------------
00171 !
00172 END SUBROUTINE PGD_TEB