LMDZ
rrtm_ecrt_140gp.F90
Go to the documentation of this file.
1 !
2 ! $Id: rrtm_ecrt_140gp.F90 2152 2014-11-19 16:52:35Z fhourdin $
3 !
4 !****************** SUBROUTINE RRTM_ECRT_140GP **************************
5 
6 SUBROUTINE rrtm_ecrt_140gp &
7  & ( k_iplon, klon , klev, kcld,&
8  & paer , paph , pap,&
9  & pts , pth , pt,&
10  & p_zemis, p_zemiw,&
11  & pq , pcco2, pozn, pcldf, ptaucld, ptclear,&
12  & p_cldfrac,p_taucld,&
13  & ptau_lw,&
14  & p_coldry,p_wkl,p_wx,&
15  & p_tauaerl,pavel,p_tavel,pz,p_tz,p_tbound,k_nlayers,p_semiss,k_ireflect )
16 
17 ! Reformatted for F90 by JJMorcrette, ECMWF, 980714
18 
19 ! Read in atmospheric profile from ECMWF radiation code, and prepare it
20 ! for use in RRTM. Set other RRTM input parameters. Values are passed
21 ! back through existing RRTM arrays and commons.
22 
23 !- Modifications
24 
25 ! 2000-05-15 Deborah Salmond Speed-up
26 
27 USE parkind1 ,ONLY : jpim ,jprb
28 USE yomhook ,ONLY : lhook, dr_hook
29 
30 USE parrrtm , ONLY : jpband ,jpxsec ,jplay ,&
31  & jpinpx
32 USE yoerad , ONLY : nlw ,novlp
33 USE yoerdi , ONLY : rch4 ,rn2o ,rcfc11 ,rcfc12
34 USE yoesw , ONLY : raer
35 
36 !------------------------------Arguments--------------------------------
37 
38 IMPLICIT NONE
39 
40 
41 INTEGER(KIND=JPIM),INTENT(IN) :: KLON! Number of atmospheres (longitudes)
42 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV! Number of atmospheric layers
43 INTEGER(KIND=JPIM),INTENT(IN) :: K_IPLON
44 INTEGER(KIND=JPIM),INTENT(OUT) :: KCLD
45 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(klon,6,klev) ! Aerosol optical thickness
46 REAL(KIND=JPRB) ,INTENT(IN) :: PAPH(klon,klev+1) ! Interface pressures (Pa)
47 REAL(KIND=JPRB) ,INTENT(IN) :: PAP(klon,klev) ! Layer pressures (Pa)
48 REAL(KIND=JPRB) ,INTENT(IN) :: PTS(klon) ! Surface temperature (K)
49 REAL(KIND=JPRB) ,INTENT(IN) :: PTH(klon,klev+1) ! Interface temperatures (K)
50 REAL(KIND=JPRB) ,INTENT(IN) :: PT(klon,klev) ! Layer temperature (K)
51 REAL(KIND=JPRB) ,INTENT(IN) :: P_ZEMIS(klon) ! Non-window surface emissivity
52 REAL(KIND=JPRB) ,INTENT(IN) :: P_ZEMIW(klon) ! Window surface emissivity
53 REAL(KIND=JPRB) ,INTENT(IN) :: PQ(klon,klev) ! H2O specific humidity (mmr)
54 REAL(KIND=JPRB) ,INTENT(IN) :: PCCO2 ! CO2 mass mixing ratio
55 REAL(KIND=JPRB) ,INTENT(IN) :: POZN(klon,klev) ! O3 mass mixing ratio
56 REAL(KIND=JPRB) ,INTENT(IN) :: PCLDF(klon,klev) ! Cloud fraction
57 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUCLD(klon,klev,jpband) ! Cloud optical depth
58 !--C.Kleinschmitt
59 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU_LW(klon,klev,nlw) ! LW Optical depth of aerosols
60 !--end
61 REAL(KIND=JPRB) ,INTENT(OUT) :: PTCLEAR
62 REAL(KIND=JPRB) ,INTENT(OUT) :: P_CLDFRAC(jplay) ! Cloud fraction
63 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUCLD(jplay,jpband) ! Spectral optical thickness
64 REAL(KIND=JPRB) ,INTENT(OUT) :: P_COLDRY(jplay)
65 REAL(KIND=JPRB) ,INTENT(OUT) :: P_WKL(jpinpx,jplay)
66 REAL(KIND=JPRB) ,INTENT(OUT) :: P_WX(jpxsec,jplay) ! Amount of trace gases
67 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUAERL(jplay,jpband)
68 REAL(KIND=JPRB) ,INTENT(OUT) :: PAVEL(jplay)
69 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAVEL(jplay)
70 REAL(KIND=JPRB) ,INTENT(OUT) :: PZ(0:jplay)
71 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TZ(0:jplay)
72 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TBOUND
73 INTEGER(KIND=JPIM),INTENT(OUT) :: K_NLAYERS
74 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SEMISS(jpband)
75 INTEGER(KIND=JPIM),INTENT(OUT) :: K_IREFLECT
76 ! real rch4 ! CH4 mass mixing ratio
77 ! real rn2o ! N2O mass mixing ratio
78 ! real rcfc11 ! CFC11 mass mixing ratio
79 ! real rcfc12 ! CFC12 mass mixing ratio
80 !- from AER
81 !- from PROFILE
82 !- from SURFACE
83 REAL(KIND=JPRB) :: ztauaer(5)
84 REAL(KIND=JPRB) :: zc1j(0:klev) ! total cloud from top and level k
85 REAL(KIND=JPRB) :: Z_AMD ! Effective molecular weight of dry air (g/mol)
86 REAL(KIND=JPRB) :: Z_AMW ! Molecular weight of water vapor (g/mol)
87 REAL(KIND=JPRB) :: Z_AMCO2 ! Molecular weight of carbon dioxide (g/mol)
88 REAL(KIND=JPRB) :: Z_AMO ! Molecular weight of ozone (g/mol)
89 REAL(KIND=JPRB) :: Z_AMCH4 ! Molecular weight of methane (g/mol)
90 REAL(KIND=JPRB) :: Z_AMN2O ! Molecular weight of nitrous oxide (g/mol)
91 REAL(KIND=JPRB) :: Z_AMC11 ! Molecular weight of CFC11 (g/mol) - CFCL3
92 REAL(KIND=JPRB) :: Z_AMC12 ! Molecular weight of CFC12 (g/mol) - CF2CL2
93 REAL(KIND=JPRB) :: Z_AVGDRO ! Avogadro's number (molecules/mole)
94 REAL(KIND=JPRB) :: Z_GRAVIT ! Gravitational acceleration (cm/sec2)
95 
96 ! Atomic weights for conversion from mass to volume mixing ratios; these
97 ! are the same values used in ECRT to assure accurate conversion to vmr
98 data z_amd / 28.970_jprb /
99 data z_amw / 18.0154_jprb /
100 data z_amco2 / 44.011_jprb /
101 data z_amo / 47.9982_jprb /
102 data z_amch4 / 16.043_jprb /
103 data z_amn2o / 44.013_jprb /
104 data z_amc11 / 137.3686_jprb /
105 data z_amc12 / 120.9140_jprb /
106 data z_avgdro/ 6.02214e23_jprb /
107 data z_gravit/ 9.80665e02_jprb /
108 
109 INTEGER(KIND=JPIM) :: IATM, IMOL, IXMAX, J1, J2, JAE, JB, JK, JL, I_L
110 INTEGER(KIND=JPIM) :: I_NMOL, I_NXMOL
111 
112 REAL(KIND=JPRB) :: Z_AMM, ZCLDLY, ZCLEAR, ZCLOUD, ZEPSEC
113 REAL(KIND=JPRB) :: ZHOOK_HANDLE
114 
115 ! ***
116 
117 ! *** mji
118 ! Initialize all molecular amounts and aerosol optical depths to zero here,
119 ! then pass ECRT amounts into RRTM arrays below.
120 
121 ! DATA ZWKL /MAXPRDW*0.0/
122 ! DATA ZWX /MAXPROD*0.0/
123 ! DATA KREFLECT /0/
124 
125 ! Activate cross section molecules:
126 ! NXMOL - number of cross-sections input by user
127 ! IXINDX(I) - index of cross-section molecule corresponding to Ith
128 ! cross-section specified by user
129 ! = 0 -- not allowed in RRTM
130 ! = 1 -- CCL4
131 ! = 2 -- CFC11
132 ! = 3 -- CFC12
133 ! = 4 -- CFC22
134 ! DATA KXMOL /2/
135 ! DATA KXINDX /0,2,3,0,31*0/
136 
137 ! IREFLECT=KREFLECT
138 ! NXMOL=KXMOL
139 
140 IF (lhook) CALL dr_hook('RRTM_ECRT_140GP',0,zhook_handle)
141 k_ireflect=0
142 i_nxmol=2
143 
144 DO j1=1,35
145 ! IXINDX(J1)=0
146  DO j2=1,klev
147  p_wkl(j1,j2)=0.0_jprb
148  ENDDO
149 ENDDO
150 !IXINDX(2)=2
151 !IXINDX(3)=3
152 
153 ! Set parameters needed for RRTM execution:
154 iatm = 0
155 ! IXSECT = 1
156 ! NUMANGS = 0
157 ! IOUT = -1
158 ixmax = 4
159 
160 ! Bands 6,7,8 are considered the 'window' and allowed to have a
161 ! different surface emissivity (as in ECMWF). Eli wrote this part....
162 p_semiss(1) = p_zemis(k_iplon)
163 p_semiss(2) = p_zemis(k_iplon)
164 p_semiss(3) = p_zemis(k_iplon)
165 p_semiss(4) = p_zemis(k_iplon)
166 p_semiss(5) = p_zemis(k_iplon)
167 p_semiss(6) = p_zemiw(k_iplon)
168 p_semiss(7) = p_zemiw(k_iplon)
169 p_semiss(8) = p_zemiw(k_iplon)
170 p_semiss(9) = p_zemis(k_iplon)
171 p_semiss(10) = p_zemis(k_iplon)
172 p_semiss(11) = p_zemis(k_iplon)
173 p_semiss(12) = p_zemis(k_iplon)
174 p_semiss(13) = p_zemis(k_iplon)
175 p_semiss(14) = p_zemis(k_iplon)
176 p_semiss(15) = p_zemis(k_iplon)
177 p_semiss(16) = p_zemis(k_iplon)
178 
179 ! Set surface temperature.
180 
181 p_tbound = pts(k_iplon)
182 
183 ! Install ECRT arrays into RRTM arrays for pressure, temperature,
184 ! and molecular amounts. Pressures are converted from Pascals
185 ! (ECRT) to mb (RRTM). H2O, CO2, O3 and trace gas amounts are
186 ! converted from mass mixing ratio to volume mixing ratio. CO2
187 ! converted with same dry air and CO2 molecular weights used in
188 ! ECRT to assure correct conversion back to the proper CO2 vmr.
189 ! The dry air column COLDRY (in molec/cm2) is calculated from
190 ! the level pressures PZ (in mb) based on the hydrostatic equation
191 ! and includes a correction to account for H2O in the layer. The
192 ! molecular weight of moist air (amm) is calculated for each layer.
193 ! Note: RRTM levels count from bottom to top, while the ECRT input
194 ! variables count from the top down and must be reversed here.
195 
196 k_nlayers = klev
197 i_nmol = 6
198 pz(0) = paph(k_iplon,klev+1)/100._jprb
199 p_tz(0) = pth(k_iplon,klev+1)
200 DO i_l = 1, klev
201  pavel(i_l) = pap(k_iplon,klev-i_l+1)/100._jprb
202  p_tavel(i_l) = pt(k_iplon,klev-i_l+1)
203  pz(i_l) = paph(k_iplon,klev-i_l+1)/100._jprb
204  p_tz(i_l) = pth(k_iplon,klev-i_l+1)
205  p_wkl(1,i_l) = pq(k_iplon,klev-i_l+1)*z_amd/z_amw
206  p_wkl(2,i_l) = pcco2*z_amd/z_amco2
207  p_wkl(3,i_l) = pozn(k_iplon,klev-i_l+1)*z_amd/z_amo
208  p_wkl(4,i_l) = rn2o*z_amd/z_amn2o
209  p_wkl(6,i_l) = rch4*z_amd/z_amch4
210  z_amm = (1-p_wkl(1,i_l))*z_amd + p_wkl(1,i_l)*z_amw
211  p_coldry(i_l) = (pz(i_l-1)-pz(i_l))*1.e3_jprb*z_avgdro/(z_gravit*z_amm*(1+p_wkl(1,i_l)))
212 ENDDO
213 
214 !- Fill RRTM aerosol arrays with operational ECMWF aerosols,
215 ! do the mixing and distribute over the 16 spectral intervals
216 
217 DO i_l=1,klev
218  jk=klev-i_l+1
219 ! DO JAE=1,5
220  jae=1
221  ztauaer(jae) =&
222  & raer(jae,1)*paer(k_iplon,1,jk)+raer(jae,2)*paer(k_iplon,2,jk)&
223  & +raer(jae,3)*paer(k_iplon,3,jk)+raer(jae,4)*paer(k_iplon,4,jk)&
224  & +raer(jae,5)*paer(k_iplon,5,jk)+raer(jae,6)*paer(k_iplon,6,jk)
225  p_tauaerl(i_l, 1)=ztauaer(1)
226  p_tauaerl(i_l, 2)=ztauaer(1)
227  jae=2
228  ztauaer(jae) =&
229  & raer(jae,1)*paer(k_iplon,1,jk)+raer(jae,2)*paer(k_iplon,2,jk)&
230  & +raer(jae,3)*paer(k_iplon,3,jk)+raer(jae,4)*paer(k_iplon,4,jk)&
231  & +raer(jae,5)*paer(k_iplon,5,jk)+raer(jae,6)*paer(k_iplon,6,jk)
232  p_tauaerl(i_l, 3)=ztauaer(2)
233  p_tauaerl(i_l, 4)=ztauaer(2)
234  p_tauaerl(i_l, 5)=ztauaer(2)
235  jae=3
236  ztauaer(jae) =&
237  & raer(jae,1)*paer(k_iplon,1,jk)+raer(jae,2)*paer(k_iplon,2,jk)&
238  & +raer(jae,3)*paer(k_iplon,3,jk)+raer(jae,4)*paer(k_iplon,4,jk)&
239  & +raer(jae,5)*paer(k_iplon,5,jk)+raer(jae,6)*paer(k_iplon,6,jk)
240  p_tauaerl(i_l, 6)=ztauaer(3)
241  p_tauaerl(i_l, 8)=ztauaer(3)
242  p_tauaerl(i_l, 9)=ztauaer(3)
243  jae=4
244  ztauaer(jae) =&
245  & raer(jae,1)*paer(k_iplon,1,jk)+raer(jae,2)*paer(k_iplon,2,jk)&
246  & +raer(jae,3)*paer(k_iplon,3,jk)+raer(jae,4)*paer(k_iplon,4,jk)&
247  & +raer(jae,5)*paer(k_iplon,5,jk)+raer(jae,6)*paer(k_iplon,6,jk)
248  p_tauaerl(i_l, 7)=ztauaer(4)
249  jae=5
250  ztauaer(jae) =&
251  & raer(jae,1)*paer(k_iplon,1,jk)+raer(jae,2)*paer(k_iplon,2,jk)&
252  & +raer(jae,3)*paer(k_iplon,3,jk)+raer(jae,4)*paer(k_iplon,4,jk)&
253  & +raer(jae,5)*paer(k_iplon,5,jk)+raer(jae,6)*paer(k_iplon,6,jk)
254 ! END DO
255  p_tauaerl(i_l,10)=ztauaer(5)
256  p_tauaerl(i_l,11)=ztauaer(5)
257  p_tauaerl(i_l,12)=ztauaer(5)
258  p_tauaerl(i_l,13)=ztauaer(5)
259  p_tauaerl(i_l,14)=ztauaer(5)
260  p_tauaerl(i_l,15)=ztauaer(5)
261  p_tauaerl(i_l,16)=ztauaer(5)
262 ENDDO
263 !--Use LW AOD from own Mie calculations (C. Kleinschmitt)
264 DO i_l=1,klev
265  jk=klev-i_l+1
266  DO jae=1, nlw
267  p_tauaerl(i_l,jae) = max( ptau_lw(k_iplon, jk, jae), 1e-30 )
268  ENDDO
269 ENDDO
270 !--end C. Kleinschmitt
271 
272 DO j2=1,klev
273  DO j1=1,jpxsec
274  p_wx(j1,j2)=0.0_jprb
275  ENDDO
276 ENDDO
277 
278 DO i_l = 1, klev
279 !- Set cross section molecule amounts from ECRT; convert to vmr
280  p_wx(2,i_l) = rcfc11*z_amd/z_amc11
281  p_wx(3,i_l) = rcfc12*z_amd/z_amc12
282  p_wx(2,i_l) = p_coldry(i_l) * p_wx(2,i_l) * 1.e-20_jprb
283  p_wx(3,i_l) = p_coldry(i_l) * p_wx(3,i_l) * 1.e-20_jprb
284 
285 !- Here, all molecules in WKL and WX are in volume mixing ratio; convert to
286 ! molec/cm2 based on COLDRY for use in RRTM
287 
288  DO imol = 1, i_nmol
289  p_wkl(imol,i_l) = p_coldry(i_l) * p_wkl(imol,i_l)
290  ENDDO
291 
292 ! DO IX = 1,JPXSEC
293 ! IF (IXINDX(IX) /= 0) THEN
294 ! WX(IXINDX(IX),L) = COLDRY(L) * WX(IX,L) * 1.E-20_JPRB
295 ! ENDIF
296 ! END DO
297 
298 ENDDO
299 
300 !- Approximate treatment for various cloud overlaps
301 zclear=1.0_jprb
302 zcloud=0.0_jprb
303 zc1j(0)=0.0_jprb
304 zepsec=1.e-03_jprb
305 jl=k_iplon
306 
307 !++MODIFCODE
308 IF ((novlp == 1).OR.(novlp ==6).OR.(novlp ==8)) THEN
309 !--MODIFCODE
310 
311  DO jk=1,klev
312  IF (pcldf(jl,jk) > zepsec) THEN
313  zcldly=pcldf(jl,jk)
314  zclear=zclear &
315  & *(1.0_jprb-max( zcldly , zcloud ))&
316  & /(1.0_jprb-min( zcloud , 1.0_jprb-zepsec ))
317  zcloud = zcldly
318  zc1j(jk)= 1.0_jprb - zclear
319  ELSE
320  zcldly=0.0_jprb
321  zclear=zclear &
322  & *(1.0_jprb-max( zcldly , zcloud ))&
323  & /(1.0_jprb-min( zcloud , 1.0_jprb-zepsec ))
324  zcloud = zcldly
325  zc1j(jk)= 1.0_jprb - zclear
326  ENDIF
327  ENDDO
328 
329 !++MODIFCODE
330 ELSEIF ((novlp == 2).OR.(novlp ==7)) THEN
331 !--MODIFCODE
332 
333  DO jk=1,klev
334  IF (pcldf(jl,jk) > zepsec) THEN
335  zcldly=pcldf(jl,jk)
336  zcloud = max( zcldly , zcloud )
337  zc1j(jk) = zcloud
338  ELSE
339  zcldly=0.0_jprb
340  zcloud = max( zcldly , zcloud )
341  zc1j(jk) = zcloud
342  ENDIF
343  ENDDO
344 
345 !++MODIFCODE
346 ELSEIF ((novlp == 3).OR.(novlp ==5)) THEN
347 !--MODIFCODE
348 
349  DO jk=1,klev
350  IF (pcldf(jl,jk) > zepsec) THEN
351  zcldly=pcldf(jl,jk)
352  zclear = zclear * (1.0_jprb-zcldly)
353  zcloud = 1.0_jprb - zclear
354  zc1j(jk) = zcloud
355  ELSE
356  zcldly=0.0_jprb
357  zclear = zclear * (1.0_jprb-zcldly)
358  zcloud = 1.0_jprb - zclear
359  zc1j(jk) = zcloud
360  ENDIF
361  ENDDO
362 
363 ELSEIF (novlp == 4) THEN
364 
365 ENDIF
366 ptclear=1.0_jprb-zc1j(klev)
367 
368 ! Transfer cloud fraction and cloud optical depth to RRTM arrays;
369 ! invert array index for pcldf to go from bottom to top for RRTM
370 
371 !- clear-sky column
372 IF (ptclear > 1.0_jprb-zepsec) THEN
373  kcld=0
374  DO i_l = 1, klev
375  p_cldfrac(i_l) = 0.0_jprb
376  ENDDO
377  DO jb=1,jpband
378  DO i_l=1,klev
379  p_taucld(i_l,jb) = 0.0_jprb
380  ENDDO
381  ENDDO
382 
383 ELSE
384 
385 !- cloudy column
386 ! The diffusivity factor (Savijarvi, 1997) on the cloud optical
387 ! thickness TAUCLD has already been applied in RADLSW
388 
389  kcld=1
390  DO i_l=1,klev
391  p_cldfrac(i_l) = pcldf(k_iplon,i_l)
392  ENDDO
393  DO jb=1,jpband
394  DO i_l=1,klev
395  p_taucld(i_l,jb) = ptaucld(k_iplon,i_l,jb)
396  ENDDO
397  ENDDO
398 
399 ENDIF
400 
401 ! ------------------------------------------------------------------
402 
403 IF (lhook) CALL dr_hook('RRTM_ECRT_140GP',1,zhook_handle)
404 END SUBROUTINE rrtm_ecrt_140gp
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
integer(kind=jpim) nlw
Definition: yoerad.F90:26
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
Definition: yoesw.F90:1
real(kind=jprb), dimension(6, 6) raer
Definition: yoesw.F90:118
real(kind=jprb) rcfc12
Definition: yoerdi.F90:20
integer, save klon
Definition: dimphy.F90:3
real(kind=jprb) rcfc11
Definition: yoerdi.F90:19
integer(kind=jpim) novlp
Definition: yoerad.F90:24
integer, save klev
Definition: dimphy.F90:7
integer(kind=jpim), parameter jpinpx
Definition: parrrtm.F90:20
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
Definition: yoerdi.F90:1
INTERFACE SUBROUTINE RRTM_ECRT_140GP pozn
subroutine rrtm_ecrt_140gp(K_IPLON, klon, klev, kcld, paer, paph, pap, pts, pth, pt, P_ZEMIS, P_ZEMIW, pq, pcco2, pozn, pcldf, ptaucld, ptclear, P_CLDFRAC, P_TAUCLD, PTAU_LW, P_COLDRY, P_WKL, P_WX, P_TAUAERL, PAVEL, P_TAVEL, PZ, P_TZ, P_TBOUND, K_NLAYERS, P_SEMISS, K_IREFLECT)
integer, parameter jprb
Definition: parkind1.F90:31
Definition: yoerad.F90:1
INTERFACE SUBROUTINE RRTM_ECRT_140GP ptclear
real(kind=jprb) rch4
Definition: yoerdi.F90:16
real(kind=jprb) rn2o
Definition: yoerdi.F90:17
logical lhook
Definition: yomhook.F90:12
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcldf
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
INTERFACE SUBROUTINE RRTM_ECRT_140GP kcld
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
INTERFACE SUBROUTINE RRTM_ECRT_140GP ptaucld
integer, parameter jpim
Definition: parkind1.F90:13
INTERFACE SUBROUTINE RRTM_ECRT_140GP pap
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pts
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pq
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19