[4773] | 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 |
---|