SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/alloc_diag_surf_atmn.F90
Go to the documentation of this file.
00001 !     #############################################################
00002       SUBROUTINE ALLOC_DIAG_SURF_ATM_n(HPROGRAM,KSW)
00003 !     #############################################################
00004 !
00005 !!    AUTHOR
00006 !!    ------
00007 !!      V. Masson   *Meteo France*      
00008 !!
00009 !!    MODIFICATIONS
00010 !!    -------------
00011 !!      Original    01/2004
00012 !!      Modified    01/2006 : sea flux parameterization.
00013 !!                  08/2009 : TIME_BUDGETC for all Tile
00014 !       B. decharme 09/2012 : XQS_TILE not initialize
00015 !-------------------------------------------------------------------------------
00016 !
00017 !*       0.    DECLARATIONS
00018 !              ------------
00019 !
00020 USE MODD_SURF_ATM_n,     ONLY : NSIZE_FULL, TTIME
00021 USE MODD_DATA_COVER_PAR, ONLY : NTILESFC
00022 USE MODD_SURF_PAR,       ONLY : XUNDEF
00023 USE MODD_DIAG_SURF_ATM_n,ONLY : XRN_TILE, XH_TILE, XLE_TILE, XGFLUX_TILE,         &
00024                                 XLEI_TILE, XRI_TILE, XCD_TILE, XCH_TILE, XCE_TILE,&
00025                                 XT2M_TILE, XTS_TILE, XQ2M_TILE, XHU2M_TILE,       &
00026                                 XZON10M_TILE, XMER10M_TILE, XQS_TILE,             &
00027                                 XZ0_TILE, XZ0H_TILE, XT2M_MIN_TILE, XT2M_MAX_TILE,&
00028                                 XSWD_TILE, XSWU_TILE, XSWBD_TILE, XSWBU_TILE,     &
00029                                 XLWD_TILE,XLWU_TILE, XFMU_TILE, XFMV_TILE,        &
00030                                 XAVG_RN, XAVG_H, XAVG_LE, XAVG_LEI,XAVG_GFLUX,    &
00031                                 XAVG_LEIC, XAVG_RI, XAVG_CD, XAVG_CH, XAVG_CE,    &
00032                                 XAVG_T2M, XAVG_TS, XAVG_Q2M, XAVG_HU2M,           &
00033                                 XAVG_ZON10M, XAVG_MER10M, XAVG_SFCO2,             &
00034                                 XAVG_T2M_MIN_ZS,XAVG_Q2M_MIN_ZS,XAVG_HU2M_MIN_ZS, &
00035                                 XPS,XRHOA, XDIAG_TRAD, XDIAG_EMIS, XAVG_QS,       &
00036                                 XAVG_Z0, XAVG_Z0H, XDIAG_UREF, XDIAG_ZREF,        &
00037                                 XAVG_SWD, XAVG_SWU, XAVG_LWD, XAVG_LWU,           &
00038                                 XAVG_SWBD, XAVG_SWBU, XAVG_FMU, XAVG_FMV,         &
00039                                 XSSO_FMU, XSSO_FMV,                               &
00040                                 TIME_BUDGETC, LSURF_BUDGETC, LRESET_BUDGETC,      &
00041                                 LREAD_BUDGETC, XAVG_RNC, XAVG_HC, XAVG_LEC,       &
00042                                 XAVG_GFLUXC, XAVG_SWDC, XAVG_SWUC, XAVG_LWDC,     &
00043                                 XAVG_LWUC, XAVG_FMUC, XAVG_FMVC, XRNC_TILE,       &
00044                                 XHC_TILE, XLEC_TILE, XGFLUXC_TILE, XSWDC_TILE,    &
00045                                 XSWUC_TILE, XLWDC_TILE, XLWUC_TILE, XFMUC_TILE,   &
00046                                 XFMVC_TILE, XAVG_T2M_MIN, XAVG_T2M_MAX,           &
00047                                 XLEIC_TILE, XHU2M_MIN_TILE, XAVG_HU2M_MIN,        &
00048                                 XHU2M_MAX_TILE, XAVG_HU2M_MAX, XWIND10M_TILE,     &
00049                                 XAVG_WIND10M, XWIND10M_MAX_TILE, XAVG_WIND10M_MAX
00050 
00051 !
00052 USE MODI_READ_SURF
00053 !
00054 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00055 USE PARKIND1  ,ONLY : JPRB
00056 !
00057 IMPLICIT NONE
00058 !
00059 !*       0.1   Declarations of arguments
00060 !              -------------------------
00061  CHARACTER(LEN=6),        INTENT(IN) :: HPROGRAM  ! program calling surf. schemes
00062 INTEGER,                 INTENT(IN) :: KSW       ! number of short-wave spectral bands
00063 !
00064 !*       0.2   Declarations of local variables
00065 !              -------------------------------
00066 !
00067 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00068  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
00069 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00070 !
00071 !-------------------------------------------------------------------------------
00072 !
00073 !
00074 ! Initialization: Outputs to atmosphere over each tile:
00075 !
00076 IF (LHOOK) CALL DR_HOOK('ALLOC_DIAG_SURF_ATM_N',0,ZHOOK_HANDLE)
00077 ALLOCATE(XRI_TILE     (NSIZE_FULL,NTILESFC))
00078 ALLOCATE(XCD_TILE     (NSIZE_FULL,NTILESFC))
00079 ALLOCATE(XCH_TILE     (NSIZE_FULL,NTILESFC))
00080 ALLOCATE(XCE_TILE     (NSIZE_FULL,NTILESFC))
00081 ALLOCATE(XRN_TILE     (NSIZE_FULL,NTILESFC))
00082 ALLOCATE(XH_TILE      (NSIZE_FULL,NTILESFC))
00083 ALLOCATE(XLE_TILE     (NSIZE_FULL,NTILESFC))
00084 ALLOCATE(XLEI_TILE    (NSIZE_FULL,NTILESFC))
00085 ALLOCATE(XGFLUX_TILE  (NSIZE_FULL,NTILESFC))
00086 ALLOCATE(XT2M_TILE    (NSIZE_FULL,NTILESFC))
00087 ALLOCATE(XTS_TILE     (NSIZE_FULL,NTILESFC))
00088 ALLOCATE(XT2M_MIN_TILE(NSIZE_FULL,NTILESFC))
00089 ALLOCATE(XT2M_MAX_TILE(NSIZE_FULL,NTILESFC))
00090 ALLOCATE(XQ2M_TILE    (NSIZE_FULL,NTILESFC))
00091 ALLOCATE(XHU2M_TILE   (NSIZE_FULL,NTILESFC))
00092 ALLOCATE(XHU2M_MIN_TILE(NSIZE_FULL,NTILESFC))
00093 ALLOCATE(XHU2M_MAX_TILE(NSIZE_FULL,NTILESFC))
00094 ALLOCATE(XZON10M_TILE (NSIZE_FULL,NTILESFC))
00095 ALLOCATE(XMER10M_TILE (NSIZE_FULL,NTILESFC))
00096 ALLOCATE(XQS_TILE     (NSIZE_FULL,NTILESFC))
00097 ALLOCATE(XZ0_TILE     (NSIZE_FULL,NTILESFC))
00098 ALLOCATE(XZ0H_TILE    (NSIZE_FULL,NTILESFC))
00099 ALLOCATE(XSWD_TILE    (NSIZE_FULL,NTILESFC))
00100 ALLOCATE(XSWU_TILE    (NSIZE_FULL,NTILESFC))
00101 ALLOCATE(XLWD_TILE    (NSIZE_FULL,NTILESFC))
00102 ALLOCATE(XLWU_TILE    (NSIZE_FULL,NTILESFC))
00103 ALLOCATE(XSWBD_TILE   (NSIZE_FULL,NTILESFC,KSW))
00104 ALLOCATE(XSWBU_TILE   (NSIZE_FULL,NTILESFC,KSW))
00105 ALLOCATE(XFMU_TILE    (NSIZE_FULL,NTILESFC))
00106 ALLOCATE(XFMV_TILE    (NSIZE_FULL,NTILESFC))
00107 ALLOCATE(XWIND10M_TILE(NSIZE_FULL,NTILESFC))
00108 ALLOCATE(XWIND10M_MAX_TILE(NSIZE_FULL,NTILESFC))
00109 !
00110 XRI_TILE      = XUNDEF
00111 XCD_TILE      = XUNDEF
00112 XCH_TILE      = XUNDEF
00113 XCE_TILE      = XUNDEF
00114 XRN_TILE      = XUNDEF
00115 XH_TILE       = XUNDEF
00116 XLE_TILE      = XUNDEF
00117 XLEI_TILE     = XUNDEF
00118 XGFLUX_TILE   = XUNDEF
00119 XT2M_TILE     = XUNDEF
00120 XTS_TILE      = XUNDEF
00121 XT2M_MIN_TILE = XUNDEF
00122 XT2M_MAX_TILE = XUNDEF
00123 XQ2M_TILE     = XUNDEF
00124 XHU2M_TILE    = XUNDEF
00125 XHU2M_MIN_TILE= XUNDEF
00126 XHU2M_MAX_TILE= XUNDEF
00127 XZON10M_TILE  = XUNDEF
00128 XMER10M_TILE  = XUNDEF
00129 XQS_TILE      = XUNDEF
00130 XZ0_TILE      = XUNDEF
00131 XZ0H_TILE     = XUNDEF
00132 XSWD_TILE     = XUNDEF
00133 XSWU_TILE     = XUNDEF
00134 XLWD_TILE     = XUNDEF
00135 XLWU_TILE     = XUNDEF
00136 XSWBD_TILE    = XUNDEF
00137 XSWBU_TILE    = XUNDEF
00138 XFMU_TILE     = XUNDEF
00139 XFMV_TILE     = XUNDEF
00140 XWIND10M_TILE = XUNDEF
00141 XWIND10M_MAX_TILE = XUNDEF
00142 !
00143 ! Initialization: aggregated fields
00144 !
00145 ALLOCATE(XAVG_RI     (NSIZE_FULL))
00146 ALLOCATE(XAVG_CD     (NSIZE_FULL))
00147 ALLOCATE(XAVG_CH     (NSIZE_FULL))
00148 ALLOCATE(XAVG_CE     (NSIZE_FULL))
00149 ALLOCATE(XAVG_RN     (NSIZE_FULL))
00150 ALLOCATE(XAVG_H      (NSIZE_FULL))
00151 ALLOCATE(XAVG_LE     (NSIZE_FULL))
00152 ALLOCATE(XAVG_LEI    (NSIZE_FULL))
00153 ALLOCATE(XAVG_GFLUX  (NSIZE_FULL))
00154 ALLOCATE(XAVG_T2M    (NSIZE_FULL))
00155 ALLOCATE(XAVG_TS     (NSIZE_FULL))
00156 ALLOCATE(XAVG_T2M_MIN(NSIZE_FULL))
00157 ALLOCATE(XAVG_T2M_MAX(NSIZE_FULL))
00158 ALLOCATE(XAVG_Q2M    (NSIZE_FULL))
00159 ALLOCATE(XAVG_HU2M   (NSIZE_FULL))
00160 ALLOCATE(XAVG_HU2M_MIN(NSIZE_FULL))
00161 ALLOCATE(XAVG_HU2M_MAX(NSIZE_FULL))
00162 ALLOCATE(XAVG_ZON10M (NSIZE_FULL))
00163 ALLOCATE(XAVG_MER10M (NSIZE_FULL))
00164 ALLOCATE(XAVG_SFCO2  (NSIZE_FULL))
00165 ALLOCATE(XAVG_T2M_MIN_ZS    (NSIZE_FULL))
00166 ALLOCATE(XAVG_Q2M_MIN_ZS    (NSIZE_FULL))
00167 ALLOCATE(XAVG_HU2M_MIN_ZS   (NSIZE_FULL))
00168 ALLOCATE(XPS                (NSIZE_FULL))
00169 ALLOCATE(XRHOA              (NSIZE_FULL))
00170 ALLOCATE(XAVG_QS     (NSIZE_FULL))
00171 ALLOCATE(XAVG_Z0     (NSIZE_FULL))
00172 ALLOCATE(XAVG_Z0H    (NSIZE_FULL))
00173 ALLOCATE(XAVG_SWD    (NSIZE_FULL))
00174 ALLOCATE(XAVG_SWU    (NSIZE_FULL))
00175 ALLOCATE(XAVG_LWD    (NSIZE_FULL))
00176 ALLOCATE(XAVG_LWU    (NSIZE_FULL))
00177 ALLOCATE(XAVG_SWBD   (NSIZE_FULL,KSW))
00178 ALLOCATE(XAVG_SWBU   (NSIZE_FULL,KSW))
00179 ALLOCATE(XAVG_FMU    (NSIZE_FULL))
00180 ALLOCATE(XAVG_FMV    (NSIZE_FULL))
00181 ALLOCATE(XSSO_FMU    (NSIZE_FULL))
00182 ALLOCATE(XSSO_FMV    (NSIZE_FULL))
00183 ALLOCATE(XAVG_WIND10M(NSIZE_FULL))
00184 ALLOCATE(XAVG_WIND10M_MAX(NSIZE_FULL))
00185 !
00186 ALLOCATE(XDIAG_UREF  (NSIZE_FULL))
00187 ALLOCATE(XDIAG_ZREF  (NSIZE_FULL))
00188 ALLOCATE(XDIAG_TRAD  (NSIZE_FULL))
00189 ALLOCATE(XDIAG_EMIS  (NSIZE_FULL))
00190 !
00191 XAVG_RI      = XUNDEF
00192 XAVG_CD      = XUNDEF
00193 XAVG_CH      = XUNDEF
00194 XAVG_CE      = XUNDEF
00195 XAVG_RN      = XUNDEF
00196 XAVG_H       = XUNDEF
00197 XAVG_LE      = XUNDEF
00198 XAVG_LEI     = XUNDEF
00199 XAVG_GFLUX   = XUNDEF
00200 XAVG_T2M     = XUNDEF
00201 XAVG_TS      = XUNDEF
00202 XAVG_T2M_MIN = XUNDEF
00203 XAVG_T2M_MAX = XUNDEF
00204 XAVG_Q2M     = XUNDEF
00205 XAVG_HU2M    = XUNDEF
00206 XAVG_HU2M_MIN= XUNDEF
00207 XAVG_HU2M_MAX= XUNDEF
00208 XAVG_ZON10M  = XUNDEF
00209 XAVG_MER10M  = XUNDEF
00210 XAVG_SFCO2   = XUNDEF
00211 XAVG_T2M_MIN_ZS     = XUNDEF
00212 XAVG_Q2M_MIN_ZS     = XUNDEF
00213 XAVG_HU2M_MIN_ZS    = XUNDEF
00214 XPS                 = XUNDEF
00215 XRHOA               = XUNDEF
00216 XAVG_QS      = XUNDEF
00217 XAVG_Z0      = XUNDEF
00218 XAVG_Z0H     = XUNDEF
00219 XAVG_SWD     = XUNDEF
00220 XAVG_SWU     = XUNDEF
00221 XAVG_LWD     = XUNDEF
00222 XAVG_LWU     = XUNDEF
00223 XAVG_SWBD    = XUNDEF
00224 XAVG_SWBU    = XUNDEF
00225 XAVG_FMU     = XUNDEF
00226 XAVG_FMV     = XUNDEF
00227 XSSO_FMU     = XUNDEF
00228 XSSO_FMV     = XUNDEF
00229 XAVG_WIND10M = XUNDEF
00230 XAVG_WIND10M_MAX = XUNDEF
00231 !
00232 XDIAG_UREF   = XUNDEF
00233 XDIAG_ZREF   = XUNDEF
00234 XDIAG_TRAD   = XUNDEF
00235 XDIAG_EMIS   = XUNDEF
00236 !
00237 IF (LSURF_BUDGETC) THEN
00238 !
00239   ALLOCATE(XRNC_TILE     (NSIZE_FULL,NTILESFC))
00240   ALLOCATE(XHC_TILE      (NSIZE_FULL,NTILESFC))
00241   ALLOCATE(XLEC_TILE     (NSIZE_FULL,NTILESFC))
00242   ALLOCATE(XLEIC_TILE    (NSIZE_FULL,NTILESFC))
00243   ALLOCATE(XGFLUXC_TILE  (NSIZE_FULL,NTILESFC))
00244   ALLOCATE(XSWDC_TILE    (NSIZE_FULL,NTILESFC))
00245   ALLOCATE(XSWUC_TILE    (NSIZE_FULL,NTILESFC))
00246   ALLOCATE(XLWDC_TILE    (NSIZE_FULL,NTILESFC))
00247   ALLOCATE(XLWUC_TILE    (NSIZE_FULL,NTILESFC))
00248   ALLOCATE(XFMUC_TILE    (NSIZE_FULL,NTILESFC))
00249   ALLOCATE(XFMVC_TILE    (NSIZE_FULL,NTILESFC))
00250 !
00251   XRNC_TILE      = XUNDEF
00252   XHC_TILE       = XUNDEF
00253   XLEC_TILE      = XUNDEF
00254   XLEIC_TILE     = XUNDEF
00255   XGFLUXC_TILE   = XUNDEF
00256   XSWDC_TILE     = XUNDEF
00257   XSWUC_TILE     = XUNDEF
00258   XLWDC_TILE     = XUNDEF
00259   XLWUC_TILE     = XUNDEF
00260   XFMUC_TILE     = XUNDEF
00261   XFMVC_TILE     = XUNDEF
00262 !
00263   ALLOCATE(XAVG_RNC     (NSIZE_FULL))
00264   ALLOCATE(XAVG_HC      (NSIZE_FULL))
00265   ALLOCATE(XAVG_LEC     (NSIZE_FULL))
00266   ALLOCATE(XAVG_LEIC    (NSIZE_FULL))
00267   ALLOCATE(XAVG_GFLUXC  (NSIZE_FULL))
00268   ALLOCATE(XAVG_SWDC    (NSIZE_FULL))
00269   ALLOCATE(XAVG_SWUC    (NSIZE_FULL))
00270   ALLOCATE(XAVG_LWDC    (NSIZE_FULL))
00271   ALLOCATE(XAVG_LWUC    (NSIZE_FULL))
00272   ALLOCATE(XAVG_FMUC    (NSIZE_FULL))
00273   ALLOCATE(XAVG_FMVC    (NSIZE_FULL))
00274 !
00275   YREC='BUDC'
00276   CALL READ_SURF(HPROGRAM,YREC,LREAD_BUDGETC,IRESP)
00277 !
00278   IF (.NOT. LREAD_BUDGETC) THEN
00279       TIME_BUDGETC = TTIME
00280       XAVG_RNC    = 0.0
00281       XAVG_HC     = 0.0
00282       XAVG_LEC    = 0.0
00283       XAVG_LEIC   = 0.0
00284       XAVG_GFLUXC = 0.0
00285       XAVG_SWDC   = 0.0
00286       XAVG_SWUC   = 0.0
00287       XAVG_LWDC   = 0.0
00288       XAVG_LWUC   = 0.0
00289       XAVG_FMUC   = 0.0
00290       XAVG_FMVC   = 0.0      
00291   ELSEIF (LREAD_BUDGETC.AND.LRESET_BUDGETC) THEN
00292       TIME_BUDGETC = TTIME
00293       XAVG_RNC    = 0.0
00294       XAVG_HC     = 0.0
00295       XAVG_LEC    = 0.0
00296       XAVG_LEIC   = 0.0
00297       XAVG_GFLUXC = 0.0
00298       XAVG_SWDC   = 0.0
00299       XAVG_SWUC   = 0.0
00300       XAVG_LWDC   = 0.0
00301       XAVG_LWUC   = 0.0
00302       XAVG_FMUC   = 0.0
00303       XAVG_FMVC   = 0.0       
00304   ELSE
00305       YREC='TIME_BUDC'
00306       CALL READ_SURF(HPROGRAM,YREC,TIME_BUDGETC,IRESP)
00307      YREC='RNC'
00308      CALL READ_SURF(HPROGRAM,YREC,XAVG_RNC,IRESP)
00309      YREC='HC'
00310      CALL READ_SURF(HPROGRAM,YREC,XAVG_HC ,IRESP)
00311      YREC='LEC'
00312      CALL READ_SURF(HPROGRAM,YREC,XAVG_LEC,IRESP)
00313      YREC='LEIC'
00314      CALL READ_SURF(HPROGRAM,YREC,XAVG_LEIC,IRESP)     
00315      YREC='GFLUXC'
00316      CALL READ_SURF(HPROGRAM,YREC,XAVG_GFLUXC ,IRESP)
00317      YREC='SWDC'
00318      CALL READ_SURF(HPROGRAM,YREC,XAVG_SWDC,IRESP)
00319      YREC='SWUC'
00320      CALL READ_SURF(HPROGRAM,YREC,XAVG_SWUC,IRESP)
00321      YREC='LWDC'
00322      CALL READ_SURF(HPROGRAM,YREC,XAVG_LWDC,IRESP)
00323      YREC='LWUC'
00324      CALL READ_SURF(HPROGRAM,YREC,XAVG_LWUC,IRESP)
00325      YREC='FMUC'
00326      CALL READ_SURF(HPROGRAM,YREC,XAVG_FMUC,IRESP)
00327      YREC='FMVC'
00328      CALL READ_SURF(HPROGRAM,YREC,XAVG_FMVC,IRESP)      
00329   ENDIF
00330 !
00331 ELSE
00332 !
00333   ALLOCATE(XRNC_TILE     (0,0))
00334   ALLOCATE(XHC_TILE      (0,0))
00335   ALLOCATE(XLEC_TILE     (0,0))
00336   ALLOCATE(XLEIC_TILE    (0,0))
00337   ALLOCATE(XGFLUXC_TILE  (0,0))
00338   ALLOCATE(XSWDC_TILE    (0,0))
00339   ALLOCATE(XSWUC_TILE    (0,0))
00340   ALLOCATE(XLWDC_TILE    (0,0))
00341   ALLOCATE(XLWUC_TILE    (0,0))
00342   ALLOCATE(XFMUC_TILE    (0,0))
00343   ALLOCATE(XFMVC_TILE    (0,0))
00344 !
00345   ALLOCATE(XAVG_RNC     (0))
00346   ALLOCATE(XAVG_HC      (0))
00347   ALLOCATE(XAVG_LEC     (0))
00348   ALLOCATE(XAVG_LEIC    (0))
00349   ALLOCATE(XAVG_GFLUXC  (0))
00350   ALLOCATE(XAVG_SWDC    (0))
00351   ALLOCATE(XAVG_SWUC    (0))
00352   ALLOCATE(XAVG_LWDC    (0))
00353   ALLOCATE(XAVG_LWUC    (0))
00354   ALLOCATE(XAVG_FMUC    (0))
00355   ALLOCATE(XAVG_FMVC    (0))
00356 !
00357 ENDIF
00358 IF (LHOOK) CALL DR_HOOK('ALLOC_DIAG_SURF_ATM_N',1,ZHOOK_HANDLE)
00359 !
00360 !-------------------------------------------------------------------------------
00361 !
00362 END SUBROUTINE ALLOC_DIAG_SURF_ATM_n