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