source: LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/ecrad/rrtm_kgb10.F90 @ 3880

Last change on this file since 3880 was 3880, checked in by idelkadi, 3 years ago

Online implementation of the radiative transfer code ECRAD in LMDZ.

  • Inclusion of the ecrad directory containing the sources of the ECRAD code
  • Adaptation of compilation scripts (CPP_ECRAD keys)
  • Call of ecrad in radlwsw_m.F90 under the logical key iflag_rrtm = 2
File size: 9.2 KB
Line 
1SUBROUTINE 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!     ------------------------------------------------------------------
11
12USE PARKIND1  ,ONLY : JPRB
13USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
14USE YOMLUN    ,ONLY : NULRAD
15USE YOMMP0    , ONLY : NPROC, MYPROC
16USE MPL_MODULE,ONLY : MPL_BROADCAST
17USE YOMTAG    ,ONLY : MTAGRAD
18
19USE YOERRTO10, ONLY : KAO     ,KBO      ,KAO_D,KBO_D,FRACREFAO   ,FRACREFBO, SELFREFO, FORREFO
20
21!     ------------------------------------------------------------------
22
23IMPLICIT NONE
24REAL(KIND=JPRB) :: ZHOOK_HANDLE
25
26
27#include "abor1.intfb.h"
28
29IF (LHOOK) CALL DR_HOOK('RRTM_KGB10',0,ZHOOK_HANDLE)
30
31IF( MYPROC==1 )THEN
32  READ(NULRAD,ERR=1001) KAO_D,KBO_D
33 ! Convert the data into model actual precision.
34  KAO = REAL(KAO_D,JPRB)
35  KBO = REAL(KBO_D,JPRB)
36ENDIF
37IF( NPROC>1 )THEN
38  CALL MPL_BROADCAST (KAO,MTAGRAD,1,CDSTRING='RRTM_KGB10:')
39  CALL MPL_BROADCAST (KBO,MTAGRAD,1,CDSTRING='RRTM_KGB10:')
40ENDIF
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
165IF (LHOOK) CALL DR_HOOK('RRTM_KGB10',1,ZHOOK_HANDLE)
166RETURN
167
1681001 CONTINUE
169CALL ABOR1("RRTM_KGB10:ERROR READING FILE RADRRTM")
170
171END SUBROUTINE RRTM_KGB10
Note: See TracBrowser for help on using the repository browser.