LMDZ
rrtm_cmbgb1.F90
Go to the documentation of this file.
1 !***************************************************************************
2 SUBROUTINE rrtm_cmbgb1
3 !***************************************************************************
4 
5 ! The subroutines CMBGB1->CMBGB16 input the absorption coefficient
6 ! data for each band, which are defined for 16 g-points and 16 spectral
7 ! bands. The data are combined with appropriate weighting following the
8 ! g-point mapping arrays specified in RRTMINIT. Plank fraction data
9 ! in arrays FRACREFA and FRACREFB are combined without weighting. All
10 ! g-point reduced data are put into new arrays for use in RRTM.
11 
12 ! BAND 1: 10-250 cm-1 (low - H2O; high - H2O)
13 !***************************************************************************
14 ! INSTRUCTION EQUIVALENCE SUPPRESSED (H. Gallée, LGGE, 15 décembre 2003)
15 !***************************************************************************
16 
17 ! Parameters
18 #include "tsmbkind.h"
19 
20 USE parrrtm , ONLY : jpband ,jpg ,jpxsec ,jpgpt
21 
23 USE yoerrta1 , ONLY : ka , kb , selfref , forref , fracrefa ,fracrefb &
24  & , absa, absb , ng1
25 USE yoerrtrwt, ONLY : frefa ,frefb ,frefadf ,frefbdf ,rwgt
26 USE yoerrtftr, ONLY : ngc ,ngs ,ngn ,ngb ,ngm , wt
27 
28 IMPLICIT NONE
29 
30 ! LOCAL INTEGER SCALARS
31 integer_m :: igc, ipr, iprsm, jp, jt
32 integer_m :: meq, neq ! To force equivalence, HG, 13-DEC-2003
33 
34 ! LOCAL REAL SCALARS
35 real_b :: sumf1, sumf2, sumk
36 
37 
38 DO jt = 1,5
39  DO jp = 1,13
40  iprsm = 0
41  DO igc = 1,ngc(1)
42  sumk = _zero_
43  DO ipr = 1, ngn(igc)
44  iprsm = iprsm + 1
45 
46  sumk = sumk + kao(jt,jp,iprsm)*rwgt(iprsm)
47  ENDDO
48 
49  ka(jt,jp,igc) = sumk
50  ENDDO
51  ENDDO
52  DO jp = 13,59
53  iprsm = 0
54  DO igc = 1,ngc(1)
55  sumk = _zero_
56  DO ipr = 1, ngn(igc)
57  iprsm = iprsm + 1
58 
59  sumk = sumk + kbo(jt,jp,iprsm)*rwgt(iprsm)
60  ENDDO
61 
62  kb(jt,jp,igc) = sumk
63  ENDDO
64  ENDDO
65 ENDDO
66 
67 DO jt = 1,10
68  iprsm = 0
69  DO igc = 1,ngc(1)
70  sumk = _zero_
71  DO ipr = 1, ngn(igc)
72  iprsm = iprsm + 1
73 
74  sumk = sumk + selfrefo(jt,iprsm)*rwgt(iprsm)
75  ENDDO
76 
77  selfref(jt,igc) = sumk
78  ENDDO
79 ENDDO
80 
81 iprsm = 0
82 DO igc = 1,ngc(1)
83  sumk = _zero_
84  sumf1 = _zero_
85  sumf2 = _zero_
86  DO ipr = 1, ngn(igc)
87  iprsm = iprsm + 1
88 
89 
90 
91  sumk = sumk + forrefo(iprsm)*rwgt(iprsm)
92  sumf1= sumf1+ fracrefao(iprsm)
93  sumf2= sumf2+ fracrefbo(iprsm)
94  ENDDO
95 
96 
97 
98  forref(igc) = sumk
99  fracrefa(igc) = sumf1
100  fracrefb(igc) = sumf2
101 ENDDO
102 
103 DO igc = 1,ngc(1)
104 
105 
106  frefa(igc,1) = fracrefa(igc)
107  frefb(igc,1) = fracrefb(igc)
108 ENDDO
109 
110 
111 ! +--Force the equivalence: BEGIN (HG, 13-DEC-2003)
112 ! + ============================
113 
114 ! +--ABSA
115 ! + ^^^^
116  jt = 0
117  jp = 1
118  igc = 1
119  DO neq=1,ng1
120  DO meq=1,65
121  jt = jt + 1
122  IF ( jt == 5 + 1 ) THEN
123  jt = 1
124  jp = jp + 1
125  IF ( jp == 13 + 1 ) THEN
126  jp = 1
127  igc= igc + 1
128  END IF
129  END IF
130  absa(meq,neq) = ka(jt,jp,igc)
131  ENDDO
132  ENDDO
133 
134 ! +--ABSB
135 ! + ^^^^
136  jt = 0
137  jp = 13
138  igc = 1
139  DO neq=1,ng1
140  DO meq=1,235
141  jt = jt + 1
142  IF ( jt == 5 + 1 ) THEN
143  jt = 1
144  jp = jp + 1
145  IF ( jp == 59 + 1 ) THEN
146  jp = 13
147  igc= igc + 1
148  END IF
149  END IF
150  absb(meq,neq) = kb(jt,jp,igc)
151  ENDDO
152  ENDDO
153 
154 ! +--Force the equivalence: END (HG, 13-DEC-2003)
155 ! + ==========================
156 
157 
158 RETURN
159 END SUBROUTINE rrtm_cmbgb1
real(kind=jprb), dimension(10, no1) selfrefo
Definition: yoerrto1.F90:19
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(no1) fracrefao
Definition: yoerrto1.F90:16
integer(kind=jpim), dimension(jpg *jpband) ngm
Definition: yoerrtftr.F90:20
real(kind=jprb), dimension(65, ng1) absa
Definition: yoerrta1.F90:17
real(kind=jprb), dimension(5, 13:59, no1) kbo
Definition: yoerrto1.F90:18
real(kind=jprb), dimension(5, 13, no1) kao
Definition: yoerrto1.F90:17
subroutine rrtm_cmbgb1
Definition: rrtm_cmbgb1.F90:3
real(kind=jprb), dimension(jpg) wt
Definition: yoerrtftr.F90:21
real(kind=jprb), dimension(235, ng1) absb
Definition: yoerrta1.F90:18
real(kind=jprb), dimension(ng1) fracrefb
Definition: yoerrta1.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(no1) fracrefbo
Definition: yoerrto1.F90:16
integer(kind=jpim), parameter ng1
Definition: yoerrta1.F90:14
real(kind=jprb), dimension(no1) forrefo
Definition: yoerrto1.F90:19
real(kind=jprb), dimension(ng1) fracrefa
Definition: yoerrta1.F90:16
integer(kind=jpim), dimension(jpgpt) ngn
Definition: yoerrtftr.F90:17
real(kind=jprb), dimension(ng1) forref
Definition: yoerrta1.F90:19
real(kind=jprb), dimension(jpgpt, 13) frefadf
Definition: yoerrtrwt.F90:17
integer(kind=jpim), parameter jpg
Definition: parrrtm.F90:17
real(kind=jprb), dimension(5, 13, ng1) ka
Definition: yoerrta1.F90:17
integer(kind=jpim), dimension(jpband) ngc
Definition: yoerrtftr.F90:15
real(kind=jprb), dimension(5, 13:59, ng1) kb
Definition: yoerrta1.F90:18
integer(kind=jpim), dimension(jpband) ngs
Definition: yoerrtftr.F90:16
real(kind=jprb), dimension(10, ng1) selfref
Definition: yoerrta1.F90:19
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19