GCC Code Coverage Report


Directory: ./
File: rad/gppre.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 11 11 100.0%
Branches: 2 4 50.0%

Line Branch Exec Source
1 1 SUBROUTINE GPPRE(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PRESH,PRESF)
2
3 !**** *GPPRE* - Computes half and full level pressure
4
5 ! Purpose.
6 ! --------
7 ! Computes pressures at half and full model levels.
8
9 !** Interface.
10 ! ----------
11 ! *CALL* *GPPRE(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PRESH,PRESF)
12
13 ! Explicit arguments :
14 ! --------------------
15 ! KPROMA : dimensioning
16 ! KSTART : start of work
17 ! KPROF : depth of work
18 ! KFLEV : vert. dimensioning
19 ! PRESH(KPROMA,0:KFLEV) - HALF LEVEL PRESSURE
20 ! PRESF(KPROMA,KFLEV) - FULL LEVEL PRESSURE
21 ! PVAH(KFLEV),PVBH(KFLEV)- vertical coordinate
22 ! Implicit arguments : NONE.
23 ! --------------------
24
25 ! Method.
26 ! -------
27 ! See documentation
28
29 ! Externals. None.
30 ! ----------
31
32 ! Reference.
33 ! ----------
34 ! ECMWF Research Department documentation of the IFS
35 ! Half level P: PHk = Ak + Bk * Ps
36
37 ! PHk*ln(PHk) - PHk-1*ln(PHk-1)
38 ! Full level P: ln(PFk) = [ ------------------------------- - 1. ]
39 ! PHk - PHk-1
40
41 ! Author.
42 ! -------
43 ! Mats Hamrud and Philippe Courtier *ECMWF*
44
45 ! Modifications.
46 ! --------------
47 ! Original : 88-02-04
48 ! Erik Andersson 920326: Altered computation of full level pressure
49 ! Erik Andersson 930225: Use GPPREH/F.
50 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
51 ! ------------------------------------------------------------------
52
53 USE PARKIND1 ,ONLY : JPIM ,JPRB
54 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
55
56 USE YOMGEM , ONLY : VC ,VDELB
57
58 IMPLICIT NONE
59
60 INTEGER(KIND=JPIM),INTENT(IN) :: KPROMA
61 INTEGER(KIND=JPIM),INTENT(IN) :: KFLEV
62 INTEGER(KIND=JPIM),INTENT(IN) :: KSTART
63 INTEGER(KIND=JPIM),INTENT(IN) :: KPROF
64 REAL(KIND=JPRB) ,INTENT(IN) :: PVAH(0:KFLEV)
65 REAL(KIND=JPRB) ,INTENT(IN) :: PVBH(0:KFLEV)
66 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRESH(KPROMA,0:KFLEV)
67 REAL(KIND=JPRB) ,INTENT(OUT) :: PRESF(KPROMA,KFLEV)
68 2 REAL(KIND=JPRB) :: ZLNPR(KPROMA,KFLEV) , ZALPH (KPROMA,KFLEV)
69 2 REAL(KIND=JPRB) :: ZDELP(KPROMA,KFLEV) , ZRDELP(KPROMA,KFLEV)
70 2 REAL(KIND=JPRB) :: ZRTGR(KPROMA,KFLEV) , ZRPRES(KPROMA,KFLEV)
71 2 REAL(KIND=JPRB) :: ZRPP (KPROMA,KFLEV)
72 REAL(KIND=JPRB) :: ZHOOK_HANDLE
73
74 INTERFACE
75 SUBROUTINE GPPREF(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PALPH,PRESH,PRESF)
76 USE PARKIND1 ,ONLY : JPIM ,JPRB
77 INTEGER(KIND=JPIM),INTENT(IN) :: KPROMA
78 INTEGER(KIND=JPIM),INTENT(IN) :: KFLEV
79 INTEGER(KIND=JPIM),INTENT(IN) :: KSTART
80 INTEGER(KIND=JPIM),INTENT(IN) :: KPROF
81 REAL(KIND=JPRB) :: PVAH(0:KFLEV)
82 REAL(KIND=JPRB) :: PVBH(0:KFLEV)
83 REAL(KIND=JPRB) ,INTENT(IN) :: PALPH(KPROMA,KFLEV)
84 REAL(KIND=JPRB) ,INTENT(IN) :: PRESH(KPROMA,0:KFLEV)
85 REAL(KIND=JPRB) ,INTENT(OUT) :: PRESF(KPROMA,KFLEV)
86 END SUBROUTINE GPPREF
87 END INTERFACE
88 INTERFACE
89 SUBROUTINE GPPREH(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PRESH)
90 USE PARKIND1 ,ONLY : JPIM ,JPRB
91 INTEGER(KIND=JPIM),INTENT(IN) :: KPROMA
92 INTEGER(KIND=JPIM),INTENT(IN) :: KFLEV
93 INTEGER(KIND=JPIM),INTENT(IN) :: KSTART
94 INTEGER(KIND=JPIM),INTENT(IN) :: KPROF
95 REAL(KIND=JPRB) ,INTENT(IN) :: PVAH(0:KFLEV)
96 REAL(KIND=JPRB) ,INTENT(IN) :: PVBH(0:KFLEV)
97 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRESH(KPROMA,0:KFLEV)
98 END SUBROUTINE GPPREH
99 END INTERFACE
100 INTERFACE
101 SUBROUTINE GPXYB(KPROMA,KSTART,KPROF,KFLEV,PVDELB,PVC,&
102 & PRES,PDELP,PRDELP,PLNPR,PALPH,PRTGR,&
103 & PRPRES,PRPP)
104 USE PARKIND1 ,ONLY : JPIM ,JPRB
105 INTEGER(KIND=JPIM),INTENT(IN) :: KPROMA
106 INTEGER(KIND=JPIM),INTENT(IN) :: KFLEV
107 INTEGER(KIND=JPIM),INTENT(IN) :: KSTART
108 INTEGER(KIND=JPIM),INTENT(IN) :: KPROF
109 REAL(KIND=JPRB) ,INTENT(IN) :: PVDELB(KFLEV)
110 REAL(KIND=JPRB) ,INTENT(IN) :: PVC(KFLEV)
111 REAL(KIND=JPRB) ,INTENT(IN) :: PRES(KPROMA,0:KFLEV)
112 REAL(KIND=JPRB) ,INTENT(INOUT) :: PDELP(KPROMA,KFLEV)
113 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRDELP(KPROMA,KFLEV)
114 REAL(KIND=JPRB) ,INTENT(INOUT) :: PLNPR(KPROMA,KFLEV)
115 REAL(KIND=JPRB) ,INTENT(OUT) :: PALPH(KPROMA,KFLEV)
116 REAL(KIND=JPRB) ,INTENT(OUT) :: PRTGR(KPROMA,KFLEV)
117 REAL(KIND=JPRB) ,INTENT(OUT) :: PRPRES(KPROMA,KFLEV)
118 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRPP(KPROMA,KFLEV)
119 END SUBROUTINE GPXYB
120 END INTERFACE
121
122 ! ------------------------------------------------------------------
123
124 !* 1. COMPUTES HALF AND FULL LEVEL PRESSURES
125 ! --------------------------------------
126
127
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF (LHOOK) CALL DR_HOOK('GPPRE',0,ZHOOK_HANDLE)
128 1 CALL GPPREH(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PRESH)
129 CALL GPXYB(KPROMA,KSTART,KPROF,KFLEV,VDELB,VC,PRESH,ZDELP,&
130 1 & ZRDELP,ZLNPR,ZALPH,ZRTGR,ZRPRES,ZRPP)
131 1 CALL GPPREF(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,ZALPH,PRESH,PRESF)
132
133 ! ------------------------------------------------------------------
134
135
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF (LHOOK) CALL DR_HOOK('GPPRE',1,ZHOOK_HANDLE)
136 1 END SUBROUTINE GPPRE
137