Juan 13/01/2014: add header SURFEX_LIC to all SURFEX files
[MNH-git_open_source-lfs.git] / src / SURFEX / diag_misc_teb_initn.F90
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 !     ######spl
6       SUBROUTINE DIAG_MISC_TEB_INIT_n(HPROGRAM,KLU,KSW)
7 !     #####################
8 !
9 !!****  *DIAG_MISC_TEB_INIT_n* - routine to initialize TEB diagnostic variables
10 !!
11 !!    PURPOSE
12 !!    -------
13 !!
14 !!**  METHOD
15 !!    ------
16 !!
17 !!    EXTERNAL
18 !!    --------
19 !!
20 !!
21 !!    IMPLICIT ARGUMENTS
22 !!    ------------------
23 !!
24 !!    REFERENCE
25 !!    ---------
26 !!
27 !!
28 !!    AUTHOR
29 !!    ------
30 !!      V. Masson   *Meteo France*      
31 !!
32 !!    MODIFICATIONS
33 !!    -------------
34 !!      Original    01/2004 
35 !-------------------------------------------------------------------------------
36 !
37 !*       0.    DECLARATIONS
38 !              ------------
39 !
40 USE MODD_SURF_PAR,   ONLY : XUNDEF
41 USE MODD_TYPE_DATE_SURF
42 !
43 USE MODD_TEB_n,             ONLY : CBEM
44 USE MODD_DIAG_MISC_TEB_n,   ONLY : LSURF_MISC_BUDGET,                         &
45                                      XQF_BLD, XQF_TOWN, XDQS_TOWN, XFLX_BLD,  &
46                                      XRN_ROAD, XH_ROAD, XLE_ROAD, XGFLUX_ROAD,&
47                                      XRN_WALL_A, XH_WALL_A, XGFLUX_WALL_A,    &
48                                      XRN_WALL_B, XH_WALL_B, XGFLUX_WALL_B,    &
49                                      XRN_ROOF, XH_ROOF, XLE_ROOF, XGFLUX_ROOF,&
50                                      XRN_GARDEN,XH_GARDEN,XLE_GARDEN,         &
51                                      XGFLUX_GARDEN,                           &
52                                      XRN_STRLROOF, XH_STRLROOF,               &
53                                      XLE_STRLROOF, XGFLUX_STRLROOF,           &
54                                      XRN_GREENROOF, XH_GREENROOF,             &
55                                      XLE_GREENROOF, XGFLUX_GREENROOF,         &
56                                      XRUNOFF_GREENROOF, XDRAIN_GREENROOF,     &
57                                      XRN_BLT,XH_BLT,XLE_BLT,XGFLUX_BLT,       &
58                                      XABS_SW_ROOF ,XABS_SW_SNOW_ROOF,         &
59                                      XABS_LW_ROOF ,XABS_LW_SNOW_ROOF,         &
60                                      XABS_SW_ROAD ,XABS_SW_SNOW_ROAD,         &
61                                      XABS_LW_ROAD ,XABS_LW_SNOW_ROAD,         &
62                                      XABS_SW_WALL_A, XABS_SW_WALL_B,          &
63                                      XABS_LW_WALL_A, XABS_LW_WALL_B,          &
64                                      XABS_SW_GARDEN,XABS_LW_GARDEN,           &
65                                      XABS_SW_GREENROOF,XABS_LW_GREENROOF,     &
66                                      XG_GREENROOF_ROOF,                       &
67                                      XH_BLD_COOL, XT_BLD_COOL,                &
68                                      XH_BLD_HEAT, XLE_BLD_COOL, XLE_BLD_HEAT, &
69                                      XH_WASTE, XLE_WASTE, XHVAC_COOL,         &
70                                      XHVAC_HEAT, XCAP_SYS, XM_SYS, XCOP,      &
71                                      XQ_SYS, XT_SYS, XTR_SW_WIN, XFAN_POWER,  &
72                                      XABS_SW_WIN, XABS_LW_WIN, XEMIT_LW_GRND, &
73                                      XEMIT_LW_FAC, XT_RAD_IND,                &
74                                      XREF_SW_GRND, XREF_SW_FAC, XHU_BLD
75
76 !
77 USE MODI_READ_SURF
78 !
79 !
80 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
81 USE PARKIND1  ,ONLY : JPRB
82 !
83 IMPLICIT NONE
84 !
85 !*       0.1   Declarations of arguments
86 !              -------------------------
87 !
88 INTEGER, INTENT(IN) :: KLU   ! size of arrays
89 INTEGER, INTENT(IN) :: KSW   ! spectral bands
90  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM  ! program calling
91 !
92 !*       0.2   Declarations of local variables
93 !              -------------------------------
94 !
95 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
96  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
97 REAL(KIND=JPRB) :: ZHOOK_HANDLE
98 !
99 !-------------------------------------------------------------------------------
100 !
101 !* surface energy budget
102 !
103 IF (LHOOK) CALL DR_HOOK('DIAG_MISC_TEB_INIT_N',0,ZHOOK_HANDLE)
104 !
105 !* miscellaneous fields
106 !
107 IF (LSURF_MISC_BUDGET) THEN
108   ALLOCATE(XQF_BLD           (KLU))
109   ALLOCATE(XFLX_BLD          (KLU))
110   ALLOCATE(XQF_TOWN          (KLU))
111   ALLOCATE(XDQS_TOWN         (KLU))
112   ALLOCATE(XRN_ROAD          (KLU))
113   ALLOCATE(XH_ROAD           (KLU))
114   ALLOCATE(XLE_ROAD          (KLU))
115   ALLOCATE(XGFLUX_ROAD       (KLU))
116   ALLOCATE(XRN_WALL_A        (KLU))
117   ALLOCATE(XH_WALL_A         (KLU))
118   ALLOCATE(XGFLUX_WALL_A     (KLU))
119   ALLOCATE(XRN_WALL_B        (KLU))
120   ALLOCATE(XH_WALL_B         (KLU))
121   ALLOCATE(XGFLUX_WALL_B     (KLU))
122   ALLOCATE(XRN_ROOF          (KLU))
123   ALLOCATE(XH_ROOF           (KLU))
124   ALLOCATE(XLE_ROOF          (KLU))
125   ALLOCATE(XGFLUX_ROOF       (KLU))
126   ALLOCATE(XRN_GARDEN        (KLU))
127   ALLOCATE(XH_GARDEN         (KLU))
128   ALLOCATE(XLE_GARDEN        (KLU))
129   ALLOCATE(XGFLUX_GARDEN     (KLU))
130   ALLOCATE(XRN_BLT           (KLU))
131   ALLOCATE(XH_BLT            (KLU))
132   ALLOCATE(XLE_BLT           (KLU))
133   ALLOCATE(XGFLUX_BLT        (KLU))
134   ALLOCATE(XRN_STRLROOF      (KLU))
135   ALLOCATE(XH_STRLROOF       (KLU))
136   ALLOCATE(XLE_STRLROOF      (KLU))
137   ALLOCATE(XGFLUX_STRLROOF   (KLU))
138   ALLOCATE(XRN_GREENROOF     (KLU))
139   ALLOCATE(XH_GREENROOF      (KLU))
140   ALLOCATE(XLE_GREENROOF     (KLU))
141   ALLOCATE(XGFLUX_GREENROOF  (KLU))
142   ALLOCATE(XG_GREENROOF_ROOF (KLU))
143   ALLOCATE(XRUNOFF_GREENROOF (KLU))
144   ALLOCATE(XDRAIN_GREENROOF  (KLU))
145   !
146   ALLOCATE(XABS_SW_ROOF      (KLU))
147   ALLOCATE(XABS_SW_SNOW_ROOF (KLU))
148   ALLOCATE(XABS_LW_ROOF      (KLU))
149   ALLOCATE(XABS_LW_SNOW_ROOF (KLU))
150   ALLOCATE(XABS_SW_ROAD      (KLU))
151   ALLOCATE(XABS_SW_SNOW_ROAD (KLU))
152   ALLOCATE(XABS_LW_ROAD      (KLU))
153   ALLOCATE(XABS_LW_SNOW_ROAD (KLU))
154   ALLOCATE(XABS_SW_WALL_A    (KLU))
155   ALLOCATE(XABS_SW_WALL_B    (KLU))
156   ALLOCATE(XABS_LW_WALL_A    (KLU))
157   ALLOCATE(XABS_LW_WALL_B    (KLU))
158   ALLOCATE(XABS_SW_GARDEN    (KLU))
159   ALLOCATE(XABS_LW_GARDEN    (KLU))
160   ALLOCATE(XABS_SW_GREENROOF (KLU))
161   ALLOCATE(XABS_LW_GREENROOF (KLU))
162   !
163   ALLOCATE(XREF_SW_FAC       (KLU))  
164   ALLOCATE(XREF_SW_GRND      (KLU))
165   !
166   ALLOCATE(XEMIT_LW_FAC      (KLU))
167   ALLOCATE(XEMIT_LW_GRND     (KLU))
168   !
169   IF (CBEM=='BEM') THEN
170     ALLOCATE(XH_BLD_COOL    (KLU))
171     ALLOCATE(XT_BLD_COOL    (KLU))
172     ALLOCATE(XH_BLD_HEAT    (KLU))
173     ALLOCATE(XLE_BLD_COOL   (KLU))
174     ALLOCATE(XLE_BLD_HEAT   (KLU))
175     ALLOCATE(XH_WASTE       (KLU))
176     ALLOCATE(XLE_WASTE      (KLU))
177     ALLOCATE(XHVAC_COOL     (KLU))
178     ALLOCATE(XHVAC_HEAT     (KLU))
179     ALLOCATE(XCAP_SYS       (KLU))
180     ALLOCATE(XM_SYS         (KLU))
181     ALLOCATE(XCOP           (KLU))
182     ALLOCATE(XQ_SYS         (KLU))
183     ALLOCATE(XT_SYS         (KLU))
184     ALLOCATE(XTR_SW_WIN     (KLU))
185     ALLOCATE(XFAN_POWER     (KLU))
186     ALLOCATE(XT_RAD_IND     (KLU))
187     ALLOCATE(XHU_BLD        (KLU))
188     ALLOCATE(XABS_SW_WIN    (KLU)) 
189     ALLOCATE(XABS_LW_WIN    (KLU))    
190   ENDIF
191   !
192   XQF_BLD            = XUNDEF
193   XFLX_BLD           = XUNDEF
194   XQF_TOWN           = XUNDEF
195   XDQS_TOWN          = XUNDEF
196   XRN_ROAD           = XUNDEF
197   XH_ROAD            = XUNDEF
198   XLE_ROAD           = XUNDEF
199   XGFLUX_ROAD        = XUNDEF
200   XRN_WALL_A         = XUNDEF
201   XH_WALL_A          = XUNDEF
202   XGFLUX_WALL_A      = XUNDEF
203   XRN_WALL_B         = XUNDEF
204   XH_WALL_B          = XUNDEF
205   XGFLUX_WALL_B      = XUNDEF
206   XRN_ROOF           = XUNDEF
207   XH_ROOF            = XUNDEF
208   XLE_ROOF           = XUNDEF
209   XGFLUX_ROOF        = XUNDEF 
210   XRN_GARDEN         = XUNDEF
211   XH_GARDEN          = XUNDEF
212   XLE_GARDEN         = XUNDEF
213   XGFLUX_GARDEN      = XUNDEF  
214   XRN_BLT            = XUNDEF
215   XH_BLT             = XUNDEF
216   XLE_BLT            = XUNDEF
217   XGFLUX_BLT         = XUNDEF  
218   XRN_STRLROOF       = XUNDEF
219   XH_STRLROOF        = XUNDEF
220   XLE_STRLROOF       = XUNDEF
221   XGFLUX_STRLROOF    = XUNDEF  
222   XRN_GREENROOF      = XUNDEF
223   XH_GREENROOF       = XUNDEF
224   XLE_GREENROOF      = XUNDEF
225   XGFLUX_GREENROOF   = XUNDEF  
226   XG_GREENROOF_ROOF  = XUNDEF  
227   XRUNOFF_GREENROOF  = XUNDEF  
228   XDRAIN_GREENROOF   = XUNDEF  
229 !
230   XABS_SW_ROOF       = XUNDEF  
231   XABS_SW_SNOW_ROOF  = XUNDEF  
232   XABS_LW_ROOF       = XUNDEF  
233   XABS_LW_SNOW_ROOF  = XUNDEF  
234   XABS_SW_ROAD       = XUNDEF  
235   XABS_SW_SNOW_ROAD  = XUNDEF  
236   XABS_LW_ROAD       = XUNDEF  
237   XABS_LW_SNOW_ROAD  = XUNDEF  
238   XABS_SW_WALL_A     = XUNDEF  
239   XABS_SW_WALL_B     = XUNDEF  
240   XABS_LW_WALL_A     = XUNDEF  
241   XABS_LW_WALL_B     = XUNDEF  
242   XABS_SW_GARDEN     = XUNDEF  
243   XABS_LW_GARDEN     = XUNDEF 
244   XABS_SW_GREENROOF  = XUNDEF  
245   XABS_LW_GREENROOF  = XUNDEF 
246   !
247   XREF_SW_FAC        = XUNDEF
248   XREF_SW_GRND       = XUNDEF
249   !
250   XEMIT_LW_FAC       = XUNDEF
251   XEMIT_LW_GRND      = XUNDEF
252   !
253   IF (CBEM=='BEM') THEN
254     XH_BLD_COOL     = XUNDEF
255     XT_BLD_COOL     = XUNDEF
256     XH_BLD_HEAT     = XUNDEF
257     XLE_BLD_COOL    = XUNDEF
258     XLE_BLD_HEAT    = XUNDEF
259     XH_WASTE        = XUNDEF
260     XLE_WASTE       = XUNDEF
261     XHVAC_COOL      = XUNDEF
262     XHVAC_HEAT      = XUNDEF
263     XCAP_SYS        = XUNDEF
264     XM_SYS          = XUNDEF
265     XCOP            = XUNDEF
266     XQ_SYS          = XUNDEF
267     XT_SYS          = XUNDEF
268     XTR_SW_WIN      = XUNDEF
269     XFAN_POWER      = XUNDEF
270     XT_RAD_IND      = XUNDEF
271     XHU_BLD         = XUNDEF
272     XABS_SW_WIN     = XUNDEF 
273     XABS_LW_WIN     = XUNDEF    
274   ENDIF
275 !  
276 ENDIF
277 !
278 IF (LHOOK) CALL DR_HOOK('DIAG_MISC_TEB_INIT_N',1,ZHOOK_HANDLE)
279 !
280 !-------------------------------------------------------------------------------
281 !
282 END SUBROUTINE DIAG_MISC_TEB_INIT_n