GCC Code Coverage Report


Directory: ./
File: rad/suphec.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 29 54 53.7%
Branches: 23 38 60.5%

Line Branch Exec Source
1 2 SUBROUTINE SUPHEC(KULOUT)
2
3 !**** *SUPHEC - INITIALISES PHYSICAL CONSTANTS OF UNCERTAIN VALUE.
4 ! WITHIN THE E.C.M.W.F. PHYSICS PACKAGE
5
6 ! PURPOSE.
7 ! --------
8
9 ! THIS ROUTINE SETS THE VALUES FOR THE PHYSICAL CONSTANTS USED
10 ! IN THE PARAMETERIZATION ROUTINES WHENEVER THESE VALUES ARE NOT
11 ! KNOWN WELL ENOUGH TO FORBID ANY TUNING OR WHENEVER THEY ARE
12 ! SUBJECT TO AN ARBITRARY CHOICE OF THE MODELLER. THESE CONSTANTS
13 ! ARE DISTRIBUTED IN COMMON DECKS *YOEXXXX* WHERE XXXX CORRESPONDS
14 ! TO THE INDIVIDUAL PHYSICAL PARAMETRIZATION
15
16 !** INTERFACE.
17 ! ----------
18
19 ! *SUPHEC* IS CALLED FROM *SUPHY*
20
21 ! METHOD.
22 ! -------
23
24 ! NONE.
25
26 ! EXTERNALS.
27 ! ----------
28
29 ! *SUECRAD*, *SUCUMF*, *SUCUMF2*,*SUVDFS*, *SUSURF*
30 ! *SUECRAD15*, *SUCLOP15*
31 ! *SUGWD*, *SUCLD*, *SUCOND*, *SUPHLI*, *SUMETHOX*
32
33 ! REFERENCE.
34 ! ----------
35
36 ! SEE PHYSICAL ROUTINES FOR AN EXACT DEFINITION OF THE
37 ! CONSTANTS.
38
39 ! AUTHOR.
40 ! -------
41 ! J.-J. MORCRETTE E.C.M.W.F. 91/06/15 ADAPTATION TO I.F.S.
42
43 ! MODIFICATIONS
44 ! -------------
45 ! MAY 1997 : M. Deque - Frozen FMR
46 ! APRIL 1998: C. JAKOB - ADD METHANE OXIDATION
47 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
48 ! P.Viterbo 24-May-2004 surf library
49 ! P.Viterbo 03-Dec-2004 Include user-defined RTHRFRTI
50 ! M.Ko"hler 03-Dec-2004 cp,moist=cp,dry
51 ! P.Viterbo 10-Jun-2005 Externalise surf
52 ! R. El Khatib & J-F Estrade 20-Jan-2005 Default PRSUN for FMR15
53 ! D.Salmond 22-Nov-2005 Mods for coarser/finer physics
54 ! P. Lopez 21-Aug-2006 Added call to SUCUMF2
55 ! (new linearized convec)
56 ! JJMorcrette 20060525 MODIS albedo
57 ! ------------------------------------------------------------------
58
59 USE PARKIND1 ,ONLY : JPIM ,JPRB
60 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
61
62 USE YOMDPHY , ONLY : NTILES
63 USE SURFACE_FIELDS, ONLY : YSP_SBD
64 USE YOELW , ONLY : NSIL ,TSTAND ,XP
65 USE YOESW , ONLY : RSUN
66 USE YOMSW15 , ONLY : RSUN15
67 USE YOMDIM , ONLY : NFLEVG ,NSMAX, NGPBLKS, NPROMA
68 USE YOMGEM , ONLY : VBH ,VAH ,VP00, VAF , VBF
69 USE YOMCST , ONLY : RD ,RV ,RCPD ,&
70 & RLVTT ,RLSTT ,RLMLT ,RTT ,RATM
71 !USE YOETHF , ONLY : R2ES ,R3LES ,R3IES ,R4LES ,&
72 ! & R4IES ,R5LES ,R5IES ,RVTMP2 ,RHOH2O ,&
73 ! & R5ALVCP ,R5ALSCP ,RALVDCP ,RALSDCP ,RALFDCP ,&
74 ! & RTWAT ,RTBER ,RTBERCU ,RTICE ,RTICECU ,&
75 ! & RTWAT_RTICE_R ,RTWAT_RTICECU_R ,&
76 ! & RKOOP1 ,RKOOP2
77 USE YOMPHY , ONLY : LRAYFM15
78 !USE YOERAD , ONLY : NSW ,NTSW ,&
79 ! NSW mis dans .def MPL 20140211
80 USE YOERAD , ONLY : NTSW ,&
81 & LCCNL ,LCCNO ,&
82 & RCCNSEA ,RCCNLND
83 USE YOE_TILE_PROP, ONLY : RUSTRTI, RVSTRTI, RAHFSTI, REVAPTI, RTSKTI
84 USE YOEPHY , ONLY : RTHRFRTI ,LEOCWA ,LEOCCO ,LEOCSA, LE4ALB
85 USE YOEVDF , ONLY : NVTYPES
86 USE YOMCOAPHY , ONLY : NPHYINT
87 USE YOM_PHYS_GRID ,ONLY : PHYS_GRID
88 USE YOMCT0 , ONLY : LSCMEC ,LROUGH ,REXTZ0M ,REXTZ0H
89 USE vertical_layers_mod, ONLY: ap,bp
90
91 IMPLICIT NONE
92 include "YOETHF.h"
93 include "clesphys.h"
94
95 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
96 INTERFACE
97 SUBROUTINE SUSURF(KSW,KCSS,KSIL,KTILES,KTSW,&
98 & LD_LLCCNL,LD_LLCCNO,LD_LEOCWA,LD_LEOCCO,LD_LEOCSA,LD_LLE4ALB,&
99 & LD_LSCMEC,LD_LROUGH,PEXTZ0M,PEXTZ0H,&
100 & PTHRFRTI,PTSTAND,PXP,PRCCNSEA,PRCCNLND,&
101 & PRSUN)
102
103 !** *SUSURF* IS THE SET-UP ROUTINE FOR surface modules containing constants
104
105 ! PURPOSE
106 ! -------
107 ! THIS ROUTINE INITIALIZES THE CONSTANTS IN COMMON BLOCK
108 ! *YOESOIL*
109
110 ! INTERFACE.
111 ! ----------
112 ! CALL *SUSURF* FROM *SUPHEC*
113
114 ! METHOD.
115 ! -------
116
117 ! EXTERNALS.
118 ! ----------
119
120 ! REFERENCE.
121 ! ----------
122
123 ! Original A.C.M. BELJAARS E.C.M.W.F. 89/11/02
124 ! MODIFICATIONS
125 ! -------------
126 ! J.-J. MORCRETTE E.C.M.W.F. 91/07/14
127 ! P. VITERBO E.C.M.W.F. 8/10/93
128 ! P. Viterbo 99-03-26 Tiling of the land surface
129 ! C. Fischer 00-12-20 Meteo-France recode initialization of rdat to avoid
130 ! memory overflow on SUN workstation
131 ! J.F. Estrade *ECMWF* 03-10-01 move in surf vob
132 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
133 ! P. Viterbo ECMWF 03-12-2004 Include user-defined RTHRFRTI
134 ! P. Viterbo ECMWF May 2005 Externalise surf
135 ! JJMorcrette 20060511 MODIS albedo
136
137 ! INTERFACE:
138
139 ! Integers (In):
140
141 ! KSW : NUMBER OF SHORTWAVE SPECTRAL INTERVALS
142 ! KCSS : Number of soil levels
143 ! KSIL : NUMBER OF (infrared) SPECTRAL INTERVALS
144 ! KTILES : Number of surface tiles
145 ! KTSW : Maximum possible number of sw spectral intervals
146
147 ! Logicals (In):
148
149 ! LD_LLCCNL : .T. IF CCN CONCENTRATION OVER LAND IS DIAGNOSED
150 ! LD_LLCCNO : .T. IF CCN CONCENTRATION OVER OCEAN IS DIAGNOSED
151 ! LD_LLE4ALB: .T. IF MODIS ALBEDO IS USED
152
153 ! Reals (In):
154
155 ! PTHRFRTI : ! MINIMUM THRESHOLD FOR TILE FRACTION
156 ! PTSTAND : ! REFERENCE TEMPERATURE FOR TEMPERATURE DEPENDENCE
157 ! PXP : ! POLYNOMIAL COEFFICIENTS OF PLANCK FUNCTION
158 ! PRCCNSEA : ! NUMBER CONCENTRATION (CM-3) OF CCNs OVER SEA
159 ! PRCCNLND : ! NUMBER CONCENTRATION (CM-3) OF CCNs OVER LAND
160 ! PRSUN : ! SOLAR FRACTION IN SPECTRAL INTERVALS
161
162 ! ------------------------------------------------------------------
163
164 USE PARKIND1 ,ONLY : JPIM ,JPRB
165
166 IMPLICIT NONE
167
168 ! Declaration of arguments
169
170 INTEGER(KIND=JPIM),INTENT(IN) :: KSW
171 REAL(KIND=JPRB) ,INTENT(IN) :: PTHRFRTI
172 INTEGER(KIND=JPIM),INTENT(IN) :: KCSS
173 INTEGER(KIND=JPIM),INTENT(IN) :: KSIL
174 INTEGER(KIND=JPIM),INTENT(IN) :: KTILES
175 INTEGER(KIND=JPIM),INTENT(IN) :: KTSW
176 LOGICAL ,INTENT(IN) :: LD_LLCCNL
177 LOGICAL ,INTENT(IN) :: LD_LLCCNO
178 LOGICAL ,INTENT(IN) :: LD_LEOCWA
179 LOGICAL ,INTENT(IN) :: LD_LEOCCO
180 LOGICAL ,INTENT(IN) :: LD_LEOCSA
181 LOGICAL ,INTENT(IN) :: LD_LLE4ALB
182 LOGICAL ,INTENT(IN) :: LD_LSCMEC
183 LOGICAL ,INTENT(IN) :: LD_LROUGH
184 REAL(KIND=JPRB) ,INTENT(IN) :: PEXTZ0M
185 REAL(KIND=JPRB) ,INTENT(IN) :: PEXTZ0H
186 REAL(KIND=JPRB) ,INTENT(IN) :: PTSTAND
187 REAL(KIND=JPRB) ,INTENT(IN) :: PXP(6,6)
188 REAL(KIND=JPRB) ,INTENT(IN) :: PRCCNSEA
189 REAL(KIND=JPRB) ,INTENT(IN) :: PRCCNLND
190 REAL(KIND=JPRB) ,INTENT(IN) :: PRSUN(:)
191
192 ! ------------------------------------------------------------------
193
194 END SUBROUTINE SUSURF
195 SUBROUTINE SURF_INQ(KNVTYPES,PRRCSOIL,PRWSAT,PRWCAP,PRWPWP,PRQWEVAP,PRQWSBCR,&
196 & PRQSNCR,PRWLMAX,PRTF1,PRTF2,PRTF3,PRTF4,&
197 & PRTFREEZSICE,PRTMELTSICE,PRCIMIN,PRALFMINSN,&
198 & PRALFMAXSN,PRHOMINSN,PRHOMAXSN,PRDAT,&
199 & PRDAW,PRRCSICE,PRALBSEAD,PREPALB,PRVCOV,PRVLAI,&
200 & PRVROOTSA,PRVLAMSK,PRVLAMSKS,PRVTRSR,PRCHAR,PREPUST)
201
202 !** *SURF_INQ* Extract information from the surface package
203
204 ! Purpose.
205 ! --------
206 ! Interface routine for extracting information from the surf pack.
207
208 !** Interface.
209 ! ----------
210 ! CALL SURFINQ(...)
211 ! Explicit arguments : All arguments are optional.
212 ! --------------------
213
214 ! Method.
215 ! -------
216
217 ! Externals: none
218
219 ! Author.
220 ! -------
221 ! JF Estrade *ECMWF*
222
223 ! Modifications.
224 ! --------------
225 ! Original : 03-10-01
226 ! ------------------------------------------------------------------
227
228 USE PARKIND1 ,ONLY : JPIM ,JPRB
229
230
231 IMPLICIT NONE
232
233 ! Declaration of arguments
234
235 INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(OUT) :: KNVTYPES
236 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRRCSOIL
237 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRWSAT
238 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRQWSBCR
239 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRWCAP
240 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRWPWP
241 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRQWEVAP
242 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRQSNCR
243 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRWLMAX
244 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRTFREEZSICE
245 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRTMELTSICE
246 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRCIMIN
247 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRALFMINSN
248 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRALFMAXSN
249 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRHOMINSN
250 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRHOMAXSN
251 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRDAT(:)
252 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRDAW(:)
253 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRALBSEAD
254 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PREPALB
255 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRVCOV(:)
256 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRVLAI(:)
257 REAL(KIND=JPRB) ,OPTIONAL,INTENT(OUT) :: PRCHAR
258 REAL(KIND=JPRB) ,OPTIONAL,INTENT(OUT) :: PREPUST
259 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRTF1
260 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRTF2
261 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRTF3
262 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRTF4
263 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRRCSICE
264 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRVROOTSA(:,:)
265 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRVLAMSK(:)
266 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRVLAMSKS(:)
267 REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PRVTRSR(:)
268
269
270 ! ------------------------------------------------------------------
271
272 END SUBROUTINE SURF_INQ
273 END INTERFACE
274
275 INTERFACE
276 SUBROUTINE GPPRE(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PRESH,PRESF)
277 USE PARKIND1 ,ONLY : JPIM ,JPRB
278 INTEGER(KIND=JPIM),INTENT(IN) :: KPROMA
279 INTEGER(KIND=JPIM),INTENT(IN) :: KFLEV
280 INTEGER(KIND=JPIM),INTENT(IN) :: KSTART
281 INTEGER(KIND=JPIM),INTENT(IN) :: KPROF
282 REAL(KIND=JPRB) ,INTENT(IN) :: PVAH(0:KFLEV)
283 REAL(KIND=JPRB) ,INTENT(IN) :: PVBH(0:KFLEV)
284 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRESH(KPROMA,0:KFLEV)
285 REAL(KIND=JPRB) ,INTENT(OUT) :: PRESF(KPROMA,KFLEV)
286 END SUBROUTINE GPPRE
287 END INTERFACE
288 INTERFACE
289 SUBROUTINE SUCLD ( KLEV , PETA )
290 USE PARKIND1 ,ONLY : JPIM ,JPRB
291 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
292 REAL(KIND=JPRB) ,INTENT(IN) :: PETA(KLEV)
293 END SUBROUTINE SUCLD
294 END INTERFACE
295 INTERFACE
296 SUBROUTINE SUCLDP
297 END SUBROUTINE SUCLDP
298 END INTERFACE
299 INTERFACE
300 SUBROUTINE SUCLOP
301 END SUBROUTINE SUCLOP
302 END INTERFACE
303 INTERFACE
304 SUBROUTINE SUCLOP15
305 END SUBROUTINE SUCLOP15
306 END INTERFACE
307 INTERFACE
308 SUBROUTINE SUCOND ( KULOUT , KLEV , PETA )
309 USE PARKIND1 ,ONLY : JPIM ,JPRB
310 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
311 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
312 REAL(KIND=JPRB) ,INTENT(IN) :: PETA(KLEV)
313 END SUBROUTINE SUCOND
314 END INTERFACE
315 INTERFACE
316 SUBROUTINE SUCUMF(KSMAX)
317 USE PARKIND1 ,ONLY : JPIM ,JPRB
318 INTEGER(KIND=JPIM),INTENT(IN) :: KSMAX
319 END SUBROUTINE SUCUMF
320 END INTERFACE
321 INTERFACE
322 SUBROUTINE SUCUMF2(KSMAX)
323 USE PARKIND1 ,ONLY : JPIM ,JPRB
324 INTEGER(KIND=JPIM),INTENT(IN) :: KSMAX
325 END SUBROUTINE SUCUMF2
326 END INTERFACE
327 INTERFACE
328 SUBROUTINE SUECRAD (KULOUT, KLEV, PETAH )
329 USE PARKIND1 ,ONLY : JPIM ,JPRB
330 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
331 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
332 REAL(KIND=JPRB) ,INTENT(IN) :: PETAH(KLEV+1)
333 INTEGER(KIND=JPIM), PARAMETER :: JP_MIN_HALO=5
334 INTEGER(KIND=JPIM), PARAMETER :: JPIOMASTER=1
335 END SUBROUTINE SUECRAD
336 END INTERFACE
337 INTERFACE
338 SUBROUTINE SUECRAD15 (KULOUT, KLEV, PETAH )
339 USE PARKIND1 ,ONLY : JPIM ,JPRB
340 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
341 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
342 REAL(KIND=JPRB) ,INTENT(IN) :: PETAH(KLEV+1)
343 END SUBROUTINE SUECRAD15
344 END INTERFACE
345 INTERFACE
346 SUBROUTINE SUGWD(KULOUT,KLEV,PVAH,PVBH)
347 USE PARKIND1 ,ONLY : JPIM ,JPRB
348 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
349 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
350 REAL(KIND=JPRB) ,INTENT(IN) :: PVAH(KLEV+1)
351 REAL(KIND=JPRB) ,INTENT(IN) :: PVBH(KLEV+1)
352 END SUBROUTINE SUGWD
353 END INTERFACE
354 INTERFACE
355 SUBROUTINE SUMETHOX
356 END SUBROUTINE SUMETHOX
357 END INTERFACE
358 INTERFACE
359 SUBROUTINE SUPHLI
360 END SUBROUTINE SUPHLI
361 END INTERFACE
362 INTERFACE
363 SUBROUTINE SUVDF
364 END SUBROUTINE SUVDF
365 END INTERFACE
366 INTERFACE
367 SUBROUTINE SUVDFS
368 END SUBROUTINE SUVDFS
369 END INTERFACE
370 INTERFACE
371 SUBROUTINE SUWCOU
372 END SUBROUTINE SUWCOU
373 END INTERFACE
374
375 ! ------------------------------------------------------------------
376
377 2 REAL(KIND=JPRB) :: ZPRES(0:NFLEVG),ZPRESF(NFLEVG), ZETA(NFLEVG),ZETAH(0:NFLEVG)
378
379 INTEGER(KIND=JPIM) :: JK,ISMAX,JLEV
380 REAL(KIND=JPRB) :: ZHOOK_HANDLE
381
382 ! ------------------------------------------------------------------
383
384 !* 0.2 DEFINING DERIVED CONSTANTS FROM UNIVERSAL CONSTANTS
385 ! ---------------------------------------------------
386
387
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF (LHOOK) CALL DR_HOOK('SUPHEC',0,ZHOOK_HANDLE)
388 !
389
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF (OK_BAD_ECMWF_THERMO) THEN
390 !
391 ! Modify constants defined in suphel.F90 and set RVTMP2 to 0.
392 ! CALL GSTATS(1811,0) ! MPL 28.11.08
393 ! RVTMP2=RCPV/RCPD-1.0_JPRB !use cp,moist
394 RVTMP2=0.0_JPRB !neglect cp,moist
395 RHOH2O=RATM/100._JPRB
396 R2ES=611.21_JPRB*RD/RV
397 R3LES=17.502_JPRB
398 R3IES=22.587_JPRB
399 R4LES=32.19_JPRB
400 R4IES=-0.7_JPRB
401 R5LES=R3LES*(RTT-R4LES)
402 R5IES=R3IES*(RTT-R4IES)
403 R5ALVCP=R5LES*RLVTT/RCPD
404 R5ALSCP=R5IES*RLSTT/RCPD
405 RALVDCP=RLVTT/RCPD
406 RALSDCP=RLSTT/RCPD
407 RALFDCP=RLMLT/RCPD
408 RTWAT=RTT
409 RTBER=RTT-5._JPRB
410 RTBERCU=RTT-5.0_JPRB
411 RTICE=RTT-23._JPRB
412 RTICECU=RTT-23._JPRB
413
414 RTWAT_RTICE_R=1.0_JPRB/(RTWAT-RTICE)
415 RTWAT_RTICECU_R=1.0_JPRB/(RTWAT-RTICECU)
416 IF(NPHYINT == 0) THEN
417 ISMAX=NSMAX
418 ELSE
419 ISMAX=PHYS_GRID%NSMAX
420 ENDIF
421
422 RKOOP1=2.583_JPRB
423 RKOOP2=0.48116E-2_JPRB
424
425 ELSE
426 ! Keep constants defined in suphel.F90
427 1 RTICE=RTT-23._JPRB
428 !
429 ENDIF ! (OK_BAD_ECMWF_THERMO)
430
431 ! ------------------------------------------------------------------
432 !* 0.5 DEFINE STANDARD ATMOSPHERE VERTICAL CONFIGURATION
433 ! -------------------------------------------------
434 !ALLOCATE(VBH (0:MAX(JPMXLE,NFLEVG))) from suallo.F90
435 !!
436
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
1 ALLOCATE(VAH (0:NFLEVG)) ! Ajout ALLOCATE MPL 200509
437
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
1 ALLOCATE(VBH (0:NFLEVG))
438
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
1 ALLOCATE(VAF (NFLEVG))
439
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
1 ALLOCATE(VBF (NFLEVG))
440 ! Commente par MPL 28.11.08, puis decommente le 19.05.09
441 1 VP00=101325. !!!!! A REVOIR (MPL)
442 1 ZPRES(NFLEVG)=VP00
443 ! on recupere ap et bp de dyn3d (vertical_layers_mod) MPL 19.05.09
444 ! Attention, VAH et VBH sont inverses, comme les niveaux
445 ! plev(l)=PAPRS(klon,nlayer+1-l) de 1 a nlayer (apllmd.F)
446
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 40 times.
41 DO JLEV = 0, NFLEVG
447 ! VAH(JLEV)=ap(JLEV+1)ap(JLEV+1)
448 ! VBH(JLEV)=bp(JLEV+1)
449 ! print *,'SUPHEC: jlev ap bp',JLEV,ap(JLEV+1),bp(JLEV+1)
450 40 VAH(JLEV)=ap(NFLEVG+1-JLEV)
451 41 VBH(JLEV)=bp(NFLEVG+1-JLEV)
452 ENDDO
453 ! Calcul de VAF et VBF, analogues de VAH et VBH mais aux niveaux pleins
454
2/2
✓ Branch 0 taken 39 times.
✓ Branch 1 taken 1 times.
40 DO JLEV = 1, NFLEVG
455 39 VAF(JLEV)=(VAH(JLEV)+VAH(JLEV-1))/2.
456 40 VBF(JLEV)=(VBH(JLEV)+VBH(JLEV-1))/2.
457 ENDDO
458
459 ! Appel a GPPRE commente par MPL 28.11.08, puis decommente le 19.05.09
460 1 CALL GPPRE ( 1 ,1, 1, NFLEVG, VAH, VBH, ZPRES, ZPRESF )
461
462
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 40 times.
41 DO JK=0,NFLEVG
463 41 ZETAH(JK)= ZPRES(JK)/ZPRES(NFLEVG)
464 ENDDO
465
2/2
✓ Branch 0 taken 39 times.
✓ Branch 1 taken 1 times.
40 DO JK=1,NFLEVG
466 40 ZETA(JK)= ZPRESF(JK)/ZPRES(NFLEVG)
467 ENDDO
468
469 ! ------------------------------------------------------------------
470 !* 1. SETTING CONSTANTS FOR DIAGNOSTIC CLOUD SCHEME
471 ! ---------------------------------------------
472
473 !CALL SUCLD ( NFLEVG , ZETA ) ! MPL 28.11.08
474
475 ! ------------------------------------------------------------------
476
477 !* 2. SETTING CONSTANTS FOR LARGE-SCALE CONDENSATION SCHEME
478 ! -----------------------------------------------------
479
480 !CALL SUCOND ( KULOUT , NFLEVG , ZETA ) ! MPL 28.11.08
481
482 ! ------------------------------------------------------------------
483
484 !* 3. SETTING CONSTANTS FOR CONVECTION SCHEME
485 ! ---------------------------------------
486
487 !CALL SUCUMF(ISMAX) ! MPL 28.11.08
488
489 ! ------------------------------------------------------------------
490
491 !* 3. SETTING CONSTANTS FOR NEW LINEARIZED CONVECTION SCHEME
492 ! ------------------------------------------------------
493
494 !CALL SUCUMF2(ISMAX) ! MPL 28.11.08
495
496 ! ------------------------------------------------------------------
497 !* 4. SETTING CONSTANTS FOR GRAVITY WAVE DRAG SCHEME
498 ! ----------------------------------------------
499
500 !CALL SUGWD (KULOUT, NFLEVG, VAH, VBH ) ! MPL 28.11.08
501
502 ! ------------------------------------------------------------------
503
504 !* 5. SETTING CONSTANTS FOR VERTICAL DIFFUSION
505 ! ----------------------------------------
506
507 !CALL SUVDFS ! MPL 28.11.08
508
509 !CALL SUVDF ! MPL 28.11.08
510
511 !cccc CALL SUVDFD ( NABLPFR, ABLPLL ) cccccccccccccccccccccccccccccccccc
512
513 ! ------------------------------------------------------------------
514
515 !* 6. SETTING CONSTANTS FOR RADIATION SCHEME
516 ! --------------------------------------
517
518
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF (LRAYFM15) THEN
519 CALL SUECRAD15 (KULOUT, NFLEVG, ZETAH )
520 ELSE
521 1 CALL SUECRAD (KULOUT, NFLEVG, ZETAH )
522 ENDIF
523
524 ! ------------------------------------------------------------------
525 !* 7. SETTING CONSTANTS FOR SURFACE SCHEME
526 ! ------------------------------------
527
528 !IF (LRAYFM15) THEN
529 ! CALL SUSURF(KSW=NSW,KCSS=YSP_SBD%NLEVS,KSIL=NSIL,KTILES=NTILES,KTSW=NTSW,&
530 ! & LD_LLCCNL=LCCNL,LD_LLCCNO=LCCNO,&
531 ! & LD_LEOCWA=LEOCWA,LD_LEOCCO=LEOCCO,LD_LEOCSA=LEOCSA,LD_LLE4ALB=LE4ALB,&
532 ! & LD_LSCMEC=LSCMEC,LD_LROUGH=LROUGH,PEXTZ0M=REXTZ0M,PEXTZ0H=REXTZ0H,&
533 ! & PTHRFRTI=RTHRFRTI,PTSTAND=TSTAND,PXP=XP,PRCCNSEA=RCCNSEA,PRCCNLND=RCCNLND,&
534 ! & PRSUN=RSUN15)
535 !ELSE
536 ! CALL SUSURF(KSW=NSW,KCSS=YSP_SBD%NLEVS,KSIL=NSIL,KTILES=NTILES,KTSW=NTSW,&
537 ! & LD_LLCCNL=LCCNL,LD_LLCCNO=LCCNO,&
538 ! & LD_LEOCWA=LEOCWA,LD_LEOCCO=LEOCCO,LD_LEOCSA=LEOCSA,LD_LLE4ALB=LE4ALB,&
539 ! & LD_LSCMEC=LSCMEC,LD_LROUGH=LROUGH,PEXTZ0M=REXTZ0M,PEXTZ0H=REXTZ0H,&
540 ! & PTHRFRTI=RTHRFRTI,PTSTAND=TSTAND,PXP=XP,PRCCNSEA=RCCNSEA,PRCCNLND=RCCNLND,&
541 ! & PRSUN=RSUN)
542 !ENDIF
543
544
545 !CALL SURF_INQ(KNVTYPES=NVTYPES)
546
547
548 ! 7.1 Allocate working arrays
549 !ALLOCATE(RUSTRTI(NPROMA,NTILES,NGPBLKS))
550 !ALLOCATE(RVSTRTI(NPROMA,NTILES,NGPBLKS))
551 !ALLOCATE(RAHFSTI(NPROMA,NTILES,NGPBLKS))
552 !ALLOCATE(REVAPTI(NPROMA,NTILES,NGPBLKS))
553 !ALLOCATE(RTSKTI (NPROMA,NTILES,NGPBLKS))
554 !RUSTRTI(:,:,:) = 0.0_JPRB
555 !RVSTRTI(:,:,:) = 0.0_JPRB
556 !RAHFSTI(:,:,:) = 0.0_JPRB
557 !REVAPTI(:,:,:) = 0.0_JPRB
558 !RTSKTI (:,:,:) = 0.0_JPRB
559 !CALL GSTATS(1811,1)
560
561 ! ------------------------------------------------------------------
562
563 !* 8. SETTING CONSTANTS FOR CLOUD OPTICAL PROPERTIES
564 ! ----------------------------------------------
565
566
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF (LRAYFM15) THEN
567 CALL SUCLOP15
568 ELSE
569 1 CALL SUCLOP
570 ENDIF
571
572 ! ------------------------------------------------------------------
573
574 !* 9. SETTING CONSTANTS FOR PROGNOSTIC CLOUD SCHEME
575 ! ----------------------------------------------
576
577 !CALL SUCLDP
578
579 ! ------------------------------------------------------------------
580
581 !* 10. SETTING CONSTANTS FOR WAVE COUPLING
582 ! -----------------------------------
583
584 !CALL SUWCOU
585
586 ! ------------------------------------------------------------------
587 !* 11. SETTING CONSTANTS FOR LINEARIZED PHYSICS
588 ! ----------------------------------------
589
590 !CALL SUPHLI
591
592 ! ------------------------------------------------------------------
593 !* 12. SETTING CONSTANTS FOR METHANE OXIDATION
594 ! ---------------------------------------
595
596 !CALL SUMETHOX
597
598 ! ------------------------------------------------------------------
599
600 1 WRITE(UNIT=KULOUT,FMT='('' SUPHEC IS OVER '')')
601
602 ! ------------------------------------------------------------------
603
604
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF (LHOOK) CALL DR_HOOK('SUPHEC',1,ZHOOK_HANDLE)
605 1 END SUBROUTINE SUPHEC
606