LMDZ
rrtm_cmbgb7.F90
Go to the documentation of this file.
1 !***************************************************************************
2 SUBROUTINE rrtm_cmbgb7
3 !***************************************************************************
4 
5 ! BAND 7: 980-1080 cm-1 (low - H2O,O3; high - O3)
6 !***************************************************************************
7 
8 ! Parameters
9 #include "tsmbkind.h"
10 
11 USE parrrtm , ONLY : jpband ,jpg ,jpxsec ,jpgpt
12 
13 USE yoerrto7 , ONLY : kao ,kbo ,selfrefo ,fracrefao ,&
15 USE yoerrta7 , ONLY : ka ,kb ,selfref ,fracrefa ,&
16  & fracrefb,absco2 ,&
17  & absa ,absb ,ng7
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
29 
30 
31 DO jn = 1,9
32  DO jt = 1,5
33  DO jp = 1,13
34  iprsm = 0
35  DO igc = 1,ngc(7)
36  sumk = _zero_
37  DO ipr = 1, ngn(ngs(6)+igc)
38  iprsm = iprsm + 1
39 
40  sumk = sumk + kao(jn,jt,jp,iprsm)*rwgt(iprsm+96)
41  ENDDO
42 
43  ka(jn,jt,jp,igc) = sumk
44  ENDDO
45  ENDDO
46  ENDDO
47 ENDDO
48 DO jt = 1,5
49  DO jp = 13,59
50  iprsm = 0
51  DO igc = 1,ngc(7)
52  sumk = _zero_
53  DO ipr = 1, ngn(ngs(6)+igc)
54  iprsm = iprsm + 1
55 
56  sumk = sumk + kbo(jt,jp,iprsm)*rwgt(iprsm+96)
57  ENDDO
58 
59  kb(jt,jp,igc) = sumk
60  ENDDO
61  ENDDO
62 ENDDO
63 
64 DO jt = 1,10
65  iprsm = 0
66  DO igc = 1,ngc(7)
67  sumk = _zero_
68  DO ipr = 1, ngn(ngs(6)+igc)
69  iprsm = iprsm + 1
70 
71  sumk = sumk + selfrefo(jt,iprsm)*rwgt(iprsm+96)
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(7)
81  sumf = _zero_
82  DO ipr = 1, ngn(ngs(6)+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 iprsm = 0
93 DO igc = 1,ngc(7)
94  sumf = _zero_
95  sumk = _zero_
96  DO ipr = 1, ngn(ngs(6)+igc)
97  iprsm = iprsm + 1
98 
99 
100  sumf = sumf + fracrefbo(iprsm)
101  sumk = sumk + absco2o(iprsm)*rwgt(iprsm+96)
102  ENDDO
103 
104 
105  fracrefb(igc) = sumf
106  absco2(igc) = sumk
107 ENDDO
108 
109 DO jp = 1,9
110  DO igc = 1,ngc(7)
111 
112  frefa(ngs(6)+igc,jp) = fracrefa(igc,jp)
113  ENDDO
114 ENDDO
115 DO jp = 1,8
116  DO igc = 1,ngc(7)
117 
118 
119  frefadf(ngs(6)+igc,jp) = fracrefa(igc,jp+1) -fracrefa(igc,jp)
120  ENDDO
121 ENDDO
122 DO igc = 1,ngc(7)
123 
124  frefb(ngs(6)+igc,1) = fracrefb(igc)
125 ENDDO
126 
127 ! +--Force the equivalence: BEGIN (HG, 13-DEC-2003)
128 ! + ============================
129 
130 ! +--ABSA
131 ! + ^^^^
132  jn = 0
133  jt = 1
134  jp = 1
135  igc = 1
136  DO neq=1,ng7
137  DO meq=1,585
138  jn = jn + 1
139  IF ( jn == 9 + 1) THEN
140  jn = 1
141  jt = jt + 1
142  IF ( jt == 5 + 1 ) THEN
143  jt = 1
144  jp = jp + 1
145  IF ( jp == 13 + 1 ) THEN
146  jp = 1
147  igc= igc + 1
148  END IF
149  END IF
150  END IF
151  absa(meq,neq) = ka(jn,jt,jp,igc)
152  ENDDO
153  ENDDO
154 
155 ! +--ABSB
156 ! + ^^^^
157  jn = 0
158  jp = 13
159  igc = 1
160  DO neq=1,ng7
161  DO meq=1,235
162  jn = jn + 1
163  IF ( jn == 5 + 1) THEN
164  jn = 1
165  jp = jp + 1
166  IF ( jp == 59 + 1 ) THEN
167  jp = 13
168  igc= igc + 1
169  END IF
170  END IF
171  absb(meq,neq) = kb(jn,jp,igc)
172  ENDDO
173  ENDDO
174 
175 ! +--Force the equivalence: END (HG, 13-DEC-2003)
176 ! + ==========================
177 
178 
179 RETURN
180 END SUBROUTINE rrtm_cmbgb7
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(5, 13:59, no7) kbo
Definition: yoerrto7.F90:21
real(kind=jprb), dimension(5, 13:59, ng7) kb
Definition: yoerrta7.F90:21
subroutine rrtm_cmbgb7
Definition: rrtm_cmbgb7.F90:3
real(kind=jprb), dimension(10, no7) selfrefo
Definition: yoerrto7.F90:22
real(kind=jprb), dimension(jpg) wt
Definition: yoerrtftr.F90:21
real(kind=jprb), dimension(ng7, 9) fracrefa
Definition: yoerrta7.F90:16
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
real(kind=jprb), dimension(jpgpt, 6) frefb
Definition: yoerrtrwt.F90:16
real(kind=jprb), dimension(no7) absco2o
Definition: yoerrto7.F90:19
real(kind=jprb), dimension(ng7) fracrefb
Definition: yoerrta7.F90:18
real(kind=jprb), dimension(no7, 9) fracrefao
Definition: yoerrto7.F90:16
real(kind=jprb), dimension(ng7) absco2
Definition: yoerrta7.F90:19
integer(kind=jpim), dimension(jpgpt) ngn
Definition: yoerrtftr.F90:17
real(kind=jprb), dimension(235, ng7) absb
Definition: yoerrta7.F90:21
real(kind=jprb), dimension(9, 5, 13, no7) kao
Definition: yoerrto7.F90:20
real(kind=jprb), dimension(jpgpt, 13) frefadf
Definition: yoerrtrwt.F90:17
integer(kind=jpim), parameter ng7
Definition: yoerrta7.F90:14
integer(kind=jpim), parameter jpg
Definition: parrrtm.F90:17
real(kind=jprb), dimension(10, ng7) selfref
Definition: yoerrta7.F90:22
integer(kind=jpim), dimension(jpband) ngc
Definition: yoerrtftr.F90:15
integer(kind=jpim), dimension(jpband) ngs
Definition: yoerrtftr.F90:16
real(kind=jprb), dimension(9, 5, 13, ng7) ka
Definition: yoerrta7.F90:20
real(kind=jprb), dimension(no7) fracrefbo
Definition: yoerrto7.F90:18
real(kind=jprb), dimension(585, ng7) absa
Definition: yoerrta7.F90:20
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19