LMDZ
lwbv.F90
Go to the documentation of this file.
1 SUBROUTINE lwbv &
2  & ( kidia, kfdia, klon , klev , kmode,&
3  & pdt0 , pemis, pemiw,&
4  & ptl , ptave,&
5  & pemit, pfluc,&
6  & pabcu, pbint, pbsui, pcntrb &
7  & )
8 
9 !**** *LWBV* - COMPUTE PLANCK FUNC., PERF. VERT. INTEGRATION
10 
11 ! PURPOSE.
12 ! --------
13 ! TO COMPUTE THE PLANCK FUNCTION AND PERFORM THE
14 ! VERTICAL INTEGRATION. SPLIT OUT FROM LW FOR MEMORY
15 ! SAVING
16 
17 !** INTERFACE.
18 ! ----------
19 
20 ! *LWVB* IS CALLED FROM *LW*
21 
22 ! EXPLICIT ARGUMENTS :
23 ! --------------------
24 ! PDT0 : (KLON) ; SURFACE TEMPERATURE DISCONTINUITY
25 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
26 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
27 ! PTAVE : (KLON,KLEV) ; TEMPERATURE
28 ! PTL : (KLON,KLEV+1) ; HALF LEVEL TEMPERATURE
29 ! ==== OUTPUTS ===
30 ! PABCU :
31 ! PBINT :
32 ! PBSUI :
33 ! PCNTRB :
34 ! PCOLC :
35 ! PEMIT :
36 ! PFLUC :
37 
38 ! IMPLICIT ARGUMENTS : NONE
39 ! --------------------
40 
41 ! METHOD.
42 ! -------
43 
44 ! 1. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
45 ! GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
46 ! 2. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
47 ! TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
48 ! BOUNDARIES.
49 ! 3. COMPUTES THE CLEAR-SKY COOLING RATES.
50 
51 ! EXTERNALS.
52 ! ----------
53 
54 ! *LWB*, *LWV*
55 
56 ! REFERENCE.
57 ! ----------
58 
59 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
60 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
61 
62 ! AUTHOR.
63 ! -------
64 ! JEAN-JACQUES MORCRETTE *ECMWF*
65 
66 ! MODIFICATIONS.
67 ! --------------
68 ! ORIGINAL : 89-07-14
69 ! MODIFICATION : 93-10-15 M.HAMRUD (SPLIT OUT FROM LW TO SAVE
70 ! MEMORY)
71 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
72 !-----------------------------------------------------------------------
73 
74 USE parkind1 ,ONLY : jpim ,jprb
75 USE yomhook ,ONLY : lhook, dr_hook
76 
77 USE yoelw , ONLY : nsil ,nipd ,nua
78 USE yoerdu , ONLY : nuaer ,ntraer
79 
80 IMPLICIT NONE
81 
82 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
83 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
84 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
85 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
86 INTEGER(KIND=JPIM),INTENT(IN) :: KMODE
87 REAL(KIND=JPRB) ,INTENT(IN) :: PDT0(klon)
88 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(klon)
89 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(klon)
90 REAL(KIND=JPRB) ,INTENT(IN) :: PTL(klon,klev+1)
91 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(klon,klev)
92 REAL(KIND=JPRB) ,INTENT(OUT) :: PEMIT(klon)
93 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(klon,2,klev+1)
94 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(klon,nua,3*klev+1)
95 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBINT(klon,klev+1)
96 REAL(KIND=JPRB) ,INTENT(OUT) :: PBSUI(klon)
97 REAL(KIND=JPRB) ,INTENT(OUT) :: PCNTRB(klon,klev+1,klev+1)
98 !-----------------------------------------------------------------------
99 
100 !* 0.1 ARGUMENTS
101 ! ---------
102 
103 !-------------------------------------------------------------------------
104 
105 ! ------------
106 REAL(KIND=JPRB) ::&
107  & ZB(KLON,NSIL,KLEV+1), ZBSUR(KLON,NSIL) , ZBTOP(KLON,NSIL)&
108  & , ZDBSL(KLON,NSIL,KLEV*2)&
109  & , ZGA(KLON,NIPD,2,KLEV) , ZGB(KLON,NIPD,2,KLEV)&
110  & , ZGASUR(KLON,NIPD,2) , ZGBSUR(KLON,NIPD,2)&
111  & , ZGATOP(KLON,NIPD,2) , ZGBTOP(KLON,NIPD,2)
112 
113 INTEGER(KIND=JPIM) :: JL, JLW
114 REAL(KIND=JPRB) :: ZHOOK_HANDLE
115 
116 #include "lwb.intfb.h"
117 #include "lwv.intfb.h"
118 
119 ! ------------------------------------------------------------------
120 
121 !* 2. COMPUTES PLANCK FUNCTIONS
122 ! -------------------------
123 
124 IF (lhook) CALL dr_hook('LWBV',0,zhook_handle)
125 print *,'LWBV: avant LWB'
126 CALL lwb &
127  & ( kidia, kfdia, klon , klev , kmode,&
128  & pdt0 , ptave, ptl,&
129  & zb , pbint, zbsur , zbtop , zdbsl,&
130  & zga , zgb , zgasur, zgbsur, zgatop, zgbtop &
131  & )
132 
133 ! ------------------------------------------------------------------
134 
135 !* 3. PERFORMS THE VERTICAL INTEGRATION
136 ! ---------------------------------
137 
138 CALL lwv &
139  & ( kidia , kfdia, klon , klev,&
140  & nuaer , ntraer,&
141  & pabcu , zb , pbint , zbsur , zbtop , zdbsl,&
142  & pemis , pemiw,&
143  & zga , zgb , zgasur, zgbsur, zgatop, zgbtop,&
144  & pcntrb, pfluc &
145  & )
146 
147 DO jl=kidia,kfdia
148  pemit(jl)=0.0_jprb
149  pbsui(jl)=0.0_jprb
150 ENDDO
151 DO jlw=1,nsil
152  DO jl=kidia,kfdia
153  pbsui(jl)=pbsui(jl)+zbsur(jl,jlw)
154  IF (jlw >= 3.AND. jlw <= 4) THEN
155  pemit(jl)=pemit(jl)+zbsur(jl,jlw)*pemiw(jl)
156  ELSE
157  pemit(jl)=pemit(jl)+zbsur(jl,jlw)*pemis(jl)
158  ENDIF
159  ENDDO
160 ENDDO
161 DO jl=kidia,kfdia
162  pemit(jl)=pemit(jl)/pbsui(jl)
163 ENDDO
164 
165 ! ------------------------------------------------------------------
166 
167 IF (lhook) CALL dr_hook('LWBV',1,zhook_handle)
168 END SUBROUTINE lwbv
integer(kind=jpim) nipd
Definition: yoelw.F90:15
Definition: yoelw.F90:1
integer(kind=jpim) nsil
Definition: yoelw.F90:14
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
integer(kind=jpim) nua
Definition: yoelw.F90:19
integer, save klev
Definition: dimphy.F90:7
subroutine lwv(KIDIA, KFDIA, KLON, KLEV, KUAER, KTRAER, PABCU, PB, PBINT, PBSUR, PBTOP, PDBSL, PEMIS, PEMIW, PGA, PGB, PGASUR, PGBSUR, PGATOP, PGBTOP, PCNTRB, PFLUC)
Definition: lwv.F90:8
integer, save kfdia
Definition: dimphy.F90:5
integer, parameter jprb
Definition: parkind1.F90:31
subroutine lwbv(KIDIA, KFDIA, KLON, KLEV, KMODE, PDT0, PEMIS, PEMIW, PTL, PTAVE, PEMIT, PFLUC, PABCU, PBINT, PBSUI, PCNTRB)
Definition: lwbv.F90:8
integer(kind=jpim) nuaer
Definition: yoerdu.F90:13
subroutine lwb(KIDIA, KFDIA, KLON, KLEV, KMODE, PDT0, PTAVE, PTL, PB, PBINT, PBSUR, PBTOP, PDBSL, PGA, PGB, PGASUR, PGBSUR, PGATOP, PGBTOP)
Definition: lwb.F90:7
logical lhook
Definition: yomhook.F90:12
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim) ntraer
Definition: yoerdu.F90:14
Definition: yoerdu.F90:1