Beginning of open source history
[MNH-git_open_source-lfs.git] / src / SURFEX / diag_teb_greenroof_initn.F90
1 !     #########
2       SUBROUTINE DIAG_TEB_GREENROOF_INIT_n(HPROGRAM,KLU,KSW)
3 !     #####################
4 !
5 !!****  *DIAG_TEB_GREENROOF_INIT_n* - routine to initialize TEB-ISBA diagnostic variables
6 !!
7 !!    PURPOSE
8 !!    -------
9 !!
10 !!**  METHOD
11 !!    ------
12 !!    Based on diag_teb_garden_initn
13 !!
14 !!    EXTERNAL
15 !!    --------
16 !!
17 !!
18 !!    IMPLICIT ARGUMENTS
19 !!    ------------------
20 !!
21 !!    REFERENCE
22 !!    ---------
23 !!
24 !!
25 !!    AUTHOR
26 !!    ------
27 !!      V. Masson   *Meteo France*      
28 !!
29 !!    MODIFICATIONS
30 !!    -------------
31 !!      Original                  02/2003 
32 !!      modified                  11/2003  by P. LeMoigne: surface cumulated energy budget
33 !!      modified                  10/2004  by P. LeMoigne: surface miscellaneous fields
34 !!      B. Decharme               2008     New diag for water budget and allow to reset
35 !!                                         cumulatives variables at the beginning of a run
36 !       C. de Munck & A. Lemonsu  09/2011  Greenroofs
37 !-------------------------------------------------------------------------------
38 !
39 !*       0.    DECLARATIONS
40 !              ------------
41 !
42 USE MODD_SURF_PAR,             ONLY : XUNDEF
43 USE MODD_TEB_VEG_n,            ONLY : CPHOTO, CHORT
44 USE MODD_TEB_GREENROOF_n,      ONLY : NLAYER_GR
45 USE MODD_TYPE_DATE_SURF
46 USE MODD_DIAG_SURF_ATM_n,      ONLY : LREAD_BUDGETC
47 USE MODD_DIAG_TEB_n,           ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS
48 USE MODD_DIAG_MISC_TEB_n,      ONLY : LSURF_EVAP_BUDGET, LSURF_MISC_BUDGET  
49 USE MODD_DIAG_TEB_GREENROOF_n, ONLY : XRN, XH, XGFLUX, XLEI, XRI, XCD, XCDN, XCH, XCE, &
50                                       XTS, XTSRAD,                                     &
51                                       XZ0_WITH_SNOW, XZ0H_WITH_SNOW, XZ0EFF, XQS,      &
52                                       XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, XFMU, XFMV,&
53                                       XLEG, XLEGI, XLEV, XLES, XLER, XLETR, XEVAP,     &
54                                       XDRAIN, XRUNOFF, XHORT, XDRIP, XMELT,            &
55                                       XRRVEG, XHV,  XSWI, XTSWI, XTWSNOW,              &
56                                       XTDSNOW, XSEUIL, XGPP, XRESP_AUTO, XRESP_ECO,    &
57                                       XALBT, XEMIST, XALBT,                            &
58                                       XCG, XC1, XC2, XWGEQ, XCT, XRS, XHU, XHUG,       &
59                                       XRESTORE, XUSTAR,                                &
60                                       XSNOWTEMP, XSNOWLIQ, XSNOWDZ, XSNOWHMASS,        &
61                                       XMELTADV, XIACAN  
62 !
63 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
64 USE PARKIND1  ,ONLY : JPRB
65 !
66 IMPLICIT NONE
67 !
68 !*       0.1   Declarations of arguments
69 !              -------------------------
70 !
71 INTEGER, INTENT(IN)         :: KLU       ! size of arrays
72 INTEGER, INTENT(IN)         :: KSW       ! spectral bands
73  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM  ! program calling
74 !
75 !*       0.2   Declarations of local variables
76 !              -------------------------------
77 !
78 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
79  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
80 REAL(KIND=JPRB) :: ZHOOK_HANDLE
81 !
82 !-------------------------------------------------------------------------------
83 !
84 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GREENROOF_INIT_N',0,ZHOOK_HANDLE)
85 XCG         = XUNDEF
86 XC1         = XUNDEF
87 XC2         = XUNDEF
88 XWGEQ       = XUNDEF
89 XCT         = XUNDEF
90 XRS         = XUNDEF
91 XHU         = XUNDEF
92 XHUG        = XUNDEF
93 XHV         = XUNDEF
94 XRESTORE    = XUNDEF
95 XRI         = XUNDEF
96 XUSTAR      = XUNDEF
97 XRN         = XUNDEF
98 XH          = XUNDEF
99 XGFLUX      = XUNDEF
100 XSNOWTEMP   = XUNDEF
101 XSNOWLIQ    = XUNDEF
102 XSNOWDZ     = XUNDEF
103 XSNOWHMASS  = XUNDEF
104 XMELTADV    = XUNDEF
105 IF (CPHOTO/='NON') THEN
106   XIACAN    = XUNDEF
107 END IF
108 XCD         = XUNDEF
109 XCDN        = XUNDEF
110 XCH         = XUNDEF
111 XQS         = XUNDEF
112 XLEI        = XUNDEF
113 XLEG        = XUNDEF
114 XLEGI       = XUNDEF
115 XLEV        = XUNDEF
116 XLES        = XUNDEF
117 XLER        = XUNDEF
118 XLETR       = XUNDEF
119 XEVAP       = XUNDEF
120 XDRAIN      = XUNDEF
121 XRUNOFF     = XUNDEF
122 XHORT       = XUNDEF
123 XDRIP       = XUNDEF
124 XRRVEG      = XUNDEF
125 XMELT       = XUNDEF
126 XALBT       = XUNDEF
127 XEMIST      = XUNDEF
128 !
129 !* surface energy budget
130 !
131 !IF (LSURF_BUDGET) THEN
132   !
133   ALLOCATE(XSWD      (KLU))
134   ALLOCATE(XSWU      (KLU))
135   ALLOCATE(XSWBD     (KLU,KSW))
136   ALLOCATE(XSWBU     (KLU,KSW))
137   ALLOCATE(XLWD      (KLU))
138   ALLOCATE(XLWU      (KLU))
139   ALLOCATE(XFMU      (KLU))
140   ALLOCATE(XFMV      (KLU))
141   !
142   XSWD     = XUNDEF
143   XSWU     = XUNDEF
144   XSWBD    = XUNDEF
145   XSWBU    = XUNDEF
146   XLWD     = XUNDEF
147   XLWU     = XUNDEF
148   XFMU     = XUNDEF
149   XFMV     = XUNDEF
150   !
151 !END IF
152 !
153 !* surface temperature and parameters at 2m
154 !
155 ALLOCATE(XTS    (KLU))
156 XTS     = XUNDEF
157 ALLOCATE(XTSRAD (KLU))
158 XTSRAD  = XUNDEF
159 !
160 !* miscellaneous surface fields
161 !
162 IF (LSURF_MISC_BUDGET) THEN
163   !
164   ALLOCATE(XSWI    (KLU,NLAYER_GR))
165   ALLOCATE(XTSWI   (KLU,NLAYER_GR))
166   ALLOCATE(XTWSNOW (KLU))
167   ALLOCATE(XTDSNOW (KLU))
168   XSWI     = XUNDEF
169   XTSWI    = XUNDEF
170   XTWSNOW  = XUNDEF
171   XTDSNOW  = XUNDEF
172 ENDIF
173
174
175   ALLOCATE(XALBT   (KLU))
176   ALLOCATE(XGPP    (KLU))
177   ALLOCATE(XRESP_AUTO  (KLU))
178   ALLOCATE(XRESP_ECO   (KLU))
179   !
180   XALBT    = XUNDEF
181   XGPP     = XUNDEF
182   XRESP_AUTO   = XUNDEF
183   XRESP_ECO    = XUNDEF  
184   !
185 !END IF
186 !
187 !* transfer coefficients
188 !
189 !IF (LCOEF) THEN
190   !
191   ALLOCATE(XCE            (KLU))
192   ALLOCATE(XZ0_WITH_SNOW  (KLU))
193   ALLOCATE(XZ0H_WITH_SNOW (KLU))
194   ALLOCATE(XZ0EFF         (KLU))
195   !
196   XCE            = XUNDEF
197   XZ0_WITH_SNOW  = XUNDEF
198   XZ0H_WITH_SNOW = XUNDEF
199   XZ0EFF         = XUNDEF
200 !END IF
201 !
202 !
203 !* surface humidity
204 !
205 !IF (LSURF_VARS) THEN
206   ALLOCATE(XQS            (KLU))
207   !
208   XQS            = XUNDEF
209 !END IF
210 !
211 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GREENROOF_INIT_N',1,ZHOOK_HANDLE)
212 !
213 !
214 !-------------------------------------------------------------------------------
215 !
216 END SUBROUTINE DIAG_TEB_GREENROOF_INIT_n