LMDZ
rrtm_cmbgb9.F90
Go to the documentation of this file.
1 !***************************************************************************
2 SUBROUTINE rrtm_cmbgb9
3 !***************************************************************************
4 
5 ! BAND 9: 1180-1390 cm-1 (low - H2O,CH4; high - CH4)
6 !***************************************************************************
7 
8 ! Parameters
9 #include "tsmbkind.h"
10 
11 USE parrrtm , ONLY : jpband ,jpg ,jpxsec ,jpgpt
12 
13 USE yoerrto9 , ONLY : kao ,kbo ,selfrefo ,fracrefao ,&
15 USE yoerrta9 , ONLY : ka ,kb ,selfref ,fracrefa ,&
16  & fracrefb,absn2o ,&
17  & absa ,absb ,ng9
18 USE yoerrtrwt, ONLY : frefa ,frefb ,frefadf ,frefbdf ,rwgt
19 USE yoerrtftr, ONLY : ngc ,ngs ,ngn ,ngb ,ngm , wt
20 
21 IMPLICIT NONE
22 
23 ! LOCAL INTEGER SCALARS
24 integer_m :: igc, ipr, iprsm, jn, jnd, jndc, jp, jt
25 integer_m :: meq, neq ! To force equivalence, HG, 13-DEC-2003
26 
27 ! LOCAL REAL SCALARS
28 real_b :: sumf, sumk
29 
30 
31 DO jn = 1,11
32  DO jt = 1,5
33  DO jp = 1,13
34  iprsm = 0
35  DO igc = 1,ngc(9)
36  sumk = _zero_
37  DO ipr = 1, ngn(ngs(8)+igc)
38  iprsm = iprsm + 1
39 
40  sumk = sumk + kao(jn,jt,jp,iprsm)*rwgt(iprsm+128)
41  ENDDO
42 
43  ka(jn,jt,jp,igc) = sumk
44  ENDDO
45  ENDDO
46  ENDDO
47 ENDDO
48 
49 DO jt = 1,5
50  DO jp = 13,59
51  iprsm = 0
52  DO igc = 1,ngc(9)
53  sumk = _zero_
54  DO ipr = 1, ngn(ngs(8)+igc)
55  iprsm = iprsm + 1
56 
57  sumk = sumk + kbo(jt,jp,iprsm)*rwgt(iprsm+128)
58  ENDDO
59 
60  kb(jt,jp,igc) = sumk
61  ENDDO
62  ENDDO
63 ENDDO
64 
65 DO jt = 1,10
66  iprsm = 0
67  DO igc = 1,ngc(9)
68  sumk = _zero_
69  DO ipr = 1, ngn(ngs(8)+igc)
70  iprsm = iprsm + 1
71 
72  sumk = sumk + selfrefo(jt,iprsm)*rwgt(iprsm+128)
73  ENDDO
74 
75  selfref(jt,igc) = sumk
76  ENDDO
77 ENDDO
78 
79 DO jn = 1,3
80  iprsm = 0
81  DO igc = 1,ngc(9)
82  sumk = _zero_
83  DO ipr = 1, ngn(ngs(8)+igc)
84  iprsm = iprsm + 1
85  jnd = (jn-1)*16
86 
87  sumk = sumk + absn2oo(jnd+iprsm)*rwgt(iprsm+128)
88  ENDDO
89  jndc = (jn-1)*ngc(9)
90 
91  absn2o(jndc+igc) = sumk
92  ENDDO
93 ENDDO
94 
95 DO jp = 1,9
96  iprsm = 0
97  DO igc = 1,ngc(9)
98  sumf = _zero_
99  DO ipr = 1, ngn(ngs(8)+igc)
100  iprsm = iprsm + 1
101 
102  sumf = sumf + fracrefao(iprsm,jp)
103  ENDDO
104 
105  fracrefa(igc,jp) = sumf
106  ENDDO
107 ENDDO
108 
109 iprsm = 0
110 DO igc = 1,ngc(9)
111  sumf = _zero_
112  DO ipr = 1, ngn(ngs(8)+igc)
113  iprsm = iprsm + 1
114 
115  sumf = sumf + fracrefbo(iprsm)
116  ENDDO
117 
118  fracrefb(igc) = sumf
119 ENDDO
120 
121 DO jp = 1,9
122  DO igc = 1,ngc(9)
123 
124  frefa(ngs(8)+igc,jp) = fracrefa(igc,jp)
125  ENDDO
126 ENDDO
127 DO jp = 1,8
128  DO igc = 1,ngc(9)
129 
130 
131  frefadf(ngs(8)+igc,jp) = fracrefa(igc,jp+1) -fracrefa(igc,jp)
132  ENDDO
133 ENDDO
134 DO igc = 1,ngc(9)
135 
136  frefb(ngs(8)+igc,1) = fracrefb(igc)
137 ENDDO
138 
139 
140 ! +--Force the equivalence: BEGIN (HG, 13-DEC-2003)
141 ! + ============================
142 
143 ! +--ABSA
144 ! + ^^^^
145  jn = 0
146  jt = 1
147  jp = 1
148  igc = 1
149  DO neq=1,ng9
150  DO meq=1,715
151  jn = jn + 1
152  IF ( jn == 11 + 1) THEN
153  jn = 1
154  jt = jt + 1
155  IF ( jt == 5 + 1 ) THEN
156  jt = 1
157  jp = jp + 1
158  IF ( jp == 13 + 1 ) THEN
159  jp = 1
160  igc= igc + 1
161  END IF
162  END IF
163  END IF
164  absa(meq,neq) = ka(jn,jt,jp,igc)
165  ENDDO
166  ENDDO
167 
168 ! +--ABSB
169 ! + ^^^^
170  jt = 0
171  jp = 13
172  igc = 1
173  DO neq=1,ng9
174  DO meq=1,235
175  jt = jt + 1
176  IF ( jt == 5 + 1 ) THEN
177  jt = 1
178  jp = jp + 1
179  IF ( jp == 59 + 1 ) THEN
180  jp = 13
181  igc= igc + 1
182  END IF
183  END IF
184  absb(meq,neq) = kb(jt,jp,igc)
185  ENDDO
186  ENDDO
187 
188 ! +--Force the equivalence: END (HG, 13-DEC-2003)
189 ! + ==========================
190 
191 
192 RETURN
193 END SUBROUTINE rrtm_cmbgb9
integer(kind=jpim), dimension(jpgpt) ngb
Definition: yoerrtftr.F90:18
real(kind=jprb), dimension(jpgpt, 13) frefa
Definition: yoerrtrwt.F90:15
integer(kind=jpim), dimension(jpg *jpband) ngm
Definition: yoerrtftr.F90:20
real(kind=jprb), dimension(jpg) wt
Definition: yoerrtftr.F90:21
real(kind=jprb), dimension(no9) fracrefbo
Definition: yoerrto9.F90:18
real(kind=jprb), dimension(10, ng9) selfref
Definition: yoerrta9.F90:28
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
real(kind=jprb), dimension(jpg *jpband) rwgt
Definition: yoerrtrwt.F90:19
real(kind=jprb), dimension(jpgpt, 6) frefbdf
Definition: yoerrtrwt.F90:18
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
integer(kind=jpim), parameter ng9
Definition: yoerrta9.F90:14
real(kind=jprb), dimension(jpgpt, 6) frefb
Definition: yoerrtrwt.F90:16
real(kind=jprb), dimension(11, 5, 13, no9) kao
Definition: yoerrto9.F90:22
real(kind=jprb), dimension(48) absn2oo
Definition: yoerrto9.F90:20
real(kind=jprb), dimension(ng9) fracrefb
Definition: yoerrta9.F90:18
real(kind=jprb), dimension(ng9, 9) fracrefa
Definition: yoerrta9.F90:16
integer(kind=jpim), dimension(jpgpt) ngn
Definition: yoerrtftr.F90:17
real(kind=jprb), dimension(5, 13:59, ng9) kb
Definition: yoerrta9.F90:27
real(kind=jprb), dimension(36) absn2o
Definition: yoerrta9.F90:24
real(kind=jprb), dimension(10, no9) selfrefo
Definition: yoerrto9.F90:24
real(kind=jprb), dimension(no9, 9) fracrefao
Definition: yoerrto9.F90:16
real(kind=jprb), dimension(jpgpt, 13) frefadf
Definition: yoerrtrwt.F90:17
integer(kind=jpim), parameter jpg
Definition: parrrtm.F90:17
real(kind=jprb), dimension(11, 5, 13, ng9) ka
Definition: yoerrta9.F90:26
integer(kind=jpim), dimension(jpband) ngc
Definition: yoerrtftr.F90:15
subroutine rrtm_cmbgb9
Definition: rrtm_cmbgb9.F90:3
integer(kind=jpim), dimension(jpband) ngs
Definition: yoerrtftr.F90:16
real(kind=jprb), dimension(235, ng9) absb
Definition: yoerrta9.F90:27
real(kind=jprb), dimension(715, ng9) absa
Definition: yoerrta9.F90:26
real(kind=jprb), dimension(5, 13:59, no9) kbo
Definition: yoerrto9.F90:23
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19