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 !-----------------------------------------------------------------------
72 
73 #include "tsmbkind.h"
74 
75 USE yoelw , ONLY : nsil ,nipd ,nua
76 USE yoerdu , ONLY : nuaer ,ntraer
77 
78 
79 IMPLICIT NONE
80 
81 
82 ! DUMMY INTEGER SCALARS
83 integer_m :: kfdia
84 integer_m :: kidia
85 integer_m :: klev
86 integer_m :: klon
87 integer_m :: kmode
88 
89 
90 
91 !-----------------------------------------------------------------------
92 
93 !* 0.1 ARGUMENTS
94 ! ---------
95 
96 real_b :: pdt0(klon)&
97  &, pemis(klon) , pemiw(klon)&
98  &, ptl(klon,klev+1) , ptave(klon,klev)
99 
100 real_b :: pabcu(klon,nua,3*klev+1)&
101  &, pbint(klon,klev+1) , pbsui(klon)&
102  &, pcntrb(klon,klev+1,klev+1)&
103  &, pemit(klon)&
104  &, pfluc(klon,2,klev+1)
105 
106 !-------------------------------------------------------------------------
107 
108 !* 0.2 LOCAL ARRAYS
109 ! ------------
110 real_b ::&
111  &zb(klon,nsil,klev+1), zbsur(klon,nsil) , zbtop(klon,nsil)&
112  &, zdbsl(klon,nsil,klev*2)&
113  &, zga(klon,nipd,2,klev) , zgb(klon,nipd,2,klev)&
114  &, zgasur(klon,nipd,2) , zgbsur(klon,nipd,2)&
115  &, zgatop(klon,nipd,2) , zgbtop(klon,nipd,2)
116 
117 ! LOCAL INTEGER SCALARS
118 integer_m :: jl, jlw
119 
120 
121 ! ------------------------------------------------------------------
122 
123 !* 2. COMPUTES PLANCK FUNCTIONS
124 ! -------------------------
125 
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)=_zero_
149  pbsui(jl)=_zero_
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 RETURN
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
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
integer(kind=jpim) ntraer
Definition: yoerdu.F90:14
Definition: yoerdu.F90:1