SURFEX v7.3
General documentation of Surfex
|
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