[3908] | 1 | SUBROUTINE SRTM_KGB20 |
---|
| 2 | |
---|
| 3 | ! Originally by J.Delamere, Atmospheric & Environmental Research. |
---|
| 4 | ! Revision: 2.4 |
---|
| 5 | ! BAND 20: 5150-6150 cm-1 (low - H2O; high - H2O) |
---|
| 6 | ! Reformatted for F90 by JJMorcrette, ECMWF |
---|
| 7 | ! G.Mozdzynski March 2011 read constants from files |
---|
| 8 | ! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. |
---|
| 9 | ! ------------------------------------------------------------------ |
---|
| 10 | |
---|
| 11 | USE PARKIND1 , ONLY : JPRB |
---|
| 12 | USE YOMHOOK , ONLY : LHOOK, DR_HOOK |
---|
| 13 | USE YOMLUN , ONLY : NULRAD |
---|
| 14 | USE YOMMP0 , ONLY : NPROC, MYPROC |
---|
| 15 | USE MPL_MODULE, ONLY : MPL_BROADCAST |
---|
| 16 | USE YOMTAG , ONLY : MTAGRAD |
---|
| 17 | USE YOESRTA20 , ONLY : KA, KB, KA_D, KB_D, SELFREF, FORREF, SFLUXREF, RAYL, ABSCH4, LAYREFFR |
---|
| 18 | |
---|
| 19 | ! ------------------------------------------------------------------ |
---|
| 20 | |
---|
| 21 | IMPLICIT NONE |
---|
| 22 | |
---|
| 23 | ! KURUCZ |
---|
| 24 | REAL(KIND=JPRB) :: ZHOOK_HANDLE |
---|
| 25 | |
---|
| 26 | #include "abor1.intfb.h" |
---|
| 27 | |
---|
| 28 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB20',0,ZHOOK_HANDLE) |
---|
| 29 | |
---|
| 30 | IF( MYPROC==1 )THEN |
---|
| 31 | READ(NULRAD,ERR=1001) KA_D,KB_D |
---|
| 32 | KA = REAL(KA_D,JPRB) |
---|
| 33 | KB = REAL(KB_D,JPRB) |
---|
| 34 | ENDIF |
---|
| 35 | IF( NPROC>1 )THEN |
---|
| 36 | CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB20:') |
---|
| 37 | CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB20:') |
---|
| 38 | ENDIF |
---|
| 39 | |
---|
| 40 | SFLUXREF = (/ & |
---|
| 41 | & 9.34081_JPRB , 8.93720_JPRB , 8.19346_JPRB , 7.39196_JPRB , & |
---|
| 42 | & 6.12127_JPRB , 5.23956_JPRB , 4.24941_JPRB , 3.20013_JPRB , & |
---|
| 43 | & 2.16047_JPRB , 0.234509_JPRB , 0.194593_JPRB , 0.151512_JPRB , & |
---|
| 44 | & 0.110315_JPRB, 7.09959E-02_JPRB, 2.70573E-02_JPRB, 3.36042E-03_JPRB /) |
---|
| 45 | |
---|
| 46 | ABSCH4 = (/ & |
---|
| 47 | & 1.01381E-03_JPRB,6.33692E-03_JPRB,1.94185E-02_JPRB,4.83210E-02_JPRB, & |
---|
| 48 | & 2.36574E-03_JPRB,6.61973E-04_JPRB,5.64552E-04_JPRB,2.83183E-04_JPRB, & |
---|
| 49 | & 7.43623E-05_JPRB,8.90159E-07_JPRB,6.98728E-07_JPRB,6.51832E-08_JPRB, & |
---|
| 50 | & 2.96619E-08_JPRB, 0._JPRB, 0._JPRB, 0._JPRB /) |
---|
| 51 | |
---|
| 52 | ! Rayleigh extinction coefficient at v = 5670 cm-1. |
---|
| 53 | RAYL = 4.12E-09_JPRB |
---|
| 54 | |
---|
| 55 | LAYREFFR = 3 |
---|
| 56 | |
---|
| 57 | ! ------------------------------------------------------------------ |
---|
| 58 | |
---|
| 59 | ! The array KA contains absorption coefs at the 16 chosen g-values |
---|
| 60 | ! for a range of pressure levels> ~100mb, temperatures, and binary |
---|
| 61 | ! species parameters (see taumol.f for definition). The first |
---|
| 62 | ! index in the array, JS, runs from 1 to 9, and corresponds to |
---|
| 63 | ! different values of the binary species parameter. For instance, |
---|
| 64 | ! JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8, |
---|
| 65 | ! JS = 3 corresponds to the parameter value 2/8, etc. The second index |
---|
| 66 | ! in the array, JT, which runs from 1 to 5, corresponds to different |
---|
| 67 | ! temperatures. More specifically, JT = 3 means that the data are for |
---|
| 68 | ! the reference temperature TREF for this pressure level, JT = 2 refers |
---|
| 69 | ! to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5 |
---|
| 70 | ! is for TREF+30. The third index, JP, runs from 1 to 13 and refers |
---|
| 71 | ! to the JPth reference pressure level (see taumol.f for these levels |
---|
| 72 | ! in mb). The fourth index, IG, goes from 1 to 16, and indicates |
---|
| 73 | ! which g-interval the absorption coefficients are for. |
---|
| 74 | ! ----------------------------------------------------------------- |
---|
| 75 | |
---|
| 76 | ! ----------------------------------------------------------------- |
---|
| 77 | ! The array KB contains absorption coefs at the 16 chosen g-values |
---|
| 78 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
| 79 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
| 80 | ! different temperatures. More specifically, JT = 3 means that the |
---|
| 81 | ! data are for the reference temperature TREF for this pressure |
---|
| 82 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
| 83 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
| 84 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
| 85 | ! reference pressure level (see taumol.f for the value of these |
---|
| 86 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
| 87 | ! and tells us which g-interval the absorption coefficients are for. |
---|
| 88 | ! ----------------------------------------------------------------- |
---|
| 89 | |
---|
| 90 | |
---|
| 91 | FORREF(:, 1) = (/ 0.214504E-06_JPRB, 0.460418E-06_JPRB, 0.357608E-05_JPRB, 0.192037E-05_JPRB /) |
---|
| 92 | FORREF(:, 2) = (/ 0.142576E-05_JPRB, 0.364463E-05_JPRB, 0.117033E-04_JPRB, 0.112085E-04_JPRB /) |
---|
| 93 | FORREF(:, 3) = (/ 0.101536E-04_JPRB, 0.124096E-04_JPRB, 0.509190E-04_JPRB, 0.565282E-04_JPRB /) |
---|
| 94 | FORREF(:, 4) = (/ 0.143394E-03_JPRB, 0.154700E-03_JPRB, 0.466498E-03_JPRB, 0.918829E-03_JPRB /) |
---|
| 95 | FORREF(:, 5) = (/ 0.251631E-02_JPRB, 0.241729E-02_JPRB, 0.240057E-02_JPRB, 0.350408E-02_JPRB /) |
---|
| 96 | FORREF(:, 6) = (/ 0.410309E-02_JPRB, 0.416851E-02_JPRB, 0.390925E-02_JPRB, 0.383694E-02_JPRB /) |
---|
| 97 | FORREF(:, 7) = (/ 0.445387E-02_JPRB, 0.448657E-02_JPRB, 0.432310E-02_JPRB, 0.370739E-02_JPRB /) |
---|
| 98 | FORREF(:, 8) = (/ 0.458150E-02_JPRB, 0.460014E-02_JPRB, 0.450245E-02_JPRB, 0.336718E-02_JPRB /) |
---|
| 99 | FORREF(:, 9) = (/ 0.465423E-02_JPRB, 0.465595E-02_JPRB, 0.467006E-02_JPRB, 0.368061E-02_JPRB /) |
---|
| 100 | FORREF(:,10) = (/ 0.493955E-02_JPRB, 0.490181E-02_JPRB, 0.481941E-02_JPRB, 0.367577E-02_JPRB /) |
---|
| 101 | FORREF(:,11) = (/ 0.511876E-02_JPRB, 0.490981E-02_JPRB, 0.493303E-02_JPRB, 0.357423E-02_JPRB /) |
---|
| 102 | FORREF(:,12) = (/ 0.509845E-02_JPRB, 0.511556E-02_JPRB, 0.504031E-02_JPRB, 0.355915E-02_JPRB /) |
---|
| 103 | FORREF(:,13) = (/ 0.523822E-02_JPRB, 0.530473E-02_JPRB, 0.523811E-02_JPRB, 0.414259E-02_JPRB /) |
---|
| 104 | FORREF(:,14) = (/ 0.551133E-02_JPRB, 0.535831E-02_JPRB, 0.546702E-02_JPRB, 0.473875E-02_JPRB /) |
---|
| 105 | FORREF(:,15) = (/ 0.609781E-02_JPRB, 0.589859E-02_JPRB, 0.561187E-02_JPRB, 0.528981E-02_JPRB /) |
---|
| 106 | FORREF(:,16) = (/ 0.644958E-02_JPRB, 0.631718E-02_JPRB, 0.625201E-02_JPRB, 0.600448E-02_JPRB /) |
---|
| 107 | |
---|
| 108 | ! ----------------------------------------------------------------- |
---|
| 109 | ! The array SELFREF contains the coefficient of the water vapor |
---|
| 110 | ! self-continuum (including the energy term). The first index |
---|
| 111 | ! refers to temperature in 7.2 degree increments. For instance, |
---|
| 112 | ! JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8, |
---|
| 113 | ! etc. The second index runs over the g-channel (1 to 16). |
---|
| 114 | |
---|
| 115 | SELFREF(:, 1) = (/ & |
---|
| 116 | & 0.217058E-03_JPRB, 0.176391E-03_JPRB, 0.143342E-03_JPRB, 0.116486E-03_JPRB, 0.946614E-04_JPRB, & |
---|
| 117 | & 0.769257E-04_JPRB, 0.625131E-04_JPRB, 0.508007E-04_JPRB, 0.412828E-04_JPRB, 0.335481E-04_JPRB /) |
---|
| 118 | SELFREF(:, 2) = (/ & |
---|
| 119 | & 0.598055E-03_JPRB, 0.484805E-03_JPRB, 0.393000E-03_JPRB, 0.318580E-03_JPRB, 0.258252E-03_JPRB, & |
---|
| 120 | & 0.209348E-03_JPRB, 0.169705E-03_JPRB, 0.137569E-03_JPRB, 0.111518E-03_JPRB, 0.904008E-04_JPRB /) |
---|
| 121 | SELFREF(:, 3) = (/ & |
---|
| 122 | & 0.102691E-02_JPRB, 0.930281E-03_JPRB, 0.842740E-03_JPRB, 0.763437E-03_JPRB, 0.691596E-03_JPRB, & |
---|
| 123 | & 0.626516E-03_JPRB, 0.567560E-03_JPRB, 0.514152E-03_JPRB, 0.465769E-03_JPRB, 0.421940E-03_JPRB /) |
---|
| 124 | SELFREF(:, 4) = (/ & |
---|
| 125 | & 0.388569E-02_JPRB, 0.365098E-02_JPRB, 0.343045E-02_JPRB, 0.322324E-02_JPRB, 0.302854E-02_JPRB, & |
---|
| 126 | & 0.284561E-02_JPRB, 0.267372E-02_JPRB, 0.251222E-02_JPRB, 0.236047E-02_JPRB, 0.221789E-02_JPRB /) |
---|
| 127 | SELFREF(:, 5) = (/ & |
---|
| 128 | & 0.349845E-01_JPRB, 0.326678E-01_JPRB, 0.305045E-01_JPRB, 0.284845E-01_JPRB, 0.265982E-01_JPRB, & |
---|
| 129 | & 0.248369E-01_JPRB, 0.231921E-01_JPRB, 0.216563E-01_JPRB, 0.202222E-01_JPRB, 0.188831E-01_JPRB /) |
---|
| 130 | SELFREF(:, 6) = (/ & |
---|
| 131 | & 0.613705E-01_JPRB, 0.562676E-01_JPRB, 0.515890E-01_JPRB, 0.472994E-01_JPRB, 0.433665E-01_JPRB, & |
---|
| 132 | & 0.397606E-01_JPRB, 0.364545E-01_JPRB, 0.334233E-01_JPRB, 0.306442E-01_JPRB, 0.280961E-01_JPRB /) |
---|
| 133 | SELFREF(:, 7) = (/ & |
---|
| 134 | & 0.656981E-01_JPRB, 0.602660E-01_JPRB, 0.552830E-01_JPRB, 0.507120E-01_JPRB, 0.465190E-01_JPRB, & |
---|
| 135 | & 0.426726E-01_JPRB, 0.391443E-01_JPRB, 0.359077E-01_JPRB, 0.329387E-01_JPRB, 0.302153E-01_JPRB /) |
---|
| 136 | SELFREF(:, 8) = (/ & |
---|
| 137 | & 0.671782E-01_JPRB, 0.616461E-01_JPRB, 0.565695E-01_JPRB, 0.519110E-01_JPRB, 0.476361E-01_JPRB, & |
---|
| 138 | & 0.437132E-01_JPRB, 0.401134E-01_JPRB, 0.368100E-01_JPRB, 0.337787E-01_JPRB, 0.309970E-01_JPRB /) |
---|
| 139 | SELFREF(:, 9) = (/ & |
---|
| 140 | & 0.675902E-01_JPRB, 0.620888E-01_JPRB, 0.570351E-01_JPRB, 0.523928E-01_JPRB, 0.481284E-01_JPRB, & |
---|
| 141 | & 0.442110E-01_JPRB, 0.406125E-01_JPRB, 0.373069E-01_JPRB, 0.342703E-01_JPRB, 0.314809E-01_JPRB /) |
---|
| 142 | SELFREF(:,10) = (/ & |
---|
| 143 | & 0.708308E-01_JPRB, 0.651419E-01_JPRB, 0.599099E-01_JPRB, 0.550981E-01_JPRB, 0.506728E-01_JPRB, & |
---|
| 144 | & 0.466030E-01_JPRB, 0.428600E-01_JPRB, 0.394176E-01_JPRB, 0.362517E-01_JPRB, 0.333401E-01_JPRB /) |
---|
| 145 | SELFREF(:,11) = (/ & |
---|
| 146 | & 0.698445E-01_JPRB, 0.646584E-01_JPRB, 0.598573E-01_JPRB, 0.554128E-01_JPRB, 0.512982E-01_JPRB, & |
---|
| 147 | & 0.474892E-01_JPRB, 0.439630E-01_JPRB, 0.406986E-01_JPRB, 0.376766E-01_JPRB, 0.348791E-01_JPRB /) |
---|
| 148 | SELFREF(:,12) = (/ & |
---|
| 149 | & 0.743921E-01_JPRB, 0.682057E-01_JPRB, 0.625337E-01_JPRB, 0.573334E-01_JPRB, 0.525655E-01_JPRB, & |
---|
| 150 | & 0.481942E-01_JPRB, 0.441863E-01_JPRB, 0.405118E-01_JPRB, 0.371428E-01_JPRB, 0.340540E-01_JPRB /) |
---|
| 151 | SELFREF(:,13) = (/ & |
---|
| 152 | & 0.775758E-01_JPRB, 0.709818E-01_JPRB, 0.649484E-01_JPRB, 0.594277E-01_JPRB, 0.543764E-01_JPRB, & |
---|
| 153 | & 0.497544E-01_JPRB, 0.455253E-01_JPRB, 0.416556E-01_JPRB, 0.381149E-01_JPRB, 0.348751E-01_JPRB /) |
---|
| 154 | SELFREF(:,14) = (/ & |
---|
| 155 | & 0.776545E-01_JPRB, 0.714761E-01_JPRB, 0.657894E-01_JPRB, 0.605550E-01_JPRB, 0.557372E-01_JPRB, & |
---|
| 156 | & 0.513026E-01_JPRB, 0.472209E-01_JPRB, 0.434639E-01_JPRB, 0.400058E-01_JPRB, 0.368229E-01_JPRB /) |
---|
| 157 | SELFREF(:,15) = (/ & |
---|
| 158 | & 0.855675E-01_JPRB, 0.787337E-01_JPRB, 0.724456E-01_JPRB, 0.666598E-01_JPRB, 0.613360E-01_JPRB, & |
---|
| 159 | & 0.564374E-01_JPRB, 0.519301E-01_JPRB, 0.477827E-01_JPRB, 0.439666E-01_JPRB, 0.404552E-01_JPRB /) |
---|
| 160 | SELFREF(:,16) = (/ & |
---|
| 161 | & 0.934781E-01_JPRB, 0.855190E-01_JPRB, 0.782376E-01_JPRB, 0.715761E-01_JPRB, 0.654819E-01_JPRB, & |
---|
| 162 | & 0.599065E-01_JPRB, 0.548058E-01_JPRB, 0.501394E-01_JPRB, 0.458704E-01_JPRB, 0.419648E-01_JPRB /) |
---|
| 163 | |
---|
| 164 | ! ----------------------------------------------------------------- |
---|
| 165 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB20',1,ZHOOK_HANDLE) |
---|
| 166 | RETURN |
---|
| 167 | |
---|
| 168 | 1001 CONTINUE |
---|
| 169 | CALL ABOR1("SRTM_KGB20:ERROR READING FILE RADSRTM") |
---|
| 170 | |
---|
| 171 | END SUBROUTINE SRTM_KGB20 |
---|