LMDZ
olwv.F90
Go to the documentation of this file.
1 SUBROUTINE olwv ( KIDIA,KFDIA,KLON,KLEV &
2  & , kuaer,ktraer &
3  & , pabcu,pb,pbint,pbsuin,pbsur,pbtop,pdbsl,pemis &
4  & , pga,pgb,pgasur,pgbsur,pgatop,pgbtop &
5  & , pcntrb,pcolc,pfluc )
6 !
7 !**** *LWV* - LONGWAVE RADIATION, VERTICAL INTEGRATION
8 !
9 ! PURPOSE.
10 ! --------
11 ! CARRIES OUT THE VERTICAL INTEGRATION TO GIVE LONGWAVE
12 ! FLUXES OR RADIANCES
13 !
14 !** INTERFACE.
15 ! ----------
16 !
17 ! EXPLICIT ARGUMENTS :
18 ! --------------------
19 ! ==== INPUTS ===
20 ! PABCU : (KLON,NUA,3*KLEV+1); ABSORBER AMOUNTS
21 ! PB : (KLON,NISP,KLEV+1); SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
22 ! PBINT : (KLON,KLEV+1) ; HALF-LEVEL PLANCK FUNCTIONS
23 ! PBSUIN : (KLON) ; SURFACE PLANCK FUNCTION
24 ! PBSUR : (KLON,NISP) ; SURFACE SPECTRAL PLANCK FUNCTION
25 ! PBTOP : (KLON,NISP) ; T.O.A. SPECTRAL PLANCK FUNCTION
26 ! PDBSL : (KLON,KLEV*2) ; SUB-LAYER PLANCK FUNCTION GRADIENT
27 ! PEMIS : (KLON) ; SURFACE EMISSIVITY
28 ! PGA, PGB ; PADE APPROXIMANTS
29 ! PGASUR, PGBSUR ; SURFACE PADE APPROXIMANTS
30 ! PGATOP, PGBTOP ; T.O.A. PADE APPROXIMANTS
31 ! ==== OUTPUTS ===
32 ! PCNTRB : (KLON,KLEV+1,KLEV+1); CLEAR-SKY ENERGY EXCHANGE MATRIX
33 ! PFLUC(KLON,2,KLEV) ; RADIATIVE FLUXES CLEAR-SKY:
34 ! 1 ==> UPWARD FLUX TOTAL
35 ! PCOLC(KLON,KLEV) ; LONG-WAVE TENDENCY CLEAR SKY
36 !
37 ! IMPLICIT ARGUMENTS : NONE
38 ! --------------------
39 !
40 ! METHOD.
41 ! -------
42 !
43 ! 1. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING BETWEEN
44 ! CONTRIBUTIONS BY - THE NEARBY LAYERS
45 ! - THE DISTANT LAYERS
46 ! - THE BOUNDARY TERMS
47 ! 2. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
48 !
49 ! EXTERNALS.
50 ! ----------
51 !
52 ! *LWVN*, *LWVD*, *LWVB*
53 !
54 ! REFERENCE.
55 ! ----------
56 !
57 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
58 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
59 !
60 ! AUTHOR.
61 ! -------
62 ! JEAN-JACQUES MORCRETTE *ECMWF*
63 !
64 ! MODIFICATIONS.
65 ! --------------
66 ! ORIGINAL : 89-07-14
67 !-----------------------------------------------------------------------
68 
69 #include "tsmbkind.h"
70 
71 USE yoeolw , ONLY : nisp ,nipd ,nua
72 
73 
74 IMPLICIT NONE
75 
76 
77 ! DUMMY INTEGER SCALARS
78 integer_m :: kfdia
79 integer_m :: kidia
80 integer_m :: klev
81 integer_m :: klon
82 integer_m :: ktraer
83 integer_m :: kuaer
84 
85 !-----------------------------------------------------------------------
86 !
87 !* 0.1 ARGUMENTS
88 ! ---------
89 !
90 !
91 real_b :: pabcu(klon,nua,3*klev+1), pb(klon,nisp,klev+1) &
92  & , pbint(klon,klev+1) &
93  & , pbsur(klon,nisp), pbsuin(klon), pbtop(klon,nisp) &
94  & , pdbsl(klon,nisp,klev*2), pemis(klon) &
95  & , pga(klon,8,2,klev), pgb(klon,8,2,klev) &
96  & , pgasur(klon,8,2) , pgbsur(klon,8,2) &
97  & , pgatop(klon,8,2) , pgbtop(klon,8,2)
98 !
99 real_b :: pcntrb(klon,klev+1,klev+1), pcolc(klon,klev) &
100  & , pfluc(klon,2,klev+1)
101 !
102 !-----------------------------------------------------------------------
103 !
104 !* 0.2 LOCAL ARRAYS
105 ! ------------
106 !
107 integer_m :: itx(klon)
108 !
109 real_b :: zadjd(klon,klev+1), zadju(klon,klev+1) &
110  & , zdbdt(klon,nisp,klev) &
111  & , zdisd(klon,klev+1), zdisu(klon,klev+1) &
112  & , zfd(klon), zfdn(klon,klev+1), zfu(klon) &
113  & , zfup(klon,klev+1),zglayd(klon),zglayu(klon)
114 
115 real_b :: zdfnet
116 !
117 ! LOCAL INTEGER SCALARS
118 integer_m :: ja, jk, jl, jkl
119 
120 !-----------------------------------------------------------------------
121 !
122 !* 1. INITIALIZATION
123 ! --------------
124 !
125 !* 1.1 INITIALIZE LAYER CONTRIBUTIONS
126 ! ------------------------------
127 !
128 DO jk=1,klev+1
129  DO jl=kidia,kfdia
130  zadjd(jl,jk)=0.
131  zadju(jl,jk)=0.
132  zdisd(jl,jk)=0.
133  zdisu(jl,jk)=0.
134  END DO
135 END DO
136 !
137 ! ------------------------------------------------------------------
138 !
139 !* 2. VERTICAL INTEGRATION
140 ! --------------------
141 !
142 ! ------------------------------------------------------------------
143 !
144 !* 2.1 CONTRIBUTION FROM ADJACENT LAYERS
145 ! ---------------------------------
146 !
147 CALL olwvn ( kidia,kfdia,klon,klev,kuaer &
148  & , pabcu,pdbsl,pga,pgb &
149  & , zadjd,zadju,pcntrb,zdbdt )
150 !
151 ! ------------------------------------------------------------------
152 !
153 !* 2.2 CONTRIBUTION FROM DISTANT LAYERS
154 ! ---------------------------------
155 !
156 CALL olwvd ( kidia,kfdia,klon,klev,ktraer &
157  & , pabcu,zdbdt,pga,pgb &
158  & , pcntrb,zdisd,zdisu )
159 !
160 ! ------------------------------------------------------------------
161 !
162 !* 2.3 EXCHANGE WITH THE BOUNDARIES
163 ! ----------------------------
164 !
165 CALL olwvb ( kidia,kfdia,klon,klev,kuaer &
166  & , pabcu,zadjd,zadju,pb,pbint,pbsuin,pbsur,pbtop &
167  & , zdisd,zdisu,pemis &
168  & , pga,pgb,pgasur,pgbsur,pgatop,pgbtop &
169  & , pfluc )
170 !
171 !
172 ! ------------------------------------------------------------------
173 RETURN
174 END SUBROUTINE olwv
subroutine olwv(KIDIA, KFDIA, KLON, KLEV, KUAER, KTRAER, PABCU, PB, PBINT, PBSUIN, PBSUR, PBTOP, PDBSL, PEMIS, PGA, PGB, PGASUR, PGBSUR, PGATOP, PGBTOP, PCNTRB, PCOLC, PFLUC)
Definition: olwv.F90:6
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
subroutine olwvn(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PDBSL, PGA, PGB, PADJD, PADJU, PCNTRB, PDBDT)
Definition: olwvn.F90:4
integer, save klev
Definition: dimphy.F90:7
integer, save kfdia
Definition: dimphy.F90:5
subroutine olwvb(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PADJD, PADJU, PB, PBINT, PBSUI, PBSUR, PBTOP, PDISD, PDISU, PEMIS, PGA, PGB, PGASUR, PGBSUR, PGATOP, PGBTOP, PFLUC)
Definition: olwvb.F90:6
subroutine olwvd(KIDIA, KFDIA, KLON, KLEV, KTRAER, PABCU, PDBDT, PGA, PGB, PCNTRB, PDISD, PDISU)
Definition: olwvd.F90:5
Definition: yoeolw.F90:1