SURFEX v8.1
General documentation of Surfex
alloc_trip_diag.F90
Go to the documentation of this file.
1 ! #########
2  SUBROUTINE alloc_trip_diag (TPDG,KLON,KLAT)
3 ! #######################################################################
4 !
5 !!**** *ALLOC_TRIP_DIAG*
6 !!
7 !! PURPOSE
8 !! -------
9 !
10 ! Define the name and unit of each trip output variable.
11 !
12 !! REFERENCE
13 !! ---------
14 !!
15 !! AUTHOR
16 !! ------
17 !! B. Decharme
18 !!
19 !! MODIFICATIONS
20 !! -------------
21 !! Original 01/2017
22 !-------------------------------------------------------------------------------
23 !
24 !* 0. DECLARATIONS
25 ! ------------
26 !
27 !
28 !
29 USE modd_trip_diag, ONLY : trip_diag_t
30 !
31 USE yomhook ,ONLY : lhook, dr_hook
32 USE parkind1 ,ONLY : jprb
33 !
34 IMPLICIT NONE
35 !
36 !
37 !* 0.1 declarations of arguments
38 !
39 TYPE(trip_diag_t), INTENT(INOUT) :: TPDG
40 !
41 INTEGER, INTENT(IN) :: KLON, KLAT
42 !
43 !* 0.2 declarations of output variables
44 !
45 REAL(KIND=JPRB) :: ZHOOK_HANDLE
46 !
47 !-------------------------------------------------------------------------------
48 !-------------------------------------------------------------------------------
49 !
50 IF (lhook) CALL dr_hook('ALLOC_TRIP_DIAG',0,zhook_handle)
51 !
52 ! * Allocate and initialyse diagnostic variables
53 !
54  CALL alloc_diag(tpdg%TDIAG)
55 !
56 ! * Allocate and initialyse run mean diagnostic variables
57 !
58  CALL alloc_diag(tpdg%TDIAG_RUN)
59 !
60 IF (lhook) CALL dr_hook('ALLOC_TRIP_DIAG',1,zhook_handle)
61 !
62 !-------------------------------------------------------------------------------
63  CONTAINS
64 !-------------------------------------------------------------------------------
65 !
66 SUBROUTINE alloc_diag(TPDIAG)
67 !
68 USE modn_trip, ONLY : cgroundw, cvit, lflood
69 USE modn_trip_run, ONLY : ldiag_misc
71 !
73 !
74 IMPLICIT NONE
75 !
76 TYPE(diag) :: TPDIAG
77 !
78 REAL(KIND=JPRB) :: ZHOOK_HANDLE
79 !
80 IF (lhook) CALL dr_hook('ALLOC_TRIP_DIAG:ALLOC_DIAG',0,zhook_handle)
81 !
82 ALLOCATE(tpdiag%XSURF_STO(klon,klat))
83 ALLOCATE(tpdiag%XQDIS (klon,klat))
84 tpdiag%XSURF_STO(:,:) = 0.0
85 tpdiag%XQDIS (:,:) = 0.0
86 
87 IF(ldiag_misc)THEN
88  ALLOCATE(tpdiag%XQIN (klon,klat))
89  tpdiag%XQIN (:,:) = 0.0
90 ELSE
91  ALLOCATE(tpdiag%XQIN(0,0))
92 ENDIF
93 !
94 IF(lcpl_land.AND.ldiag_misc)THEN
95  ALLOCATE(tpdiag%XRUNOFF(klon,klat))
96  ALLOCATE(tpdiag%XDRAIN (klon,klat))
97  tpdiag%XRUNOFF(:,:) = 0.0
98  tpdiag%XDRAIN (:,:) = 0.0
99 ELSE
100  ALLOCATE(tpdiag%XRUNOFF(0,0))
101  ALLOCATE(tpdiag%XDRAIN (0,0))
102 ENDIF
103 
104 IF(cgroundw/='DEF')THEN
105  ALLOCATE(tpdiag%XGROUND_STO (klon,klat))
106  ALLOCATE(tpdiag%XQGF (klon,klat))
107  tpdiag%XGROUND_STO (:,:) = 0.0
108  tpdiag%XQGF (:,:) = 0.0
109 ELSE
110  ALLOCATE(tpdiag%XGROUND_STO(0,0))
111  ALLOCATE(tpdiag%XQGF (0,0))
112 ENDIF
113 
114 IF(cgroundw=='DIF')THEN
115 !
116  ALLOCATE(tpdiag%XHGROUND(klon,klat))
117  ALLOCATE(tpdiag%XFWTD (klon,klat))
118  ALLOCATE(tpdiag%XWTD (klon,klat))
119  tpdiag%XHGROUND(:,:) = 0.0
120  tpdiag%XFWTD (:,:) = 0.0
121  tpdiag%XWTD (:,:) = 0.0
122 !
123  IF(ldiag_misc)THEN
124  ALLOCATE(tpdiag%XQGCELL (klon,klat))
125  ALLOCATE(tpdiag%XHGHS (klon,klat))
126  tpdiag%XQGCELL (:,:) = 0.0
127  tpdiag%XHGHS (:,:) = 0.0
128  ELSE
129  ALLOCATE(tpdiag%XQGCELL (0,0))
130  ALLOCATE(tpdiag%XHGHS (0,0))
131  ENDIF
132 !
133 ELSE
134  ALLOCATE(tpdiag%XFWTD (0,0))
135  ALLOCATE(tpdiag%XWTD (0,0))
136  ALLOCATE(tpdiag%XHGROUND(0,0))
137  ALLOCATE(tpdiag%XQGCELL (0,0))
138  ALLOCATE(tpdiag%XHGHS (0,0))
139 ENDIF
140 
141 
142 IF(cvit=='VAR')THEN
143  ALLOCATE(tpdiag%XHS (klon,klat))
144  ALLOCATE(tpdiag%XVEL(klon,klat))
145  tpdiag%XHS (:,:) = 0.0
146  tpdiag%XVEL(:,:) = 0.0
147 ELSE
148  ALLOCATE(tpdiag%XHS (0,0))
149  ALLOCATE(tpdiag%XVEL(0,0))
150 ENDIF
151 !
152 !
153 !
154 IF (lcpl_flood.AND.ldiag_misc) THEN
155  ALLOCATE(tpdiag%XSOURCE(klon,klat))
156  tpdiag%XSOURCE(:,:) = 0.0
157 ELSE
158  ALLOCATE(tpdiag%XSOURCE(0,0))
159 ENDIF
160 !
161 !
162 !
163 IF(lflood)THEN
164  ALLOCATE(tpdiag%XFLOOD_STO (klon,klat))
165  ALLOCATE(tpdiag%XFF (klon,klat))
166  ALLOCATE(tpdiag%XHF (klon,klat))
167  tpdiag%XFLOOD_STO (:,:) = 0.0
168  tpdiag%XFF (:,:) = 0.0
169  tpdiag%XHF (:,:) = 0.0
170  IF(ldiag_misc)THEN
171  ALLOCATE(tpdiag%XQFR (klon,klat))
172  ALLOCATE(tpdiag%XQRF (klon,klat))
173  ALLOCATE(tpdiag%XVFIN (klon,klat))
174  ALLOCATE(tpdiag%XVFOUT (klon,klat))
175  ALLOCATE(tpdiag%XWF (klon,klat))
176  ALLOCATE(tpdiag%XLF (klon,klat))
177  ALLOCATE(tpdiag%XHSF (klon,klat))
178  tpdiag%XQFR (:,:) = 0.0
179  tpdiag%XQRF (:,:) = 0.0
180  tpdiag%XVFIN (:,:) = 0.0
181  tpdiag%XVFOUT (:,:) = 0.0
182  tpdiag%XWF (:,:) = 0.0
183  tpdiag%XLF (:,:) = 0.0
184  tpdiag%XHSF (:,:) = 0.0
185  ELSE
186  ALLOCATE(tpdiag%XQFR (0,0))
187  ALLOCATE(tpdiag%XQRF (0,0))
188  ALLOCATE(tpdiag%XVFIN (0,0))
189  ALLOCATE(tpdiag%XVFOUT (0,0))
190  ALLOCATE(tpdiag%XWF (0,0))
191  ALLOCATE(tpdiag%XLF (0,0))
192  ALLOCATE(tpdiag%XHSF (0,0))
193  ENDIF
194 ELSE
195  ALLOCATE(tpdiag%XFLOOD_STO (0,0))
196  ALLOCATE(tpdiag%XHF (0,0))
197  ALLOCATE(tpdiag%XFF (0,0))
198  ALLOCATE(tpdiag%XQFR (0,0))
199  ALLOCATE(tpdiag%XQRF (0,0))
200  ALLOCATE(tpdiag%XVFIN (0,0))
201  ALLOCATE(tpdiag%XVFOUT (0,0))
202  ALLOCATE(tpdiag%XWF (0,0))
203  ALLOCATE(tpdiag%XLF (0,0))
204  ALLOCATE(tpdiag%XHSF (0,0))
205 ENDIF
206 !
207 IF (lhook) CALL dr_hook('ALLOC_TRIP_DIAG:ALLOC_DIAG',1,zhook_handle)
208 !
209 END SUBROUTINE alloc_diag
210 !
211 !-------------------------------------------------------------------------------
212 END SUBROUTINE alloc_trip_diag
logical lflood
Definition: modn_trip.F90:62
integer, parameter jprb
Definition: parkind1.F90:32
character(len=3) cvit
Definition: modn_trip.F90:41
character(len=3) cgroundw
Definition: modn_trip.F90:49
logical lhook
Definition: yomhook.F90:15
subroutine alloc_diag(DA, OCUM, KSIZE1, KSIZE2)
subroutine alloc_trip_diag(TPDG, KLON, KLAT)
logical ldiag_misc