43 & pemit , pflux , pfluc,
ptclear &
66 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
67 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
68 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
69 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
70 REAL(KIND=JPRB) ,
INTENT(IN) :: PAER(klon,6,klev)
71 REAL(KIND=JPRB) ,
INTENT(IN) :: PAPH(klon,klev+1)
72 REAL(KIND=JPRB) ,
INTENT(IN) :: PAP(klon,klev)
73 REAL(KIND=JPRB) ,
INTENT(IN) :: PTS(klon)
74 REAL(KIND=JPRB) ,
INTENT(IN) :: PTH(klon,klev+1)
75 REAL(KIND=JPRB) ,
INTENT(IN) :: PT(klon,klev)
76 REAL(KIND=JPRB) ,
INTENT(IN) :: P_ZEMIS(klon)
77 REAL(KIND=JPRB) ,
INTENT(IN) :: P_ZEMIW(klon)
78 REAL(KIND=JPRB) ,
INTENT(IN) :: PQ(klon,klev)
79 REAL(KIND=JPRB) ,
INTENT(IN) :: PCCO2
80 REAL(KIND=JPRB) ,
INTENT(IN) :: POZN(klon,klev)
81 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLDF(klon,klev)
82 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAUCLD(klon,klev,
jpband)
84 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_LW(klon,klev,
nlw)
86 REAL(KIND=JPRB) ,
INTENT(OUT) :: PEMIT(klon)
87 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLUX(klon,2,klev+1)
88 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLUC(klon,2,klev+1)
89 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTCLEAR(klon)
90 INTEGER(KIND=JPIM) :: ICLDLYR(
jplay)
91 REAL(KIND=JPRB) :: Z_CLDFRAC(
jplay)
96 equivalence(z_abss1(1),z_atr1(1,1))
102 equivalence(z_tausf1(1),z_tf1(1,1))
104 REAL(KIND=JPRB) :: Z_COLDRY(
jplay)
109 REAL(KIND=JPRB) :: Z_CLFNET (0:
jplay)
110 REAL(KIND=JPRB) :: Z_CLHTR (0:
jplay)
111 REAL(KIND=JPRB) :: Z_FNET (0:
jplay)
112 REAL(KIND=JPRB) :: Z_HTR (0:
jplay)
113 REAL(KIND=JPRB) :: Z_TOTDFLUC(0:
jplay)
114 REAL(KIND=JPRB) :: Z_TOTDFLUX(0:
jplay)
115 REAL(KIND=JPRB) :: Z_TOTUFLUC(0:
jplay)
116 REAL(KIND=JPRB) :: Z_TOTUFLUX(0:
jplay)
118 INTEGER(KIND=JPIM) :: i, icld, iplon, I_K
119 INTEGER(KIND=JPIM) :: ISTART
120 INTEGER(KIND=JPIM) :: IEND
122 REAL(KIND=JPRB) :: Z_FLUXFAC, Z_HEATFAC, Z_PI, ZEPSEC, ZTCLEAR
128 REAL(KIND=JPRB) :: Z_FAC00(
jplay)
129 REAL(KIND=JPRB) :: Z_FAC01(
jplay)
130 REAL(KIND=JPRB) :: Z_FAC10(
jplay)
131 REAL(KIND=JPRB) :: Z_FAC11(
jplay)
132 REAL(KIND=JPRB) :: Z_FORFAC(
jplay)
135 INTEGER(KIND=JPIM) :: JP(
jplay)
136 INTEGER(KIND=JPIM) :: JT(
jplay)
137 INTEGER(KIND=JPIM) :: JT1(
jplay)
140 REAL(KIND=JPRB) :: Z_ONEMINUS
143 REAL(KIND=JPRB) :: Z_COLH2O(
jplay)
144 REAL(KIND=JPRB) :: Z_COLCO2(
jplay)
145 REAL(KIND=JPRB) :: Z_COLO3 (
jplay)
146 REAL(KIND=JPRB) :: Z_COLN2O(
jplay)
147 REAL(KIND=JPRB) :: Z_COLCH4(
jplay)
148 REAL(KIND=JPRB) :: Z_COLO2 (
jplay)
149 REAL(KIND=JPRB) :: Z_CO2MULT(
jplay)
150 INTEGER(KIND=JPIM) :: I_LAYTROP
151 INTEGER(KIND=JPIM) :: I_LAYSWTCH
152 INTEGER(KIND=JPIM) :: I_LAYLOW
155 REAL(KIND=JPRB) :: Z_PAVEL(
jplay)
156 REAL(KIND=JPRB) :: Z_TAVEL(
jplay)
157 REAL(KIND=JPRB) :: Z_PZ(0:
jplay)
158 REAL(KIND=JPRB) :: Z_TZ(0:
jplay)
159 REAL(KIND=JPRB) :: Z_TBOUND
160 INTEGER(KIND=JPIM) :: I_NLAYERS
163 REAL(KIND=JPRB) :: Z_SELFFAC(
jplay)
164 REAL(KIND=JPRB) :: Z_SELFFRAC(
jplay)
165 INTEGER(KIND=JPIM) :: INDSELF(
jplay)
171 REAL(KIND=JPRB) :: Z_SEMISS(
jpband)
172 REAL(KIND=JPRB) :: Z_SEMISLW
173 INTEGER(KIND=JPIM) :: IREFLECT
174 REAL(KIND=JPRB) :: ZHOOK_HANDLE
176 #include "rrtm_ecrt_140gp.intfb.h"
177 #include "rrtm_gasabs1a_140gp.intfb.h"
178 #include "rrtm_rtrn1a_140gp.intfb.h"
179 #include "rrtm_setcoef_140gp.intfb.h"
187 IF (
lhook)
CALL dr_hook(
'RRTM_RRTM_140GP',0,zhook_handle)
189 z_oneminus = 1.0_jprb - zepsec
190 z_pi = 2.0_jprb*asin(1.0_jprb)
191 z_fluxfac = z_pi * 2.d4
192 z_heatfac = 8.4391_jprb
196 DO iplon = kidia,kfdia
205 & ( iplon, klon , klev, icld,&
206 & paer , paph , pap,&
209 & pq , pcco2, pozn, pcldf, ptaucld, ztclear,&
210 & z_cldfrac,z_taucld,&
212 & z_coldry,z_wkl,z_wx,&
213 & z_tauaerl,z_pavel,z_tavel,z_pz,z_tz,z_tbound,i_nlayers,z_semiss,ireflect)
215 ptclear(iplon)=ztclear
226 & z_fac00,z_fac01,z_fac10,z_fac11,z_forfac,jp,jt,jt1,&
227 & z_colh2o,z_colco2,z_colo3,z_coln2o,z_colch4,z_colo2,z_co2mult,&
228 & i_laytrop,i_layswtch,i_laylow,z_pavel,z_tavel,z_selffac,z_selffrac,indself)
231 & z_tauaerl,z_fac00,z_fac01,z_fac10,z_fac11,z_forfac,jp,jt,jt1,z_oneminus,&
232 & z_colh2o,z_colco2,z_colo3,z_coln2o,z_colch4,z_colo2,z_co2mult,&
233 & i_laytrop,i_layswtch,i_laylow,z_selffac,z_selffrac,indself,z_pfrac)
245 IF (icld == 1.AND.z_cldfrac(i_k) > zepsec)
THEN
257 & z_od,z_tausf1,z_clfnet,z_clhtr,z_fnet,z_htr,z_totdfluc,z_totdflux,z_totufluc,z_totuflux,&
258 & z_tavel,z_pz,z_tz,z_tbound,z_pfrac,z_semiss,z_semislw,ireflect)
265 pemit(iplon) = z_semislw
267 pfluc(iplon,1,i+1) = z_totufluc(i)*z_fluxfac
268 pfluc(iplon,2,i+1) = -z_totdfluc(i)*z_fluxfac
269 pflux(iplon,1,i+1) = z_totuflux(i)*z_fluxfac
270 pflux(iplon,2,i+1) = -z_totdflux(i)*z_fluxfac
274 IF (
lhook)
CALL dr_hook(
'RRTM_RRTM_140GP',1,zhook_handle)
subroutine rrtm_setcoef_140gp(KLEV, P_COLDRY, P_WKL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, P_FORFAC, K_JP, K_JT, K_JT1, P_COLH2O, P_COLCO2, P_COLO3, P_COLN2O, P_COLCH4, P_COLO2, P_CO2MULT, K_LAYTROP, K_LAYSWTCH, K_LAYLOW, PAVEL, P_TAVEL, P_SELFFAC, P_SELFFRAC, K_INDSELF)
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
integer(kind=jpim), parameter jpinpx
integer(kind=jpim), parameter jpgpt
integer(kind=jpim), parameter jpband
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)
INTERFACE SUBROUTINE RRTM_ECRT_140GP ptclear
subroutine rrtm_rrtm_140gp(KIDIA, KFDIA, KLON, KLEV, PAER, PAPH, PAP, PTS, PTH, PT, P_ZEMIS, P_ZEMIW, PQ, PCCO2, POZN, PCLDF, PTAUCLD, PTAU_LW, PEMIT, PFLUX, PFLUC, PTCLEAR)
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcldf
subroutine rrtm_gasabs1a_140gp(KLEV, P_ATR1, P_OD, P_TF1, P_COLDRY, P_WX, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, P_FORFAC, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLCO2, P_COLO3, P_COLN2O, P_COLCH4, P_COLO2, P_CO2MULT, K_LAYTROP, K_LAYSWTCH, K_LAYLOW, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
integer(kind=jpim), parameter jplay
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
INTERFACE SUBROUTINE RRTM_ECRT_140GP ptaucld
INTERFACE SUBROUTINE RRTM_ECRT_140GP pap
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pts
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pq
subroutine rrtm_rtrn1a_140gp(KLEV, K_ISTART, K_IEND, K_ICLDLYR, P_CLDFRAC, P_TAUCLD, P_ABSS1, P_OD, P_TAUSF1, P_CLFNET, P_CLHTR, P_FNET, P_HTR, P_TOTDFLUC, P_TOTDFLUX, P_TOTUFLUC, P_TOTUFLUX, P_TAVEL, PZ, P_TZ, P_TBOUND, PFRAC, P_SEMISS, P_SEMISLW, K_IREFLECT)
integer(kind=jpim), parameter jpxsec