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