LMDZ
srtm_cmbgb16.F90
Go to the documentation of this file.
1 SUBROUTINE srtm_cmbgb16
2 
3 !
4 ! Original version: Michael J. Iacono; July, 1998
5 ! Revision for RRTM_SW: Michael J. Iacono; November, 2002
6 ! Revision for RRTMG_SW: Michael J. Iacono; December, 2003
7 !
8 ! The subroutines CMBGB16->CMBGB29 input the absorption coefficient
9 ! data for each band, which are defined for 16 g-points and 14 spectral
10 ! bands. The data are combined with appropriate weighting following the
11 ! g-point mapping arrays specified in RRTMG_SW_INIT. Solar source
12 ! function data in array SFLUXREF are combined without weighting. All
13 ! g-point reduced data are put into new arrays for use in RRTMG_SW.
14 !
15 ! BAND 16: 2600-3250 cm-1 (low key- H2O,CH4; high key - CH4)
16 !
17 !-----------------------------------------------------------------------
18 
19 USE parkind1 ,ONLY : jpim , jprb
20 USE yomhook ,ONLY : lhook, dr_hook
21 
22 USE yoesrtwn , ONLY : ngc, ngn, rwgt
23 USE yoesrta16, ONLY : ka, kb, selfref, forref, sfluxref, &
25 
26 IMPLICIT NONE
27 
28 ! Local variables
29 INTEGER(KIND=JPIM) :: JN, JT, JP, IGC, IPR, IPRSM
30 REAL(KIND=JPRB) :: ZSUMK, ZSUMF
31 
32 REAL(KIND=JPRB) :: ZHOOK_HANDLE
33 ! ------------------------------------------------------------------
34 IF (lhook) CALL dr_hook('SRTM_CMBGB16',0,zhook_handle)
35 
36 DO jn = 1,9
37  DO jt = 1,5
38  DO jp = 1,13
39  iprsm = 0
40  DO igc = 1,ngc(1)
41  zsumk = 0.
42  DO ipr = 1, ngn(igc)
43  iprsm = iprsm + 1
44  zsumk = zsumk + ka(jn,jt,jp,iprsm)*rwgt(iprsm)
45  ENDDO
46  kac(jn,jt,jp,igc) = zsumk
47  ENDDO
48  ENDDO
49  ENDDO
50 ENDDO
51 
52 DO jt = 1,5
53  DO jp = 13,59
54  iprsm = 0
55  DO igc = 1,ngc(1)
56  zsumk = 0.
57  DO ipr = 1, ngn(igc)
58  iprsm = iprsm + 1
59  zsumk = zsumk + kb(jt,jp,iprsm)*rwgt(iprsm)
60  ENDDO
61  kbc(jt,jp,igc) = zsumk
62  ENDDO
63  ENDDO
64 ENDDO
65 
66 DO jt = 1,10
67  iprsm = 0
68  DO igc = 1,ngc(1)
69  zsumk = 0.
70  DO ipr = 1, ngn(igc)
71  iprsm = iprsm + 1
72  zsumk = zsumk + selfref(jt,iprsm)*rwgt(iprsm)
73  ENDDO
74  selfrefc(jt,igc) = zsumk
75  ENDDO
76 ENDDO
77 
78 DO jt = 1,3
79  iprsm = 0
80  DO igc = 1,ngc(1)
81  zsumk = 0.
82  DO ipr = 1, ngn(igc)
83  iprsm = iprsm + 1
84  zsumk = zsumk + forref(jt,iprsm)*rwgt(iprsm)
85  ENDDO
86  forrefc(jt,igc) = zsumk
87  ENDDO
88 ENDDO
89 
90 iprsm = 0
91 DO igc = 1,ngc(1)
92  zsumf = 0.
93  DO ipr = 1, ngn(igc)
94  iprsm = iprsm + 1
95  zsumf = zsumf + sfluxref(iprsm)
96  ENDDO
97  sfluxrefc(igc) = zsumf
98 ENDDO
99 
100 ! -----------------------------------------------------------------
101 IF (lhook) CALL dr_hook('SRTM_CMBGB16',1,zhook_handle)
102 END SUBROUTINE srtm_cmbgb16
103 
integer(kind=jpim), dimension(112) ngn
Definition: yoesrtwn.F90:27
real(kind=jprb), dimension(9, 5, 13, ng16) kac
Definition: yoesrta16.F90:23
real(kind=jprb), dimension(224) rwgt
Definition: yoesrtwn.F90:32
real(kind=jprb), dimension(9, 5, 13, jpg) ka
Definition: yoesrta16.F90:16
real(kind=jprb), dimension(5, 13:59, ng16) kbc
Definition: yoesrta16.F90:24
real(kind=jprb), dimension(3, ng16) forrefc
Definition: yoesrta16.F90:25
integer, parameter jprb
Definition: parkind1.F90:31
real(kind=jprb), dimension(ng16) sfluxrefc
Definition: yoesrta16.F90:26
real(kind=jprb), dimension(3, jpg) forref
Definition: yoesrta16.F90:18
real(kind=jprb), dimension(5, 13:59, jpg) kb
Definition: yoesrta16.F90:17
subroutine srtm_cmbgb16
Definition: srtm_cmbgb16.F90:2
logical lhook
Definition: yomhook.F90:12
real(kind=jprb), dimension(jpg) sfluxref
Definition: yoesrta16.F90:19
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
real(kind=jprb), dimension(10, jpg) selfref
Definition: yoesrta16.F90:18
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim), dimension(14) ngc
Definition: yoesrtwn.F90:25
real(kind=jprb), dimension(10, ng16) selfrefc
Definition: yoesrta16.F90:25