LMDZ
rrtm_gasabs1a_140gp.F90
Go to the documentation of this file.
1 SUBROUTINE rrtm_gasabs1a_140gp (KLEV,ATR1,OD,TF1,COLDRY,WX,&
2  &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,oneminus,&
3  &colh2o,colco2,colo3,coln2o,colch4,colo2,co2mult,&
4  &laytrop,layswtch,laylow,selffac,selffrac,indself,pfrac)
5 
6 ! Reformatted for F90 by JJMorcrette, ECMWF, 980714
7 
8 #include "tsmbkind.h"
9 
10 USE parrrtm , ONLY : jplay ,jpband ,jpgpt ,jpxsec
11 USE yoerrtab , ONLY : trans ,bpade
12 
13 IMPLICIT NONE
14 
15 real_b :: atr1(jpgpt,jplay)
16 real_b :: od(jpgpt,jplay)
17 real_b :: tf1(jpgpt,jplay)
18 real_b :: coldry(jplay)
19 real_b :: wx(jpxsec,jplay) ! Amount of trace gases
20 
21 ! DUMMY INTEGER SCALARS
22 integer_m :: klev
23 
24 !- from AER
25 real_b :: tauaerl(jplay,jpband)
26 
27 !- from INTFAC
28 real_b :: fac00(jplay)
29 real_b :: fac01(jplay)
30 real_b :: fac10(jplay)
31 real_b :: fac11(jplay)
32 real_b :: forfac(jplay)
33 
34 !- from INTIND
35 integer_m :: jp(jplay)
36 integer_m :: jt(jplay)
37 integer_m :: jt1(jplay)
38 
39 !- from PRECISE
40 real_b :: oneminus
41 
42 !- from PROFDATA
43 real_b :: colh2o(jplay)
44 real_b :: colco2(jplay)
45 real_b :: colo3(jplay)
46 real_b :: coln2o(jplay)
47 real_b :: colch4(jplay)
48 real_b :: colo2(jplay)
49 real_b :: co2mult(jplay)
50 integer_m :: laytrop
51 integer_m :: layswtch
52 integer_m :: laylow
53 
54 !- from SELF
55 real_b :: selffac(jplay)
56 real_b :: selffrac(jplay)
57 integer_m :: indself(jplay)
58 
59 !- from SP
60 real_b :: pfrac(jpgpt,jplay)
61 
62 
63 real_b :: tau(jpgpt,jplay)
64 
65 ! LOCAL INTEGER SCALARS
66 integer_m :: ipr, itr, lay
67 
68 ! LOCAL REAL SCALARS
69 real_b :: odepth, secang, tf
70 
71 
72 !- SECANG is equal to the secant of the diffusivity angle.
73 secang = 1.66_jprb
74 
75 CALL rrtm_taumol1 (klev,tau,&
76  &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,&
77  &colh2o,laytrop,selffac,selffrac,indself,pfrac)
78 CALL rrtm_taumol2 (klev,tau,coldry,&
79  &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,&
80  &colh2o,laytrop,selffac,selffrac,indself,pfrac)
81 CALL rrtm_taumol3 (klev,tau,&
82  &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,oneminus,&
83  &colh2o,colco2,coln2o,laytrop,selffac,selffrac,indself,pfrac)
84 CALL rrtm_taumol4 (klev,tau,&
85  &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,oneminus,&
86  &colh2o,colco2,colo3,laytrop,selffac,selffrac,indself,pfrac)
87 CALL rrtm_taumol5 (klev,tau,wx,&
88  &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,oneminus,&
89  &colh2o,colco2,colo3,laytrop,selffac,selffrac,indself,pfrac)
90 CALL rrtm_taumol6 (klev,tau,wx,&
91  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
92  &colh2o,co2mult,laytrop,selffac,selffrac,indself,pfrac)
93 CALL rrtm_taumol7 (klev,tau,&
94  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,oneminus,&
95  &colh2o,colo3,co2mult,laytrop,selffac,selffrac,indself,pfrac)
96 CALL rrtm_taumol8 (klev,tau,wx,&
97  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
98  &colh2o,colo3,coln2o,co2mult,layswtch,selffac,selffrac,indself,pfrac)
99 CALL rrtm_taumol9 (klev,tau,&
100  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,oneminus,&
101  &colh2o,coln2o,colch4,laytrop,layswtch,laylow,selffac,selffrac,indself,pfrac)
102 CALL rrtm_taumol10 (klev,tau,&
103  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
104  &colh2o,laytrop,pfrac)
105 CALL rrtm_taumol11 (klev,tau,&
106  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
107  &colh2o,laytrop,selffac,selffrac,indself,pfrac)
108 CALL rrtm_taumol12 (klev,tau,&
109  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,oneminus,&
110  &colh2o,colco2,laytrop,selffac,selffrac,indself,pfrac)
111 CALL rrtm_taumol13 (klev,tau,&
112  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,oneminus,&
113  &colh2o,coln2o,laytrop,selffac,selffrac,indself,pfrac)
114 CALL rrtm_taumol14 (klev,tau,&
115  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
116  &colco2,laytrop,selffac,selffrac,indself,pfrac)
117 CALL rrtm_taumol15 (klev,tau,&
118  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,oneminus,&
119  &colh2o,colco2,coln2o,laytrop,selffac,selffrac,indself,pfrac)
120 CALL rrtm_taumol16 (klev,tau,&
121  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,oneminus,&
122  &colh2o,colch4,laytrop,selffac,selffrac,indself,pfrac)
123 
124 !- Loop over g-channels.
125 DO lay = 1, klev
126  DO ipr = 1, jpgpt
127  odepth = secang * tau(ipr,lay)
128  od(ipr,lay) = odepth
129 !-- revised code to get the pre-computed transmission
130  tf = odepth/(bpade+odepth)
131 ! IF (ODEPTH.LE.0.) PRINT*, 'ODEPTH = ',ODEPTH
132  IF (odepth <= _zero_) tf = _zero_
133  itr=int(5.e+03_jprb*tf+_half_)
134  atr1(ipr,lay) = _one_ - trans(itr)
135  tf1(ipr,lay) = tf
136  ENDDO
137 ENDDO
138 
139 ! -----------------------------------------------------------------
140 
141 RETURN
142 END SUBROUTINE rrtm_gasabs1a_140gp
subroutine rrtm_taumol5(KLEV, P_TAU, 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, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol5.F90:5
subroutine rrtm_taumol4(KLEV, P_TAU, 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, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol4.F90:5
subroutine rrtm_taumol6(KLEV, P_TAU, P_WX, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLH2O, P_CO2MULT, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol6.F90:5
subroutine rrtm_taumol13(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLN2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
subroutine rrtm_taumol11(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLH2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
subroutine rrtm_taumol14(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLCO2, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
integer, save klev
Definition: dimphy.F90:7
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
subroutine rrtm_taumol7(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLO3, P_CO2MULT, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol7.F90:5
subroutine rrtm_taumol9(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLN2O, P_COLCH4, K_LAYTROP, K_LAYSWTCH, K_LAYLOW, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol9.F90:5
subroutine rrtm_taumol3(KLEV, P_TAU, 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_COLN2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol3.F90:5
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
subroutine rrtm_taumol8(KLEV, P_TAU, P_WX, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLH2O, P_COLO3, P_COLN2O, P_CO2MULT, K_LAYSWTCH, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol8.F90:5
subroutine rrtm_taumol10(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLH2O, K_LAYTROP, PFRAC)
real(kind=jprb), dimension(0:5000) trans
Definition: yoerrtab.F90:13
subroutine rrtm_taumol12(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLCO2, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
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)
subroutine rrtm_taumol16(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLCH4, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
subroutine rrtm_taumol1(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, P_FORFAC, K_JP, K_JT, K_JT1, P_COLH2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
real(kind=jprb) bpade
Definition: yoerrtab.F90:14
subroutine rrtm_taumol2(KLEV, P_TAU, P_COLDRY, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, P_FORFAC, K_JP, K_JT, K_JT1, P_COLH2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol2.F90:5
subroutine rrtm_taumol15(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLCO2, P_COLN2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19