Philippe 07/03/2019: IO bugfix: io_set_mnhversion must be called by all the processes
[MNH-git_open_source-lfs.git] / src / SURFEX / diag_misc_teb_initn.F90
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 !     ######spl
6       SUBROUTINE DIAG_MISC_TEB_INIT_n (DMTC, DMT, DMTO, TOP, 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 !
41 USE MODD_DIAG_MISC_TEB_n, ONLY : DIAG_MISC_TEB_t
42 USE MODD_DIAG_MISC_TEB_OPTIONS_n, ONLY : DIAG_MISC_TEB_OPTIONS_t
43 USE MODD_TEB_OPTION_n, ONLY : TEB_OPTIONS_t
44 !
45 USE MODD_SURF_PAR,   ONLY : XUNDEF
46 USE MODD_TYPE_DATE_SURF
47 !
48
49
50 !
51 USE MODI_READ_SURF
52 !
53 !
54 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
55 USE PARKIND1  ,ONLY : JPRB
56 !
57 IMPLICIT NONE
58 !
59 !*       0.1   Declarations of arguments
60 !              -------------------------
61 !
62 !
63 TYPE(DIAG_MISC_TEB_t), INTENT(INOUT) :: DMTC
64 TYPE(DIAG_MISC_TEB_t), INTENT(INOUT) :: DMT
65 TYPE(DIAG_MISC_TEB_OPTIONS_t), INTENT(INOUT) :: DMTO
66 TYPE(TEB_OPTIONS_t), INTENT(INOUT) :: TOP
67 !
68 INTEGER, INTENT(IN) :: KLU   ! size of arrays
69 INTEGER, INTENT(IN) :: KSW   ! spectral bands
70 !
71 !*       0.2   Declarations of local variables
72 !              -------------------------------
73 !
74 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
75  CHARACTER(LEN=LEN_HREC) :: YREC           ! Name of the article to be read
76 REAL(KIND=JPRB) :: ZHOOK_HANDLE
77 !
78 !-------------------------------------------------------------------------------
79 !
80 !* surface energy budget
81 !
82 IF (LHOOK) CALL DR_HOOK('DIAG_MISC_TEB_INIT_N',0,ZHOOK_HANDLE)
83 !
84 !* miscellaneous fields
85 !
86 !IF (DMTO%LSURF_MISC_BUDGET) THEN
87   ALLOCATE(DMT%XQF_BLD           (KLU))
88   ALLOCATE(DMT%XFLX_BLD          (KLU))
89   ALLOCATE(DMT%XQF_TOWN          (KLU))
90   ALLOCATE(DMT%XDQS_TOWN         (KLU))
91   ALLOCATE(DMT%XRN_ROAD          (KLU))
92   ALLOCATE(DMT%XH_ROAD           (KLU))
93   ALLOCATE(DMT%XLE_ROAD          (KLU))
94   ALLOCATE(DMT%XGFLUX_ROAD       (KLU))
95   ALLOCATE(DMT%XRN_WALL_A        (KLU))
96   ALLOCATE(DMT%XH_WALL_A         (KLU))
97   ALLOCATE(DMT%XGFLUX_WALL_A     (KLU))
98   ALLOCATE(DMT%XRN_WALL_B        (KLU))
99   ALLOCATE(DMT%XH_WALL_B         (KLU))
100   ALLOCATE(DMT%XGFLUX_WALL_B     (KLU))
101   ALLOCATE(DMT%XRN_ROOF          (KLU))
102   ALLOCATE(DMT%XH_ROOF           (KLU))
103   ALLOCATE(DMT%XLE_ROOF          (KLU))
104   ALLOCATE(DMT%XGFLUX_ROOF       (KLU))
105   ALLOCATE(DMT%XRN_BLT           (KLU))
106   ALLOCATE(DMT%XH_BLT            (KLU))
107   ALLOCATE(DMT%XLE_BLT           (KLU))
108   ALLOCATE(DMT%XGFLUX_BLT        (KLU))
109   ALLOCATE(DMT%XRN_STRLROOF      (KLU))
110   ALLOCATE(DMT%XH_STRLROOF       (KLU))
111   ALLOCATE(DMT%XLE_STRLROOF      (KLU))
112   ALLOCATE(DMT%XGFLUX_STRLROOF   (KLU))
113   ALLOCATE(DMT%XG_GREENROOF_ROOF (KLU))
114   ALLOCATE(DMT%XRUNOFF_TOWN      (KLU))
115   ALLOCATE(DMT%XRUNOFF_ROAD      (KLU))
116   ALLOCATE(DMT%XRUNOFF_STRLROOF  (KLU))
117   ALLOCATE(DMT%XRUNOFF_ROOF      (KLU))
118   ALLOCATE(DMT%XIRRIG_GREENROOF  (KLU))
119   ALLOCATE(DMT%XIRRIG_GARDEN     (KLU))
120   ALLOCATE(DMT%XIRRIG_ROAD       (KLU))
121   !
122   ALLOCATE(DMT%XABS_SW_ROOF      (KLU))
123   ALLOCATE(DMT%XABS_SW_SNOW_ROOF (KLU))
124   ALLOCATE(DMT%XABS_LW_ROOF      (KLU))
125   ALLOCATE(DMT%XABS_LW_SNOW_ROOF (KLU))
126   ALLOCATE(DMT%XABS_SW_ROAD      (KLU))
127   ALLOCATE(DMT%XABS_SW_SNOW_ROAD (KLU))
128   ALLOCATE(DMT%XABS_LW_ROAD      (KLU))
129   ALLOCATE(DMT%XABS_LW_SNOW_ROAD (KLU))
130   ALLOCATE(DMT%XABS_SW_WALL_A    (KLU))
131   ALLOCATE(DMT%XABS_SW_WALL_B    (KLU))
132   ALLOCATE(DMT%XABS_LW_WALL_A    (KLU))
133   ALLOCATE(DMT%XABS_LW_WALL_B    (KLU))
134   ALLOCATE(DMT%XABS_SW_GARDEN    (KLU))
135   ALLOCATE(DMT%XABS_LW_GARDEN    (KLU))
136   ALLOCATE(DMT%XABS_SW_GREENROOF (KLU))
137   ALLOCATE(DMT%XABS_LW_GREENROOF (KLU))
138   !
139   ALLOCATE(DMT%XREF_SW_FAC       (KLU))  
140   ALLOCATE(DMT%XREF_SW_GRND      (KLU))
141   !
142   ALLOCATE(DMT%XEMIT_LW_FAC      (KLU))
143   ALLOCATE(DMT%XEMIT_LW_GRND     (KLU))
144   !
145   ALLOCATE(DMT%XTCOOL_TARGET (KLU))
146   ALLOCATE(DMT%XTHEAT_TARGET (KLU))
147   ALLOCATE(DMT%XQIN          (KLU))
148   !
149   IF (TOP%CBEM=='BEM') THEN
150     ALLOCATE(DMT%XH_BLD_COOL    (KLU))
151     ALLOCATE(DMT%XT_BLD_COOL    (KLU))
152     ALLOCATE(DMT%XH_BLD_HEAT    (KLU))
153     ALLOCATE(DMT%XLE_BLD_COOL   (KLU))
154     ALLOCATE(DMT%XLE_BLD_HEAT   (KLU))
155     ALLOCATE(DMT%XH_WASTE       (KLU))
156     ALLOCATE(DMT%XLE_WASTE      (KLU))
157     ALLOCATE(DMT%XHVAC_COOL     (KLU))
158     ALLOCATE(DMT%XHVAC_HEAT     (KLU))
159     ALLOCATE(DMT%XCAP_SYS       (KLU))
160     ALLOCATE(DMT%XM_SYS         (KLU))
161     ALLOCATE(DMT%XCOP           (KLU))
162     ALLOCATE(DMT%XQ_SYS         (KLU))
163     ALLOCATE(DMT%XT_SYS         (KLU))
164     ALLOCATE(DMT%XTR_SW_WIN     (KLU))
165     ALLOCATE(DMT%XFAN_POWER     (KLU))
166     ALLOCATE(DMT%XT_RAD_IND     (KLU))
167     ALLOCATE(DMT%XHU_BLD        (KLU))
168     ALLOCATE(DMT%XABS_SW_WIN    (KLU)) 
169     ALLOCATE(DMT%XABS_LW_WIN    (KLU))    
170   ENDIF
171   !
172   IF (TOP%LSOLAR_PANEL) THEN
173     ALLOCATE(DMT%XABS_SW_PANEL   (KLU))
174     ALLOCATE(DMT%XABS_LW_PANEL   (KLU))
175     ALLOCATE(DMT%XRN_PANEL       (KLU))
176     ALLOCATE(DMT%XH_PANEL        (KLU))
177     ALLOCATE(DMT%XTHER_PROD_PANEL(KLU))
178     ALLOCATE(DMT%XPHOT_PROD_PANEL(KLU))
179     ALLOCATE(DMT%XPROD_PANEL     (KLU))
180     ALLOCATE(DMT%XTHER_PROD_BLD  (KLU))
181     ALLOCATE(DMT%XPHOT_PROD_BLD  (KLU))
182   END IF
183   !
184     ALLOCATE(DMTC%XRUNOFF_TOWN      (KLU))
185     ALLOCATE(DMTC%XIRRIG_GARDEN     (KLU))
186     ALLOCATE(DMTC%XRUNOFF_ROAD      (KLU))
187     ALLOCATE(DMTC%XIRRIG_ROAD       (KLU))
188     ALLOCATE(DMTC%XRUNOFF_STRLROOF  (KLU))
189     ALLOCATE(DMTC%XRUNOFF_ROOF      (KLU))
190     ALLOCATE(DMTC%XIRRIG_GREENROOF  (KLU))
191     IF (TOP%CBEM=='BEM') THEN
192       ALLOCATE(DMTC%XHVAC_COOL       (KLU))
193       ALLOCATE(DMTC%XHVAC_HEAT       (KLU))
194     END IF
195   IF (TOP%LSOLAR_PANEL) THEN
196     ALLOCATE(DMTC%XTHER_PROD_BLD(KLU))
197     ALLOCATE(DMTC%XPHOT_PROD_BLD(KLU))
198   END IF
199   DMT%XQF_BLD            = XUNDEF
200   DMT%XFLX_BLD           = XUNDEF
201   DMT%XQF_TOWN           = XUNDEF
202   DMT%XDQS_TOWN          = XUNDEF
203   DMT%XRN_ROAD           = XUNDEF
204   DMT%XH_ROAD            = XUNDEF
205   DMT%XLE_ROAD           = XUNDEF
206   DMT%XGFLUX_ROAD        = XUNDEF
207   DMT%XRN_WALL_A         = XUNDEF
208   DMT%XH_WALL_A          = XUNDEF
209   DMT%XGFLUX_WALL_A      = XUNDEF
210   DMT%XRN_WALL_B         = XUNDEF
211   DMT%XH_WALL_B          = XUNDEF
212   DMT%XGFLUX_WALL_B      = XUNDEF
213   DMT%XRN_ROOF           = XUNDEF
214   DMT%XH_ROOF            = XUNDEF
215   DMT%XLE_ROOF           = XUNDEF
216   DMT%XGFLUX_ROOF        = XUNDEF 
217   DMT%XRN_BLT            = XUNDEF
218   DMT%XH_BLT             = XUNDEF
219   DMT%XLE_BLT            = XUNDEF
220   DMT%XGFLUX_BLT         = XUNDEF  
221   DMT%XRN_STRLROOF       = XUNDEF
222   DMT%XH_STRLROOF        = XUNDEF
223   DMT%XLE_STRLROOF       = XUNDEF
224   DMT%XGFLUX_STRLROOF    = XUNDEF  
225   DMT%XG_GREENROOF_ROOF  = XUNDEF  
226   DMT%XRUNOFF_TOWN       = XUNDEF  
227   DMT%XRUNOFF_ROAD       = XUNDEF  
228   DMT%XRUNOFF_ROOF       = XUNDEF  
229   DMT%XRUNOFF_STRLROOF   = XUNDEF
230   DMT%XIRRIG_GREENROOF   = XUNDEF  
231   DMT%XIRRIG_GARDEN      = XUNDEF  
232   DMT%XIRRIG_ROAD        = XUNDEF  
233 !
234   DMT%XABS_SW_ROOF       = XUNDEF  
235   DMT%XABS_SW_SNOW_ROOF  = XUNDEF  
236   DMT%XABS_LW_ROOF       = XUNDEF  
237   DMT%XABS_LW_SNOW_ROOF  = XUNDEF  
238   DMT%XABS_SW_ROAD       = XUNDEF  
239   DMT%XABS_SW_SNOW_ROAD  = XUNDEF  
240   DMT%XABS_LW_ROAD       = XUNDEF  
241   DMT%XABS_LW_SNOW_ROAD  = XUNDEF  
242   DMT%XABS_SW_WALL_A     = XUNDEF  
243   DMT%XABS_SW_WALL_B     = XUNDEF  
244   DMT%XABS_LW_WALL_A     = XUNDEF  
245   DMT%XABS_LW_WALL_B     = XUNDEF  
246   DMT%XABS_SW_GARDEN     = XUNDEF  
247   DMT%XABS_LW_GARDEN     = XUNDEF 
248   DMT%XABS_SW_GREENROOF  = XUNDEF  
249   DMT%XABS_LW_GREENROOF  = XUNDEF 
250   !
251   DMT%XREF_SW_FAC        = XUNDEF
252   DMT%XREF_SW_GRND       = XUNDEF
253   !
254   DMT%XEMIT_LW_FAC       = XUNDEF
255   DMT%XEMIT_LW_GRND      = XUNDEF
256   !
257   DMT%XTCOOL_TARGET  = XUNDEF
258   DMT%XTHEAT_TARGET  = XUNDEF
259   DMT%XQIN           = XUNDEF
260   !
261   IF (TOP%CBEM=='BEM') THEN
262     DMT%XH_BLD_COOL     = XUNDEF
263     DMT%XT_BLD_COOL     = XUNDEF
264     DMT%XH_BLD_HEAT     = XUNDEF
265     DMT%XLE_BLD_COOL    = XUNDEF
266     DMT%XLE_BLD_HEAT    = XUNDEF
267     DMT%XH_WASTE        = XUNDEF
268     DMT%XLE_WASTE       = XUNDEF
269     DMT%XHVAC_COOL      = XUNDEF
270     DMT%XHVAC_HEAT      = XUNDEF
271     DMT%XCAP_SYS        = XUNDEF
272     DMT%XM_SYS          = XUNDEF
273     DMT%XCOP            = XUNDEF
274     DMT%XQ_SYS          = XUNDEF
275     DMT%XT_SYS          = XUNDEF
276     DMT%XTR_SW_WIN      = XUNDEF
277     DMT%XFAN_POWER      = XUNDEF
278     DMT%XT_RAD_IND      = XUNDEF
279     DMT%XHU_BLD         = XUNDEF
280     DMT%XABS_SW_WIN     = XUNDEF 
281     DMT%XABS_LW_WIN     = XUNDEF    
282   ENDIF
283
284   IF (TOP%LSOLAR_PANEL) THEN
285     DMT%XABS_SW_PANEL   = XUNDEF
286     DMT%XABS_LW_PANEL   = XUNDEF
287     DMT%XRN_PANEL       = XUNDEF
288     DMT%XH_PANEL        = XUNDEF
289     DMT%XTHER_PROD_PANEL= XUNDEF
290     DMT%XPHOT_PROD_PANEL= XUNDEF
291     DMT%XPROD_PANEL     = XUNDEF
292     DMT%XTHER_PROD_BLD  = XUNDEF
293     DMT%XPHOT_PROD_BLD  = XUNDEF
294   END IF
295 !  
296     DMTC%XRUNOFF_TOWN       = 0.0  
297     DMTC%XRUNOFF_ROAD       = 0.0  
298     DMTC%XRUNOFF_ROOF       = 0.0  
299     DMTC%XRUNOFF_STRLROOF   = 0.0  
300     DMTC%XIRRIG_GREENROOF   = 0.0  
301     DMTC%XIRRIG_GARDEN      = 0.0  
302     DMTC%XIRRIG_ROAD        = 0.0  
303     IF (TOP%CBEM=='BEM') THEN
304       DMTC%XHVAC_COOL       = 0.0
305       DMTC%XHVAC_HEAT       = 0.0
306     END IF
307   IF (TOP%LSOLAR_PANEL) THEN
308     DMTC%XTHER_PROD_BLD = 0.
309     DMTC%XPHOT_PROD_BLD = 0.
310   END IF
311 !ENDIF
312 !
313 IF (LHOOK) CALL DR_HOOK('DIAG_MISC_TEB_INIT_N',1,ZHOOK_HANDLE)
314 !
315 !-------------------------------------------------------------------------------
316 !
317 END SUBROUTINE DIAG_MISC_TEB_INIT_n