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