SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_pgd_tebn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_PGD_TEB_n(HPROGRAM)
00003 !     #########################################
00004 !
00005 !!****  *READ_PGD_TEB_n* - reads TEB physiographic fields
00006 !!                       
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      V. Masson   *Meteo France*      
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    01/2003 
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODD_TYPE_DATE_SURF
00038 !
00039 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
00040 !
00041 USE MODD_TEB_n,          ONLY : XCOVER, XZS, CBEM,                     &
00042                                 NROOF_LAYER, NROAD_LAYER, NWALL_LAYER, &
00043                                 TTIME, LCOVER, LECOCLIMAP, NTEB_PATCH, &
00044                                 CBLD_ATYPE, LGARDEN,                   &
00045                                 LGREENROOF
00046 USE MODD_BEM_n,          ONLY : NFLOOR_LAYER, CCOOL_COIL, CHEAT_COIL, LAUTOSIZE
00047 USE MODD_TEB_GRID_n,     ONLY : XLAT, XLON, XMESH_SIZE, CGRID, XGRID_PAR, NDIM
00048 !
00049 !
00050 USE MODI_READ_SURF
00051 USE MODI_READ_GRID
00052 USE MODI_READ_LCOVER
00053 USE MODI_READ_PGD_TEB_PAR_n
00054 !
00055 !
00056 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00057 USE PARKIND1  ,ONLY : JPRB
00058 !
00059 USE MODI_GET_TYPE_DIM_n
00060 !
00061 USE MODI_READ_LECOCLIMAP
00062 !
00063 IMPLICIT NONE
00064 !
00065 !*       0.1   Declarations of arguments
00066 !              -------------------------
00067 !
00068  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! calling program
00069 !
00070 !*       0.2   Declarations of local variables
00071 !              -------------------------------
00072 !
00073 INTEGER           :: IRESP          ! Error code after redding
00074 !
00075  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00076 INTEGER           :: IVERSION
00077 INTEGER           :: IBUGFIX
00078 !
00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00080 !-------------------------------------------------------------------------------
00081 !
00082 !* 1D physical dimension
00083 !
00084 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_N',0,ZHOOK_HANDLE)
00085 YRECFM='SIZE_TOWN'
00086  CALL GET_TYPE_DIM_n('TOWN  ',NDIM)
00087 !
00088 !*       2.     Other dimension initializations:
00089 !               --------------------------------
00090 !
00091  CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP)
00092  CALL READ_SURF(HPROGRAM,'BUG',IBUGFIX,IRESP)
00093 !
00094 !* number of TEB patches
00095 !
00096 IF (IVERSION<7 .OR. IVERSION==7 .AND. IBUGFIX<=2) THEN
00097   NTEB_PATCH=1
00098 ELSE
00099   YRECFM='TEB_PATCH'
00100   CALL READ_SURF(HPROGRAM,YRECFM,NTEB_PATCH,IRESP)
00101 END IF
00102 !
00103 !* number of road and roof layers
00104 !
00105 YRECFM='ROAD_LAYER'
00106  CALL READ_SURF(HPROGRAM,YRECFM,NROAD_LAYER,IRESP)
00107 
00108 YRECFM='ROOF_LAYER'
00109  CALL READ_SURF(HPROGRAM,YRECFM,NROOF_LAYER,IRESP)
00110 
00111 YRECFM='WALL_LAYER'
00112  CALL READ_SURF(HPROGRAM,YRECFM,NWALL_LAYER,IRESP)
00113 !
00114 !
00115 !* type of averaging for Buildings (to allow ascendant compatibility)
00116 !* type of Building Energy Model
00117 !
00118 IF (IVERSION<7 .OR.( IVERSION==7 .AND. IBUGFIX<=2)) THEN
00119   CBLD_ATYPE='ARI'
00120   CBEM = 'DEF'
00121 ELSE
00122   YRECFM='BLD_ATYPE'
00123   CALL READ_SURF(HPROGRAM,YRECFM,CBLD_ATYPE,IRESP)
00124   YRECFM='BEM'
00125   CALL READ_SURF(HPROGRAM,YRECFM,CBEM,IRESP)
00126 END IF
00127 !
00128 IF (CBEM=="BEM") THEN
00129   YRECFM='FLOOR_LAYER'
00130   CALL READ_SURF(HPROGRAM,YRECFM,NFLOOR_LAYER,IRESP)
00131   YRECFM='COOL_COIL'
00132   CALL READ_SURF(HPROGRAM,YRECFM,CCOOL_COIL,IRESP)
00133   YRECFM='HEAT_COIL'
00134   CALL READ_SURF(HPROGRAM,YRECFM,CHEAT_COIL,IRESP)
00135   YRECFM='AUTOSIZE'
00136   CALL READ_SURF(HPROGRAM,YRECFM,LAUTOSIZE,IRESP)
00137 ENDIF
00138 !
00139 !* Case of urban green roofs
00140 !
00141 IF (LGARDEN) THEN
00142   IF (IVERSION<7 .OR.( IVERSION==7 .AND. IBUGFIX<=2)) THEN
00143     LGREENROOF = .FALSE.
00144   ELSE
00145     YRECFM='LGREENROOF'
00146     CALL READ_SURF(HPROGRAM,YRECFM,LGREENROOF,IRESP)
00147   END IF
00148 ENDIF
00149 !
00150 !
00151 !*       3.     Physiographic data fields:
00152 !               -------------------------
00153 !
00154 !* cover classes
00155 !
00156 ALLOCATE(LCOVER(JPCOVER))
00157  CALL READ_LCOVER(HPROGRAM,LCOVER)
00158 !
00159 ALLOCATE(XCOVER(NDIM,JPCOVER))
00160  CALL READ_SURF(HPROGRAM,'COVER',XCOVER(:,:),LCOVER,IRESP)
00161 !
00162 !* orography
00163 !
00164 ALLOCATE(XZS(NDIM))
00165 YRECFM='ZS'
00166  CALL READ_SURF(HPROGRAM,YRECFM,XZS(:),IRESP)
00167 !
00168 !
00169 !* latitude, longitude 
00170 !
00171 ALLOCATE(XLAT      (NDIM))
00172 ALLOCATE(XLON      (NDIM))
00173 ALLOCATE(XMESH_SIZE(NDIM))
00174  CALL READ_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP)
00175 !
00176 !
00177 !-------------------------------------------------------------------------------
00178 !
00179 !*       4.     Physiographic data fields not to be computed by ecoclimap
00180 !               ---------------------------------------------------------
00181 !
00182  CALL READ_LECOCLIMAP(HPROGRAM,LECOCLIMAP)
00183 !
00184  CALL READ_PGD_TEB_PAR_n(HPROGRAM,NDIM,'-')
00185 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_N',1,ZHOOK_HANDLE)
00186 !
00187 !
00188 !------------------------------------------------------------------------------
00189 !
00190 END SUBROUTINE READ_PGD_TEB_n