GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/rrtm/susrtm.F90 Lines: 0 20 0.0 %
Date: 2023-06-30 12:51:15 Branches: 0 4 0.0 %

Line Branch Exec Source
1
SUBROUTINE SUSRTM
2
3
!     Adapted from E.J. Mlawer, J. Delamere, Atmospheric & Environmental Research.
4
!     by JJMorcrette, ECMWF
5
!     Modified to add arrays relevant to mapping for g-point reduction,
6
!     M.J. Iacono, Atmospheric & Environmental Research, Inc.
7
!     ------------------------------------------------------------------
8
9
USE PARKIND1  ,ONLY : JPRB
10
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
11
12
USE YOESRTWN , ONLY : NG      , NSPA, NSPB   , NMPSRTM, &
13
 & WAVENUM1, WAVENUM2, DELWAVE, PREF, PREFLOG, TREF   , &
14
 & NGM     , WT      , NGC    , NGS , NGN    , NGBSW
15
16
!     ------------------------------------------------------------------
17
18
IMPLICIT NONE
19
REAL(KIND=JPRB) :: ZHOOK_HANDLE
20
IF (LHOOK) CALL DR_HOOK('SUSRTM',0,ZHOOK_HANDLE)
21
NG(:)     =(/ 16,16,16,16,16,16,16,16,16,16,16,16,16,16 /)
22
NSPA(:)   =(/  9, 9, 9, 9, 1, 9, 9, 1, 9, 1, 0, 1, 9, 1 /)
23
NSPB(:)   =(/  1, 5, 1, 1, 1, 5, 1, 0, 1, 0, 0, 1, 5, 1 /)
24
NMPSRTM(:)=(/  6, 6, 5, 5, 5, 5, 5, 4, 4, 3, 2, 2, 1, 6 /)
25
26
WAVENUM1( :) = (/&
27
 & 2600._JPRB, 3250._JPRB, 4000._JPRB, 4650._JPRB, 5150._JPRB, 6150._JPRB, 7700._JPRB &
28
 & , 8050._JPRB,12850._JPRB,16000._JPRB,22650._JPRB,29000._JPRB,38000._JPRB,  820._JPRB /)
29
WAVENUM2( :) = (/&
30
 & 3250._JPRB, 4000._JPRB, 4650._JPRB, 5150._JPRB, 6150._JPRB, 7700._JPRB, 8050._JPRB &
31
 & ,12850._JPRB,16000._JPRB,22650._JPRB,29000._JPRB,38000._JPRB,50000._JPRB, 2600._JPRB /)
32
DELWAVE( :) = (/&
33
 & 650._JPRB,  750._JPRB,  650._JPRB,  500._JPRB, 1000._JPRB, 1550._JPRB,  350._JPRB &
34
 & , 4800._JPRB, 3150._JPRB, 6650._JPRB, 6350._JPRB, 9000._JPRB,12000._JPRB, 1780._JPRB /)
35
36
!=====================================================================
37
! Set arrays needed for the g-point reduction from 224 to 112 for the
38
! 14 SW bands:
39
! This mapping from 224 to 112 points has been carefully selected to
40
! minimize the effect on the resulting fluxes and cooling rates, and
41
! caution should be used if the mapping is modified.
42
!
43
! JPGPT   The total number of new g-points (NGPT)
44
! NGC     The number of new g-points in each band
45
! NGS     The cumulative sum of new g-points for each band
46
! NGM     The index of each new g-point relative to the original
47
!         16 g-points for each band.
48
! NGN     The number of original g-points that are combined to make
49
!         each new g-point in each band.
50
! NGB     The band index for each new g-point.
51
! WT      RRTM weights for 16 g-points.
52
! Use this NGC, NGS, NGM, and NGN for reduced (112) g-point set
53
! (A related code change is required in modules parsrtm.F90 and yoesrtwn.F90)
54
NGC(:) = (/ 6,12, 8, 8,10,10, 2,10, 8, 6, 6, 8, 6,12 /)
55
NGS(:) = (/ 6,18,26,34,44,54,56,66,74,80,86,94,100,112 /)
56
NGM(:) = (/ 1,1,2,2,3,3,4,4,5,5,5,5,6,6,6,6, &           ! Band 16
57
          & 1,2,3,4,5,6,6,7,8,8,9,10,10,11,12,12, &      ! Band 17
58
          & 1,2,3,4,5,5,6,6,7,7,7,7,8,8,8,8, &           ! Band 18
59
          & 1,2,3,4,5,5,6,6,7,7,7,7,8,8,8,8, &           ! Band 19
60
          & 1,2,3,4,5,6,7,8,9,9,10,10,10,10,10,10, &     ! Band 20
61
          & 1,2,3,4,5,6,7,8,9,9,10,10,10,10,10,10, &     ! Band 21
62
          & 1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, &           ! Band 22
63
          & 1,1,2,2,3,4,5,6,7,8,9,9,10,10,10,10, &       ! Band 23
64
          & 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8, &           ! Band 24
65
          & 1,2,3,3,4,4,5,5,5,5,6,6,6,6,6,6, &           ! Band 25
66
          & 1,2,3,3,4,4,5,5,5,5,6,6,6,6,6,6, &           ! Band 26
67
          & 1,2,3,4,5,6,7,7,7,7,8,8,8,8,8,8, &           ! Band 27
68
          & 1,2,3,3,4,4,5,5,5,5,6,6,6,6,6,6, &           ! Band 28
69
          & 1,2,3,4,5,5,6,6,7,7,8,8,9,10,11,12 /)        ! Band 29
70
NGN(:) = (/ 2,2,2,2,4,4, &                               ! Band 16
71
          & 1,1,1,1,1,2,1,2,1,2,1,2, &                   ! Band 17
72
          & 1,1,1,1,2,2,4,4, &                           ! Band 18
73
          & 1,1,1,1,2,2,4,4, &                           ! Band 19
74
          & 1,1,1,1,1,1,1,1,2,6, &                       ! Band 20
75
          & 1,1,1,1,1,1,1,1,2,6, &                       ! Band 21
76
          & 8,8, &                                       ! Band 22
77
          & 2,2,1,1,1,1,1,1,2,4, &                       ! Band 23
78
          & 2,2,2,2,2,2,2,2, &                           ! Band 24
79
          & 1,1,2,2,4,6, &                               ! Band 25
80
          & 1,1,2,2,4,6, &                               ! Band 26
81
          & 1,1,1,1,1,1,4,6, &                           ! Band 27
82
          & 1,1,2,2,4,6, &                               ! Band 28
83
          & 1,1,1,1,2,2,2,2,1,1,1,1 /)                   ! Band 29
84
NGBSW(:)=(/ 16,16,16,16,16,16, &                         ! Band 16
85
          & 17,17,17,17,17,17,17,17,17,17,17,17, &       ! Band 17
86
          & 18,18,18,18,18,18,18,18, &                   ! Band 18
87
          & 19,19,19,19,19,19,19,19, &                   ! Band 19
88
          & 20,20,20,20,20,20,20,20,20,20, &             ! Band 20
89
          & 21,21,21,21,21,21,21,21,21,21, &             ! Band 21
90
          & 22,22, &                                     ! Band 22
91
          & 23,23,23,23,23,23,23,23,23,23, &             ! Band 23
92
          & 24,24,24,24,24,24,24,24, &                   ! Band 24
93
          & 25,25,25,25,25,25, &                         ! Band 25
94
          & 26,26,26,26,26,26, &                         ! Band 26
95
          & 27,27,27,27,27,27,27,27, &                   ! Band 27
96
          & 28,28,28,28,28,28, &                         ! Band 28
97
          & 29,29,29,29,29,29,29,29,29,29,29,29 /)       ! Band 29
98
99
! Use this NGC, NGS, NGM, and NGN for full (224) g-point set
100
! (A related code change is required in modules parsrtm.F90 and yoesrtwn.F90)
101
!NGC(:) = (/ 16,16,16,16,16,16,16,16,16,16,16,16,16,16 /)
102
!NGS(:) = (/ 16,32,48,64,80,96,112,128,144,160,176,192,208,224 /)
103
!NGM(:) = (/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 16
104
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 17
105
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 18
106
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 19
107
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 20
108
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 21
109
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 22
110
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 23
111
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 24
112
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 25
113
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 26
114
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 27
115
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, &    ! Band 28
116
!          & 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 /)    ! Band 29
117
!NGN(:) = (/ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 16
118
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 17
119
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 18
120
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 19
121
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 20
122
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 21
123
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 22
124
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 23
125
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 24
126
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 25
127
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 26
128
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 27
129
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, &           ! Band 28
130
!          & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /)           ! Band 29
131
!NGBSW(:)=(/ 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, &   ! Band 16
132
!          & 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, &   ! Band 17
133
!          & 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, &   ! Band 18
134
!          & 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19, &   ! Band 19
135
!          & 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, &   ! Band 20
136
!          & 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, &   ! Band 21
137
!          & 22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, &   ! Band 22
138
!          & 23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, &   ! Band 23
139
!          & 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, &   ! Band 24
140
!          & 25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, &   ! Band 25
141
!          & 26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26, &   ! Band 26
142
!          & 27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27, &   ! Band 27
143
!          & 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, &   ! Band 28
144
!          & 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,28 /)   ! Band 29
145
146
WT(:) =  (/ 0.1527534276_JPRB, 0.1491729617_JPRB, 0.1420961469_JPRB, &
147
          & 0.1316886544_JPRB, 0.1181945205_JPRB, 0.1019300893_JPRB, &
148
          & 0.0832767040_JPRB, 0.0626720116_JPRB, 0.0424925000_JPRB, &
149
          & 0.0046269894_JPRB, 0.0038279891_JPRB, 0.0030260086_JPRB, &
150
          & 0.0022199750_JPRB, 0.0014140010_JPRB, 0.0005330000_JPRB, &
151
          & 0.0000750000_JPRB /)
152
153
!=============================================================================
154
155
! These pressures are chosen such that the ln of the first pressure
156
! has only a few non-zero digits (i.e. ln(PREF(1)) = 6.96000) and
157
!  each subsequent ln(pressure) differs from the previous one by 0.2.
158
PREF = (/ &
159
 & 1.05363E+03_JPRB,8.62642E+02_JPRB,7.06272E+02_JPRB,5.78246E+02_JPRB,4.73428E+02_JPRB, &
160
 & 3.87610E+02_JPRB,3.17348E+02_JPRB,2.59823E+02_JPRB,2.12725E+02_JPRB,1.74164E+02_JPRB, &
161
 & 1.42594E+02_JPRB,1.16746E+02_JPRB,9.55835E+01_JPRB,7.82571E+01_JPRB,6.40715E+01_JPRB, &
162
 & 5.24573E+01_JPRB,4.29484E+01_JPRB,3.51632E+01_JPRB,2.87892E+01_JPRB,2.35706E+01_JPRB, &
163
 & 1.92980E+01_JPRB,1.57998E+01_JPRB,1.29358E+01_JPRB,1.05910E+01_JPRB,8.67114E+00_JPRB, &
164
 & 7.09933E+00_JPRB,5.81244E+00_JPRB,4.75882E+00_JPRB,3.89619E+00_JPRB,3.18993E+00_JPRB, &
165
 & 2.61170E+00_JPRB,2.13828E+00_JPRB,1.75067E+00_JPRB,1.43333E+00_JPRB,1.17351E+00_JPRB, &
166
 & 9.60789E-01_JPRB,7.86628E-01_JPRB,6.44036E-01_JPRB,5.27292E-01_JPRB,4.31710E-01_JPRB, &
167
 & 3.53455E-01_JPRB,2.89384E-01_JPRB,2.36928E-01_JPRB,1.93980E-01_JPRB,1.58817E-01_JPRB, &
168
 & 1.30029E-01_JPRB,1.06458E-01_JPRB,8.71608E-02_JPRB,7.13612E-02_JPRB,5.84256E-02_JPRB, &
169
 & 4.78349E-02_JPRB,3.91639E-02_JPRB,3.20647E-02_JPRB,2.62523E-02_JPRB,2.14936E-02_JPRB, &
170
 & 1.75975E-02_JPRB,1.44076E-02_JPRB,1.17959E-02_JPRB,9.65769E-03_JPRB /)
171
PREFLOG = (/ &
172
 & 6.9600E+00_JPRB, 6.7600E+00_JPRB, 6.5600E+00_JPRB, 6.3600E+00_JPRB, 6.1600E+00_JPRB, &
173
 & 5.9600E+00_JPRB, 5.7600E+00_JPRB, 5.5600E+00_JPRB, 5.3600E+00_JPRB, 5.1600E+00_JPRB, &
174
 & 4.9600E+00_JPRB, 4.7600E+00_JPRB, 4.5600E+00_JPRB, 4.3600E+00_JPRB, 4.1600E+00_JPRB, &
175
 & 3.9600E+00_JPRB, 3.7600E+00_JPRB, 3.5600E+00_JPRB, 3.3600E+00_JPRB, 3.1600E+00_JPRB, &
176
 & 2.9600E+00_JPRB, 2.7600E+00_JPRB, 2.5600E+00_JPRB, 2.3600E+00_JPRB, 2.1600E+00_JPRB, &
177
 & 1.9600E+00_JPRB, 1.7600E+00_JPRB, 1.5600E+00_JPRB, 1.3600E+00_JPRB, 1.1600E+00_JPRB, &
178
 & 9.6000E-01_JPRB, 7.6000E-01_JPRB, 5.6000E-01_JPRB, 3.6000E-01_JPRB, 1.6000E-01_JPRB, &
179
 & -4.0000E-02_JPRB,-2.4000E-01_JPRB,-4.4000E-01_JPRB,-6.4000E-01_JPRB,-8.4000E-01_JPRB, &
180
 & -1.0400E+00_JPRB,-1.2400E+00_JPRB,-1.4400E+00_JPRB,-1.6400E+00_JPRB,-1.8400E+00_JPRB, &
181
 & -2.0400E+00_JPRB,-2.2400E+00_JPRB,-2.4400E+00_JPRB,-2.6400E+00_JPRB,-2.8400E+00_JPRB, &
182
 & -3.0400E+00_JPRB,-3.2400E+00_JPRB,-3.4400E+00_JPRB,-3.6400E+00_JPRB,-3.8400E+00_JPRB, &
183
 & -4.0400E+00_JPRB,-4.2400E+00_JPRB,-4.4400E+00_JPRB,-4.6400E+00_JPRB /)
184
! These are the temperatures associated with the respective
185
! pressures for the MLS standard atmosphere.
186
TREF = (/ &
187
 & 2.9420E+02_JPRB, 2.8799E+02_JPRB, 2.7894E+02_JPRB, 2.6925E+02_JPRB, 2.5983E+02_JPRB, &
188
 & 2.5017E+02_JPRB, 2.4077E+02_JPRB, 2.3179E+02_JPRB, 2.2306E+02_JPRB, 2.1578E+02_JPRB, &
189
 & 2.1570E+02_JPRB, 2.1570E+02_JPRB, 2.1570E+02_JPRB, 2.1706E+02_JPRB, 2.1858E+02_JPRB, &
190
 & 2.2018E+02_JPRB, 2.2174E+02_JPRB, 2.2328E+02_JPRB, 2.2479E+02_JPRB, 2.2655E+02_JPRB, &
191
 & 2.2834E+02_JPRB, 2.3113E+02_JPRB, 2.3401E+02_JPRB, 2.3703E+02_JPRB, 2.4022E+02_JPRB, &
192
 & 2.4371E+02_JPRB, 2.4726E+02_JPRB, 2.5085E+02_JPRB, 2.5457E+02_JPRB, 2.5832E+02_JPRB, &
193
 & 2.6216E+02_JPRB, 2.6606E+02_JPRB, 2.6999E+02_JPRB, 2.7340E+02_JPRB, 2.7536E+02_JPRB, &
194
 & 2.7568E+02_JPRB, 2.7372E+02_JPRB, 2.7163E+02_JPRB, 2.6955E+02_JPRB, 2.6593E+02_JPRB, &
195
 & 2.6211E+02_JPRB, 2.5828E+02_JPRB, 2.5360E+02_JPRB, 2.4854E+02_JPRB, 2.4348E+02_JPRB,  &
196
 & 2.3809E+02_JPRB, 2.3206E+02_JPRB, 2.2603E+02_JPRB, 2.2000E+02_JPRB, 2.1435E+02_JPRB, &
197
 & 2.0887E+02_JPRB, 2.0340E+02_JPRB, 1.9792E+02_JPRB, 1.9290E+02_JPRB, 1.8809E+02_JPRB, &
198
 & 1.8329E+02_JPRB, 1.7849E+02_JPRB, 1.7394E+02_JPRB, 1.7212E+02_JPRB /)
199
200
!     -----------------------------------------------------------------
201
IF (LHOOK) CALL DR_HOOK('SUSRTM',1,ZHOOK_HANDLE)
202
END SUBROUTINE SUSRTM
203