SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, IG, I, TM, GDM, GRM, &
7  hprogram,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype)
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 !!------------------------------------------------------------------
31 !
32 !
35 USE modd_surf_atm_n, ONLY : surf_atm_t
37 USE modd_isba_grid_n, ONLY : isba_grid_t
38 USE modd_isba_n, ONLY : isba_t
39 USE modd_surfex_n, ONLY : teb_model_t
42 !
43 USE modi_prep_hor_teb_field
44 USE modi_prep_ver_teb
45 USE modi_prep_output_grid
46 USE modi_get_luout
47 USE modi_prep_teb_canopy
48 USE modi_prep_teb_garden
49 USE modi_prep_teb_greenroof
50 USE modi_goto_wrapper_teb_patch
51 !
52 USE modn_prep_teb
53 !
54 USE modd_read_namelist, ONLY : lnam_read
55 !
56 USE modd_prep, ONLY : xzs_ls
57 !
58 USE modd_prep_teb_garden, ONLY : xwsnow_gd, xrsnow_gd, xtsnow_gd, xlwcsnow_gd, &
59  xagesnow_gd
60 !
61 USE modd_prep_teb_greenroof, ONLY : xwsnow_gr, xrsnow_gr, xtsnow_gr, xlwcsnow_gr, &
62  xagesnow_gr
63 !
64 USE modd_surf_atm, ONLY : lvertshift
65 !
66 !
67 !
68 USE yomhook ,ONLY : lhook, dr_hook
69 USE parkind1 ,ONLY : jprb
70 !
71 USE modi_clean_prep_output_grid
72 !
73 IMPLICIT NONE
74 !
75 !* 0.1 declarations of arguments
76 !
77 !
78 TYPE(data_cover_t), INTENT(INOUT) :: dtco
79 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
80 TYPE(surf_atm_t), INTENT(INOUT) :: u
81 TYPE(surf_atm_sso_t), INTENT(INOUT) :: uss
82 TYPE(isba_grid_t), INTENT(INOUT) :: ig
83 TYPE(isba_t), INTENT(INOUT) :: i
84 TYPE(teb_model_t), INTENT(INOUT) :: tm
85 TYPE(teb_garden_model_t), INTENT(INOUT) :: gdm
86 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: grm
87 !
88  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
89  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! name of the Atmospheric file
90  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! type of the Atmospheric file
91  CHARACTER(LEN=28), INTENT(IN) :: hpgdfile ! name of the Atmospheric file
92  CHARACTER(LEN=6), INTENT(IN) :: hpgdfiletype! type of the Atmospheric file
93 !
94 !* 0.2 declarations of local variables
95 !
96 INTEGER :: iluout
97 INTEGER :: jpatch ! TEB patch number
98 REAL(KIND=JPRB) :: zhook_handle
99 !-------------------------------------------------------------------------------------
100 !
101 !* 1. Default of configuration
102 !
103 !
104 IF (lhook) CALL dr_hook('PREP_TEB',0,zhook_handle)
105  CALL get_luout(hprogram,iluout)
106 !
107  CALL prep_output_grid(ug, u, &
108  iluout,tm%TG%CGRID,tm%TG%XGRID_PAR,tm%TG%XLAT,tm%TG%XLON)
109 !
110 !-------------------------------------------------------------------------------------
111 !
112 !* 2. Reading and horizontal interpolations
113 !
114 !
115 !* 2.0 Large scale orography
116 !
117  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
118  hprogram,'ZS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,1)
119 !
120 !* option for roads
121 !
122 tm%TOP%CROAD_DIR = croad_dir
123 tm%TOP%CWALL_OPT = cwall_opt
124 !
125 DO jpatch=1,tm%TOP%NTEB_PATCH
126  !
127  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
128  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jpatch)
129  !* 2.1 Water reservoirs
130  !
131  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
132  hprogram,'WS_ROOF',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
133  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
134  hprogram,'WS_ROAD',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
135  !
136  !* 2.2 Building temperature
137  !
138  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
139  hprogram,'TI_BLD ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
140  !
141  !* 2.3 Road deep temperature
142  !
143  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
144  hprogram,'TI_ROAD',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
145  !
146  !* 2.4 Temperature profiles
147  !
148  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
149  hprogram,'T_ROAD ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
150  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
151  hprogram,'T_WALLA',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
152  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
153  hprogram,'T_WALLB',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
154  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
155  hprogram,'T_ROOF ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
156  !
157  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
158  hprogram,'T_WIN1 ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
159  IF (tm%TOP%CBEM == 'BEM') THEN
160  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
161  hprogram,'QI_BLD ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
162  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
163  hprogram,'T_WIN2 ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
164  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
165  hprogram,'T_FLOOR',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
166  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
167  hprogram,'T_MASS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
168  ENDIF
169  !* 2.5 Snow variables
170  !
171  tm%T%CUR%TSNOW_ROOF%SCHEME='1-L'
172  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
173  hprogram,'SN_ROOF',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
174  tm%T%CUR%TSNOW_ROAD%SCHEME='1-L'
175  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
176  hprogram,'SN_ROAD',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
177  !
178  !* 2.6 Canyon air variables
179  !
180  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
181  hprogram,'T_CAN ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
182  CALL prep_hor_teb_field(tm%B, tm%BOP, dtco, ig, u, tm%TG, tm%T, tm%TOP, &
183  hprogram,'Q_CAN ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
184  !
185  !-------------------------------------------------------------------------------------
186  !
187  !* 3. Vertical interpolations of all variables
188  !
189  IF(lvertshift)THEN
190  CALL prep_ver_teb(tm%B, tm%T, tm%TOP)
191  ENDIF
192  !
193  !-------------------------------------------------------------------------------------
194  !
195  !* 4. Urban green areas
196  !
197 
198  IF (tm%TOP%LGARDEN) CALL prep_teb_garden(dtco, ug, u, uss, ig, i, &
199  tm%TG, tm%TOP, gdm, &
200  hprogram,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
201  IF (tm%TOP%LGREENROOF) CALL prep_teb_greenroof(dtco, ug, u, uss, ig, i, &
202  tm%TG, tm%T, tm%TOP, gdm%TVG, grm, &
203  hprogram,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype, jpatch)
204  !
205 ENDDO
206 !
207 DEALLOCATE(xwsnow_gd,xrsnow_gd,xtsnow_gd,xlwcsnow_gd,xagesnow_gd)
208 DEALLOCATE(xwsnow_gr,xrsnow_gr,xtsnow_gr,xlwcsnow_gr,xagesnow_gr)
209 !
210 !-------------------------------------------------------------------------------------
211 !
212 !* 5. Preparation of canopy air variables
213 !
214 tm%TOP%LCANOPY = lteb_canopy
215 IF (tm%TOP%LCANOPY) CALL prep_teb_canopy(tm%TCP, tm%TG)
216 !
217 DEALLOCATE(xzs_ls)
218 !
219 !-------------------------------------------------------------------------------------
221 IF (lhook) CALL dr_hook('PREP_TEB',1,zhook_handle)
222 !
223 !-------------------------------------------------------------------------------------
224 !
225 END SUBROUTINE prep_teb
subroutine prep_teb(DTCO, UG, U, USS, IG, I, TM, GDM, GRM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE)
Definition: prep_teb.F90:6
subroutine prep_hor_teb_field(B, BOP, DTCO, IG, U, TG, T, TOP, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH)
subroutine clean_prep_output_grid
subroutine prep_teb_greenroof(DTCO, UG, U, USS, IG, I, TG, T, TOP, TVG, GRM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH)
subroutine goto_wrapper_teb_patch(B, DGCT, DGMT, T, TGD, TGDPE, TGR, TGRPE, KTO_PATCH)
subroutine prep_teb_garden(DTCO, UG, U, USS, IG, I, TG, TOP, GDM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH)
subroutine prep_ver_teb(B, T, TOP)
Definition: prep_ver_teb.F90:6
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine prep_output_grid(UG, U, KLUOUT, HGRID, PGRID_PAR, PLAT, PLON)
subroutine prep_teb_canopy(TCP, TG)