LMDZ
lwv.F90
Go to the documentation of this file.
1 SUBROUTINE lwv &
2  & ( kidia, kfdia, klon , klev , kuaer , ktraer,&
3  & pabcu, pb , pbint, pbsur, pbtop , pdbsl,&
4  & pemis, pemiw,&
5  & pga , pgb , pgasur,pgbsur,pgatop, pgbtop,&
6  & pcntrb,pfluc &
7  & )
8 
9 !**** *LWV* - LONGWAVE RADIATION, VERTICAL INTEGRATION
10 
11 ! PURPOSE.
12 ! --------
13 ! CARRIES OUT THE VERTICAL INTEGRATION TO GIVE LONGWAVE
14 ! FLUXES OR RADIANCES
15 
16 !** INTERFACE.
17 ! ----------
18 
19 ! EXPLICIT ARGUMENTS :
20 ! --------------------
21 ! ==== INPUTS ===
22 ! PABCU : (KLON,NUA,3*KLEV+1); ABSORBER AMOUNTS
23 ! PB : (KLON,NSIL,KLEV+1); SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
24 ! PBINT : (KLON,KLEV+1) ; HALF-LEVEL PLANCK FUNCTIONS
25 ! PBSUR : (KLON,NSIL) ; SURFACE SPECTRAL PLANCK FUNCTION
26 ! PBTOP : (KLON,NSIL) ; T.O.A. SPECTRAL PLANCK FUNCTION
27 ! PDBSL : (KLON,KLEV*2) ; SUB-LAYER PLANCK FUNCTION GRADIENT
28 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
29 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
30 ! PGA, PGB ; PADE APPROXIMANTS
31 ! PGASUR, PGBSUR ; SURFACE PADE APPROXIMANTS
32 ! PGATOP, PGBTOP ; T.O.A. PADE APPROXIMANTS
33 ! ==== OUTPUTS ===
34 ! PCNTRB : (KLON,KLEV+1,KLEV+1); CLEAR-SKY ENERGY EXCHANGE MATRIX
35 ! PFLUC(KLON,2,KLEV) ; RADIATIVE FLUXES 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 ! JJ Morcrette 96-06-07 Surface LW window emissivity
68 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
69 !-----------------------------------------------------------------------
70 
71 USE parkind1 ,ONLY : jpim ,jprb
72 USE yomhook ,ONLY : lhook, dr_hook
73 
74 USE yoelw , ONLY : nsil ,nipd ,nua
75 
76 IMPLICIT NONE
77 
78 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
79 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
80 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
81 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
82 INTEGER(KIND=JPIM),INTENT(IN) :: KUAER
83 INTEGER(KIND=JPIM),INTENT(IN) :: KTRAER
84 REAL(KIND=JPRB) ,INTENT(IN) :: PABCU(klon,nua,3*klev+1)
85 REAL(KIND=JPRB) ,INTENT(IN) :: PB(klon,nsil,klev+1)
86 REAL(KIND=JPRB) ,INTENT(IN) :: PBINT(klon,klev+1)
87 REAL(KIND=JPRB) ,INTENT(IN) :: PBSUR(klon,nsil)
88 REAL(KIND=JPRB) ,INTENT(IN) :: PBTOP(klon,nsil)
89 REAL(KIND=JPRB) ,INTENT(IN) :: PDBSL(klon,nsil,klev*2)
90 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIS(klon)
91 REAL(KIND=JPRB) ,INTENT(IN) :: PEMIW(klon)
92 REAL(KIND=JPRB) ,INTENT(IN) :: PGA(klon,nipd,2,klev)
93 REAL(KIND=JPRB) ,INTENT(IN) :: PGB(klon,nipd,2,klev)
94 REAL(KIND=JPRB) ,INTENT(IN) :: PGASUR(klon,nipd,2)
95 REAL(KIND=JPRB) ,INTENT(IN) :: PGBSUR(klon,nipd,2)
96 REAL(KIND=JPRB) ,INTENT(IN) :: PGATOP(klon,nipd,2)
97 REAL(KIND=JPRB) ,INTENT(IN) :: PGBTOP(klon,nipd,2)
98 REAL(KIND=JPRB) ,INTENT(OUT) :: PCNTRB(klon,klev+1,klev+1)
99 REAL(KIND=JPRB) ,INTENT(OUT) :: PFLUC(klon,2,klev+1)
100 !-----------------------------------------------------------------------
101 
102 !* 0.1 ARGUMENTS
103 ! ---------
104 
105 !-----------------------------------------------------------------------
106 
107 ! ------------
108 
109 REAL(KIND=JPRB) :: ZADJD(klon,klev+1) , ZADJU(klon,klev+1)&
110  & , ZDBDT(KLON,NSIL,KLEV)&
111  & , ZDISD(KLON,KLEV+1) , ZDISU(KLON,KLEV+1)&
112  & , ZDWFSU(KLON,NSIL)
113 
114 INTEGER(KIND=JPIM) :: JA, JK, JL
115 REAL(KIND=JPRB) :: ZHOOK_HANDLE
116 
117 #include "lwvb.intfb.h"
118 #include "lwvd.intfb.h"
119 #include "lwvn.intfb.h"
120 
121 !-----------------------------------------------------------------------
122 
123 !* 1. INITIALIZATION
124 ! --------------
125 
126 !* 1.1 INITIALIZE LAYER CONTRIBUTIONS
127 ! ------------------------------
128 
129 IF (lhook) CALL dr_hook('LWV',0,zhook_handle)
130 DO jk=1,klev+1
131  DO jl=kidia,kfdia
132  zadjd(jl,jk)=0.0_jprb
133  zadju(jl,jk)=0.0_jprb
134  zdisd(jl,jk)=0.0_jprb
135  zdisu(jl,jk)=0.0_jprb
136  ENDDO
137 ENDDO
138 DO ja=1,nsil
139  DO jl=kidia,kfdia
140  zdwfsu(jl,ja)=0.0_jprb
141  ENDDO
142 ENDDO
143 
144 ! ------------------------------------------------------------------
145 
146 !* 2. VERTICAL INTEGRATION
147 ! --------------------
148 
149 ! ------------------------------------------------------------------
150 
151 !* 2.1 CONTRIBUTION FROM ADJACENT LAYERS
152 ! ---------------------------------
153 
154 CALL lwvn &
155  & ( kidia, kfdia, klon , klev , kuaer,&
156  & pabcu, pdbsl, pga , pgb,&
157  & zadjd, zadju, pcntrb, zdbdt, zdwfsu &
158  & )
159 
160 ! ------------------------------------------------------------------
161 
162 !* 2.2 CONTRIBUTION FROM DISTANT LAYERS
163 ! ---------------------------------
164 
165 CALL lwvd &
166  & ( kidia , kfdia, klon , klev , ktraer,&
167  & pabcu , zdbdt, pga , pgb,&
168  & pcntrb, zdisd, zdisu, zdwfsu &
169  & )
170 
171 ! ------------------------------------------------------------------
172 
173 !* 2.3 EXCHANGE WITH THE BOUNDARIES
174 ! ----------------------------
175 
176 CALL lwvb &
177  & ( kidia , kfdia , klon , klev , kuaer,&
178  & pabcu , zadjd , zadju,&
179  & pb , pbint , pbsur , pbtop,&
180  & zdisd , zdisu , pemis , pemiw,&
181  & pgasur, pgbsur, pgatop, pgbtop,&
182  & zdwfsu,pfluc &
183  & )
184 
185 !-----------------------------------------------------------------------
186 
187 IF (lhook) CALL dr_hook('LWV',1,zhook_handle)
188 END SUBROUTINE lwv
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 lwvb(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PADJD, PADJU, PB, PBINT, PBSUR, PBTOP, PDISD, PDISU, PEMIS, PEMIW, PGASUR, PGBSUR, PGATOP, PGBTOP, PDWFSU, PFLUC)
Definition: lwvb.F90:9
subroutine lwvd(KIDIA, KFDIA, KLON, KLEV, KTRAER, PABCU, PDBDT, PGA, PGB, PCNTRB, PDISD, PDISU, PDWFSU)
Definition: lwvd.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 lwvn(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PDBSL, PGA, PGB, PADJD, PADJU, PCNTRB, PDBDT, PDWFSU)
Definition: lwvn.F90:6
logical lhook
Definition: yomhook.F90:12
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
integer, parameter jpim
Definition: parkind1.F90:13