1 | SUBROUTINE RRTM_KGB14 |
---|
2 | |
---|
3 | ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. |
---|
4 | ! BAND 14: 2250-2380 cm-1 (low - CO2; high - CO2) |
---|
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 201306 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 YOERRTO14, ONLY : KAO ,KBO ,SELFREFO, FORREFO ,FRACREFAO ,FRACREFBO, & |
---|
21 | & KAO_D, KBO_D |
---|
22 | |
---|
23 | ! ------------------------------------------------------------------ |
---|
24 | |
---|
25 | IMPLICIT NONE |
---|
26 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
27 | |
---|
28 | #include "abor1.intfb.h" |
---|
29 | |
---|
30 | IF (LHOOK) CALL DR_HOOK('RRTM_KGB14',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_KGB14:') |
---|
39 | CALL MPL_BROADCAST (KBO,MTAGRAD,1,CDSTRING='RRTM_KGB14:') |
---|
40 | ENDIF |
---|
41 | |
---|
42 | ! Planck fraction mapping level : P = 142.5940 mb, T = 215.70 K |
---|
43 | FRACREFAO(:) = (/ & |
---|
44 | & 1.9360E-01_JPRB, 1.7276E-01_JPRB, 1.4811E-01_JPRB, 1.2238E-01_JPRB, & |
---|
45 | & 1.0242E-01_JPRB, 8.6830E-02_JPRB, 7.1890E-02_JPRB, 5.4030E-02_JPRB, & |
---|
46 | & 3.5075E-02_JPRB, 3.8052E-03_JPRB, 3.1458E-03_JPRB, 2.4873E-03_JPRB, & |
---|
47 | & 1.8182E-03_JPRB, 1.1563E-03_JPRB, 4.3251E-04_JPRB, 5.7744E-05_JPRB/) |
---|
48 | |
---|
49 | ! Planck fraction mapping level : P = 4.758820mb, T = 250.85 K |
---|
50 | FRACREFBO(:) = (/ & |
---|
51 | & 1.8599E-01_JPRB, 1.6646E-01_JPRB, 1.4264E-01_JPRB, 1.2231E-01_JPRB, & |
---|
52 | & 1.0603E-01_JPRB, 9.2014E-02_JPRB, 7.5287E-02_JPRB, 5.6758E-02_JPRB, & |
---|
53 | & 3.8386E-02_JPRB, 4.2139E-03_JPRB, 3.5399E-03_JPRB, 2.7381E-03_JPRB, & |
---|
54 | & 1.9202E-03_JPRB, 1.2083E-03_JPRB, 4.5395E-04_JPRB, 6.2699E-05_JPRB/) |
---|
55 | |
---|
56 | ! ------------------------------------------------------------------ |
---|
57 | |
---|
58 | ! The array KAO contains absorption coefs at the 16 chosen g-values |
---|
59 | ! for a range of pressure levels > ~100mb and temperatures. The first |
---|
60 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
61 | ! different temperatures. More specifically, JT = 3 means that the |
---|
62 | ! data are for the corresponding TREF for this pressure level, |
---|
63 | ! JT = 2 refers to the temperatureTREF-15, JT = 1 is for TREF-30, |
---|
64 | ! JT = 4 is for TREF+15, and JT = 5 is for TREF+30. The second |
---|
65 | ! index, JP, runs from 1 to 13 and refers to the corresponding |
---|
66 | ! pressure level in PREF (e.g. JP = 1 is for a pressure of 1053.63 mb). |
---|
67 | ! The third index, IG, goes from 1 to 16, and tells us which |
---|
68 | ! g-interval the absorption coefficients are for. |
---|
69 | |
---|
70 | |
---|
71 | |
---|
72 | ! The array KBO contains absorption coefs at the 16 chosen g-values |
---|
73 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
74 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
75 | ! different temperatures. More specifically, JT = 3 means that the |
---|
76 | ! data are for the reference temperature TREF for this pressure |
---|
77 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
78 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
79 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
80 | ! reference pressure level (see taumol.f for the value of these |
---|
81 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
82 | ! and tells us which g-interval the absorption coefficients are for. |
---|
83 | |
---|
84 | |
---|
85 | ! The array FORREFO contains the coefficient of the water vapor |
---|
86 | ! foreign-continuum (including the energy term). The first |
---|
87 | ! index refers to reference temperature (296,260,224,260) and |
---|
88 | ! pressure (970,475,219,3 mbar) levels. The second index |
---|
89 | ! runs over the g-channel (1 to 16). |
---|
90 | |
---|
91 | FORREFO(1,:) = (/ & |
---|
92 | &2.7075E-06_JPRB,2.2609E-06_JPRB,1.5633E-06_JPRB,8.7484E-07_JPRB,5.5470E-07_JPRB,4.8456E-07_JPRB, & |
---|
93 | &4.7463E-07_JPRB,4.6154E-07_JPRB,4.4425E-07_JPRB,4.2960E-07_JPRB,4.2626E-07_JPRB,4.1715E-07_JPRB, & |
---|
94 | &4.2607E-07_JPRB,3.6616E-07_JPRB,2.6366E-07_JPRB,2.6029E-07_JPRB/) |
---|
95 | FORREFO(2,:) = (/ & |
---|
96 | &2.6759E-06_JPRB,2.2237E-06_JPRB,1.4466E-06_JPRB,9.3032E-07_JPRB,6.4927E-07_JPRB,5.4809E-07_JPRB, & |
---|
97 | &4.9504E-07_JPRB,4.6305E-07_JPRB,4.4873E-07_JPRB,4.2146E-07_JPRB,4.2176E-07_JPRB,4.2812E-07_JPRB, & |
---|
98 | &4.0529E-07_JPRB,4.0969E-07_JPRB,2.9442E-07_JPRB,2.6821E-07_JPRB/) |
---|
99 | FORREFO(3,:) = (/ & |
---|
100 | &2.6608E-06_JPRB,2.1140E-06_JPRB,1.4838E-06_JPRB,9.2083E-07_JPRB,6.3350E-07_JPRB,5.7195E-07_JPRB, & |
---|
101 | &6.2253E-07_JPRB,5.1783E-07_JPRB,4.4749E-07_JPRB,4.3261E-07_JPRB,4.2553E-07_JPRB,4.2175E-07_JPRB, & |
---|
102 | &4.1085E-07_JPRB,4.0358E-07_JPRB,3.5340E-07_JPRB,2.7191E-07_JPRB/) |
---|
103 | FORREFO(4,:) = (/ & |
---|
104 | &2.6412E-06_JPRB,1.9814E-06_JPRB,1.2672E-06_JPRB,8.1129E-07_JPRB,7.1447E-07_JPRB,7.5026E-07_JPRB, & |
---|
105 | &7.4386E-07_JPRB,7.2759E-07_JPRB,7.3583E-07_JPRB,7.6493E-07_JPRB,8.8959E-07_JPRB,7.5534E-07_JPRB, & |
---|
106 | &5.3734E-07_JPRB,4.5572E-07_JPRB,4.1676E-07_JPRB,3.6198E-07_JPRB/) |
---|
107 | |
---|
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 | & 4.67262E-03_JPRB, 3.95211E-03_JPRB, 3.34270E-03_JPRB, 2.82726E-03_JPRB, 2.39130E-03_JPRB, & |
---|
117 | & 2.02256E-03_JPRB, 1.71069E-03_JPRB, 1.44690E-03_JPRB, 1.22379E-03_JPRB, 1.03508E-03_JPRB/) |
---|
118 | SELFREFO(:, 2) = (/ & |
---|
119 | & 4.42593E-03_JPRB, 3.73338E-03_JPRB, 3.14920E-03_JPRB, 2.65643E-03_JPRB, 2.24076E-03_JPRB, & |
---|
120 | & 1.89014E-03_JPRB, 1.59438E-03_JPRB, 1.34490E-03_JPRB, 1.13446E-03_JPRB, 9.56943E-04_JPRB/) |
---|
121 | SELFREFO(:, 3) = (/ & |
---|
122 | & 3.96072E-03_JPRB, 3.33789E-03_JPRB, 2.81300E-03_JPRB, 2.37065E-03_JPRB, 1.99786E-03_JPRB, & |
---|
123 | & 1.68369E-03_JPRB, 1.41893E-03_JPRB, 1.19580E-03_JPRB, 1.00776E-03_JPRB, 8.49286E-04_JPRB/) |
---|
124 | SELFREFO(:, 4) = (/ & |
---|
125 | & 3.71833E-03_JPRB, 3.10030E-03_JPRB, 2.58500E-03_JPRB, 2.15535E-03_JPRB, 1.79711E-03_JPRB, & |
---|
126 | & 1.49841E-03_JPRB, 1.24936E-03_JPRB, 1.04170E-03_JPRB, 8.68558E-04_JPRB, 7.24195E-04_JPRB/) |
---|
127 | SELFREFO(:, 5) = (/ & |
---|
128 | & 3.55755E-03_JPRB, 2.95355E-03_JPRB, 2.45210E-03_JPRB, 2.03578E-03_JPRB, 1.69015E-03_JPRB, & |
---|
129 | & 1.40320E-03_JPRB, 1.16497E-03_JPRB, 9.67180E-04_JPRB, 8.02973E-04_JPRB, 6.66646E-04_JPRB/) |
---|
130 | SELFREFO(:, 6) = (/ & |
---|
131 | & 3.47601E-03_JPRB, 2.88628E-03_JPRB, 2.39660E-03_JPRB, 1.99000E-03_JPRB, 1.65238E-03_JPRB, & |
---|
132 | & 1.37204E-03_JPRB, 1.13927E-03_JPRB, 9.45980E-04_JPRB, 7.85487E-04_JPRB, 6.52224E-04_JPRB/) |
---|
133 | SELFREFO(:, 7) = (/ & |
---|
134 | & 3.44479E-03_JPRB, 2.86224E-03_JPRB, 2.37820E-03_JPRB, 1.97602E-03_JPRB, 1.64185E-03_JPRB, & |
---|
135 | & 1.36420E-03_JPRB, 1.13350E-03_JPRB, 9.41810E-04_JPRB, 7.82539E-04_JPRB, 6.50204E-04_JPRB/) |
---|
136 | SELFREFO(:, 8) = (/ & |
---|
137 | & 3.40154E-03_JPRB, 2.82953E-03_JPRB, 2.35370E-03_JPRB, 1.95789E-03_JPRB, 1.62864E-03_JPRB, & |
---|
138 | & 1.35476E-03_JPRB, 1.12694E-03_JPRB, 9.37430E-04_JPRB, 7.79788E-04_JPRB, 6.48655E-04_JPRB/) |
---|
139 | SELFREFO(:, 9) = (/ & |
---|
140 | & 3.39380E-03_JPRB, 2.82288E-03_JPRB, 2.34800E-03_JPRB, 1.95301E-03_JPRB, 1.62446E-03_JPRB, & |
---|
141 | & 1.35119E-03_JPRB, 1.12389E-03_JPRB, 9.34820E-04_JPRB, 7.77560E-04_JPRB, 6.46755E-04_JPRB/) |
---|
142 | SELFREFO(:,10) = (/ & |
---|
143 | & 3.37185E-03_JPRB, 2.80654E-03_JPRB, 2.33600E-03_JPRB, 1.94435E-03_JPRB, 1.61837E-03_JPRB, & |
---|
144 | & 1.34704E-03_JPRB, 1.12120E-03_JPRB, 9.33220E-04_JPRB, 7.76759E-04_JPRB, 6.46530E-04_JPRB/) |
---|
145 | SELFREFO(:,11) = (/ & |
---|
146 | & 3.37924E-03_JPRB, 2.81172E-03_JPRB, 2.33950E-03_JPRB, 1.94659E-03_JPRB, 1.61967E-03_JPRB, & |
---|
147 | & 1.34765E-03_JPRB, 1.12132E-03_JPRB, 9.33000E-04_JPRB, 7.76306E-04_JPRB, 6.45930E-04_JPRB/) |
---|
148 | SELFREFO(:,12) = (/ & |
---|
149 | & 3.39658E-03_JPRB, 2.82289E-03_JPRB, 2.34610E-03_JPRB, 1.94984E-03_JPRB, 1.62051E-03_JPRB, & |
---|
150 | & 1.34680E-03_JPRB, 1.11933E-03_JPRB, 9.30270E-04_JPRB, 7.73146E-04_JPRB, 6.42561E-04_JPRB/) |
---|
151 | SELFREFO(:,13) = (/ & |
---|
152 | & 3.36070E-03_JPRB, 2.79913E-03_JPRB, 2.33140E-03_JPRB, 1.94183E-03_JPRB, 1.61735E-03_JPRB, & |
---|
153 | & 1.34709E-03_JPRB, 1.12199E-03_JPRB, 9.34510E-04_JPRB, 7.78354E-04_JPRB, 6.48292E-04_JPRB/) |
---|
154 | SELFREFO(:,14) = (/ & |
---|
155 | & 3.40428E-03_JPRB, 2.81994E-03_JPRB, 2.33590E-03_JPRB, 1.93495E-03_JPRB, 1.60282E-03_JPRB, & |
---|
156 | & 1.32770E-03_JPRB, 1.09980E-03_JPRB, 9.11020E-04_JPRB, 7.54645E-04_JPRB, 6.25111E-04_JPRB/) |
---|
157 | SELFREFO(:,15) = (/ & |
---|
158 | & 3.27075E-03_JPRB, 2.70783E-03_JPRB, 2.24180E-03_JPRB, 1.85597E-03_JPRB, 1.53655E-03_JPRB, & |
---|
159 | & 1.27210E-03_JPRB, 1.05317E-03_JPRB, 8.71910E-04_JPRB, 7.21849E-04_JPRB, 5.97615E-04_JPRB/) |
---|
160 | SELFREFO(:,16) = (/ & |
---|
161 | & 3.23123E-03_JPRB, 2.67891E-03_JPRB, 2.22100E-03_JPRB, 1.84136E-03_JPRB, 1.52661E-03_JPRB, & |
---|
162 | & 1.26567E-03_JPRB, 1.04932E-03_JPRB, 8.69960E-04_JPRB, 7.21256E-04_JPRB, 5.97970E-04_JPRB/) |
---|
163 | |
---|
164 | IF (LHOOK) CALL DR_HOOK('RRTM_KGB14',1,ZHOOK_HANDLE) |
---|
165 | RETURN |
---|
166 | |
---|
167 | 1001 CONTINUE |
---|
168 | CALL ABOR1("RRTM_KGB14:ERROR READING FILE RADRRTM") |
---|
169 | |
---|
170 | END SUBROUTINE RRTM_KGB14 |
---|