SURFEX v8.1
General documentation of Surfex
prep_teb.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 prep_teb (DTCO, UG, U, USS, GCP, TOP, BOP, NB, TG, SB, NT, GDM, GRM, &
7  HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,YDCTL)
8 ! #################################################################################
9 !
10 !!**** *PREP_TEB* - prepares TEB fields
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !!** METHOD
16 !! ------
17 !!
18 !! REFERENCE
19 !! ---------
20 !!
21 !!
22 !! AUTHOR
23 !! ------
24 !! V. Masson
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 01/2004
29 !! S. Riette 06/2009 PREP_TEB_CANOPY has no more argument
30 !! P. Marguinaud10/2014, Support for a 2-part PREP
31 !!------------------------------------------------------------------
32 !
35 USE modd_surf_atm_n, ONLY : surf_atm_t
36 USE modd_sso_n, ONLY : sso_t
38 !
41 USE modd_bem_n, ONLY : bem_np_t
42 USE modd_sfx_grid_n, ONLY : grid_t
43 USE modd_canopy_n, ONLY : canopy_t
44 USE modd_teb_n, ONLY : teb_np_t
46 !
47 USE mode_prep_ctl, ONLY : prep_ctl
48 !
49 USE modi_prep_hor_teb_field
50 USE modi_prep_ver_teb
51 USE modi_prep_output_grid
52 USE modi_get_luout
53 USE modi_prep_sbl
54 USE modi_prep_teb_garden
55 USE modi_prep_teb_greenroof
56 !
57 USE modn_prep_teb
58 !
59 USE modd_read_namelist, ONLY : lnam_read
60 !
61 USE modd_prep, ONLY : xzs_ls
62 !
63 USE modd_prep_teb_garden, ONLY : xwsnow_gd, xrsnow_gd, xtsnow_gd, xlwcsnow_gd, &
64  xagesnow_gd
65 !
66 USE modd_prep_teb_greenroof, ONLY : xwsnow_gr, xrsnow_gr, xtsnow_gr, xlwcsnow_gr, &
67  xagesnow_gr
68 !
69 USE modd_surf_atm, ONLY : lvertshift
70 !
71 USE yomhook ,ONLY : lhook, dr_hook
72 USE parkind1 ,ONLY : jprb
73 !
74 USE modi_clean_prep_output_grid
75 !
76 IMPLICIT NONE
77 !
78 !* 0.1 declarations of arguments
79 !
80 !
81 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
82 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
83 TYPE(surf_atm_t), INTENT(INOUT) :: U
84 TYPE(sso_t), INTENT(INOUT) :: USS
85 TYPE(grid_conf_proj_t),INTENT(INOUT) :: GCP
86 !
87 TYPE(teb_options_t), INTENT(INOUT) :: TOP
88 TYPE(bem_options_t), INTENT(INOUT) :: BOP
89 TYPE(bem_np_t), INTENT(INOUT) :: NB
90 TYPE(grid_t), INTENT(INOUT) :: TG
91 TYPE(canopy_t), INTENT(INOUT) :: SB
92 TYPE(teb_np_t), INTENT(INOUT) :: NT
93 TYPE(teb_garden_model_t), INTENT(INOUT) :: GDM
94 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: GRM
95 !
96 type(prep_ctl), INTENT(INOUT) :: ydctl
97 !
98  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
99  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! name of the Atmospheric file
100  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file
101  CHARACTER(LEN=28), INTENT(IN) :: HPGDFILE ! name of the Atmospheric file
102  CHARACTER(LEN=6), INTENT(IN) :: HPGDFILETYPE! type of the Atmospheric file
103 !
104 !* 0.2 declarations of local variables
105 !
106 INTEGER :: ILUOUT
107 INTEGER :: JP ! TEB patch number
108 REAL(KIND=JPRB) :: ZHOOK_HANDLE
109 !-------------------------------------------------------------------------------------
110 !
111 !* 1. Default of configuration
112 !
113 !
114 IF (lhook) CALL dr_hook('PREP_TEB',0,zhook_handle)
115  CALL get_luout(hprogram,iluout)
116 !
117  CALL prep_output_grid(ug%G, tg, u%NSIZE_FULL, iluout)
118 !
119 !-------------------------------------------------------------------------------------
120 !
121 !* 2. Reading and horizontal interpolations
122 !
123 !
124 !
125 !* option for roads
126 !
127 top%CROAD_DIR = croad_dir
128 top%CWALL_OPT = cwall_opt
129 !
130 DO jp=1,top%NTEB_PATCH
131  !
132  !* 2.0 Large scale orography
133  !
134  IF (jp==1) &
135  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
136  hprogram,'ZS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,1,ydctl)
137 
138 
139  !* 2.1 Water reservoirs
140  !
141  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
142  hprogram,'WS_ROOF',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
143  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
144  hprogram,'WS_ROAD',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
145  !
146  !* 2.2 Building temperature
147  !
148  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
149  hprogram,'TI_BLD ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
150  !
151  !* 2.3 Road deep temperature
152  !
153  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
154  hprogram,'TI_ROAD',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
155  !
156  !* 2.4 Temperature profiles
157  !
158  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
159  hprogram,'T_ROAD ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
160  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
161  hprogram,'T_WALLA',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
162  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
163  hprogram,'T_WALLB',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
164  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
165  hprogram,'T_ROOF ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
166  !
167  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
168  hprogram,'T_WIN1 ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
169  IF (top%CBEM == 'BEM') THEN
170  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
171  hprogram,'QI_BLD ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
172  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
173  hprogram,'T_WIN2 ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
174  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
175  hprogram,'T_FLOOR',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
176  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
177  hprogram,'T_MASS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
178  ENDIF
179  !* 2.5 Snow variables
180  !
181  nt%AL(jp)%TSNOW_ROOF%SCHEME='1-L'
182  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
183  hprogram,'SN_ROOF',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
184  nt%AL(jp)%TSNOW_ROAD%SCHEME='1-L'
185  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
186  hprogram,'SN_ROAD',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
187  !
188  !* 2.6 Canyon air variables
189  !
190  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
191  hprogram,'T_CAN ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
192  CALL prep_hor_teb_field(nb%AL(jp), bop, dtco, u, gcp, tg, nt%AL(jp), top, &
193  hprogram,'Q_CAN ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
194  !
195  !-------------------------------------------------------------------------------------
196  !
197  !* 3. Vertical interpolations of all variables
198  !
199  IF(lvertshift)THEN
200  CALL prep_ver_teb(nb%AL(jp), nt%AL(jp), top%XZS, top%CBEM)
201  ENDIF
202  !
203  !-------------------------------------------------------------------------------------
204  !
205  !* 4. Urban green areas
206  !
207 
208  IF (top%LGARDEN) CALL prep_teb_garden(dtco, ug, u, uss, gcp, tg, top, &
209  gdm%O, gdm%S, gdm%K, gdm%P, gdm%NPE%AL(jp), &
210  hprogram,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
211  IF (top%LGREENROOF) THEN
212  CALL prep_teb_greenroof(dtco, ug, u, uss, gcp, tg, top, grm%O, grm%S, grm%K, grm%P, grm%NPE%AL(jp), &
213  hprogram,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jp,ydctl)
214  !
215  ! Initializing deep GR temp. with that of the outer layer of the structural roof
216  !
217  grm%K%XTDEEP(:) = nt%AL(jp)%XT_ROOF(:,1)
218  !
219  ENDIF
220  !
221 ENDDO
222 !
223 DEALLOCATE(xwsnow_gd,xrsnow_gd,xtsnow_gd,xlwcsnow_gd,xagesnow_gd)
224 DEALLOCATE(xwsnow_gr,xrsnow_gr,xtsnow_gr,xlwcsnow_gr,xagesnow_gr)
225 !
226 !-------------------------------------------------------------------------------------
227 !
228 !* 5. Preparation of canopy air variables
229 !
230 top%LCANOPY = lteb_canopy
231 IF (top%LCANOPY) CALL prep_sbl(tg%NDIM, sb)
232 !
233 IF (ydctl%LPART5) THEN
234  DEALLOCATE(xzs_ls)
235 ENDIF
236 !
237 !-------------------------------------------------------------------------------------
239 IF (lhook) CALL dr_hook('PREP_TEB',1,zhook_handle)
240 !
241 !
242 !-------------------------------------------------------------------------------------
243 !
244 END SUBROUTINE prep_teb
subroutine prep_sbl(KDIM, SB)
Definition: prep_sbl.F90:7
subroutine clean_prep_output_grid
real, dimension(:), allocatable xzs_ls
Definition: modd_prep.F90:45
subroutine prep_teb_greenroof(DTCO, UG, U, USS, GCP, TG, TOP, IO, S, K, P, PEK, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
subroutine prep_hor_teb_field(B, BOP, DTCO, U, GCP, G, T, TOP, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
integer, parameter jprb
Definition: parkind1.F90:32
character(len=4) cwall_opt
subroutine prep_output_grid(UG, G, KSIZE_FULL, KLUOUT)
subroutine prep_teb_garden(DTCO, UG, U, USS, GCP, TG, TOP, IO, S, K, P, PEK, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
logical lteb_canopy
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine prep_ver_teb(B, T, PZS, HBEM)
Definition: prep_ver_teb.F90:7
logical lvertshift
subroutine prep_teb(DTCO, UG, U, USS, GCP, TOP, BOP, NB, TG, SB, NT, GDM, GRM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
Definition: prep_teb.F90:8
character(len=4) croad_dir