LMDZ
rrtm_init_140gp.F90
Go to the documentation of this file.
1 !***************************************************************************
2 SUBROUTINE rrtm_init_140gp
3 !***************************************************************************
4 ! Reformatted for F90 by JJMorcrette, ECMWF, 980714
5 
6 ! Parameters
7 USE parkind1 ,ONLY : jpim ,jprb
8 USE yomhook ,ONLY : lhook, dr_hook
9 
10 USE parrrtm , ONLY : jpband ,jpg ,jpgpt
11 USE yoerrtwn , ONLY : ng
12 USE yoerrtftr, ONLY : ngc ,ngn ,ngm , wt
13 ! Output
14 USE yoerrtbg2, ONLY : corr1 ,corr2
15 USE yoerrtrwt, ONLY : frefa ,frefb ,frefadf ,frefbdf ,rwgt
16 
17 
18 IMPLICIT NONE
19 REAL(KIND=JPRB) :: Z_WTSM(jpg)
20 
21 INTEGER(KIND=JPIM) :: I, IBND, IG, IGC, IGCSM, IND, IPR, IPRSM, IPT
22 
23 REAL(KIND=JPRB) :: Z_FP, Z_RTFP, Z_WTSUM
24 REAL(KIND=JPRB) :: ZHOOK_HANDLE
25 
26 #include "rrtm_kgb1.intfb.h"
27 #include "rrtm_kgb10.intfb.h"
28 #include "rrtm_kgb11.intfb.h"
29 #include "rrtm_kgb12.intfb.h"
30 #include "rrtm_kgb13.intfb.h"
31 #include "rrtm_kgb14.intfb.h"
32 #include "rrtm_kgb15.intfb.h"
33 #include "rrtm_kgb16.intfb.h"
34 #include "rrtm_kgb2.intfb.h"
35 #include "rrtm_kgb3.intfb.h"
36 #include "rrtm_kgb4.intfb.h"
37 #include "rrtm_kgb5.intfb.h"
38 #include "rrtm_kgb6.intfb.h"
39 #include "rrtm_kgb7.intfb.h"
40 #include "rrtm_kgb8.intfb.h"
41 #include "rrtm_kgb9.intfb.h"
42 
43 #include "rrtm_cmbgb1.intfb.h"
44 #include "rrtm_cmbgb10.intfb.h"
45 #include "rrtm_cmbgb11.intfb.h"
46 #include "rrtm_cmbgb12.intfb.h"
47 #include "rrtm_cmbgb13.intfb.h"
48 #include "rrtm_cmbgb14.intfb.h"
49 #include "rrtm_cmbgb15.intfb.h"
50 #include "rrtm_cmbgb16.intfb.h"
51 #include "rrtm_cmbgb2.intfb.h"
52 #include "rrtm_cmbgb3.intfb.h"
53 #include "rrtm_cmbgb4.intfb.h"
54 #include "rrtm_cmbgb5.intfb.h"
55 #include "rrtm_cmbgb6.intfb.h"
56 #include "rrtm_cmbgb7.intfb.h"
57 #include "rrtm_cmbgb8.intfb.h"
58 #include "rrtm_cmbgb9.intfb.h"
59 
60 IF (lhook) CALL dr_hook('RRTM_INIT_140GP',0,zhook_handle)
61 
62 ! Read the absorption-related coefficients over the 16 x 16 g-points
63 
64 CALL rrtm_kgb1
65 CALL rrtm_kgb2
66 CALL rrtm_kgb3
67 CALL rrtm_kgb4
68 CALL rrtm_kgb5
69 CALL rrtm_kgb6
70 CALL rrtm_kgb7
71 CALL rrtm_kgb8
72 CALL rrtm_kgb9
73 CALL rrtm_kgb10
74 CALL rrtm_kgb11
75 CALL rrtm_kgb12
76 CALL rrtm_kgb13
77 CALL rrtm_kgb14
78 CALL rrtm_kgb15
79 CALL rrtm_kgb16
80 
81 ! Calculate lookup tables for functions needed in routine TAUMOL (TAUGB2)
82 
83 corr1(0) = 1.0_jprb
84 corr1(200) = 1.0_jprb
85 corr2(0) = 1.0_jprb
86 corr2(200) = 1.0_jprb
87 DO i = 1,199
88  z_fp = 0.005_jprb*REAL(i)
89  z_rtfp = sqrt(z_fp)
90  corr1(i) = z_rtfp/z_fp
91  corr2(i) = (1.0_jprb-z_rtfp)/(1.0_jprb-z_fp)
92 ENDDO
93 
94 ! Perform g-point reduction from 16 per band (256 total points) to
95 ! a band dependant number (140 total points) for all absorption
96 ! coefficient input data and Planck fraction input data.
97 ! Compute relative weighting for new g-point combinations.
98 
99 igcsm = 0
100 DO ibnd = 1,jpband
101  iprsm = 0
102  IF (ngc(ibnd) < 16) THEN
103  DO igc = 1,ngc(ibnd)
104  igcsm = igcsm + 1
105  z_wtsum = 0.0_jprb
106  DO ipr = 1, ngn(igcsm)
107  iprsm = iprsm + 1
108  z_wtsum = z_wtsum + wt(iprsm)
109  ENDDO
110  z_wtsm(igc) = z_wtsum
111  ENDDO
112  DO ig = 1,ng(ibnd)
113  ind = (ibnd-1)*16 + ig
114  rwgt(ind) = wt(ig)/z_wtsm(ngm(ind))
115  ENDDO
116  ELSE
117  DO ig = 1,ng(ibnd)
118  igcsm = igcsm + 1
119  ind = (ibnd-1)*16 + ig
120  rwgt(ind) = 1.0_jprb
121  ENDDO
122  ENDIF
123 ENDDO
124 
125 ! Initialize arrays for combined Planck fraction data.
126 
127 DO ipt = 1,13
128  DO ipr = 1, jpgpt
129  frefa(ipr,ipt) = 0.0_jprb
130  frefadf(ipr,ipt) = 0.0_jprb
131  ENDDO
132 ENDDO
133 DO ipt = 1,6
134  DO ipr = 1, jpgpt
135  frefb(ipr,ipt) = 0.0_jprb
136  frefbdf(ipr,ipt) = 0.0_jprb
137  ENDDO
138 ENDDO
139 
140 ! Reduce g-points for relevant data in each LW spectral band.
141 
142 CALL rrtm_cmbgb1
143 CALL rrtm_cmbgb2
144 CALL rrtm_cmbgb3
145 CALL rrtm_cmbgb4
146 CALL rrtm_cmbgb5
147 CALL rrtm_cmbgb6
148 CALL rrtm_cmbgb7
149 CALL rrtm_cmbgb8
150 CALL rrtm_cmbgb9
151 CALL rrtm_cmbgb10
152 CALL rrtm_cmbgb11
153 CALL rrtm_cmbgb12
154 CALL rrtm_cmbgb13
155 CALL rrtm_cmbgb14
156 CALL rrtm_cmbgb15
157 CALL rrtm_cmbgb16
158 
159 IF (lhook) CALL dr_hook('RRTM_INIT_140GP',1,zhook_handle)
160 END SUBROUTINE rrtm_init_140gp
subroutine rrtm_kgb5
Definition: rrtm_kgb5.F90:9
subroutine rrtm_cmbgb11
Definition: rrtm_cmbgb11.F90:3
real(kind=jprb), dimension(jpgpt, 13) frefa
Definition: yoerrtrwt.F90:15
subroutine rrtm_cmbgb12
Definition: rrtm_cmbgb12.F90:3
integer(kind=jpim), dimension(jpg *jpband) ngm
Definition: yoerrtftr.F90:20
subroutine rrtm_kgb9
Definition: rrtm_kgb9.F90:7
subroutine rrtm_cmbgb14
Definition: rrtm_cmbgb14.F90:3
subroutine rrtm_cmbgb7
Definition: rrtm_cmbgb7.F90:3
subroutine rrtm_kgb3
Definition: rrtm_kgb3.F90:8
real(kind=jprb), dimension(0:200) corr2
Definition: yoerrtbg2.F90:16
subroutine rrtm_init_140gp
subroutine rrtm_cmbgb8
Definition: rrtm_cmbgb8.F90:3
subroutine rrtm_cmbgb16
Definition: rrtm_cmbgb16.F90:3
subroutine rrtm_cmbgb1
Definition: rrtm_cmbgb1.F90:3
real(kind=jprb), dimension(jpg) wt
Definition: yoerrtftr.F90:21
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
subroutine rrtm_cmbgb5
Definition: rrtm_cmbgb5.F90:3
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
subroutine rrtm_kgb13
Definition: rrtm_kgb13.F90:7
subroutine rrtm_kgb6
Definition: rrtm_kgb6.F90:7
real(kind=jprb), dimension(jpgpt, 6) frefb
Definition: yoerrtrwt.F90:16
subroutine rrtm_kgb10
Definition: rrtm_kgb10.F90:7
subroutine rrtm_kgb8
Definition: rrtm_kgb8.F90:7
subroutine rrtm_cmbgb10
Definition: rrtm_cmbgb10.F90:3
integer, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim), dimension(16) ng
Definition: yoerrtwn.F90:11
subroutine rrtm_kgb15
Definition: rrtm_kgb15.F90:7
subroutine rrtm_kgb1
Definition: rrtm_kgb1.F90:7
subroutine rrtm_cmbgb15
Definition: rrtm_cmbgb15.F90:3
subroutine rrtm_cmbgb3
Definition: rrtm_cmbgb3.F90:3
subroutine rrtm_cmbgb6
Definition: rrtm_cmbgb6.F90:3
integer(kind=jpim), dimension(jpgpt) ngn
Definition: yoerrtftr.F90:17
logical lhook
Definition: yomhook.F90:12
subroutine rrtm_kgb16
Definition: rrtm_kgb16.F90:7
subroutine rrtm_kgb11
Definition: rrtm_kgb11.F90:7
subroutine rrtm_kgb4
Definition: rrtm_kgb4.F90:7
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
subroutine rrtm_cmbgb2
Definition: rrtm_cmbgb2.F90:3
real(kind=jprb), dimension(jpgpt, 13) frefadf
Definition: yoerrtrwt.F90:17
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim), parameter jpg
Definition: parrrtm.F90:17
subroutine rrtm_kgb7
Definition: rrtm_kgb7.F90:7
subroutine rrtm_cmbgb13
Definition: rrtm_cmbgb13.F90:3
subroutine rrtm_kgb12
Definition: rrtm_kgb12.F90:7
subroutine rrtm_kgb2
Definition: rrtm_kgb2.F90:7
integer(kind=jpim), dimension(jpband) ngc
Definition: yoerrtftr.F90:15
subroutine rrtm_cmbgb9
Definition: rrtm_cmbgb9.F90:3
real(kind=jprb), dimension(0:200) corr1
Definition: yoerrtbg2.F90:15
subroutine rrtm_kgb14
Definition: rrtm_kgb14.F90:7