1 !SURFEX_LIC Copyright 1994-2014 Meteo-France
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
5 ! ###########################################################
6 SUBROUTINE PGD_SURF_ATM(HPROGRAM,HFILE,HFILETYPE,OZS)
7 ! ###########################################################
11 !! This program prepares the physiographic data fields.
30 !! V. Masson Meteo-France
36 !! A. Lemonsu 05/2009 Ajout de la clef LGARDEN pour TEB
37 !! J. Escobar 11/2013 Add USE MODI_READ_NAM_PGD_CHEMISTRY
38 !----------------------------------------------------------------------------
43 USE MODD_SURF_CONF, ONLY : CPROGNAME
44 USE MODD_PGD_GRID, ONLY : LLATLONMASK
45 USE MODD_SURF_ATM_n, ONLY : CNATURE, CSEA, CWATER, CTOWN, &
47 NDIM_NATURE, NDIM_SEA, &
48 NDIM_TOWN,NDIM_WATER, &
49 LECOCLIMAP, LWATER_TO_NATURE, &
50 LTOWN_TO_ROCK, LGARDEN, NDIM_FULL,&
52 USE MODD_SURF_ATM_GRID_n, ONLY : CGRID, XGRID_PAR, NGRID_PAR, XLAT, &
53 XLON, XMESH_SIZE, XJPDIR
54 USE MODD_CH_SURF_n, ONLY : LCH_EMIS, CCH_EMIS
57 USE MODI_READ_PGD_ARRANGE_COVER
58 USE MODI_READ_PGD_COVER_GARDEN
59 USE MODI_INI_DATA_COVER
60 USE MODI_READ_PGD_SCHEMES
61 USE MODI_READ_NAM_WRITE_COVER_TEX
62 USE MODI_WRITE_COVER_TEX_START
63 USE MODI_WRITE_COVER_TEX_COVER
67 USE MODI_PGD_GAUSS_INDEX
70 USE MODI_PGD_OROGRAPHY
73 USE MODI_PGD_INLAND_WATER
76 USE MODI_PGD_CHEMISTRY
77 USE MODI_PGD_CHEMISTRY_SNAP
78 USE MODI_WRITE_COVER_TEX_END
79 USE MODI_INIT_READ_DATA_COVER
81 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
82 USE PARKIND1 ,ONLY : JPRB
84 USE MODI_READ_NAM_PGD_CHEMISTRY
88 !* 0.1 Declaration of dummy arguments
89 ! ------------------------------
91 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling
92 CHARACTER(LEN=28), INTENT(IN) :: HFILE ! atmospheric file name
93 CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE! atmospheric file type
94 LOGICAL, INTENT(IN) :: OZS ! .true. if orography is imposed by atm. model
96 !* 0.2 Declaration of local variables
97 ! ------------------------------
99 INTEGER :: ILUOUT ! logical unit of output listing file
100 REAL(KIND=JPRB) :: ZHOOK_HANDLE
101 !------------------------------------------------------------------------------
102 IF (LHOOK) CALL DR_HOOK('PGD_SURF_ATM',0,ZHOOK_HANDLE)
105 CALL GET_LUOUT(HPROGRAM,ILUOUT)
107 !* 1. Set default constant values
108 ! ---------------------------
110 CALL READ_PGD_ARRANGE_COVER(HPROGRAM,LWATER_TO_NATURE,LTOWN_TO_ROCK)
112 CALL READ_PGD_COVER_GARDEN(HPROGRAM,LGARDEN)
114 CALL INIT_READ_DATA_COVER(HPROGRAM)
118 !* 1.2 surface schemes
119 CALL READ_PGD_SCHEMES(HPROGRAM,CNATURE,CSEA,CTOWN,CWATER)
121 !* 1.3 prints all parameters in a Latex file
122 CALL READ_NAM_WRITE_COVER_TEX(HPROGRAM)
124 CALL WRITE_COVER_TEX_START(HPROGRAM)
125 CALL WRITE_COVER_TEX_COVER
126 !-------------------------------------------------------------------------------
131 ALLOCATE(XLAT(NSIZE_FULL))
132 ALLOCATE(XLON(NSIZE_FULL))
133 ALLOCATE(XMESH_SIZE(NSIZE_FULL))
134 ALLOCATE(XJPDIR(NSIZE_FULL))
135 CALL LATLON_GRID(CGRID,NGRID_PAR,NSIZE_FULL,ILUOUT,XGRID_PAR,XLAT,XLON,XMESH_SIZE,XJPDIR)
138 !* 2.3 Stores the grid in the module MODD_PGD_GRID
140 CALL PUT_PGD_GRID(CGRID,NSIZE_FULL,NGRID_PAR,XGRID_PAR)
142 !* 2.4 mask to limit the number of input data to read
143 CALL LATLONMASK (CGRID,NGRID_PAR,XGRID_PAR,LLATLONMASK)
145 !* 2.5 gaussien grid mesh index
147 IF(CGRID=='GAUSS') CALL PGD_GAUSS_INDEX(HPROGRAM,OZS)
149 !-------------------------------------------------------------------------------
154 CALL PGD_FRAC(HPROGRAM,LECOCLIMAP)
155 IF (LECOCLIMAP) CALL PGD_COVER(HPROGRAM)
157 !-------------------------------------------------------------------------------
162 CALL PGD_OROGRAPHY(HPROGRAM,XSEA,XWATER,HFILE,HFILETYPE,OZS)
164 !_______________________________________________________________________________
166 !* 5. Additionnal fields for nature scheme
167 ! ------------------------------------
169 IF (NDIM_NATURE>0) CALL PGD_NATURE(HPROGRAM,LECOCLIMAP)
170 !_______________________________________________________________________________
172 !* 6. Additionnal fields for town scheme
173 ! ----------------------------------
175 IF (NDIM_TOWN>0) CALL PGD_TOWN(HPROGRAM,LECOCLIMAP,LGARDEN)
176 !_______________________________________________________________________________
178 !* 7. Additionnal fields for inland water scheme
179 ! ------------------------------------------
181 IF (NDIM_WATER>0) CALL PGD_INLAND_WATER(HPROGRAM)
182 !_______________________________________________________________________________
184 !* 8. Additionnal fields for sea scheme
185 ! ---------------------------------
187 IF (NDIM_SEA>0) CALL PGD_SEA(HPROGRAM)
189 !_______________________________________________________________________________
194 CALL PGD_DUMMY(HPROGRAM)
195 !_______________________________________________________________________________
197 !* 10. Chemical Emission fields
198 ! ------------------------
200 CALL READ_NAM_PGD_CHEMISTRY(HPROGRAM,CCH_EMIS)
201 IF (CCH_EMIS=='SNAP') THEN
202 CALL PGD_CHEMISTRY_SNAP(HPROGRAM,LCH_EMIS)
203 ELSE IF (CCH_EMIS=='AGGR') THEN
204 CALL PGD_CHEMISTRY(HPROGRAM,LCH_EMIS)
206 !_______________________________________________________________________________
208 !* 11. Writing in cover latex file
209 ! ---------------------------
211 CALL WRITE_COVER_TEX_END(HPROGRAM)
212 IF (LHOOK) CALL DR_HOOK('PGD_SURF_ATM',1,ZHOOK_HANDLE)
213 !_______________________________________________________________________________
215 END SUBROUTINE PGD_SURF_ATM