GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/rrtm/gppre.F90 Lines: 11 11 100.0 %
Date: 2023-06-30 12:56:34 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
#include "gppref.intfb.h"
75
#include "gppreh.intfb.h"
76
#include "gpxyb.intfb.h"
77
78
!     ------------------------------------------------------------------
79
80
!*       1.    COMPUTES HALF AND FULL LEVEL PRESSURES
81
!              --------------------------------------
82
83
1
IF (LHOOK) CALL DR_HOOK('GPPRE',0,ZHOOK_HANDLE)
84
1
CALL GPPREH(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,PRESH)
85
CALL GPXYB(KPROMA,KSTART,KPROF,KFLEV,VDELB,VC,PRESH,ZDELP,&
86
1
 & ZRDELP,ZLNPR,ZALPH,ZRTGR,ZRPRES,ZRPP)
87
1
CALL GPPREF(KPROMA,KSTART,KPROF,KFLEV,PVAH,PVBH,ZALPH,PRESH,PRESF)
88
89
!     ------------------------------------------------------------------
90
91
1
IF (LHOOK) CALL DR_HOOK('GPPRE',1,ZHOOK_HANDLE)
92
1
END SUBROUTINE GPPRE