1 |
|
1 |
SUBROUTINE SUGFL |
2 |
|
|
|
3 |
|
|
USE PARKIND1 ,ONLY : JPIM ,JPRB |
4 |
|
|
USE YOMHOOK ,ONLY : LHOOK, DR_HOOK |
5 |
|
|
|
6 |
|
|
USE YOMLUN , ONLY : NULOUT |
7 |
|
|
USE YOM_YGFL , ONLY : YGFL,YGFLC,YL, YI, YA, YS, YR, YG, YTKE,& |
8 |
|
|
& YO3, YSRC, YEXT, YQ, YCVGQ, JPGFL,YQVA, & |
9 |
|
|
& YL_NL, YI_NL, YA_NL, YO3_NL, YSRC_NL, YEXT_NL, YQ_NL,YQVA_NL, & |
10 |
|
|
& YS_NL, YR_NL, YG_NL, YTKE_NL,YCVGQ_NL,NGFL_EXT,& |
11 |
|
|
& YCPF , YSPF ,YCPF_NL, YSPF_NL, YAERO, YAERO_NL, NAERO, YGRG, YGRG_NL, NGRG,& |
12 |
|
|
& YSDSAT, YCVV, YSDSAT_NL, YCVV_NL, YFORC, YFORC_NL, NGFL_FORC,& |
13 |
|
|
& YEZDIAG, YEZDIAG_NL, NGFL_EZDIAG, & |
14 |
|
|
& YGHG, YGHG_NL, NGHG, YTRAC, YTRAC_NL, NTRAC, & |
15 |
|
|
& YUOM ,YUAL ,YDOM ,YDAL ,YUEN ,YUNEBH, & |
16 |
|
|
& YUOM_NL ,YUAL_NL ,YDOM_NL ,YDAL_NL ,YUEN_NL ,YUNEBH_NL |
17 |
|
|
USE GFL_SUBS ,ONLY : DEFINE_GFL_COMP |
18 |
|
|
USE YOMDIM , ONLY : LADER |
19 |
|
|
USE YOMCST , ONLY : RV ,RCPV ,RCW ,RCS |
20 |
|
|
USE YOMGRB , ONLY : NGRBQ, NGRBO3, NGRBCLWC, NGRBCIWC,& |
21 |
|
|
& NGRBCC, NGRB149 |
22 |
|
|
USE YOMCT0 , ONLY : LFPART2,NCONF |
23 |
|
|
USE YOMFA , ONLY : YFAQ ,YFAL ,YFAI ,YFAO3 ,& |
24 |
|
|
& YFAS ,YFAR ,YFAG ,YFATKE ,& |
25 |
|
|
& YFACPF, YFASPF, YFACLF,YFASRC, YFACVGQ, YFASDSAT, YFACVV ,& |
26 |
|
|
& YFAQVA, & |
27 |
|
|
& YFAUOM, YFAUAL, YFADOM, YFADAL, YFAUEN, YFAUNEBH |
28 |
|
|
|
29 |
|
|
!**** *SUGFL* - Initialize definition of unified_treatment grid_point fields |
30 |
|
|
|
31 |
|
|
! Purpose. |
32 |
|
|
! -------- |
33 |
|
|
! Initialize definition of unified_treatment fields (GFL) |
34 |
|
|
! The GFL ordering in this routine is the ordering for "t" and |
35 |
|
|
! "t+dt" values of the GFL in grid-point arrays (GFL and GFLT1), |
36 |
|
|
! and also the ordering in the spectral array SPGFL. |
37 |
|
|
|
38 |
|
|
!** Interface. |
39 |
|
|
! ---------- |
40 |
|
|
! *CALL* *SUGFL |
41 |
|
|
|
42 |
|
|
! Explicit arguments : |
43 |
|
|
! -------------------- |
44 |
|
|
|
45 |
|
|
! Implicit arguments : |
46 |
|
|
! -------------------- |
47 |
|
|
! MODULE YOM_YGFL |
48 |
|
|
|
49 |
|
|
! Method. |
50 |
|
|
! ------- |
51 |
|
|
! See documentation |
52 |
|
|
|
53 |
|
|
! Externals. |
54 |
|
|
! ---------- |
55 |
|
|
! None |
56 |
|
|
|
57 |
|
|
! Reference. |
58 |
|
|
! ---------- |
59 |
|
|
! ECMWF Research Department documentation of the IFS |
60 |
|
|
|
61 |
|
|
! Author. |
62 |
|
|
! ------- |
63 |
|
|
! Mats Hamrud *ECMWF* |
64 |
|
|
|
65 |
|
|
! Modifications. |
66 |
|
|
! -------------- |
67 |
|
|
! Original : 2002-03-11 |
68 |
|
|
! M.Hamrud : 2002-08-01 Extensive mods |
69 |
|
|
! R. El Khatib : 2003-08-19 ARPEGE field names |
70 |
|
|
! M.Hamrud 01-Oct-2003 CY28 Cleaning |
71 |
|
|
! M. Tudor : 2003-10-17 introduce YCPF and YSPF in GFL |
72 |
|
|
! A. Untch : 2005-03-11 introduce aerosols |
73 |
|
|
! J. Flemming : 2005-04-11 replace aerosols with GRG |
74 |
|
|
! Y. Seity : 2004-11-16 AROME GFL fields |
75 |
|
|
! C. Fischer: 23-May-2005 No Ozone in the Meteo-France control variable |
76 |
|
|
! Y. Bouteloup: 13-Oct-2005 introduce YCVGQ (Moisture convergence for French physics) |
77 |
|
|
! J. Haseler : 2005-10-11 introduce LTRAJIO |
78 |
|
|
! JJMorcrette 20060512 GEMS variables in cy31 |
79 |
|
|
! S. Serrar 20060907 tracers used for diagnostics only (in GFL between GHG and GRG) |
80 |
|
|
! A. Alias : 2006-10-13 introduction of YSDSAT and YCVV |
81 |
|
|
! B. Sass : HIRLAM pseudo-prognostic field YQVA |
82 |
|
|
! M. Bellus : 27-Sep-2006 introduce YUOM, YUAL, YDOM, YDAL, YUEN and |
83 |
|
|
! YUNEBH (ALARO-0 prognostic convection) + spotted/corrected bug |
84 |
|
|
! in index incrementation after YO3 |
85 |
|
|
! ------------------------------------------------------------------ |
86 |
|
|
|
87 |
|
|
IMPLICIT NONE |
88 |
|
|
|
89 |
|
|
INTEGER(KIND=JPIM) :: JGFL,IGFLPTR,INCR |
90 |
|
|
LOGICAL :: LLDERS,LLT1,LL5 |
91 |
|
|
REAL(KIND=JPRB) :: ZHOOK_HANDLE |
92 |
|
|
|
93 |
|
|
!------------------------------------------------------------------------- |
94 |
|
|
|
95 |
|
|
#include "abor1.intfb.h" |
96 |
|
|
|
97 |
|
|
!------------------------------------------------------------------------- |
98 |
|
|
|
99 |
✓✗ |
1 |
IF (LHOOK) CALL DR_HOOK('SUGFL',0,ZHOOK_HANDLE) |
100 |
|
|
|
101 |
|
|
!------------------------------------------------------------------------- |
102 |
|
|
|
103 |
✓✗ |
1 |
IF( .NOT.LFPART2) THEN |
104 |
|
|
|
105 |
|
|
! 1. CASE LFPART2=F |
106 |
|
|
! |
107 |
|
|
! 1.1 Initial settings. |
108 |
|
|
|
109 |
|
1 |
YGFL%NUMFLDS=0 |
110 |
|
|
|
111 |
|
|
LL5=NCONF/100 == 1.OR.NCONF == 801.OR.NCONF == 601.OR. & |
112 |
✓✗✓✗ ✓✗✓✗
|
1 |
& NCONF == 401.OR.NCONF == 501 |
113 |
|
1 |
LLT1=.TRUE. |
114 |
|
|
! All gridpoint fields have to be set up before the spectral ones |
115 |
|
|
! (i.e. part 1.2 SHOULD be done before part 1.3) |
116 |
|
1 |
LLDERS=.FALSE. |
117 |
|
|
! * Simple GFL variables: |
118 |
|
|
! (order should be the same in parts 1.1, 1.2 and 1.3). |
119 |
|
|
INCR=0 |
120 |
|
1 |
YQ => YGFLC(JPGFL-INCR) |
121 |
|
|
INCR=INCR+1 |
122 |
|
1 |
YL => YGFLC(JPGFL-INCR) |
123 |
|
|
INCR=INCR+1 |
124 |
|
1 |
YI => YGFLC(JPGFL-INCR) |
125 |
|
|
INCR=INCR+1 |
126 |
|
1 |
YS => YGFLC(JPGFL-INCR) |
127 |
|
|
INCR=INCR+1 |
128 |
|
1 |
YR => YGFLC(JPGFL-INCR) |
129 |
|
|
INCR=INCR+1 |
130 |
|
1 |
YG => YGFLC(JPGFL-INCR) |
131 |
|
|
INCR=INCR+1 |
132 |
|
1 |
YTKE => YGFLC(JPGFL-INCR) |
133 |
|
|
INCR=INCR+1 |
134 |
|
1 |
YA => YGFLC(JPGFL-INCR) |
135 |
|
|
INCR=INCR+1 |
136 |
|
1 |
YO3 => YGFLC(JPGFL-INCR) |
137 |
|
|
INCR=INCR+1 |
138 |
|
1 |
YCPF => YGFLC(JPGFL-INCR) |
139 |
|
|
INCR=INCR+1 |
140 |
|
1 |
YSPF => YGFLC(JPGFL-INCR) |
141 |
|
|
INCR=INCR+1 |
142 |
|
1 |
YSRC => YGFLC(JPGFL-INCR) |
143 |
|
|
INCR=INCR+1 |
144 |
|
1 |
YCVGQ => YGFLC(JPGFL-INCR) |
145 |
|
|
INCR=INCR+1 |
146 |
|
1 |
YSDSAT => YGFLC(JPGFL-INCR) |
147 |
|
|
INCR=INCR+1 |
148 |
|
1 |
YCVV => YGFLC(JPGFL-INCR) |
149 |
|
|
INCR=INCR+1 |
150 |
|
1 |
YQVA => YGFLC(JPGFL-INCR) |
151 |
|
|
INCR=INCR+1 |
152 |
|
1 |
YUOM => YGFLC(JPGFL-INCR) |
153 |
|
|
INCR=INCR+1 |
154 |
|
1 |
YUAL => YGFLC(JPGFL-INCR) |
155 |
|
|
INCR=INCR+1 |
156 |
|
1 |
YDOM => YGFLC(JPGFL-INCR) |
157 |
|
|
INCR=INCR+1 |
158 |
|
1 |
YDAL => YGFLC(JPGFL-INCR) |
159 |
|
|
INCR=INCR+1 |
160 |
|
1 |
YUEN => YGFLC(JPGFL-INCR) |
161 |
|
|
INCR=INCR+1 |
162 |
|
1 |
YUNEBH => YGFLC(JPGFL-INCR) |
163 |
|
|
INCR=INCR+1 |
164 |
|
|
! * Groups of multiple GFL variables: |
165 |
|
|
! (order should be the same in parts 1.1, 1.2 and 1.3). |
166 |
✓✗ |
1 |
IF (NGFL_EXT == 0) THEN |
167 |
|
1 |
YEXT => YGFLC(JPGFL-INCR:JPGFL-INCR) |
168 |
|
|
INCR=INCR+1 |
169 |
|
|
ENDIF |
170 |
✓✗ |
1 |
IF (NGFL_FORC == 0) THEN |
171 |
|
1 |
YFORC => YGFLC(JPGFL-INCR:JPGFL-INCR) |
172 |
|
1 |
INCR=INCR+1 |
173 |
|
|
ENDIF |
174 |
✓✗ |
1 |
IF (NGFL_EZDIAG == 0) THEN |
175 |
|
1 |
YEZDIAG => YGFLC(JPGFL-INCR:JPGFL-INCR) |
176 |
|
1 |
INCR=INCR+1 |
177 |
|
|
ENDIF |
178 |
✓✗ |
1 |
IF (NGHG == 0) THEN |
179 |
|
1 |
YGHG => YGFLC(JPGFL-INCR:JPGFL-INCR) |
180 |
|
1 |
INCR=INCR+1 |
181 |
|
|
ENDIF |
182 |
✓✗ |
1 |
IF (NTRAC == 0) THEN |
183 |
|
1 |
YTRAC => YGFLC(JPGFL-INCR:JPGFL-INCR) |
184 |
|
1 |
INCR=INCR+1 |
185 |
|
|
ENDIF |
186 |
✓✗ |
1 |
IF (NGRG == 0) THEN |
187 |
|
1 |
YGRG => YGFLC(JPGFL-INCR:JPGFL-INCR) |
188 |
|
1 |
INCR=INCR+1 |
189 |
|
|
ENDIF |
190 |
✓✗ |
1 |
IF (NAERO == 0) THEN |
191 |
|
1 |
YAERO => YGFLC(JPGFL-INCR:JPGFL-INCR) |
192 |
|
|
INCR=INCR+1 |
193 |
|
|
ENDIF |
194 |
|
|
|
195 |
|
|
! 1.2 Grid-point GFL. |
196 |
|
|
|
197 |
✗✓ |
1 |
IF(YQ_NL%LGP) THEN |
198 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
199 |
|
|
YQ=>YGFLC(IGFLPTR) |
200 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YQ ,CDNAME=YFAQ%CLNAME,KGRIB=NGRBQ,LDGP=.TRUE.,& |
201 |
|
|
& KREQIN=YQ_NL%NREQIN, & |
202 |
|
|
& PREFVALI=YQ_NL%REFVALI,LDREQOUT=YQ_NL%LREQOUT,LDERS=LLDERS,LD5=LL5,& |
203 |
|
|
& LDT1=LLT1,LDGPINGP=YQ_NL%LGPINGP, & |
204 |
|
|
& LDTRAJIO=YQ_NL%LTRAJIO,LDTHERMACT=.TRUE.,PR=RV,PRCP=RCPV) |
205 |
|
|
ENDIF |
206 |
✗✓ |
1 |
IF(YL_NL%LGP) THEN |
207 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
208 |
|
|
YL=>YGFLC(IGFLPTR) |
209 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YL ,CDNAME=YFAL%CLNAME,KGRIB=NGRBCLWC, & |
210 |
|
|
& LDGP=.TRUE.,KREQIN=YL_NL%NREQIN, & |
211 |
|
|
& PREFVALI=YL_NL%REFVALI,LDREQOUT=YL_NL%LREQOUT,LDERS=LLDERS,LD5=LL5, & |
212 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCW) |
213 |
|
|
ENDIF |
214 |
✗✓ |
1 |
IF(YI_NL%LGP) THEN |
215 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
216 |
|
|
YI=>YGFLC(IGFLPTR) |
217 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YI ,CDNAME=YFAI%CLNAME,KGRIB=NGRBCIWC,& |
218 |
|
|
& LDGP=.TRUE.,KREQIN=YI_NL%NREQIN, & |
219 |
|
|
& PREFVALI=YI_NL%REFVALI,LDREQOUT=YI_NL%LREQOUT,LDERS=LLDERS,LD5=LL5, & |
220 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCS) |
221 |
|
|
ENDIF |
222 |
✗✓ |
1 |
IF(YS_NL%LGP) THEN |
223 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
224 |
|
|
YS=>YGFLC(IGFLPTR) |
225 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YS ,CDNAME=YFAS%CLNAME,KGRIB=NGRB149, & |
226 |
|
|
& LDGP=.TRUE.,KREQIN=YS_NL%NREQIN, & |
227 |
|
|
& PREFVALI=YS_NL%REFVALI,LDREQOUT=YS_NL%LREQOUT,LDERS=LLDERS,LD5=LL5, & |
228 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCS) |
229 |
|
|
ENDIF |
230 |
✗✓ |
1 |
IF(YR_NL%LGP) THEN |
231 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
232 |
|
|
YR=>YGFLC(IGFLPTR) |
233 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YR ,CDNAME=YFAR%CLNAME,KGRIB=NGRB149,& |
234 |
|
|
& LDGP=.TRUE.,KREQIN=YR_NL%NREQIN, & |
235 |
|
|
& PREFVALI=YR_NL%REFVALI,LDREQOUT=YR_NL%LREQOUT,LDERS=LLDERS,LD5=LL5, & |
236 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCW) |
237 |
|
|
ENDIF |
238 |
✗✓ |
1 |
IF(YG_NL%LGP) THEN |
239 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
240 |
|
|
YG=>YGFLC(IGFLPTR) |
241 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YG ,CDNAME=YFAG%CLNAME,KGRIB=NGRB149,& |
242 |
|
|
& LDGP=.TRUE.,KREQIN=YG_NL%NREQIN, & |
243 |
|
|
& PREFVALI=YG_NL%REFVALI,LDREQOUT=YG_NL%LREQOUT,LDERS=LLDERS,LD5=LL5, & |
244 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCS) |
245 |
|
|
ENDIF |
246 |
✗✓ |
1 |
IF(YTKE_NL%LGP) THEN |
247 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
248 |
|
|
YTKE=>YGFLC(IGFLPTR) |
249 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YTKE ,CDNAME=YFATKE%CLNAME,KGRIB=NGRB149,& |
250 |
|
|
& LDGP=.TRUE.,KREQIN=YTKE_NL%NREQIN, & |
251 |
|
|
& PREFVALI=YTKE_NL%REFVALI,LDREQOUT=YTKE_NL%LREQOUT,LDERS=LLDERS,LD5=LL5,& |
252 |
|
|
& LDT1=LLT1) |
253 |
|
|
ENDIF |
254 |
✗✓ |
1 |
IF(YA_NL%LGP)THEN |
255 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
256 |
|
|
YA=>YGFLC(IGFLPTR) |
257 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YA ,CDNAME=YFACLF%CLNAME,KGRIB=NGRBCC,& |
258 |
|
|
& LDGP=.TRUE.,KREQIN=YA_NL%NREQIN, & |
259 |
|
|
& PREFVALI=YA_NL%REFVALI,LDREQOUT=YA_NL%LREQOUT,LDERS=LLDERS,LD5=LL5,& |
260 |
|
|
& LDT1=LLT1) |
261 |
|
|
ENDIF |
262 |
✗✓ |
1 |
IF(YO3_NL%LGP)THEN |
263 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
264 |
|
|
YO3=>YGFLC(IGFLPTR) |
265 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YO3,CDNAME=YFAO3%CLNAME,KGRIB=NGRBO3,& |
266 |
|
|
& LDGP=.TRUE.,KREQIN=YO3_NL%NREQIN, & |
267 |
|
|
& PREFVALI=YO3_NL%REFVALI,LDREQOUT=YO3_NL%LREQOUT,LDERS=LLDERS,LD5=LL5,& |
268 |
|
|
& LDT1=LLT1,LDGPINGP=YO3_NL%LGPINGP, & |
269 |
|
|
& LDTRAJIO=YO3_NL%LTRAJIO) |
270 |
|
|
ENDIF |
271 |
✗✓ |
1 |
IF(YCPF_NL%LGP)THEN |
272 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
273 |
|
|
YCPF=>YGFLC(IGFLPTR) |
274 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YCPF,CDNAME=YFACPF%CLNAME,& |
275 |
|
|
& KGRIB=YCPF_NL%IGRBCODE,LDGP=.TRUE., & |
276 |
|
|
& KREQIN=YCPF_NL%NREQIN,PREFVALI= YCPF_NL%REFVALI,& |
277 |
|
|
& LDREQOUT=YCPF_NL%LREQOUT,LDERS=.FALSE.,LD5=LL5, & |
278 |
|
|
& LDT1=LLT1,LDGPINGP=.TRUE.) |
279 |
|
|
ENDIF |
280 |
✗✓ |
1 |
IF(YSPF_NL%LGP)THEN |
281 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
282 |
|
|
YSPF=>YGFLC(IGFLPTR) |
283 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YSPF,CDNAME=YFASPF%CLNAME,& |
284 |
|
|
& KGRIB=YSPF_NL%IGRBCODE,LDGP=.TRUE., & |
285 |
|
|
& KREQIN=YSPF_NL%NREQIN, PREFVALI=YSPF_NL%REFVALI,& |
286 |
|
|
& LDREQOUT=YSPF_NL%LREQOUT,LDERS=.FALSE.,LD5=LL5, & |
287 |
|
|
& LDT1=LLT1,LDGPINGP=.TRUE.) |
288 |
|
|
ENDIF |
289 |
✗✓ |
1 |
IF(YSRC_NL%LGP) THEN |
290 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
291 |
|
|
YSRC=>YGFLC(IGFLPTR) |
292 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YSRC ,CDNAME=YFASRC%CLNAME,KGRIB=NGRB149,& |
293 |
|
|
& LDGP=.TRUE.,KREQIN=YSRC_NL%NREQIN, & |
294 |
|
|
& PREFVALI=YSRC_NL%REFVALI,LDREQOUT=YSRC_NL%LREQOUT,LDERS=LLDERS,& |
295 |
|
|
& LD5=LL5,LDT1=LLT1) |
296 |
|
|
ENDIF |
297 |
✗✓ |
1 |
IF(YCVGQ_NL%LGP) THEN |
298 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
299 |
|
|
YCVGQ=>YGFLC(IGFLPTR) |
300 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YCVGQ ,CDNAME=YFACVGQ%CLNAME,KGRIB=NGRB149,& |
301 |
|
|
& LDGP=.TRUE.,KREQIN=YCVGQ_NL%NREQIN, & |
302 |
|
|
& PREFVALI=YCVGQ_NL%REFVALI, LDREQOUT=YCVGQ_NL%LREQOUT,LDERS=LLDERS,& |
303 |
|
|
& LD5=LL5,LDT1=LLT1) |
304 |
|
|
ENDIF |
305 |
✗✓ |
1 |
IF(YSDSAT_NL%LGP) THEN |
306 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
307 |
|
|
YSDSAT=>YGFLC(IGFLPTR) |
308 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YSDSAT,CDNAME=YFASDSAT%CLNAME,KGRIB=NGRB149,& |
309 |
|
|
& LDGP=.TRUE.,KREQIN=YSDSAT_NL%NREQIN, & |
310 |
|
|
& PREFVALI=YSDSAT_NL%REFVALI, LDREQOUT=YSDSAT_NL%LREQOUT,LDERS=LLDERS,& |
311 |
|
|
& LD5=LL5,LDT1=LLT1) |
312 |
|
|
ENDIF |
313 |
✗✓ |
1 |
IF(YCVV_NL%LGP) THEN |
314 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
315 |
|
|
YCVV=>YGFLC(IGFLPTR) |
316 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YCVV,CDNAME=YFACVV%CLNAME,KGRIB=NGRB149,& |
317 |
|
|
& LDGP=.TRUE.,KREQIN=YCVV_NL%NREQIN, & |
318 |
|
|
& PREFVALI=YCVV_NL%REFVALI, LDREQOUT=YCVV_NL%LREQOUT,LDERS=LLDERS,& |
319 |
|
|
& LD5=LL5,LDT1=LLT1) |
320 |
|
|
ENDIF |
321 |
✗✓ |
1 |
IF(YQVA_NL%LGP) THEN |
322 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
323 |
|
|
YQVA=>YGFLC(IGFLPTR) |
324 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YQVA,CDNAME=YFAQVA%CLNAME,& |
325 |
|
|
& KGRIB=YQVA_NL%IGRBCODE,LDGP=.TRUE., & |
326 |
|
|
& KREQIN=YQVA_NL%NREQIN, PREFVALI=YQVA_NL%REFVALI,& |
327 |
|
|
& LDREQOUT=YQVA_NL%LREQOUT,LDERS=.FALSE.,LD5=LL5, & |
328 |
|
|
& LDT1=LLT1,LDGPINGP=.TRUE.) |
329 |
|
|
ENDIF |
330 |
✗✓ |
1 |
IF(YUOM_NL%LGP)THEN |
331 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
332 |
|
|
YUOM=>YGFLC(IGFLPTR) |
333 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUOM,CDNAME=YFAUOM%CLNAME,& |
334 |
|
|
& KGRIB=YUOM_NL%IGRBCODE,LDGP=.TRUE., & |
335 |
|
|
& KREQIN=YUOM_NL%NREQIN,& |
336 |
|
|
& PREFVALI=YUOM_NL%REFVALI,LDREQOUT=YUOM_NL%LREQOUT,& |
337 |
|
|
& LDERS=.FALSE.,LD5=LL5,LDT1=LLT1,LDGPINGP=.TRUE.) |
338 |
|
|
ENDIF |
339 |
✗✓ |
1 |
IF(YUAL_NL%LGP)THEN |
340 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
341 |
|
|
YUAL=>YGFLC(IGFLPTR) |
342 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUAL,CDNAME=YFAUAL%CLNAME,& |
343 |
|
|
& KGRIB=YUAL_NL%IGRBCODE,LDGP=.TRUE., & |
344 |
|
|
& KREQIN=YUAL_NL%NREQIN,& |
345 |
|
|
& PREFVALI=YUAL_NL%REFVALI,LDREQOUT=YUAL_NL%LREQOUT,& |
346 |
|
|
& LDERS=.FALSE.,LD5=LL5,LDT1=LLT1,LDGPINGP=.TRUE.) |
347 |
|
|
ENDIF |
348 |
✗✓ |
1 |
IF(YDOM_NL%LGP)THEN |
349 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
350 |
|
|
YDOM=>YGFLC(IGFLPTR) |
351 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YDOM,CDNAME=YFADOM%CLNAME,& |
352 |
|
|
& KGRIB=YDOM_NL%IGRBCODE,LDGP=.TRUE., & |
353 |
|
|
& KREQIN=YDOM_NL%NREQIN,& |
354 |
|
|
& PREFVALI=YDOM_NL%REFVALI,LDREQOUT=YDOM_NL%LREQOUT,& |
355 |
|
|
& LDERS=.FALSE.,LD5=LL5,LDT1=LLT1,LDGPINGP=.TRUE.) |
356 |
|
|
ENDIF |
357 |
✗✓ |
1 |
IF(YDAL_NL%LGP)THEN |
358 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
359 |
|
|
YDAL=>YGFLC(IGFLPTR) |
360 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YDAL,CDNAME=YFADAL%CLNAME,& |
361 |
|
|
& KGRIB=YDAL_NL%IGRBCODE,LDGP=.TRUE., & |
362 |
|
|
& KREQIN=YDAL_NL%NREQIN,& |
363 |
|
|
& PREFVALI=YDAL_NL%REFVALI,LDREQOUT=YDAL_NL%LREQOUT,& |
364 |
|
|
& LDERS=.FALSE.,LD5=LL5,LDT1=LLT1,LDGPINGP=.TRUE.) |
365 |
|
|
ENDIF |
366 |
✗✓ |
1 |
IF(YUEN_NL%LGP)THEN |
367 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
368 |
|
|
YUEN=>YGFLC(IGFLPTR) |
369 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUEN,CDNAME=YFAUEN%CLNAME,& |
370 |
|
|
& KGRIB=YUEN_NL%IGRBCODE,LDGP=.TRUE., & |
371 |
|
|
& KREQIN=YUEN_NL%NREQIN,& |
372 |
|
|
& PREFVALI=YUEN_NL%REFVALI,LDREQOUT=YUEN_NL%LREQOUT,& |
373 |
|
|
& LDERS=.FALSE.,LD5=LL5,LDT1=LLT1,LDGPINGP=.TRUE.) |
374 |
|
|
ENDIF |
375 |
✗✓ |
1 |
IF(YUNEBH_NL%LGP)THEN |
376 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
377 |
|
|
YUNEBH=>YGFLC(IGFLPTR) |
378 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUNEBH,CDNAME=YFAUNEBH%CLNAME,& |
379 |
|
|
& KGRIB=YUNEBH_NL%IGRBCODE,LDGP=.TRUE., & |
380 |
|
|
& KREQIN=YUNEBH_NL%NREQIN,& |
381 |
|
|
& PREFVALI=YUNEBH_NL%REFVALI,LDREQOUT=YUNEBH_NL%LREQOUT,& |
382 |
|
|
& LDERS=.FALSE.,LD5=LL5,LDT1=LLT1,LDGPINGP=.TRUE.) |
383 |
|
|
ENDIF |
384 |
|
|
|
385 |
|
|
! Extra GFL variables |
386 |
|
|
! - do a preliminary test to see if, when there are extra-GFL and when at |
387 |
|
|
! least one of them is a grid-point one, there is no extra-GFL which is |
388 |
|
|
! a spectral one (not allowed): |
389 |
|
|
! in this case all the extra-GFL must be grid-point ones. |
390 |
✗✓ |
1 |
IF (NGFL_EXT > 1) THEN |
391 |
|
|
IF(ANY(YEXT_NL(1:NGFL_EXT)%LGP)) THEN |
392 |
|
|
DO JGFL=1,NGFL_EXT |
393 |
|
|
IF (YEXT_NL(JGFL)%LSP) CALL ABOR1& |
394 |
|
|
& ('SUGFL:EXTRA GFL FIELDS HAVE TO BE ALL EITHER SPECTRAL OR GRIDPOINT') |
395 |
|
|
ENDDO |
396 |
|
|
ENDIF |
397 |
|
|
ENDIF |
398 |
|
|
! - define the GFL components (all the extra-GFL are grid-point ones). |
399 |
✗✓ |
1 |
DO JGFL=1,NGFL_EXT |
400 |
✗✗ |
1 |
IF(YEXT_NL(JGFL)%LGP) THEN |
401 |
|
|
IF(JGFL == 1) THEN |
402 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
403 |
|
|
YEXT=>YGFLC(IGFLPTR:IGFLPTR+NGFL_EXT-1) |
404 |
|
|
ENDIF |
405 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YEXT(JGFL),CDNAME=YEXT_NL(JGFL)%CNAME ,& |
406 |
|
|
& KGRIB=YEXT_NL(JGFL)%IGRBCODE,LDGP=.TRUE.,KREQIN=YEXT_NL(JGFL)%NREQIN,& |
407 |
|
|
& PREFVALI=YEXT_NL(JGFL)%REFVALI, LDREQOUT=YEXT_NL(JGFL)%LREQOUT ,& |
408 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YEXT_NL(JGFL)%LGPINGP, & |
409 |
|
|
& LDTRAJIO=YEXT_NL(JGFL)%LTRAJIO) |
410 |
|
|
ENDIF |
411 |
|
|
ENDDO |
412 |
|
|
|
413 |
|
|
! Forcings |
414 |
✗✓ |
1 |
DO JGFL=1,NGFL_FORC |
415 |
✗✗ |
1 |
IF(YFORC_NL(JGFL)%LGP) THEN |
416 |
|
|
IF(JGFL == 1) THEN |
417 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
418 |
|
|
YFORC=>YGFLC(IGFLPTR:IGFLPTR+NGFL_FORC-1) |
419 |
|
|
ENDIF |
420 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YFORC(JGFL),CDNAME=YFORC_NL(JGFL)%CNAME ,& |
421 |
|
|
& KGRIB=YFORC_NL(JGFL)%IGRBCODE,LDGP=.TRUE.,KREQIN=YFORC_NL(JGFL)%NREQIN,& |
422 |
|
|
& PREFVALI=YFORC_NL(JGFL)%REFVALI, LDREQOUT=YFORC_NL(JGFL)%LREQOUT ,& |
423 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YFORC_NL(JGFL)%LGPINGP, & |
424 |
|
|
& LDTRAJIO=YFORC_NL(JGFL)%LTRAJIO) |
425 |
|
|
ENDIF |
426 |
|
|
ENDDO |
427 |
|
|
|
428 |
|
|
! Easy diagnostics |
429 |
✗✓ |
1 |
DO JGFL=1,NGFL_EZDIAG |
430 |
✗✗ |
1 |
IF(YEZDIAG_NL(JGFL)%LGP) THEN |
431 |
|
|
IF(JGFL == 1) THEN |
432 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
433 |
|
|
YEZDIAG=>YGFLC(IGFLPTR:IGFLPTR+NGFL_EZDIAG-1) |
434 |
|
|
ENDIF |
435 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YEZDIAG(JGFL),CDNAME=YEZDIAG_NL(JGFL)%CNAME ,& |
436 |
|
|
& KGRIB=YEZDIAG_NL(JGFL)%IGRBCODE,LDGP=.TRUE.,KREQIN=YEZDIAG_NL(JGFL)%NREQIN,& |
437 |
|
|
& PREFVALI=YEZDIAG_NL(JGFL)%REFVALI, LDREQOUT=YEZDIAG_NL(JGFL)%LREQOUT ,& |
438 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YEZDIAG_NL(JGFL)%LGPINGP, & |
439 |
|
|
& LDTRAJIO=YEZDIAG_NL(JGFL)%LTRAJIO) |
440 |
|
|
ENDIF |
441 |
|
|
ENDDO |
442 |
|
|
|
443 |
|
|
!-- Greenhouse Gases |
444 |
✗✓ |
1 |
DO JGFL=1,NGHG |
445 |
✗✗ |
1 |
IF(YGHG_NL(JGFL)%LGP) THEN |
446 |
|
|
IF(JGFL == 1) THEN |
447 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
448 |
|
|
YGHG=>YGFLC(IGFLPTR:IGFLPTR+NGHG-1) |
449 |
|
|
ENDIF |
450 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YGHG(JGFL),CDNAME=YGHG_NL(JGFL)%CNAME ,& |
451 |
|
|
& KGRIB=YGHG_NL(JGFL)%IGRBCODE, LDGP=.TRUE., KREQIN=YGHG_NL(JGFL)%NREQIN ,& |
452 |
|
|
& PREFVALI=YGHG_NL(JGFL)%REFVALI, LDREQOUT=YGHG_NL(JGFL)%LREQOUT ,& |
453 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YGHG_NL(JGFL)%LGPINGP, & |
454 |
|
|
& LDTRAJIO=YGHG_NL(JGFL)%LTRAJIO) |
455 |
|
|
ENDIF |
456 |
|
|
ENDDO |
457 |
|
|
|
458 |
|
|
!-- Diagnostic tracers |
459 |
✗✓ |
1 |
DO JGFL=1,NTRAC |
460 |
✗✗ |
1 |
IF(YTRAC_NL(JGFL)%LGP) THEN |
461 |
|
|
IF(JGFL == 1) THEN |
462 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
463 |
|
|
YTRAC=>YGFLC(IGFLPTR:IGFLPTR+NTRAC-1) |
464 |
|
|
ENDIF |
465 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YTRAC(JGFL),CDNAME=YTRAC_NL(JGFL)%CNAME ,& |
466 |
|
|
& KGRIB=YTRAC_NL(JGFL)%IGRBCODE, LDGP=.TRUE., KREQIN=YTRAC_NL(JGFL)%NREQIN ,& |
467 |
|
|
& PREFVALI=YTRAC_NL(JGFL)%REFVALI, LDREQOUT=YTRAC_NL(JGFL)%LREQOUT ,& |
468 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YTRAC_NL(JGFL)%LGPINGP, & |
469 |
|
|
& LDTRAJIO=YTRAC_NL(JGFL)%LTRAJIO) |
470 |
|
|
ENDIF |
471 |
|
|
ENDDO |
472 |
|
|
|
473 |
|
|
!-- Reactive Gases |
474 |
✗✓ |
1 |
DO JGFL=1,NGRG |
475 |
✗✗ |
1 |
IF(YGRG_NL(JGFL)%LGP) THEN |
476 |
|
|
IF(JGFL == 1) THEN |
477 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
478 |
|
|
YGRG=>YGFLC(IGFLPTR:IGFLPTR+NGRG-1) |
479 |
|
|
ENDIF |
480 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YGRG(JGFL),CDNAME=YGRG_NL(JGFL)%CNAME ,& |
481 |
|
|
& KGRIB=YGRG_NL(JGFL)%IGRBCODE, LDGP=.TRUE., KREQIN=YGRG_NL(JGFL)%NREQIN ,& |
482 |
|
|
& PREFVALI=YGRG_NL(JGFL)%REFVALI, LDREQOUT=YGRG_NL(JGFL)%LREQOUT ,& |
483 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YGRG_NL(JGFL)%LGPINGP, & |
484 |
|
|
& LDTRAJIO=YGRG_NL(JGFL)%LTRAJIO) |
485 |
|
|
ENDIF |
486 |
|
|
ENDDO |
487 |
|
|
|
488 |
|
|
!-- Aerosols |
489 |
✗✓ |
1 |
DO JGFL=1,NAERO |
490 |
✗✗ |
1 |
IF(YAERO_NL(JGFL)%LGP) THEN |
491 |
|
|
IF(JGFL == 1) THEN |
492 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
493 |
|
|
YAERO=>YGFLC(IGFLPTR:IGFLPTR+NAERO-1) |
494 |
|
|
ENDIF |
495 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YAERO(JGFL),CDNAME=YAERO_NL(JGFL)%CNAME ,& |
496 |
|
|
& KGRIB=YAERO_NL(JGFL)%IGRBCODE, LDGP=.TRUE., KREQIN=YAERO_NL(JGFL)%NREQIN ,& |
497 |
|
|
& PREFVALI=YAERO_NL(JGFL)%REFVALI, LDREQOUT=YAERO_NL(JGFL)%LREQOUT ,& |
498 |
|
|
& LDERS=LLDERS, LD5=LL5, LDT1=LLT1,LDGPINGP=YAERO_NL(JGFL)%LGPINGP, & |
499 |
|
|
& LDTRAJIO=YAERO_NL(JGFL)%LTRAJIO) |
500 |
|
|
ENDIF |
501 |
|
|
ENDDO |
502 |
|
|
|
503 |
|
|
! 1.3 Spectral GFL. |
504 |
|
|
|
505 |
✗✓ |
1 |
IF(YQ_NL%LSP) THEN |
506 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
507 |
|
|
YQ=>YGFLC(IGFLPTR) |
508 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YQ ,CDNAME=YFAQ%CLNAME,KGRIB=NGRBQ,& |
509 |
|
|
& LDGP=.FALSE.,KREQIN=YQ_NL%NREQIN, & |
510 |
|
|
& PREFVALI=YQ_NL%REFVALI, LDREQOUT=YQ_NL%LREQOUT, LDERS=LADER,LD5=LL5, & |
511 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=RV,PRCP=RCPV) |
512 |
|
|
ENDIF |
513 |
✗✓ |
1 |
IF(YL_NL%LSP) THEN |
514 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
515 |
|
|
YL=>YGFLC(IGFLPTR) |
516 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YL ,CDNAME=YFAL%CLNAME,KGRIB=NGRBCLWC,& |
517 |
|
|
& LDGP=.FALSE.,KREQIN=YL_NL%NREQIN, & |
518 |
|
|
& PREFVALI=YL_NL%REFVALI, LDREQOUT=YL_NL%LREQOUT, LDERS=LADER,LD5=LL5, & |
519 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCW) |
520 |
|
|
ENDIF |
521 |
✗✓ |
1 |
IF(YI_NL%LSP)THEN |
522 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
523 |
|
|
YI=>YGFLC(IGFLPTR) |
524 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YI ,CDNAME=YFAI%CLNAME,KGRIB=NGRBCIWC,& |
525 |
|
|
& LDGP=.FALSE.,KREQIN=YI_NL%NREQIN, & |
526 |
|
|
& PREFVALI=YI_NL%REFVALI, LDREQOUT=YI_NL%LREQOUT, LDERS=LADER,LD5=LL5, & |
527 |
|
|
& LDT1=LLT1,LDTHERMACT=.TRUE.,PR=0.0_JPRB,PRCP=RCS) |
528 |
|
|
ENDIF |
529 |
✗✓ |
1 |
IF(YS_NL%LSP)THEN |
530 |
|
|
CALL ABOR1('SUGFL: spectral snow not coded ') |
531 |
|
|
ENDIF |
532 |
✗✓ |
1 |
IF(YR_NL%LSP)THEN |
533 |
|
|
CALL ABOR1('SUGFL: spectral rain not coded ') |
534 |
|
|
ENDIF |
535 |
✗✓ |
1 |
IF(YG_NL%LSP)THEN |
536 |
|
|
CALL ABOR1('SUGFL: spectral graupels not coded ') |
537 |
|
|
ENDIF |
538 |
✗✓ |
1 |
IF(YTKE_NL%LSP)THEN |
539 |
|
|
CALL ABOR1('SUGFL: spectral TKE not coded ') |
540 |
|
|
ENDIF |
541 |
✗✓ |
1 |
IF(YA_NL%LSP)THEN |
542 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
543 |
|
|
YA=>YGFLC(IGFLPTR) |
544 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YA ,CDNAME=YFACLF%CLNAME,KGRIB=NGRBCC,& |
545 |
|
|
& LDGP=.FALSE.,KREQIN=YA_NL%NREQIN, & |
546 |
|
|
& PREFVALI=YA_NL%REFVALI, LDREQOUT=YA_NL%LREQOUT, LDERS=LADER,LD5=LL5,& |
547 |
|
|
& LDT1=LLT1) |
548 |
|
|
ENDIF |
549 |
✗✓ |
1 |
IF(YO3_NL%LSP)THEN |
550 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
551 |
|
|
YO3=>YGFLC(IGFLPTR) |
552 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YO3,CDNAME=YFAO3%CLNAME,KGRIB=NGRBO3,& |
553 |
|
|
& LDGP=.FALSE.,KREQIN=YO3_NL%NREQIN, & |
554 |
|
|
& PREFVALI=YO3_NL%REFVALI, LDREQOUT=YO3_NL%LREQOUT, LDERS=LADER,LD5=LL5,& |
555 |
|
|
& LDT1=LLT1) |
556 |
|
|
ENDIF |
557 |
✗✓ |
1 |
IF(YCPF_NL%LSP)THEN |
558 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
559 |
|
|
YCPF=>YGFLC(IGFLPTR) |
560 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YCPF,CDNAME=YFACPF%CLNAME,& |
561 |
|
|
& KGRIB=YCPF_NL%IGRBCODE, LDGP=.FALSE., & |
562 |
|
|
& KREQIN=YCPF_NL%NREQIN,PREFVALI=YCPF_NL%REFVALI,LDREQOUT=YCPF_NL%LREQOUT,& |
563 |
|
|
& LDERS=.FALSE.,LD5=.FALSE., & |
564 |
|
|
& LDT1=LLT1) |
565 |
|
|
ENDIF |
566 |
✗✓ |
1 |
IF(YSPF_NL%LSP)THEN |
567 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
568 |
|
|
YSPF=>YGFLC(IGFLPTR) |
569 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YSPF,CDNAME=YFASPF%CLNAME,& |
570 |
|
|
& KGRIB=YSPF_NL%IGRBCODE,LDGP= .FALSE., & |
571 |
|
|
& KREQIN=YSPF_NL%NREQIN,PREFVALI=YSPF_NL%REFVALI,LDREQOUT=YSPF_NL%LREQOUT,& |
572 |
|
|
& LDERS=.FALSE.,LD5=.FALSE., & |
573 |
|
|
& LDT1=LLT1) |
574 |
|
|
ENDIF |
575 |
✗✓ |
1 |
IF(YSRC_NL%LSP)THEN |
576 |
|
|
CALL ABOR1('SUGFL: spectral SRC not coded ') |
577 |
|
|
ENDIF |
578 |
✗✓ |
1 |
IF(YCVGQ_NL%LSP)THEN |
579 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
580 |
|
|
YCVGQ=>YGFLC(IGFLPTR) |
581 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YCVGQ,CDNAME=YFACVGQ%CLNAME,& |
582 |
|
|
& KGRIB=YCVGQ_NL%IGRBCODE,LDGP= .FALSE., & |
583 |
|
|
& KREQIN=YCVGQ_NL%NREQIN,PREFVALI=YCVGQ_NL%REFVALI,& |
584 |
|
|
& LDREQOUT=YCVGQ_NL%LREQOUT,LDERS= .TRUE.,LD5=.FALSE., & |
585 |
|
|
& LDT1=LLT1) |
586 |
|
|
ENDIF |
587 |
✗✓ |
1 |
IF(YSDSAT_NL%LSP)THEN |
588 |
|
|
CALL ABOR1('SUGFL: spectral SDSAT not coded ') |
589 |
|
|
ENDIF |
590 |
✗✓ |
1 |
IF(YCVV_NL%LSP)THEN |
591 |
|
|
CALL ABOR1('SUGFL: spectral CVV not coded ') |
592 |
|
|
ENDIF |
593 |
✗✓ |
1 |
IF(YQVA_NL%LSP) THEN |
594 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
595 |
|
|
YQVA=>YGFLC(IGFLPTR) |
596 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YQVA,CDNAME=YFAQVA%CLNAME,& |
597 |
|
|
& KGRIB=YQVA_NL%IGRBCODE, LDGP=.FALSE., & |
598 |
|
|
& KREQIN=YQVA_NL%NREQIN,PREFVALI=YQVA_NL%REFVALI,LDREQOUT=YQVA_NL%LREQOUT,& |
599 |
|
|
& LDERS=.FALSE.,LD5=.FALSE., & |
600 |
|
|
& LDT1=LLT1) |
601 |
|
|
ENDIF |
602 |
✗✓ |
1 |
IF(YUOM_NL%LSP)THEN |
603 |
|
|
CALL ABOR1('SUGFL: spectral UOM not coded ') |
604 |
|
|
! ---------------------------------------------------------------------- |
605 |
|
|
! what is below must be checked when UOM will be coded! |
606 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
607 |
|
|
YUOM=>YGFLC(IGFLPTR) |
608 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUOM,CDNAME=YFAUOM%CLNAME,& |
609 |
|
|
& KGRIB=YUOM_NL%IGRBCODE,LDGP=.FALSE., & |
610 |
|
|
& KREQIN=YUOM_NL%NREQIN,& |
611 |
|
|
& PREFVALI=YUOM_NL%REFVALI,LDREQOUT=YUOM_NL%LREQOUT,& |
612 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=LLT1) |
613 |
|
|
! ---------------------------------------------------------------------- |
614 |
|
|
ENDIF |
615 |
✗✓ |
1 |
IF(YUAL_NL%LSP)THEN |
616 |
|
|
CALL ABOR1('SUGFL: spectral UAL not coded ') |
617 |
|
|
! ---------------------------------------------------------------------- |
618 |
|
|
! what is below must be checked when UAL will be coded! |
619 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
620 |
|
|
YUAL=>YGFLC(IGFLPTR) |
621 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUAL,CDNAME=YFAUAL%CLNAME,& |
622 |
|
|
& KGRIB=YUAL_NL%IGRBCODE,LDGP=.FALSE., & |
623 |
|
|
& KREQIN=YUAL_NL%NREQIN,& |
624 |
|
|
& PREFVALI=YUAL_NL%REFVALI,LDREQOUT=YUAL_NL%LREQOUT,& |
625 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=LLT1) |
626 |
|
|
! ---------------------------------------------------------------------- |
627 |
|
|
ENDIF |
628 |
✗✓ |
1 |
IF(YDOM_NL%LSP)THEN |
629 |
|
|
CALL ABOR1('SUGFL: spectral DOM not coded ') |
630 |
|
|
! ---------------------------------------------------------------------- |
631 |
|
|
! what is below must be checked when DOM will be coded! |
632 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
633 |
|
|
YDOM=>YGFLC(IGFLPTR) |
634 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YDOM,CDNAME=YFADOM%CLNAME,& |
635 |
|
|
& KGRIB=YDOM_NL%IGRBCODE,LDGP=.FALSE., & |
636 |
|
|
& KREQIN=YDOM_NL%NREQIN,& |
637 |
|
|
& PREFVALI=YDOM_NL%REFVALI,LDREQOUT=YDOM_NL%LREQOUT,& |
638 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=LLT1) |
639 |
|
|
! ---------------------------------------------------------------------- |
640 |
|
|
ENDIF |
641 |
✗✓ |
1 |
IF(YDAL_NL%LSP)THEN |
642 |
|
|
CALL ABOR1('SUGFL: spectral DAL not coded ') |
643 |
|
|
! ---------------------------------------------------------------------- |
644 |
|
|
! what is below must be checked when DAL will be coded! |
645 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
646 |
|
|
YDAL=>YGFLC(IGFLPTR) |
647 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YDAL,CDNAME=YFADAL%CLNAME,& |
648 |
|
|
& KGRIB=YDAL_NL%IGRBCODE,LDGP=.FALSE., & |
649 |
|
|
& KREQIN=YDAL_NL%NREQIN,& |
650 |
|
|
& PREFVALI=YDAL_NL%REFVALI,LDREQOUT=YDOM_NL%LREQOUT,& |
651 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=LLT1) |
652 |
|
|
! ---------------------------------------------------------------------- |
653 |
|
|
ENDIF |
654 |
✗✓ |
1 |
IF(YUEN_NL%LSP)THEN |
655 |
|
|
CALL ABOR1('SUGFL: spectral UEN not coded ') |
656 |
|
|
! ---------------------------------------------------------------------- |
657 |
|
|
! what is below must be checked when UEN will be coded! |
658 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
659 |
|
|
YUEN=>YGFLC(IGFLPTR) |
660 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUEN,CDNAME=YFAUEN%CLNAME,& |
661 |
|
|
& KGRIB=YUEN_NL%IGRBCODE,LDGP=.FALSE., & |
662 |
|
|
& KREQIN=YUEN_NL%NREQIN,& |
663 |
|
|
& PREFVALI=YUEN_NL%REFVALI,LDREQOUT=YUEN_NL%LREQOUT,& |
664 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=LLT1) |
665 |
|
|
! ---------------------------------------------------------------------- |
666 |
|
|
ENDIF |
667 |
✗✓ |
1 |
IF(YUNEBH_NL%LSP)THEN |
668 |
|
|
CALL ABOR1('SUGFL: spectral UNEBH not coded ') |
669 |
|
|
! ---------------------------------------------------------------------- |
670 |
|
|
! what is below must be checked when UNEBH will be coded! |
671 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
672 |
|
|
YUNEBH=>YGFLC(IGFLPTR) |
673 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YUNEBH,CDNAME=YFAUNEBH%CLNAME,& |
674 |
|
|
& KGRIB=YUNEBH_NL%IGRBCODE,LDGP=.FALSE., & |
675 |
|
|
& KREQIN=YUNEBH_NL%NREQIN,& |
676 |
|
|
& PREFVALI=YUNEBH_NL%REFVALI,LDREQOUT=YUNEBH_NL%LREQOUT,& |
677 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=LLT1) |
678 |
|
|
! ---------------------------------------------------------------------- |
679 |
|
|
ENDIF |
680 |
|
|
|
681 |
|
|
! Extra GFL variables (assumed to be all spectral in this piece of code) |
682 |
✗✓ |
1 |
DO JGFL=1,NGFL_EXT |
683 |
✗✗ |
1 |
IF(YEXT_NL(JGFL)%LSP) THEN |
684 |
|
|
IF(JGFL == 1) THEN |
685 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
686 |
|
|
YEXT=>YGFLC(IGFLPTR:IGFLPTR+NGFL_EXT-1) |
687 |
|
|
ENDIF |
688 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YEXT(JGFL),CDNAME=YEXT_NL(JGFL)%CNAME ,& |
689 |
|
|
& KGRIB=YEXT_NL(JGFL)%IGRBCODE,LDGP=.FALSE.,KREQIN=YEXT_NL(JGFL)%NREQIN,& |
690 |
|
|
& PREFVALI=YEXT_NL(JGFL)%REFVALI, LDREQOUT=YEXT_NL(JGFL)%LREQOUT ,& |
691 |
|
|
& LDERS=LADER, LD5=LL5, LDT1=LLT1) |
692 |
|
|
ENDIF |
693 |
|
|
ENDDO |
694 |
|
|
|
695 |
|
|
! Forcings |
696 |
✗✓ |
1 |
DO JGFL=1,NGFL_FORC |
697 |
✗✗ |
1 |
IF(YFORC_NL(JGFL)%LSP) THEN |
698 |
|
|
CALL ABOR1('SUGFL: FORCINGS HAVE TO BE GRIDPOINT FIELDS') |
699 |
|
|
! ---------------------------------------------------------------------- |
700 |
|
|
! what is below must be checked when spectral forcings will be coded! |
701 |
|
|
IF(JGFL == 1) THEN |
702 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
703 |
|
|
YFORC=>YGFLC(IGFLPTR:IGFLPTR+NGFL_FORC-1) |
704 |
|
|
ENDIF |
705 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YFORC(JGFL),CDNAME=YFORC_NL(JGFL)%CNAME,& |
706 |
|
|
& KGRIB=YFORC_NL(JGFL)%IGRBCODE,LDGP=.FALSE.,KREQIN=YFORC_NL(JGFL)%NREQIN,& |
707 |
|
|
& PREFVALI=YFORC_NL(JGFL)%REFVALI, LDREQOUT=YFORC_NL(JGFL)%LREQOUT, & |
708 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=.FALSE.) |
709 |
|
|
! ---------------------------------------------------------------------- |
710 |
|
|
ENDIF |
711 |
|
|
ENDDO |
712 |
|
|
|
713 |
|
|
! Easy diagnostics |
714 |
✗✓ |
1 |
DO JGFL=1,NGFL_EZDIAG |
715 |
✗✗ |
1 |
IF(YEZDIAG_NL(JGFL)%LSP) THEN |
716 |
|
|
CALL ABOR1('SUGFL: EZDIAG HAVE TO BE GRIDPOINT FIELDS') |
717 |
|
|
! ---------------------------------------------------------------------- |
718 |
|
|
! what is below must be checked when spectral easy diag. will be coded! |
719 |
|
|
IF(JGFL == 1) THEN |
720 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
721 |
|
|
YEZDIAG=>YGFLC(IGFLPTR:IGFLPTR+NGFL_EZDIAG-1) |
722 |
|
|
ENDIF |
723 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YEZDIAG(JGFL),CDNAME=YEZDIAG_NL(JGFL)%CNAME,& |
724 |
|
|
& KGRIB=YEZDIAG_NL(JGFL)%IGRBCODE,LDGP=.FALSE.,& |
725 |
|
|
& KREQIN=YEZDIAG_NL(JGFL)%NREQIN,& |
726 |
|
|
& PREFVALI=YEZDIAG_NL(JGFL)%REFVALI, LDREQOUT=YEZDIAG_NL(JGFL)%LREQOUT, & |
727 |
|
|
& LDERS=.FALSE.,LD5=.FALSE.,LDT1=.FALSE.) |
728 |
|
|
! ---------------------------------------------------------------------- |
729 |
|
|
ENDIF |
730 |
|
|
ENDDO |
731 |
|
|
|
732 |
|
|
!Greenhouse Gases |
733 |
✗✓ |
1 |
DO JGFL=1,NGHG |
734 |
✗✗ |
1 |
IF(YGHG_NL(JGFL)%LSP) THEN |
735 |
|
|
IF(JGFL == 1) THEN |
736 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
737 |
|
|
YGHG=>YGFLC(IGFLPTR:IGFLPTR+NGHG-1) |
738 |
|
|
ENDIF |
739 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YGHG(JGFL),CDNAME=YGHG_NL(JGFL)%CNAME ,& |
740 |
|
|
& KGRIB=YGHG_NL(JGFL)%IGRBCODE, LDGP=.FALSE., KREQIN=YGHG_NL(JGFL)%NREQIN ,& |
741 |
|
|
& PREFVALI=YGHG_NL(JGFL)%REFVALI, LDREQOUT=YGHG_NL(JGFL)%LREQOUT ,& |
742 |
|
|
& LDERS=LADER, LD5=LL5, LDT1=LLT1) |
743 |
|
|
ENDIF |
744 |
|
|
ENDDO |
745 |
|
|
|
746 |
|
|
!Diagnostic tracers |
747 |
✗✓ |
1 |
DO JGFL=1,NTRAC |
748 |
✗✗ |
1 |
IF(YTRAC_NL(JGFL)%LSP) THEN |
749 |
|
|
IF(JGFL == 1) THEN |
750 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
751 |
|
|
YTRAC=>YGFLC(IGFLPTR:IGFLPTR+NTRAC-1) |
752 |
|
|
ENDIF |
753 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YTRAC(JGFL),CDNAME=YTRAC_NL(JGFL)%CNAME ,& |
754 |
|
|
& KGRIB=YTRAC_NL(JGFL)%IGRBCODE, LDGP=.FALSE., KREQIN=YTRAC_NL(JGFL)%NREQIN ,& |
755 |
|
|
& PREFVALI=YTRAC_NL(JGFL)%REFVALI, LDREQOUT=YTRAC_NL(JGFL)%LREQOUT ,& |
756 |
|
|
& LDERS=LADER, LD5=LL5, LDT1=LLT1) |
757 |
|
|
ENDIF |
758 |
|
|
ENDDO |
759 |
|
|
|
760 |
|
|
!Reactive Gases |
761 |
✗✓ |
1 |
DO JGFL=1,NGRG |
762 |
✗✗ |
1 |
IF(YGRG_NL(JGFL)%LSP) THEN |
763 |
|
|
IF(JGFL == 1) THEN |
764 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
765 |
|
|
YGRG=>YGFLC(IGFLPTR:IGFLPTR+NGRG-1) |
766 |
|
|
ENDIF |
767 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YGRG(JGFL),CDNAME=YGRG_NL(JGFL)%CNAME ,& |
768 |
|
|
& KGRIB=YGRG_NL(JGFL)%IGRBCODE, LDGP=.FALSE., KREQIN=YGRG_NL(JGFL)%NREQIN ,& |
769 |
|
|
& PREFVALI=YGRG_NL(JGFL)%REFVALI, LDREQOUT=YGRG_NL(JGFL)%LREQOUT ,& |
770 |
|
|
& LDERS=LADER, LD5=LL5, LDT1=LLT1) |
771 |
|
|
ENDIF |
772 |
|
|
ENDDO |
773 |
|
|
|
774 |
|
|
!Aerosols |
775 |
✓✗ |
1 |
DO JGFL=1,NAERO |
776 |
✗✗ |
1 |
IF(YAERO_NL(JGFL)%LSP) THEN |
777 |
|
|
IF(JGFL == 1) THEN |
778 |
|
|
IGFLPTR=YGFL%NUMFLDS+1 |
779 |
|
|
YAERO=>YGFLC(IGFLPTR:IGFLPTR+NAERO-1) |
780 |
|
|
ENDIF |
781 |
|
|
CALL DEFINE_GFL_COMP(YDGFLC=YAERO(JGFL),CDNAME=YAERO_NL(JGFL)%CNAME ,& |
782 |
|
|
& KGRIB=YAERO_NL(JGFL)%IGRBCODE, LDGP=.FALSE., KREQIN=YAERO_NL(JGFL)%NREQIN ,& |
783 |
|
|
& PREFVALI=YAERO_NL(JGFL)%REFVALI, LDREQOUT=YAERO_NL(JGFL)%LREQOUT ,& |
784 |
|
|
& LDERS=LADER, LD5=LL5, LDT1=LLT1) |
785 |
|
|
ENDIF |
786 |
|
|
ENDDO |
787 |
|
|
|
788 |
|
|
ELSE |
789 |
|
|
|
790 |
|
|
! 2. CASE LFPART2=T |
791 |
|
|
|
792 |
|
|
WRITE(NULOUT,*) ' SUGFL, LFPART2, YGFL%NUMFLDS=',YGFL%NUMFLDS |
793 |
|
|
ENDIF |
794 |
|
|
|
795 |
|
|
!------------------------------------------------------------------------- |
796 |
|
|
|
797 |
✓✗ |
1 |
IF (LHOOK) CALL DR_HOOK('SUGFL',1,ZHOOK_HANDLE) |
798 |
|
1 |
END SUBROUTINE SUGFL |