SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
pgd_surf_atm.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ###########################################################
6  SUBROUTINE pgd_surf_atm (YSC, &
7  hprogram,hfile,hfiletype,ozs)
8 ! ###########################################################
9 !!
10 !! PURPOSE
11 !! -------
12 !! This program prepares the physiographic data fields.
13 !!
14 !! METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! V. Masson Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 13/10/03
37 !! A. Lemonsu 05/2009 Ajout de la clef LGARDEN pour TEB
38 !! J. Escobar 11/2013 Add USE MODI_READ_NAM_PGD_CHEMISTRY
39 !! B. Decharme 02/2014 Add LRM_RIVER
40 !----------------------------------------------------------------------------
41 !
42 !* 0. DECLARATION
43 ! -----------
44 !
45 !
46 USE modd_surfex_n, ONLY : surfex_t
47 !
48 USE modd_surf_conf, ONLY : cprogname
49 USE modd_pgd_grid, ONLY : llatlonmask
50 !
51 USE modi_get_luout
52 USE modi_read_pgd_arrange_cover
53 USE modi_read_pgd_cover_garden
54 USE modi_ini_data_cover
55 USE modi_read_pgd_schemes
56 USE modi_read_nam_pgd_chemistry
57 USE modi_read_nam_write_cover_tex
58 USE modi_write_cover_tex_start
59 USE modi_write_cover_tex_cover
60 USE modi_latlon_grid
61 USE modi_put_pgd_grid
62 USE modi_latlonmask
63 USE modi_pgd_frac
64 USE modi_pgd_cover
65 USE modi_pgd_orography
66 USE modi_pgd_nature
67 USE modi_pgd_town
68 USE modi_pgd_inland_water
69 USE modi_pgd_sea
70 USE modi_pgd_dummy
71 USE modi_pgd_chemistry
72 USE modi_pgd_chemistry_snap
73 USE modi_write_cover_tex_end
74 USE modi_init_read_data_cover
75 !
76 USE yomhook ,ONLY : lhook, dr_hook
77 USE parkind1 ,ONLY : jprb
78 !
79 !
80 IMPLICIT NONE
81 !
82 !* 0.1 Declaration of dummy arguments
83 ! ------------------------------
84 !
85 !
86 TYPE(surfex_t), INTENT(INOUT) :: ysc
87 !
88  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling
89  CHARACTER(LEN=28), INTENT(IN) :: hfile ! atmospheric file name
90  CHARACTER(LEN=6), INTENT(IN) :: hfiletype! atmospheric file type
91 LOGICAL, INTENT(IN) :: ozs ! .true. if orography is imposed by atm. model
92 !
93 !* 0.2 Declaration of local variables
94 ! ------------------------------
95 !
96 LOGICAL :: lrm_river !delete inland river coverage. Default is false
97 !
98 INTEGER :: iluout ! logical unit of output listing file
99 !
100 REAL(KIND=JPRB) :: zhook_handle
101 !
102 !------------------------------------------------------------------------------
103 IF (lhook) CALL dr_hook('PGD_SURF_ATM',0,zhook_handle)
104 !
105 lrm_river = .false.
106 !
107  cprogname=hprogram
108 !
109  CALL get_luout(hprogram,iluout)
110 !
111 !* 1. Set default constant values
112 ! ---------------------------
113 !
114  CALL read_pgd_arrange_cover(hprogram,ysc%U%LWATER_TO_NATURE,ysc%U%LTOWN_TO_ROCK)
115 !
116  CALL read_pgd_cover_garden(hprogram,ysc%U%LGARDEN)
117 !
118  CALL init_read_data_cover(hprogram)
119 !
120  CALL ini_data_cover(ysc%DTCO, ysc%U)
121 !
122 !* 1.2 surface schemes
123  CALL read_pgd_schemes(hprogram,ysc%U%CNATURE,ysc%U%CSEA,ysc%U%CTOWN,ysc%U%CWATER)
124 !
125 !* 1.3 prints all parameters in a Latex file
126  CALL read_nam_write_cover_tex(hprogram)
127 !
128  CALL write_cover_tex_start(hprogram)
129  CALL write_cover_tex_cover
130 !-------------------------------------------------------------------------------
131 !
132 !* 2. Grid
133 ! ----
134 !
135 ALLOCATE(ysc%UG%XLAT(ysc%U%NSIZE_FULL))
136 ALLOCATE(ysc%UG%XLON(ysc%U%NSIZE_FULL))
137 ALLOCATE(ysc%UG%XMESH_SIZE(ysc%U%NSIZE_FULL))
138 ALLOCATE(ysc%UG%XJPDIR(ysc%U%NSIZE_FULL))
139  CALL latlon_grid(ysc%UG%CGRID,ysc%UG%NGRID_PAR,ysc%U%NSIZE_FULL,iluout,&
140  ysc%UG%XGRID_PAR,ysc%UG%XLAT,ysc%UG%XLON,ysc%UG%XMESH_SIZE,ysc%UG%XJPDIR)
141 !
142 !
143 !* 2.3 Stores the grid in the module MODD_PGD_GRID
144 !
145  CALL put_pgd_grid(ysc%UG%CGRID,ysc%U%NSIZE_FULL,ysc%UG%NGRID_PAR,ysc%UG%XGRID_PAR)
146 !
147 !* 2.4 mask to limit the number of input data to read
148  CALL latlonmask(ysc%UG%CGRID,ysc%UG%NGRID_PAR,ysc%UG%XGRID_PAR,llatlonmask)
149 !
150 !-------------------------------------------------------------------------------
151 !
152 !* 3. surface cover
153 ! -------------
154 !
155  CALL pgd_frac(ysc%DTCO, ysc%UG, ysc%U, ysc%USS, &
156  hprogram,ysc%U%LECOCLIMAP)
157 IF (ysc%U%LECOCLIMAP) CALL pgd_cover(ysc%DGU, ysc%DTCO, ysc%UG, ysc%U, ysc%USS, &
158  hprogram,lrm_river)
159 !
160 !-------------------------------------------------------------------------------
161 !
162 !* 4. Orography
163 ! ---------
164 !
165  CALL pgd_orography(ysc%DGU, ysc%DTCO, ysc%UG, ysc%U, ysc%USS, &
166  hprogram,ysc%U%XSEA,ysc%U%XWATER,hfile,hfiletype,ozs)
167 !
168 !_______________________________________________________________________________
169 !
170 !* 5. Additionnal fields for nature scheme
171 ! ------------------------------------
172 !
173 IF (ysc%U%NDIM_NATURE>0) CALL pgd_nature(ysc%DTCO, ysc%IM%DTI, ysc%DTZ, ysc%DGU, ysc%IM%IG, &
174  ysc%IM%I, ysc%UG, ysc%U, ysc%USS, &
175  hprogram,ysc%U%LECOCLIMAP)
176 !_______________________________________________________________________________
177 !
178 !* 6. Additionnal fields for town scheme
179 ! ----------------------------------
180 !
181 IF (ysc%U%NDIM_TOWN>0) CALL pgd_town(ysc%DTCO, ysc%DGU, ysc%UG, ysc%U, ysc%USS, &
182  ysc%IM%DTI, ysc%TM, ysc%GDM, ysc%GRM, &
183  hprogram,ysc%U%LECOCLIMAP,ysc%U%LGARDEN)
184 !_______________________________________________________________________________
185 !
186 !* 7. Additionnal fields for inland water scheme
187 ! ------------------------------------------
188 !
189 IF (ysc%U%NDIM_WATER>0) CALL pgd_inland_water(ysc%DTCO, ysc%FM%FG, ysc%FM%F, ysc%UG, ysc%U, &
190  ysc%USS, ysc%WM%WG, ysc%WM%W, &
191  hprogram,ysc%U%LECOCLIMAP,lrm_river)
192 !_______________________________________________________________________________
193 !
194 !* 8. Additionnal fields for sea scheme
195 ! ---------------------------------
196 !
197 IF (ysc%U%NDIM_SEA>0) CALL pgd_sea(ysc%DTCO, ysc%SM%DTS, ysc%SM%SG, ysc%SM%S, ysc%UG, ysc%U, ysc%USS, &
198  hprogram)
199 !
200 !_______________________________________________________________________________
201 !
202 !* 9. Dummy fields
203 ! ------------
204 !
205  CALL pgd_dummy(ysc%DTCO, ysc%DUU, ysc%UG, ysc%U, ysc%USS, &
206  hprogram)
207 !_______________________________________________________________________________
208 !
209 !* 10. Chemical Emission fields
210 ! ------------------------
211 !
212  CALL read_nam_pgd_chemistry(hprogram,ysc%CHU%CCH_EMIS)
213 IF (ysc%CHU%CCH_EMIS=='SNAP') THEN
214  CALL pgd_chemistry_snap(ysc%CHN, ysc%DTCO, ysc%UG, ysc%U, ysc%USS, &
215  hprogram,ysc%CHU%LCH_EMIS)
216 ELSE IF (ysc%CHU%CCH_EMIS=='AGGR') THEN
217  CALL pgd_chemistry(ysc%CHE, ysc%DTCO, ysc%UG, ysc%U, ysc%USS, &
218  hprogram,ysc%CHU%LCH_EMIS)
219 ENDIF
220 !_______________________________________________________________________________
221 !
222 !* 11. Writing in cover latex file
223 ! ---------------------------
224 !
225  CALL write_cover_tex_end(hprogram)
226 IF (lhook) CALL dr_hook('PGD_SURF_ATM',1,zhook_handle)
227 !_______________________________________________________________________________
228 !
229 END SUBROUTINE pgd_surf_atm
subroutine write_cover_tex_end(HPROGRAM)
subroutine pgd_town(DTCO, DGU, UG, U, USS, DTI, TM, GDM, GRM, HPROGRAM, OECOCLIMAP, OGARDEN)
Definition: pgd_town.F90:6
subroutine latlonmask(HGRID, KGRID_PAR, PGRID_PAR, OLATLONMASK)
Definition: latlonmask.F90:6
subroutine pgd_chemistry_snap(CHN, DTCO, UG, U, USS, HPROGRAM, OCH_EMIS)
subroutine pgd_inland_water(DTCO, FG, F, UG, U, USS, WG, W, HPROGRAM, OECOCLIMAP, ORM_RIVER)
subroutine init_read_data_cover(HPROGRAM)
subroutine pgd_nature(DTCO, DTI, DTZ, DGU, IG, I, UG, U, USS, HPROGRAM, OECOCLIMAP)
Definition: pgd_nature.F90:6
subroutine latlon_grid(HGRID, KGRID_PAR, KL, KLUOUT, PGRID_PAR, PLAT, PLON, PMESH_SIZE, PDIR)
Definition: latlon_grid.F90:6
subroutine pgd_dummy(DTCO, DUU, UG, U, USS, HPROGRAM)
Definition: pgd_dummy.F90:6
subroutine pgd_surf_atm(YSC, HPROGRAM, HFILE, HFILETYPE, OZS)
Definition: pgd_surf_atm.F90:6
subroutine pgd_orography(DGU, DTCO, UG, U, USS, HPROGRAM, PSEA, PWATER, HFILE, HFILETYPE, OZS)
subroutine read_nam_pgd_chemistry(HPROGRAM, HCH_EMIS)
subroutine pgd_frac(DTCO, UG, U, USS, HPROGRAM, OECOCLIMAP)
Definition: pgd_frac.F90:6
subroutine read_pgd_cover_garden(HPROGRAM, OGARDEN)
subroutine pgd_chemistry(CHE, DTCO, UG, U, USS, HPROGRAM, OCH_EMIS)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine pgd_sea(DTCO, DTS, SG, S, UG, U, USS, HPROGRAM)
Definition: pgd_sea.F90:6
subroutine read_pgd_arrange_cover(HPROGRAM, OWATER_TO_NATURE, OTOWN_TO_ROCK)
subroutine read_pgd_schemes(HPROGRAM, HNATURE, HSEA, HTOWN, HWATER)
subroutine put_pgd_grid(HGRID, KSIZE_FULL, KGRID_PAR, PGRID_PAR)
Definition: put_pgd_grid.F90:6
subroutine write_cover_tex_start(HPROGRAM)
subroutine ini_data_cover(DTCO, U)
subroutine read_nam_write_cover_tex(HPROGRAM)
subroutine pgd_cover(DGU, DTCO, UG, U, USS, HPROGRAM, ORM_RIVER)
Definition: pgd_cover.F90:6