source: LMDZ6/trunk/libf/phylmd/ecrad/rrtm_kgb14.F90 @ 4127

Last change on this file since 4127 was 3908, checked in by idelkadi, 4 years ago

Online implementation of the radiative transfer code ECRAD in the LMDZ model.

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