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 |
---|