1 | SUBROUTINE SRTM_KGB17 |
---|
2 | |
---|
3 | ! Originally by J.Delamere, Atmospheric & Environmental Research. |
---|
4 | ! Revision: 2.4 |
---|
5 | ! BAND 17: 3250-4000 cm-1 (low - H2O,CO2; high - H2O, CO2) |
---|
6 | ! Reformatted for F90 by JJMorcrette, ECMWF |
---|
7 | ! R. Elkhatib 12-10-2005 Split for faster and more robust compilation. |
---|
8 | ! G.Mozdzynski March 2011 read constants from files |
---|
9 | ! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. |
---|
10 | ! F. Vana 05-Mar-2015 Support for single precision |
---|
11 | ! ------------------------------------------------------------------ |
---|
12 | |
---|
13 | USE PARKIND1 , ONLY : JPRB |
---|
14 | USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK |
---|
15 | USE YOMLUN , ONLY : NULRAD |
---|
16 | USE YOMMP0 , ONLY : NPROC, MYPROC |
---|
17 | USE MPL_MODULE, ONLY : MPL_BROADCAST |
---|
18 | USE YOMTAG , ONLY : MTAGRAD |
---|
19 | USE YOESRTA17 , ONLY : KA, KB, SELFREF, FORREF, SFLUXREF, RAYL, STRRAT, LAYREFFR, & |
---|
20 | & KA_D, KB_D |
---|
21 | |
---|
22 | ! ------------------------------------------------------------------ |
---|
23 | |
---|
24 | IMPLICIT NONE |
---|
25 | |
---|
26 | ! KURUCZ |
---|
27 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
28 | |
---|
29 | #include "abor1.intfb.h" |
---|
30 | |
---|
31 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB17',0,ZHOOK_HANDLE) |
---|
32 | |
---|
33 | IF( MYPROC==1 )THEN |
---|
34 | READ(NULRAD,ERR=1001) KA_D,KB_D |
---|
35 | KA = REAL(KA_D,JPRB) |
---|
36 | KB = REAL(KB_D,JPRB) |
---|
37 | ENDIF |
---|
38 | IF( NPROC>1 )THEN |
---|
39 | CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB17:') |
---|
40 | CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB17:') |
---|
41 | ENDIF |
---|
42 | |
---|
43 | SFLUXREF(:,1) = (/ & |
---|
44 | & 3.15613_JPRB , 3.03449_JPRB , 2.92069_JPRB , 2.63874_JPRB , & |
---|
45 | & 2.34581_JPRB , 2.06999_JPRB , 1.70906_JPRB , 1.29085_JPRB , & |
---|
46 | & 0.874851_JPRB , 0.0955392_JPRB, 0.0787813_JPRB, 0.0621951_JPRB , & |
---|
47 | & 0.0459076_JPRB, 0.0294129_JPRB, 0.0110387_JPRB, 0.00159668_JPRB /) |
---|
48 | |
---|
49 | SFLUXREF(:,2) = (/ & |
---|
50 | & 2.83147_JPRB , 2.95919_JPRB , 2.96674_JPRB , 2.77677_JPRB , & |
---|
51 | & 2.46826_JPRB , 2.11481_JPRB , 1.73243_JPRB , 1.30279_JPRB , & |
---|
52 | & 0.882714_JPRB , 0.0962350_JPRB, 0.0802122_JPRB, 0.0636194_JPRB , & |
---|
53 | & 0.0472620_JPRB, 0.0299051_JPRB, 0.0110785_JPRB, 0.00159668_JPRB /) |
---|
54 | |
---|
55 | SFLUXREF(:,3) = (/ & |
---|
56 | & 2.82300_JPRB , 2.94845_JPRB , 2.95887_JPRB , 2.77593_JPRB , & |
---|
57 | & 2.47096_JPRB , 2.12596_JPRB , 1.73847_JPRB , 1.30796_JPRB , & |
---|
58 | & 0.884395_JPRB , 0.0966936_JPRB, 0.0801996_JPRB, 0.0640199_JPRB , & |
---|
59 | & 0.0472803_JPRB, 0.0300515_JPRB, 0.0112366_JPRB, 0.00160814_JPRB /) |
---|
60 | |
---|
61 | SFLUXREF(:,4) = (/ & |
---|
62 | & 2.81715_JPRB , 2.93789_JPRB , 2.95091_JPRB , 2.77046_JPRB , & |
---|
63 | & 2.47716_JPRB , 2.13591_JPRB , 1.74365_JPRB , 1.31277_JPRB , & |
---|
64 | & 0.887443_JPRB , 0.0967016_JPRB, 0.0803391_JPRB, 0.0642442_JPRB , & |
---|
65 | & 0.0472909_JPRB, 0.0300720_JPRB, 0.0114817_JPRB, 0.00161875_JPRB /) |
---|
66 | |
---|
67 | SFLUXREF(:,5) = (/ & |
---|
68 | & 2.82335_JPRB , 2.93168_JPRB , 2.91455_JPRB , 2.75213_JPRB , & |
---|
69 | & 2.49168_JPRB , 2.14408_JPRB , 1.75726_JPRB , 1.32401_JPRB , & |
---|
70 | & 0.893644_JPRB , 0.0969523_JPRB, 0.0805197_JPRB, 0.0639936_JPRB , & |
---|
71 | & 0.0475099_JPRB, 0.0305667_JPRB, 0.0115372_JPRB, 0.00161875_JPRB /) |
---|
72 | |
---|
73 | ! Rayleigh extinction coefficient at v = 3625 cm-1. |
---|
74 | RAYL = 6.86E-10_JPRB |
---|
75 | |
---|
76 | STRRAT = 0.364641_JPRB |
---|
77 | |
---|
78 | LAYREFFR = 30 |
---|
79 | |
---|
80 | ! ------------------------------------------------------------------ |
---|
81 | |
---|
82 | ! The array KA contains absorption coefs at the 16 chosen g-values |
---|
83 | ! for a range of pressure levels> ~100mb, temperatures, and binary |
---|
84 | ! species parameters (see taumol.f for definition). The first |
---|
85 | ! index in the array, JS, runs from 1 to 9, and corresponds to |
---|
86 | ! different values of the binary species parameter. For instance, |
---|
87 | ! JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8, |
---|
88 | ! JS = 3 corresponds to the parameter value 2/8, etc. The second index |
---|
89 | ! in the array, JT, which runs from 1 to 5, corresponds to different |
---|
90 | ! temperatures. More specifically, JT = 3 means that the data are for |
---|
91 | ! the reference temperature TREF for this pressure level, JT = 2 refers |
---|
92 | ! to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5 |
---|
93 | ! is for TREF+30. The third index, JP, runs from 1 to 13 and refers |
---|
94 | ! to the JPth reference pressure level (see taumol.f for these levels |
---|
95 | ! in mb). The fourth index, IG, goes from 1 to 16, and indicates |
---|
96 | ! which g-interval the absorption coefficients are for. |
---|
97 | ! ----------------------------------------------------------------- |
---|
98 | |
---|
99 | ! ----------------------------------------------------------------- |
---|
100 | ! The array KB contains absorption coefs at the 16 chosen g-values |
---|
101 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
102 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
103 | ! different temperatures. More specifically, JT = 3 means that the |
---|
104 | ! data are for the reference temperature TREF for this pressure |
---|
105 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
106 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
107 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
108 | ! reference pressure level (see taumol.f for the value of these |
---|
109 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
110 | ! and tells us which g-interval the absorption coefficients are for. |
---|
111 | ! ----------------------------------------------------------------- |
---|
112 | |
---|
113 | |
---|
114 | FORREF(:, 1) = (/ 0.553258E-03_JPRB, 0.555486E-03_JPRB, 0.601339E-03_JPRB, 0.708280E-03_JPRB /) |
---|
115 | FORREF(:, 2) = (/ 0.158558E-02_JPRB, 0.162957E-02_JPRB, 0.204991E-02_JPRB, 0.475881E-02_JPRB /) |
---|
116 | FORREF(:, 3) = (/ 0.772542E-02_JPRB, 0.784562E-02_JPRB, 0.111979E-01_JPRB, 0.229016E-01_JPRB /) |
---|
117 | FORREF(:, 4) = (/ 0.255097E-01_JPRB, 0.256272E-01_JPRB, 0.270691E-01_JPRB, 0.259505E-01_JPRB /) |
---|
118 | FORREF(:, 5) = (/ 0.323263E-01_JPRB, 0.324495E-01_JPRB, 0.305535E-01_JPRB, 0.263993E-01_JPRB /) |
---|
119 | FORREF(:, 6) = (/ 0.346920E-01_JPRB, 0.348255E-01_JPRB, 0.323586E-01_JPRB, 0.276357E-01_JPRB /) |
---|
120 | FORREF(:, 7) = (/ 0.366509E-01_JPRB, 0.366412E-01_JPRB, 0.344434E-01_JPRB, 0.319223E-01_JPRB /) |
---|
121 | FORREF(:, 8) = (/ 0.378451E-01_JPRB, 0.375341E-01_JPRB, 0.374369E-01_JPRB, 0.320334E-01_JPRB /) |
---|
122 | FORREF(:, 9) = (/ 0.407348E-01_JPRB, 0.396203E-01_JPRB, 0.393988E-01_JPRB, 0.318343E-01_JPRB /) |
---|
123 | FORREF(:,10) = (/ 0.433035E-01_JPRB, 0.426488E-01_JPRB, 0.408085E-01_JPRB, 0.332749E-01_JPRB /) |
---|
124 | FORREF(:,11) = (/ 0.428254E-01_JPRB, 0.441151E-01_JPRB, 0.408887E-01_JPRB, 0.327077E-01_JPRB /) |
---|
125 | FORREF(:,12) = (/ 0.443226E-01_JPRB, 0.446690E-01_JPRB, 0.404676E-01_JPRB, 0.350492E-01_JPRB /) |
---|
126 | FORREF(:,13) = (/ 0.466103E-01_JPRB, 0.460809E-01_JPRB, 0.401286E-01_JPRB, 0.370427E-01_JPRB /) |
---|
127 | FORREF(:,14) = (/ 0.483928E-01_JPRB, 0.477284E-01_JPRB, 0.380684E-01_JPRB, 0.387940E-01_JPRB /) |
---|
128 | FORREF(:,15) = (/ 0.506987E-01_JPRB, 0.490016E-01_JPRB, 0.467069E-01_JPRB, 0.368998E-01_JPRB /) |
---|
129 | FORREF(:,16) = (/ 0.510836E-01_JPRB, 0.522771E-01_JPRB, 0.500130E-01_JPRB, 0.483406E-01_JPRB /) |
---|
130 | |
---|
131 | ! ----------------------------------------------------------------- |
---|
132 | ! The array SELFREF contains the coefficient of the water vapor |
---|
133 | ! self-continuum (including the energy term). The first index |
---|
134 | ! refers to temperature in 7.2 degree increments. For instance, |
---|
135 | ! JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8, |
---|
136 | ! etc. The second index runs over the g-channel (1 to 16). |
---|
137 | |
---|
138 | SELFREF(:, 1) = (/ & |
---|
139 | & 0.160537E-01_JPRB, 0.149038E-01_JPRB, 0.138363E-01_JPRB, 0.128452E-01_JPRB, 0.119251E-01_JPRB, & |
---|
140 | & 0.110709E-01_JPRB, 0.102779E-01_JPRB, 0.954175E-02_JPRB, 0.885829E-02_JPRB, 0.822379E-02_JPRB /) |
---|
141 | SELFREF(:, 2) = (/ & |
---|
142 | & 0.365753E-01_JPRB, 0.342267E-01_JPRB, 0.320288E-01_JPRB, 0.299720E-01_JPRB, 0.280474E-01_JPRB, & |
---|
143 | & 0.262463E-01_JPRB, 0.245609E-01_JPRB, 0.229837E-01_JPRB, 0.215078E-01_JPRB, 0.201267E-01_JPRB /) |
---|
144 | SELFREF(:, 3) = (/ & |
---|
145 | & 0.127419E+00_JPRB, 0.118553E+00_JPRB, 0.110304E+00_JPRB, 0.102629E+00_JPRB, 0.954883E-01_JPRB, & |
---|
146 | & 0.888442E-01_JPRB, 0.826624E-01_JPRB, 0.769107E-01_JPRB, 0.715593E-01_JPRB, 0.665802E-01_JPRB /) |
---|
147 | SELFREF(:, 4) = (/ & |
---|
148 | & 0.378687E+00_JPRB, 0.348961E+00_JPRB, 0.321568E+00_JPRB, 0.296325E+00_JPRB, 0.273064E+00_JPRB, & |
---|
149 | & 0.251629E+00_JPRB, 0.231876E+00_JPRB, 0.213674E+00_JPRB, 0.196901E+00_JPRB, 0.181444E+00_JPRB /) |
---|
150 | SELFREF(:, 5) = (/ & |
---|
151 | & 0.472822E+00_JPRB, 0.435018E+00_JPRB, 0.400236E+00_JPRB, 0.368236E+00_JPRB, 0.338794E+00_JPRB, & |
---|
152 | & 0.311706E+00_JPRB, 0.286783E+00_JPRB, 0.263854E+00_JPRB, 0.242757E+00_JPRB, 0.223348E+00_JPRB /) |
---|
153 | SELFREF(:, 6) = (/ & |
---|
154 | & 0.505620E+00_JPRB, 0.465050E+00_JPRB, 0.427736E+00_JPRB, 0.393416E+00_JPRB, 0.361849E+00_JPRB, & |
---|
155 | & 0.332815E+00_JPRB, 0.306111E+00_JPRB, 0.281550E+00_JPRB, 0.258959E+00_JPRB, 0.238181E+00_JPRB /) |
---|
156 | SELFREF(:, 7) = (/ & |
---|
157 | & 0.530488E+00_JPRB, 0.487993E+00_JPRB, 0.448902E+00_JPRB, 0.412943E+00_JPRB, 0.379864E+00_JPRB, & |
---|
158 | & 0.349434E+00_JPRB, 0.321443E+00_JPRB, 0.295694E+00_JPRB, 0.272007E+00_JPRB, 0.250218E+00_JPRB /) |
---|
159 | SELFREF(:, 8) = (/ & |
---|
160 | & 0.540222E+00_JPRB, 0.497746E+00_JPRB, 0.458610E+00_JPRB, 0.422551E+00_JPRB, 0.389327E+00_JPRB, & |
---|
161 | & 0.358716E+00_JPRB, 0.330511E+00_JPRB, 0.304524E+00_JPRB, 0.280580E+00_JPRB, 0.258519E+00_JPRB /) |
---|
162 | SELFREF(:, 9) = (/ & |
---|
163 | & 0.565727E+00_JPRB, 0.522899E+00_JPRB, 0.483313E+00_JPRB, 0.446724E+00_JPRB, 0.412905E+00_JPRB, & |
---|
164 | & 0.381646E+00_JPRB, 0.352753E+00_JPRB, 0.326048E+00_JPRB, 0.301365E+00_JPRB, 0.278550E+00_JPRB /) |
---|
165 | SELFREF(:,10) = (/ & |
---|
166 | & 0.610122E+00_JPRB, 0.562337E+00_JPRB, 0.518295E+00_JPRB, 0.477702E+00_JPRB, 0.440289E+00_JPRB, & |
---|
167 | & 0.405806E+00_JPRB, 0.374023E+00_JPRB, 0.344730E+00_JPRB, 0.317730E+00_JPRB, 0.292846E+00_JPRB /) |
---|
168 | SELFREF(:,11) = (/ & |
---|
169 | & 0.645176E+00_JPRB, 0.588957E+00_JPRB, 0.537636E+00_JPRB, 0.490788E+00_JPRB, 0.448022E+00_JPRB, & |
---|
170 | & 0.408982E+00_JPRB, 0.373344E+00_JPRB, 0.340812E+00_JPRB, 0.311114E+00_JPRB, 0.284004E+00_JPRB /) |
---|
171 | SELFREF(:,12) = (/ & |
---|
172 | & 0.651737E+00_JPRB, 0.596547E+00_JPRB, 0.546031E+00_JPRB, 0.499792E+00_JPRB, 0.457469E+00_JPRB, & |
---|
173 | & 0.418730E+00_JPRB, 0.383272E+00_JPRB, 0.350816E+00_JPRB, 0.321108E+00_JPRB, 0.293916E+00_JPRB /) |
---|
174 | SELFREF(:,13) = (/ & |
---|
175 | & 0.661086E+00_JPRB, 0.607954E+00_JPRB, 0.559093E+00_JPRB, 0.514159E+00_JPRB, 0.472836E+00_JPRB, & |
---|
176 | & 0.434834E+00_JPRB, 0.399886E+00_JPRB, 0.367747E+00_JPRB, 0.338191E+00_JPRB, 0.311011E+00_JPRB /) |
---|
177 | SELFREF(:,14) = (/ & |
---|
178 | & 0.692554E+00_JPRB, 0.635574E+00_JPRB, 0.583282E+00_JPRB, 0.535293E+00_JPRB, 0.491251E+00_JPRB, & |
---|
179 | & 0.450834E+00_JPRB, 0.413741E+00_JPRB, 0.379701E+00_JPRB, 0.348461E+00_JPRB, 0.319791E+00_JPRB /) |
---|
180 | SELFREF(:,15) = (/ & |
---|
181 | & 0.714646E+00_JPRB, 0.657179E+00_JPRB, 0.604334E+00_JPRB, 0.555737E+00_JPRB, 0.511049E+00_JPRB, & |
---|
182 | & 0.469954E+00_JPRB, 0.432164E+00_JPRB, 0.397412E+00_JPRB, 0.365455E+00_JPRB, 0.336068E+00_JPRB /) |
---|
183 | SELFREF(:,16) = (/ & |
---|
184 | & 0.782126E+00_JPRB, 0.710682E+00_JPRB, 0.645764E+00_JPRB, 0.586776E+00_JPRB, 0.533177E+00_JPRB, & |
---|
185 | & 0.484473E+00_JPRB, 0.440219E+00_JPRB, 0.400007E+00_JPRB, 0.363468E+00_JPRB, 0.330266E+00_JPRB /) |
---|
186 | |
---|
187 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB17',1,ZHOOK_HANDLE) |
---|
188 | RETURN |
---|
189 | |
---|
190 | 1001 CONTINUE |
---|
191 | CALL ABOR1("SRTM_KGB17:ERROR READING FILE RADSRTM") |
---|
192 | |
---|
193 | END SUBROUTINE SRTM_KGB17 |
---|