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