[4773] | 1 | SUBROUTINE RRTM_KGB2 |
---|
| 2 | |
---|
| 3 | ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. |
---|
| 4 | ! BAND 2: 250-500 cm-1 (low - H2O; high - H2O) |
---|
| 5 | ! Reformatted for F90 by JJMorcrette, ECMWF |
---|
| 6 | ! R. Elkhatib 12-10-2005 Split for faster and more robust compilation. |
---|
| 7 | ! G.Mozdzynski March 2011 read constants from files |
---|
| 8 | ! ABozzo May 2013 update to RRTMG v4.85 |
---|
| 9 | ! band 2: 350-500 cm-1 |
---|
| 10 | ! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. |
---|
| 11 | ! F. Vana 05-Mar-2015 Support for single precision |
---|
| 12 | ! ------------------------------------------------------------------ |
---|
| 13 | |
---|
| 14 | USE PARKIND1 ,ONLY : JPRB |
---|
| 15 | USE YOMHOOK ,ONLY : LHOOK, DR_HOOK, JPHOOK |
---|
| 16 | USE YOMLUN ,ONLY : NULRAD |
---|
| 17 | USE MPL_MODULE,ONLY : MPL_BROADCAST |
---|
| 18 | USE YOMTAG ,ONLY : MTAGRAD |
---|
| 19 | |
---|
| 20 | USE YOERRTO2 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& |
---|
| 21 | & FRACREFBO ,FORREFO ,KAO_D, KBO_D |
---|
| 22 | USE YOMMP0 , ONLY : NPROC, MYPROC |
---|
| 23 | |
---|
| 24 | ! ------------------------------------------------------------------ |
---|
| 25 | |
---|
| 26 | IMPLICIT NONE |
---|
| 27 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
| 28 | |
---|
| 29 | #include "abor1.intfb.h" |
---|
| 30 | |
---|
| 31 | IF (LHOOK) CALL DR_HOOK('RRTM_KGB2',0,ZHOOK_HANDLE) |
---|
| 32 | |
---|
| 33 | IF( MYPROC==1 )THEN |
---|
| 34 | READ(NULRAD,ERR=1001) KAO_D,KBO_D |
---|
| 35 | KAO = REAL(KAO_D,JPRB) |
---|
| 36 | KBO = REAL(KBO_D,JPRB) |
---|
| 37 | ENDIF |
---|
| 38 | IF( NPROC>1 )THEN |
---|
| 39 | CALL MPL_BROADCAST (KAO,MTAGRAD,1,CDSTRING='RRTM_KGB2:') |
---|
| 40 | CALL MPL_BROADCAST (KBO,MTAGRAD,1,CDSTRING='RRTM_KGB2:') |
---|
| 41 | ENDIF |
---|
| 42 | |
---|
| 43 | |
---|
| 44 | ! Planck fraction mapping level: P = 1053.630 mbar, T = 294.2 K |
---|
| 45 | FRACREFAO(:) = (/ & |
---|
| 46 | & 1.6388E-01_JPRB, 1.5241E-01_JPRB, 1.4290E-01_JPRB, 1.2864E-01_JPRB, & |
---|
| 47 | & 1.1615E-01_JPRB, 1.0047E-01_JPRB, 8.0013E-02_JPRB, 6.0445E-02_JPRB, & |
---|
| 48 | & 4.0530E-02_JPRB, 4.3879E-03_JPRB, 3.5726E-03_JPRB, 2.7669E-03_JPRB, & |
---|
| 49 | & 2.0078E-03_JPRB, 1.2864E-03_JPRB, 4.7630E-04_JPRB, 6.9109E-05_JPRB/) |
---|
| 50 | |
---|
| 51 | ! Planck fraction mapping level: P = 3.206e-2 mb, T = 197.92 K |
---|
| 52 | FRACREFBO(:) = (/ & |
---|
| 53 | & 1.4697E-01_JPRB, 1.4826E-01_JPRB, 1.4278E-01_JPRB, 1.3320E-01_JPRB, & |
---|
| 54 | & 1.1965E-01_JPRB, 1.0297E-01_JPRB, 8.4170E-02_JPRB, 6.3282E-02_JPRB, & |
---|
| 55 | & 4.2868E-02_JPRB, 4.6644E-03_JPRB, 3.8619E-03_JPRB, 3.0533E-03_JPRB, & |
---|
| 56 | & 2.2359E-03_JPRB, 1.4226E-03_JPRB, 5.3642E-04_JPRB, 7.6316E-05_JPRB/) |
---|
| 57 | |
---|
| 58 | ! The array FORREFO contains the coefficient of the water vapor |
---|
| 59 | ! foreign-continuum (including the energy term). The first |
---|
| 60 | ! index refers to reference temperature (296,260,224,260) and |
---|
| 61 | ! pressure (970,475,219,3 mbar) levels. The second index |
---|
| 62 | ! runs over the g-channel (1 to 16). |
---|
| 63 | |
---|
| 64 | FORREFO(1,:) = (/ & |
---|
| 65 | & 2.8549E-03_JPRB,4.8281E-03_JPRB,6.2570E-03_JPRB,8.2731E-03_JPRB,7.9056E-03_JPRB,7.7840E-03_JPRB, & |
---|
| 66 | & 1.0115E-02_JPRB,9.6599E-03_JPRB,1.0153E-02_JPRB,1.0921E-02_JPRB,1.2408E-02_JPRB,1.3496E-02_JPRB, & |
---|
| 67 | & 1.5059E-02_JPRB,1.4636E-02_JPRB,1.6483E-02_JPRB,1.2394E-02_JPRB/) |
---|
| 68 | FORREFO(2,:) = (/ & |
---|
| 69 | & 3.0036E-03_JPRB,5.1093E-03_JPRB,5.7317E-03_JPRB,9.2246E-03_JPRB,8.9829E-03_JPRB,8.6477E-03_JPRB, & |
---|
| 70 | & 1.1448E-02_JPRB,1.0391E-02_JPRB,1.0211E-02_JPRB,1.2921E-02_JPRB,1.2726E-02_JPRB,1.2426E-02_JPRB, & |
---|
| 71 | & 1.4609E-02_JPRB,1.5783E-02_JPRB,1.6617E-02_JPRB,1.6858E-02_JPRB/) |
---|
| 72 | FORREFO(3,:) = (/ & |
---|
| 73 | & 3.0771E-03_JPRB,5.1206E-03_JPRB,5.8426E-03_JPRB,9.5727E-03_JPRB,1.0338E-02_JPRB,9.3737E-03_JPRB, & |
---|
| 74 | & 1.2805E-02_JPRB,1.1272E-02_JPRB,1.1353E-02_JPRB,1.1837E-02_JPRB,1.1550E-02_JPRB,1.3020E-02_JPRB, & |
---|
| 75 | & 1.3536E-02_JPRB,1.6226E-02_JPRB,1.6039E-02_JPRB,2.2578E-02_JPRB/) |
---|
| 76 | FORREFO(4,:) = (/ & |
---|
| 77 | & 3.3072E-03_JPRB,5.0240E-03_JPRB,6.8474E-03_JPRB,8.2736E-03_JPRB,8.6151E-03_JPRB,8.6762E-03_JPRB, & |
---|
| 78 | & 1.1476E-02_JPRB,1.0246E-02_JPRB,1.0819E-02_JPRB,1.0640E-02_JPRB,1.0545E-02_JPRB,1.0533E-02_JPRB, & |
---|
| 79 | & 1.0496E-02_JPRB,1.0142E-02_JPRB,9.7979E-03_JPRB,1.5255E-02_JPRB/) |
---|
| 80 | |
---|
| 81 | |
---|
| 82 | ! The following are parameters related to the reference water vapor |
---|
| 83 | ! mixing ratios by REFPARAM(I) = REFH2O(I) / (.002+REFH2O(I)). |
---|
| 84 | ! These parameters are used for the Planck function interpolation. |
---|
| 85 | !REFPARAM( :) = (/& |
---|
| 86 | ! & 0.903661_JPRB , 0.859386_JPRB , 0.746542_JPRB , 0.580496_JPRB , 0.412889_JPRB ,& |
---|
| 87 | ! & 0.275283_JPRB , 0.162745_JPRB , 7.63929E-02_JPRB, 1.82553E-02_JPRB, 3.72432E-03_JPRB, & |
---|
| 88 | ! & 2.14946E-03_JPRB, 1.66320E-03_JPRB, 1.59940E-03_JPRB/) |
---|
| 89 | |
---|
| 90 | ! ------------------------------------------------------------------ |
---|
| 91 | |
---|
| 92 | ! The array KAO contains absorption coefs at the 16 chosen g-values |
---|
| 93 | ! for a range of pressure levels > ~100mb and temperatures. The first |
---|
| 94 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
| 95 | ! different temperatures. More specifically, JT = 3 means that the |
---|
| 96 | ! data are for the corresponding TREF for this pressure level, |
---|
| 97 | ! JT = 2 refers to the temperatureTREF-15, JT = 1 is for TREF-30, |
---|
| 98 | ! JT = 4 is for TREF+15, and JT = 5 is for TREF+30. The second |
---|
| 99 | ! index, JP, runs from 1 to 13 and refers to the corresponding |
---|
| 100 | ! pressure level in PREF (e.g. JP = 1 is for a pressure of 1053.63 mb). |
---|
| 101 | ! The third index, IG, goes from 1 to 16, and tells us which |
---|
| 102 | ! g-interval the absorption coefficients are for. |
---|
| 103 | |
---|
| 104 | |
---|
| 105 | |
---|
| 106 | ! The array KBO contains absorption coefs at the 16 chosen g-values |
---|
| 107 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
| 108 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
| 109 | ! different temperatures. More specifically, JT = 3 means that the |
---|
| 110 | ! data are for the reference temperature TREF for this pressure |
---|
| 111 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
| 112 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
| 113 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
| 114 | ! reference pressure level (see taumol.f for the value of these |
---|
| 115 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
| 116 | ! and tells us which g-interval the absorption coefficients are for. |
---|
| 117 | |
---|
| 118 | |
---|
| 119 | |
---|
| 120 | ! The array SELFREFO contains the coefficient of the water vapor |
---|
| 121 | ! self-continuum (including the energy term). The first index |
---|
| 122 | ! refers to temperature in 7.2 degree increments. For instance, |
---|
| 123 | ! JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8, |
---|
| 124 | ! etc. The second index runs over the g-channel (1 to 16). |
---|
| 125 | |
---|
| 126 | SELFREFO(:, 1) = (/ & |
---|
| 127 | & 7.25695E-01_JPRB, 6.53591E-01_JPRB, 5.88650E-01_JPRB, 5.30162E-01_JPRB, 4.77485E-01_JPRB, & |
---|
| 128 | & 4.30042E-01_JPRB, 3.87313E-01_JPRB, 3.48830E-01_JPRB, 3.14170E-01_JPRB, 2.82954E-01_JPRB/) |
---|
| 129 | SELFREFO(:, 2) = (/ & |
---|
| 130 | & 9.61996E-01_JPRB, 8.77853E-01_JPRB, 8.01070E-01_JPRB, 7.31003E-01_JPRB, 6.67064E-01_JPRB, & |
---|
| 131 | & 6.08718E-01_JPRB, 5.55476E-01_JPRB, 5.06890E-01_JPRB, 4.62554E-01_JPRB, 4.22096E-01_JPRB/) |
---|
| 132 | SELFREFO(:, 3) = (/ & |
---|
| 133 | & 9.72584E-01_JPRB, 9.02658E-01_JPRB, 8.37760E-01_JPRB, 7.77527E-01_JPRB, 7.21626E-01_JPRB, & |
---|
| 134 | & 6.69743E-01_JPRB, 6.21591E-01_JPRB, 5.76900E-01_JPRB, 5.35423E-01_JPRB, 4.96927E-01_JPRB/) |
---|
| 135 | SELFREFO(:, 4) = (/ & |
---|
| 136 | & 1.24790E+00_JPRB, 1.14353E+00_JPRB, 1.04790E+00_JPRB, 9.60263E-01_JPRB, 8.79956E-01_JPRB, & |
---|
| 137 | & 8.06364E-01_JPRB, 7.38927E-01_JPRB, 6.77130E-01_JPRB, 6.20501E-01_JPRB, 5.68608E-01_JPRB/) |
---|
| 138 | SELFREFO(:, 5) = (/ & |
---|
| 139 | & 1.23574E+00_JPRB, 1.12928E+00_JPRB, 1.03200E+00_JPRB, 9.43096E-01_JPRB, 8.61851E-01_JPRB, & |
---|
| 140 | & 7.87605E-01_JPRB, 7.19755E-01_JPRB, 6.57750E-01_JPRB, 6.01087E-01_JPRB, 5.49305E-01_JPRB/) |
---|
| 141 | SELFREFO(:, 6) = (/ & |
---|
| 142 | & 1.20921E+00_JPRB, 1.10660E+00_JPRB, 1.01270E+00_JPRB, 9.26766E-01_JPRB, 8.48124E-01_JPRB, & |
---|
| 143 | & 7.76155E-01_JPRB, 7.10293E-01_JPRB, 6.50020E-01_JPRB, 5.94861E-01_JPRB, 5.44384E-01_JPRB/) |
---|
| 144 | SELFREFO(:, 7) = (/ & |
---|
| 145 | & 1.38112E+00_JPRB, 1.26727E+00_JPRB, 1.16280E+00_JPRB, 1.06694E+00_JPRB, 9.78990E-01_JPRB, & |
---|
| 146 | & 8.98287E-01_JPRB, 8.24236E-01_JPRB, 7.56290E-01_JPRB, 6.93945E-01_JPRB, 6.36739E-01_JPRB/) |
---|
| 147 | SELFREFO(:, 8) = (/ & |
---|
| 148 | & 1.30321E+00_JPRB, 1.20127E+00_JPRB, 1.10730E+00_JPRB, 1.02068E+00_JPRB, 9.40840E-01_JPRB, & |
---|
| 149 | & 8.67243E-01_JPRB, 7.99403E-01_JPRB, 7.36870E-01_JPRB, 6.79229E-01_JPRB, 6.26096E-01_JPRB/) |
---|
| 150 | SELFREFO(:, 9) = (/ & |
---|
| 151 | & 1.26713E+00_JPRB, 1.17927E+00_JPRB, 1.09750E+00_JPRB, 1.02140E+00_JPRB, 9.50575E-01_JPRB, & |
---|
| 152 | & 8.84662E-01_JPRB, 8.23319E-01_JPRB, 7.66230E-01_JPRB, 7.13099E-01_JPRB, 6.63653E-01_JPRB/) |
---|
| 153 | SELFREFO(:,10) = (/ & |
---|
| 154 | & 1.49824E+00_JPRB, 1.37053E+00_JPRB, 1.25370E+00_JPRB, 1.14683E+00_JPRB, 1.04908E+00_JPRB, & |
---|
| 155 | & 9.59651E-01_JPRB, 8.77849E-01_JPRB, 8.03020E-01_JPRB, 7.34569E-01_JPRB, 6.71954E-01_JPRB/) |
---|
| 156 | SELFREFO(:,11) = (/ & |
---|
| 157 | & 1.44786E+00_JPRB, 1.34594E+00_JPRB, 1.25120E+00_JPRB, 1.16313E+00_JPRB, 1.08125E+00_JPRB, & |
---|
| 158 | & 1.00514E+00_JPRB, 9.34392E-01_JPRB, 8.68620E-01_JPRB, 8.07477E-01_JPRB, 7.50639E-01_JPRB/) |
---|
| 159 | SELFREFO(:,12) = (/ & |
---|
| 160 | & 1.38460E+00_JPRB, 1.30437E+00_JPRB, 1.22880E+00_JPRB, 1.15760E+00_JPRB, 1.09053E+00_JPRB, & |
---|
| 161 | & 1.02735E+00_JPRB, 9.67825E-01_JPRB, 9.11750E-01_JPRB, 8.58924E-01_JPRB, 8.09159E-01_JPRB/) |
---|
| 162 | SELFREFO(:,13) = (/ & |
---|
| 163 | & 1.51953E+00_JPRB, 1.42822E+00_JPRB, 1.34240E+00_JPRB, 1.26173E+00_JPRB, 1.18592E+00_JPRB, & |
---|
| 164 | & 1.11465E+00_JPRB, 1.04768E+00_JPRB, 9.84720E-01_JPRB, 9.25548E-01_JPRB, 8.69932E-01_JPRB/) |
---|
| 165 | SELFREFO(:,14) = (/ & |
---|
| 166 | & 1.62608E+00_JPRB, 1.51021E+00_JPRB, 1.40260E+00_JPRB, 1.30266E+00_JPRB, 1.20983E+00_JPRB, & |
---|
| 167 | & 1.12363E+00_JPRB, 1.04356E+00_JPRB, 9.69200E-01_JPRB, 9.00138E-01_JPRB, 8.35998E-01_JPRB/) |
---|
| 168 | SELFREFO(:,15) = (/ & |
---|
| 169 | & 1.65383E+00_JPRB, 1.54808E+00_JPRB, 1.44910E+00_JPRB, 1.35644E+00_JPRB, 1.26971E+00_JPRB, & |
---|
| 170 | & 1.18853E+00_JPRB, 1.11254E+00_JPRB, 1.04140E+00_JPRB, 9.74813E-01_JPRB, 9.12484E-01_JPRB/) |
---|
| 171 | SELFREFO(:,16) = (/ & |
---|
| 172 | & 1.78105E+00_JPRB, 1.61421E+00_JPRB, 1.46300E+00_JPRB, 1.32595E+00_JPRB, 1.20174E+00_JPRB, & |
---|
| 173 | & 1.08917E+00_JPRB, 9.87141E-01_JPRB, 8.94670E-01_JPRB, 8.10861E-01_JPRB, 7.34904E-01_JPRB/) |
---|
| 174 | |
---|
| 175 | IF (LHOOK) CALL DR_HOOK('RRTM_KGB2',1,ZHOOK_HANDLE) |
---|
| 176 | RETURN |
---|
| 177 | |
---|
| 178 | 1001 CONTINUE |
---|
| 179 | CALL ABOR1("RRTM_KGB2:ERROR READING FILE RADRRTM") |
---|
| 180 | |
---|
| 181 | END SUBROUTINE RRTM_KGB2 |
---|