[4773] | 1 | SUBROUTINE RRTM_KGB10 |
---|
| 2 | |
---|
| 3 | ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. |
---|
| 4 | ! BAND 10: 1390-1480 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 101306 updated to rrtmg v4.85 |
---|
| 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 | |
---|
| 20 | USE YOERRTO10, ONLY : KAO, KBO, KAO_D, KBO_D, FRACREFAO, FRACREFBO, SELFREFO, FORREFO |
---|
| 21 | |
---|
| 22 | ! ------------------------------------------------------------------ |
---|
| 23 | |
---|
| 24 | IMPLICIT NONE |
---|
| 25 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
| 26 | |
---|
| 27 | |
---|
| 28 | #include "abor1.intfb.h" |
---|
| 29 | |
---|
| 30 | IF (LHOOK) CALL DR_HOOK('RRTM_KGB10',0,ZHOOK_HANDLE) |
---|
| 31 | |
---|
| 32 | IF( MYPROC==1 )THEN |
---|
| 33 | READ(NULRAD,ERR=1001) KAO_D,KBO_D |
---|
| 34 | KAO = REAL(KAO_D,JPRB) |
---|
| 35 | KBO = REAL(KBO_D,JPRB) |
---|
| 36 | ENDIF |
---|
| 37 | IF( NPROC>1 )THEN |
---|
| 38 | CALL MPL_BROADCAST (KAO,MTAGRAD,1,CDSTRING='RRTM_KGB10:') |
---|
| 39 | CALL MPL_BROADCAST (KBO,MTAGRAD,1,CDSTRING='RRTM_KGB10:') |
---|
| 40 | ENDIF |
---|
| 41 | |
---|
| 42 | ! Planck fraction mapping level : P = 212.7250, T = 223.06 K |
---|
| 43 | FRACREFAO(:) = (/ & |
---|
| 44 | & 1.6909E-01_JPRB, 1.5419E-01_JPRB, 1.3999E-01_JPRB, 1.2637E-01_JPRB, & |
---|
| 45 | & 1.1429E-01_JPRB, 9.9676E-02_JPRB, 8.0093E-02_JPRB, 6.0283E-02_JPRB, & |
---|
| 46 | & 4.1077E-02_JPRB, 4.4857E-03_JPRB, 3.6545E-03_JPRB, 2.9243E-03_JPRB, & |
---|
| 47 | & 2.0407E-03_JPRB, 1.2891E-03_JPRB, 4.8767E-04_JPRB, 6.7748E-05_JPRB/) |
---|
| 48 | |
---|
| 49 | ! Planck fraction mapping level : P = 95.58350 mb, T = 215.70 K |
---|
| 50 | FRACREFBO(:) = (/ & |
---|
| 51 | & 1.7391E-01_JPRB, 1.5680E-01_JPRB, 1.4419E-01_JPRB, 1.2672E-01_JPRB, & |
---|
| 52 | & 1.0708E-01_JPRB, 9.7034E-02_JPRB, 7.8545E-02_JPRB, 5.9784E-02_JPRB, & |
---|
| 53 | & 4.0879E-02_JPRB, 4.4704E-03_JPRB, 3.7150E-03_JPRB, 2.9038E-03_JPRB, & |
---|
| 54 | & 2.1454E-03_JPRB, 1.2802E-03_JPRB, 4.8328E-04_JPRB, 6.7378E-05_JPRB/) |
---|
| 55 | |
---|
| 56 | |
---|
| 57 | ! ------------------------------------------------------------------ |
---|
| 58 | |
---|
| 59 | ! The array KAO contains absorption coefs at the 16 chosen g-values |
---|
| 60 | ! for a range of pressure levels > ~100mb and temperatures. The first |
---|
| 61 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
| 62 | ! different temperatures. More specifically, JT = 3 means that the |
---|
| 63 | ! data are for the corresponding TREF for this pressure level, |
---|
| 64 | ! JT = 2 refers to the temperatureTREF-15, JT = 1 is for TREF-30, |
---|
| 65 | ! JT = 4 is for TREF+15, and JT = 5 is for TREF+30. The second |
---|
| 66 | ! index, JP, runs from 1 to 13 and refers to the corresponding |
---|
| 67 | ! pressure level in PREF (e.g. JP = 1 is for a pressure of 1053.63 mb). |
---|
| 68 | ! The third index, IG, goes from 1 to 16, and tells us which |
---|
| 69 | ! g-interval the absorption coefficients are for. |
---|
| 70 | |
---|
| 71 | |
---|
| 72 | |
---|
| 73 | ! The array KBO contains absorption coefs at the 16 chosen g-values |
---|
| 74 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
| 75 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
| 76 | ! different temperatures. More specifically, JT = 3 means that the |
---|
| 77 | ! data are for the reference temperature TREF for this pressure |
---|
| 78 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
| 79 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
| 80 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
| 81 | ! reference pressure level (see taumol.f for the value of these |
---|
| 82 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
| 83 | ! and tells us which g-interval the absorption coefficients are for. |
---|
| 84 | |
---|
| 85 | |
---|
| 86 | ! The array FORREFO contains the coefficient of the water vapor |
---|
| 87 | ! foreign-continuum (including the energy term). The first |
---|
| 88 | ! index refers to reference temperature (296,260,224,260) and |
---|
| 89 | ! pressure (970,475,219,3 mbar) levels. The second index |
---|
| 90 | ! runs over the g-channel (1 to 16). |
---|
| 91 | |
---|
| 92 | FORREFO(1,:) = (/ & |
---|
| 93 | &1.0515E-02_JPRB,1.4860E-02_JPRB,1.7181E-02_JPRB,1.6642E-02_JPRB,1.6644E-02_JPRB,1.5649E-02_JPRB, & |
---|
| 94 | &1.7734E-02_JPRB,1.7521E-02_JPRB,1.7868E-02_JPRB,1.8400E-02_JPRB,1.9361E-02_JPRB,2.1487E-02_JPRB, & |
---|
| 95 | &2.0192E-02_JPRB,1.6545E-02_JPRB,2.0922E-02_JPRB,2.0922E-02_JPRB/) |
---|
| 96 | FORREFO(2,:) = (/ & |
---|
| 97 | &1.0423E-02_JPRB,1.4593E-02_JPRB,1.6329E-02_JPRB,1.7071E-02_JPRB,1.7252E-02_JPRB,1.6188E-02_JPRB, & |
---|
| 98 | &1.7752E-02_JPRB,1.7913E-02_JPRB,1.7551E-02_JPRB,1.8203E-02_JPRB,1.7946E-02_JPRB,1.9828E-02_JPRB, & |
---|
| 99 | &2.1566E-02_JPRB,1.9707E-02_JPRB,2.0944E-02_JPRB,2.0944E-02_JPRB/) |
---|
| 100 | FORREFO(3,:) = (/ & |
---|
| 101 | &9.2770E-03_JPRB,1.2818E-02_JPRB,1.7181E-02_JPRB,1.7858E-02_JPRB,1.7888E-02_JPRB,1.7121E-02_JPRB, & |
---|
| 102 | &1.8116E-02_JPRB,1.8230E-02_JPRB,1.7719E-02_JPRB,1.7833E-02_JPRB,1.8438E-02_JPRB,1.7995E-02_JPRB, & |
---|
| 103 | &2.0895E-02_JPRB,2.1525E-02_JPRB,2.0517E-02_JPRB,2.0954E-02_JPRB/) |
---|
| 104 | FORREFO(4,:) = (/ & |
---|
| 105 | &8.3290E-03_JPRB,1.3483E-02_JPRB,1.5432E-02_JPRB,2.0793E-02_JPRB,1.8404E-02_JPRB,1.7470E-02_JPRB, & |
---|
| 106 | &1.7253E-02_JPRB,1.7132E-02_JPRB,1.7119E-02_JPRB,1.7376E-02_JPRB,1.7030E-02_JPRB,1.6847E-02_JPRB, & |
---|
| 107 | &1.5562E-02_JPRB,1.6836E-02_JPRB,1.8746E-02_JPRB,2.1233E-02_JPRB/) |
---|
| 108 | |
---|
| 109 | ! The array SELFREFO 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 | SELFREFO(:, 1) = (/ & |
---|
| 116 | & 2.41120E-01_JPRB, 2.27071E-01_JPRB, 2.13840E-01_JPRB, 2.01380E-01_JPRB, 1.89646E-01_JPRB, & |
---|
| 117 | & 1.78596E-01_JPRB, 1.68190E-01_JPRB, 1.58390E-01_JPRB, 1.49161E-01_JPRB, 1.40470E-01_JPRB/) |
---|
| 118 | SELFREFO(:, 2) = (/ & |
---|
| 119 | & 3.11156E-01_JPRB, 2.92249E-01_JPRB, 2.74490E-01_JPRB, 2.57810E-01_JPRB, 2.42144E-01_JPRB, & |
---|
| 120 | & 2.27430E-01_JPRB, 2.13610E-01_JPRB, 2.00630E-01_JPRB, 1.88439E-01_JPRB, 1.76988E-01_JPRB/) |
---|
| 121 | SELFREFO(:, 3) = (/ & |
---|
| 122 | & 3.37148E-01_JPRB, 3.17767E-01_JPRB, 2.99500E-01_JPRB, 2.82283E-01_JPRB, 2.66056E-01_JPRB, & |
---|
| 123 | & 2.50762E-01_JPRB, 2.36347E-01_JPRB, 2.22760E-01_JPRB, 2.09955E-01_JPRB, 1.97885E-01_JPRB/) |
---|
| 124 | SELFREFO(:, 4) = (/ & |
---|
| 125 | & 3.57139E-01_JPRB, 3.32763E-01_JPRB, 3.10050E-01_JPRB, 2.88888E-01_JPRB, 2.69170E-01_JPRB, & |
---|
| 126 | & 2.50798E-01_JPRB, 2.33680E-01_JPRB, 2.17730E-01_JPRB, 2.02869E-01_JPRB, 1.89022E-01_JPRB/) |
---|
| 127 | SELFREFO(:, 5) = (/ & |
---|
| 128 | & 3.60626E-01_JPRB, 3.35433E-01_JPRB, 3.12000E-01_JPRB, 2.90204E-01_JPRB, 2.69931E-01_JPRB, & |
---|
| 129 | & 2.51074E-01_JPRB, 2.33534E-01_JPRB, 2.17220E-01_JPRB, 2.02045E-01_JPRB, 1.87931E-01_JPRB/) |
---|
| 130 | SELFREFO(:, 6) = (/ & |
---|
| 131 | & 3.42420E-01_JPRB, 3.18795E-01_JPRB, 2.96800E-01_JPRB, 2.76323E-01_JPRB, 2.57258E-01_JPRB, & |
---|
| 132 | & 2.39509E-01_JPRB, 2.22985E-01_JPRB, 2.07600E-01_JPRB, 1.93277E-01_JPRB, 1.79942E-01_JPRB/) |
---|
| 133 | SELFREFO(:, 7) = (/ & |
---|
| 134 | & 3.65491E-01_JPRB, 3.41599E-01_JPRB, 3.19270E-01_JPRB, 2.98400E-01_JPRB, 2.78895E-01_JPRB, & |
---|
| 135 | & 2.60664E-01_JPRB, 2.43625E-01_JPRB, 2.27700E-01_JPRB, 2.12816E-01_JPRB, 1.98905E-01_JPRB/) |
---|
| 136 | SELFREFO(:, 8) = (/ & |
---|
| 137 | & 3.70354E-01_JPRB, 3.45005E-01_JPRB, 3.21390E-01_JPRB, 2.99392E-01_JPRB, 2.78899E-01_JPRB, & |
---|
| 138 | & 2.59809E-01_JPRB, 2.42026E-01_JPRB, 2.25460E-01_JPRB, 2.10028E-01_JPRB, 1.95652E-01_JPRB/) |
---|
| 139 | SELFREFO(:, 9) = (/ & |
---|
| 140 | & 3.60483E-01_JPRB, 3.37846E-01_JPRB, 3.16630E-01_JPRB, 2.96747E-01_JPRB, 2.78112E-01_JPRB, & |
---|
| 141 | & 2.60648E-01_JPRB, 2.44280E-01_JPRB, 2.28940E-01_JPRB, 2.14563E-01_JPRB, 2.01090E-01_JPRB/) |
---|
| 142 | SELFREFO(:,10) = (/ & |
---|
| 143 | & 3.71845E-01_JPRB, 3.48164E-01_JPRB, 3.25990E-01_JPRB, 3.05229E-01_JPRB, 2.85790E-01_JPRB, & |
---|
| 144 | & 2.67588E-01_JPRB, 2.50547E-01_JPRB, 2.34590E-01_JPRB, 2.19650E-01_JPRB, 2.05661E-01_JPRB/) |
---|
| 145 | SELFREFO(:,11) = (/ & |
---|
| 146 | & 3.60606E-01_JPRB, 3.40789E-01_JPRB, 3.22060E-01_JPRB, 3.04361E-01_JPRB, 2.87634E-01_JPRB, & |
---|
| 147 | & 2.71826E-01_JPRB, 2.56888E-01_JPRB, 2.42770E-01_JPRB, 2.29428E-01_JPRB, 2.16819E-01_JPRB/) |
---|
| 148 | SELFREFO(:,12) = (/ & |
---|
| 149 | & 3.90046E-01_JPRB, 3.68879E-01_JPRB, 3.48860E-01_JPRB, 3.29928E-01_JPRB, 3.12023E-01_JPRB, & |
---|
| 150 | & 2.95089E-01_JPRB, 2.79075E-01_JPRB, 2.63930E-01_JPRB, 2.49607E-01_JPRB, 2.36061E-01_JPRB/) |
---|
| 151 | SELFREFO(:,13) = (/ & |
---|
| 152 | & 4.38542E-01_JPRB, 4.05139E-01_JPRB, 3.74280E-01_JPRB, 3.45771E-01_JPRB, 3.19434E-01_JPRB, & |
---|
| 153 | & 2.95103E-01_JPRB, 2.72626E-01_JPRB, 2.51860E-01_JPRB, 2.32676E-01_JPRB, 2.14953E-01_JPRB/) |
---|
| 154 | SELFREFO(:,14) = (/ & |
---|
| 155 | & 4.19448E-01_JPRB, 3.81920E-01_JPRB, 3.47750E-01_JPRB, 3.16637E-01_JPRB, 2.88307E-01_JPRB, & |
---|
| 156 | & 2.62513E-01_JPRB, 2.39026E-01_JPRB, 2.17640E-01_JPRB, 1.98168E-01_JPRB, 1.80438E-01_JPRB/) |
---|
| 157 | SELFREFO(:,15) = (/ & |
---|
| 158 | & 4.20276E-01_JPRB, 3.92281E-01_JPRB, 3.66150E-01_JPRB, 3.41760E-01_JPRB, 3.18995E-01_JPRB, & |
---|
| 159 | & 2.97746E-01_JPRB, 2.77912E-01_JPRB, 2.59400E-01_JPRB, 2.42121E-01_JPRB, 2.25993E-01_JPRB/) |
---|
| 160 | SELFREFO(:,16) = (/ & |
---|
| 161 | & 4.20276E-01_JPRB, 3.92281E-01_JPRB, 3.66150E-01_JPRB, 3.41760E-01_JPRB, 3.18995E-01_JPRB, & |
---|
| 162 | & 2.97746E-01_JPRB, 2.77912E-01_JPRB, 2.59400E-01_JPRB, 2.42121E-01_JPRB, 2.25993E-01_JPRB/) |
---|
| 163 | |
---|
| 164 | IF (LHOOK) CALL DR_HOOK('RRTM_KGB10',1,ZHOOK_HANDLE) |
---|
| 165 | RETURN |
---|
| 166 | |
---|
| 167 | 1001 CONTINUE |
---|
| 168 | CALL ABOR1("RRTM_KGB10:ERROR READING FILE RADRRTM") |
---|
| 169 | |
---|
| 170 | END SUBROUTINE RRTM_KGB10 |
---|