LMDZ
gppre.F90
Go to the documentation of this file.
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 REAL(KIND=JPRB) :: ZLNPR(kproma,kflev) , ZALPH (kproma,kflev)
69 REAL(KIND=JPRB) :: ZDELP(kproma,kflev) , ZRDELP(kproma,kflev)
70 REAL(KIND=JPRB) :: ZRTGR(kproma,kflev) , ZRPRES(kproma,kflev)
71 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 IF (lhook) CALL dr_hook('GPPRE',0,zhook_handle)
84 CALL gppreh(kproma,kstart,kprof,kflev,pvah,pvbh,presh)
85 CALL gpxyb(kproma,kstart,kprof,kflev,vdelb,vc,presh,zdelp,&
86  & zrdelp,zlnpr,zalph,zrtgr,zrpres,zrpp)
87 CALL gppref(kproma,kstart,kprof,kflev,pvah,pvbh,zalph,presh,presf)
88 
89 ! ------------------------------------------------------------------
90 
91 IF (lhook) CALL dr_hook('GPPRE',1,zhook_handle)
92 END SUBROUTINE gppre
subroutine gppref(KPROMA, KSTART, KPROF, KFLEV, PVAH, PVBH, PALPH, PRESH, PRESF)
Definition: gppref.F90:2
subroutine gppre(KPROMA, KSTART, KPROF, KFLEV, PVAH, PVBH, PRESH, PRESF)
Definition: gppre.F90:2
subroutine gppreh(KPROMA, KSTART, KPROF, KFLEV, PVAH, PVBH, PRESH)
Definition: gppreh.F90:2
Definition: yomgem.F90:1
integer, parameter jprb
Definition: parkind1.F90:31
real(kind=jprb), dimension(:), allocatable vdelb
Definition: yomgem.F90:171
subroutine gpxyb(KPROMA, KSTART, KPROF, KFLEV, PVDELB, PVC, PRES, PDELP, PRDELP, PLNPR, PALPH, PRTGR, PRPRES, PRPP)
Definition: gpxyb.F90:4
logical lhook
Definition: yomhook.F90:12
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
integer, parameter jpim
Definition: parkind1.F90:13
real(kind=jprb), dimension(:), allocatable vc
Definition: yomgem.F90:170