SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/pgd_surf_atm.F90
Go to the documentation of this file.
00001 !     ###########################################################
00002       SUBROUTINE PGD_SURF_ATM(HPROGRAM,HFILE,HFILETYPE,OZS)
00003 !     ###########################################################
00004 !!
00005 !!    PURPOSE
00006 !!    -------
00007 !!   This program prepares the physiographic data fields.
00008 !!
00009 !!    METHOD
00010 !!    ------
00011 !!   
00012 !!    EXTERNAL
00013 !!    --------
00014 !!
00015 !!
00016 !!    IMPLICIT ARGUMENTS
00017 !!    ------------------
00018 !!
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!    AUTHOR
00024 !!    ------
00025 !!
00026 !!    V. Masson                   Meteo-France
00027 !!
00028 !!    MODIFICATION
00029 !!    ------------
00030 !!
00031 !!    Original     13/10/03
00032 !!      A. Lemonsu      05/2009         Ajout de la clef LGARDEN pour TEB
00033 !----------------------------------------------------------------------------
00034 !
00035 !*    0.     DECLARATION
00036 !            -----------
00037 !
00038 USE MODD_SURF_CONF,       ONLY : CPROGNAME
00039 USE MODD_PGD_GRID,        ONLY : LLATLONMASK
00040 USE MODD_SURF_ATM_n,      ONLY : CNATURE, CSEA, CWATER, CTOWN,     &
00041                                  XSEA, XWATER,                     &
00042                                  NDIM_NATURE, NDIM_SEA,            &
00043                                  NDIM_TOWN,NDIM_WATER,             &
00044                                  LECOCLIMAP, LWATER_TO_NATURE,     &
00045                                  LTOWN_TO_ROCK, LGARDEN, NDIM_FULL,&
00046                                  NSIZE_FULL
00047 USE MODD_SURF_ATM_GRID_n, ONLY : CGRID, XGRID_PAR, NGRID_PAR, XLAT, &
00048                                  XLON, XMESH_SIZE, XJPDIR   
00049 USE MODD_CH_SURF_n,       ONLY : LCH_EMIS, LRW_CH_EMIS, CCH_EMIS
00050 !
00051 USE MODI_GET_LUOUT
00052 USE MODI_READ_PGD_ARRANGE_COVER
00053 USE MODI_READ_PGD_COVER_GARDEN
00054 USE MODI_INI_DATA_COVER
00055 USE MODI_READ_PGD_SCHEMES
00056 USE MODI_READ_NAM_WRITE_COVER_TEX
00057 USE MODI_WRITE_COVER_TEX_START
00058 USE MODI_WRITE_COVER_TEX_COVER
00059 USE MODI_LATLON_GRID
00060 USE MODI_PUT_PGD_GRID
00061 USE MODI_LATLONMASK
00062 USE MODI_PGD_GAUSS_INDEX
00063 USE MODI_PGD_FRAC
00064 USE MODI_PGD_COVER
00065 USE MODI_PGD_OROGRAPHY
00066 USE MODI_PGD_NATURE
00067 USE MODI_PGD_TOWN
00068 USE MODI_PGD_INLAND_WATER
00069 USE MODI_PGD_SEA
00070 USE MODI_PGD_DUMMY
00071 USE MODI_PGD_CHEMISTRY
00072 USE MODI_PGD_CHEMISTRY_SNAP
00073 USE MODI_WRITE_COVER_TEX_END
00074 USE MODI_INIT_READ_DATA_COVER
00075 !
00076 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00077 USE PARKIND1  ,ONLY : JPRB
00078 !
00079 !
00080 IMPLICIT NONE
00081 !
00082 !*    0.1    Declaration of dummy arguments
00083 !            ------------------------------
00084 !
00085  CHARACTER(LEN=6),     INTENT(IN)  :: HPROGRAM ! program calling
00086  CHARACTER(LEN=28),    INTENT(IN)  :: HFILE    ! atmospheric file name
00087  CHARACTER(LEN=6),     INTENT(IN)  :: HFILETYPE! atmospheric file type
00088 LOGICAL,              INTENT(IN)  :: OZS      ! .true. if orography is imposed by atm. model
00089 !
00090 !*    0.2    Declaration of local variables
00091 !            ------------------------------
00092 !
00093 INTEGER :: ILUOUT ! logical unit of output listing file
00094 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00095 !------------------------------------------------------------------------------
00096 IF (LHOOK) CALL DR_HOOK('PGD_SURF_ATM',0,ZHOOK_HANDLE)
00097 CPROGNAME=HPROGRAM
00098 !
00099  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00100 !
00101 !*    1.      Set default constant values 
00102 !             ---------------------------
00103 !
00104  CALL READ_PGD_ARRANGE_COVER(HPROGRAM,LWATER_TO_NATURE,LTOWN_TO_ROCK)
00105 !
00106  CALL READ_PGD_COVER_GARDEN(HPROGRAM,LGARDEN)
00107 !
00108  CALL INIT_READ_DATA_COVER(HPROGRAM)
00109 !
00110  CALL INI_DATA_COVER
00111 !
00112 !*    1.2     surface schemes
00113  CALL READ_PGD_SCHEMES(HPROGRAM,CNATURE,CSEA,CTOWN,CWATER)
00114 !
00115 !*    1.3     prints all parameters in a Latex file
00116  CALL READ_NAM_WRITE_COVER_TEX(HPROGRAM)
00117 !
00118  CALL WRITE_COVER_TEX_START(HPROGRAM)
00119  CALL WRITE_COVER_TEX_COVER
00120 !-------------------------------------------------------------------------------
00121 !
00122 !*    2.      Grid
00123 !             ----
00124 !
00125 ALLOCATE(XLAT(NSIZE_FULL))
00126 ALLOCATE(XLON(NSIZE_FULL))
00127 ALLOCATE(XMESH_SIZE(NSIZE_FULL))
00128 ALLOCATE(XJPDIR(NSIZE_FULL))
00129  CALL LATLON_GRID(CGRID,NGRID_PAR,NSIZE_FULL,ILUOUT,XGRID_PAR,XLAT,XLON,XMESH_SIZE,XJPDIR)
00130 !
00131 !
00132 !*    2.3     Stores the grid in the module MODD_PGD_GRID
00133 !
00134  CALL PUT_PGD_GRID(CGRID,NSIZE_FULL,NGRID_PAR,XGRID_PAR)
00135 !
00136 !*    2.4     mask to limit the number of input data to read
00137  CALL LATLONMASK      (CGRID,NGRID_PAR,XGRID_PAR,LLATLONMASK)
00138 !
00139 !*    2.5     gaussien grid mesh index
00140 !
00141 IF(CGRID=='GAUSS') CALL PGD_GAUSS_INDEX(HPROGRAM,OZS)
00142 !
00143 !-------------------------------------------------------------------------------
00144 !
00145 !*    3.      surface cover
00146 !             -------------
00147 !
00148  CALL PGD_FRAC(HPROGRAM,LECOCLIMAP)
00149 IF (LECOCLIMAP) CALL PGD_COVER(HPROGRAM)
00150 !
00151 !-------------------------------------------------------------------------------
00152 !
00153 !*    4.      Orography
00154 !             ---------
00155 !
00156  CALL PGD_OROGRAPHY(HPROGRAM,XSEA,XWATER,HFILE,HFILETYPE,OZS)
00157 !
00158 !_______________________________________________________________________________
00159 !
00160 !*    5.      Additionnal fields for nature scheme
00161 !             ------------------------------------
00162 !
00163 IF (NDIM_NATURE>0) CALL PGD_NATURE(HPROGRAM,LECOCLIMAP)  
00164 !_______________________________________________________________________________
00165 !
00166 !*    6.      Additionnal fields for town scheme
00167 !             ----------------------------------
00168 !
00169 IF (NDIM_TOWN>0) CALL PGD_TOWN(HPROGRAM,LECOCLIMAP,LGARDEN)  
00170 !_______________________________________________________________________________
00171 !
00172 !*    7.      Additionnal fields for inland water scheme
00173 !             ------------------------------------------
00174 !
00175 IF (NDIM_WATER>0) CALL PGD_INLAND_WATER(HPROGRAM)   
00176 !_______________________________________________________________________________
00177 !
00178 !*    8.      Additionnal fields for sea scheme
00179 !             ---------------------------------
00180 !
00181 IF (NDIM_SEA>0) CALL PGD_SEA(HPROGRAM)  
00182 !
00183 !_______________________________________________________________________________
00184 !
00185 !*    9.      Dummy fields
00186 !             ------------
00187 !
00188  CALL PGD_DUMMY(HPROGRAM)
00189 !_______________________________________________________________________________
00190 !
00191 !*   10.      Chemical Emission fields
00192 !             ------------------------
00193 !
00194  CALL READ_NAM_PGD_CHEMISTRY(HPROGRAM,CCH_EMIS)
00195 IF (CCH_EMIS=='SNAP') THEN
00196   CALL PGD_CHEMISTRY_SNAP(HPROGRAM,LCH_EMIS)
00197 ELSE IF (CCH_EMIS=='AGGR') THEN
00198   CALL PGD_CHEMISTRY(HPROGRAM,LCH_EMIS)
00199   LRW_CH_EMIS = .FALSE.
00200 ENDIF
00201 !_______________________________________________________________________________
00202 !
00203 !*   11.     Writing in cover latex file
00204 !            ---------------------------
00205 !
00206  CALL WRITE_COVER_TEX_END(HPROGRAM)
00207 IF (LHOOK) CALL DR_HOOK('PGD_SURF_ATM',1,ZHOOK_HANDLE)
00208 !_______________________________________________________________________________
00209 !
00210 END SUBROUTINE PGD_SURF_ATM