source: LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/ecrad/srtm_kgb29.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: 10.0 KB
Line 
1SUBROUTINE SRTM_KGB29
2
3!     Originally by J.Delamere, Atmospheric & Environmental Research.
4!     Revision: 2.4
5!     BAND 29:   820-2600 cm-1 (low - H2O; high - CO2)
6!     Reformatted for F90 by JJMorcrette, ECMWF
7!     G.Mozdzynski March 2011 read constants from files
8!     T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring.
9!     ------------------------------------------------------------------
10
11USE PARKIND1  , ONLY : JPRB
12USE YOMHOOK   , ONLY : LHOOK, DR_HOOK
13USE YOMLUN    , ONLY : NULRAD
14USE YOMMP0    , ONLY : NPROC, MYPROC
15USE MPL_MODULE, ONLY : MPL_BROADCAST
16USE YOMTAG    , ONLY : MTAGRAD
17USE YOESRTA29 , ONLY : KA, KB, KA_D, KB_D, SELFREF, FORREF, SFLUXREF, RAYL, &
18 & ABSH2O, ABSCO2, LAYREFFR 
19
20!     ------------------------------------------------------------------
21
22IMPLICIT NONE
23
24! KURUCZ
25REAL(KIND=JPRB) :: ZHOOK_HANDLE
26
27#include "abor1.intfb.h"
28
29IF (LHOOK) CALL DR_HOOK('SRTM_KGB29',0,ZHOOK_HANDLE)
30
31IF( MYPROC==1 )THEN
32 READ(NULRAD,ERR=1001) KA_D,KB_D
33  KA = REAL(KA_D,JPRB)
34  KB = REAL(KB_D,JPRB) 
35  CLOSE(NULRAD,ERR=1000)
36ENDIF
37IF( NPROC>1 )THEN
38  CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB29:')
39  CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB29:')
40ENDIF
41
42SFLUXREF = (/ &
43 & 1.32880_JPRB    , 2.14018_JPRB    , 1.97612_JPRB    , 1.79000_JPRB    , &
44 & 1.51242_JPRB    , 1.22977_JPRB    , 1.06052_JPRB    , 0.800996_JPRB   , &
45 & 0.748053_JPRB   , 8.64369E-02_JPRB, 7.10675E-02_JPRB, 5.62425E-02_JPRB, &
46 & 4.46988E-02_JPRB, 3.07441E-02_JPRB, 1.16728E-02_JPRB, 1.65573E-03_JPRB /) 
47
48ABSCO2 = (/ &
49 & 2.90073E-06_JPRB, 2.12382E-05_JPRB, 1.03032E-04_JPRB, 1.86481E-04_JPRB, &
50 & 4.31997E-04_JPRB, 6.08238E-04_JPRB, 2.17603E-03_JPRB, 4.64479E-02_JPRB, &
51 & 2.96956_JPRB    , 14.9569_JPRB    , 28.4831_JPRB    , 61.3998_JPRB    , &
52 & 164.129_JPRB    , 832.282_JPRB    , 4995.02_JPRB    , 12678.1_JPRB     /) 
53     
54ABSH2O = (/ &
55 & 2.99508E-04_JPRB, 3.95012E-03_JPRB, 1.49316E-02_JPRB, 3.24384E-02_JPRB, &
56 & 6.92879E-02_JPRB, 0.123523_JPRB   , 0.360985_JPRB   , 1.86434_JPRB    , &
57 & 10.38157_JPRB   , 0.214129_JPRB   , 0.213914_JPRB   , 0.212781_JPRB   , &
58 & 0.215562_JPRB   , 0.218087_JPRB   , 0.220918_JPRB   , 0.218546_JPRB    /) 
59     
60!     Rayleigh extinction coefficient at v = 2200 cm-1.
61RAYL = 9.30E-11_JPRB
62
63LAYREFFR = 49
64
65!     ------------------------------------------------------------------
66
67!     The array KA contains absorption coefs at the 16 chosen g-values
68!     for a range of pressure levels> ~100mb, temperatures, and binary
69!     species parameters (see taumol.f for definition).  The first
70!     index in the array, JS, runs from 1 to 9, and corresponds to
71!     different values of the binary species parameter.  For instance,
72!     JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8,
73!     JS = 3 corresponds to the parameter value 2/8, etc.  The second index
74!     in the array, JT, which runs from 1 to 5, corresponds to different
75!     temperatures.  More specifically, JT = 3 means that the data are for
76!     the reference temperature TREF for this  pressure level, JT = 2 refers
77!     to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5
78!     is for TREF+30.  The third index, JP, runs from 1 to 13 and refers
79!     to the JPth reference pressure level (see taumol.f for these levels
80!     in mb).  The fourth index, IG, goes from 1 to 16, and indicates
81!     which g-interval the absorption coefficients are for.
82!     -----------------------------------------------------------------
83
84!     -----------------------------------------------------------------
85!     The array KB contains absorption coefs at the 16 chosen g-values
86!     for a range of pressure levels < ~100mb and temperatures. The first
87!     index in the array, JT, which runs from 1 to 5, corresponds to
88!     different temperatures.  More specifically, JT = 3 means that the
89!     data are for the reference temperature TREF for this pressure
90!     level, JT = 2 refers to the temperature TREF-15, JT = 1 is for
91!     TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. 
92!     The second index, JP, runs from 13 to 59 and refers to the JPth
93!     reference pressure level (see taumol.f for the value of these
94!     pressure levels in mb).  The third index, IG, goes from 1 to 16,
95!     and tells us which g-interval the absorption coefficients are for.
96!     -----------------------------------------------------------------
97
98
99FORREF(:, 1) = (/ 0.299818E-05_JPRB, 0.209282E-05_JPRB, 0.988353E-04_JPRB, 0.632178E-03_JPRB /)
100FORREF(:, 2) = (/ 0.633648E-05_JPRB, 0.509214E-04_JPRB, 0.650535E-03_JPRB, 0.264019E-02_JPRB /)
101FORREF(:, 3) = (/ 0.636782E-04_JPRB, 0.136577E-03_JPRB, 0.166500E-02_JPRB, 0.750821E-02_JPRB /)
102FORREF(:, 4) = (/ 0.472314E-03_JPRB, 0.988296E-03_JPRB, 0.585751E-02_JPRB, 0.187352E-01_JPRB /)
103FORREF(:, 5) = (/ 0.558635E-02_JPRB, 0.856489E-02_JPRB, 0.157438E-01_JPRB, 0.181471E-01_JPRB /)
104FORREF(:, 6) = (/ 0.217395E-01_JPRB, 0.229156E-01_JPRB, 0.230125E-01_JPRB, 0.143821E-01_JPRB /)
105FORREF(:, 7) = (/ 0.277222E-01_JPRB, 0.299252E-01_JPRB, 0.208929E-01_JPRB, 0.826748E-02_JPRB /)
106FORREF(:, 8) = (/ 0.252119E-01_JPRB, 0.262911E-01_JPRB, 0.187663E-01_JPRB, 0.417110E-02_JPRB /)
107FORREF(:, 9) = (/ 0.304941E-01_JPRB, 0.175545E-01_JPRB, 0.971224E-02_JPRB, 0.142023E-02_JPRB /)
108FORREF(:,10) = (/ 0.327200E-01_JPRB, 0.215788E-01_JPRB, 0.346831E-02_JPRB, 0.157989E-02_JPRB /)
109FORREF(:,11) = (/ 0.324955E-01_JPRB, 0.228571E-01_JPRB, 0.171749E-02_JPRB, 0.226853E-02_JPRB /)
110FORREF(:,12) = (/ 0.326588E-01_JPRB, 0.198544E-01_JPRB, 0.532339E-06_JPRB, 0.279086E-02_JPRB /)
111FORREF(:,13) = (/ 0.345157E-01_JPRB, 0.168679E-01_JPRB, 0.505361E-06_JPRB, 0.276647E-02_JPRB /)
112FORREF(:,14) = (/ 0.448765E-01_JPRB, 0.123791E-02_JPRB, 0.488367E-06_JPRB, 0.122245E-02_JPRB /)
113FORREF(:,15) = (/ 0.486925E-01_JPRB, 0.464371E-06_JPRB, 0.464241E-06_JPRB, 0.753846E-06_JPRB /)
114FORREF(:,16) = (/ 0.530511E-01_JPRB, 0.376234E-06_JPRB, 0.409824E-06_JPRB, 0.470650E-06_JPRB /)
115
116!     -----------------------------------------------------------------
117!     The array SELFREF contains the coefficient of the water vapor
118!     self-continuum (including the energy term).  The first index
119!     refers to temperature in 7.2 degree increments.  For instance,
120!     JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8,
121!     etc.  The second index runs over the g-channel (1 to 16).
122
123SELFREF(:, 1) = (/ &
124 & 0.118069E+00_JPRB, 0.713523E-01_JPRB, 0.431199E-01_JPRB, 0.260584E-01_JPRB, 0.157477E-01_JPRB, &
125 & 0.951675E-02_JPRB, 0.575121E-02_JPRB, 0.347560E-02_JPRB, 0.210039E-02_JPRB, 0.126932E-02_JPRB /) 
126SELFREF(:, 2) = (/ &
127 & 0.137081E-01_JPRB, 0.139046E-01_JPRB, 0.141040E-01_JPRB, 0.143061E-01_JPRB, 0.145112E-01_JPRB, &
128 & 0.147193E-01_JPRB, 0.149303E-01_JPRB, 0.151443E-01_JPRB, 0.153614E-01_JPRB, 0.155816E-01_JPRB /) 
129SELFREF(:, 3) = (/ &
130 & 0.166575E-01_JPRB, 0.164916E-01_JPRB, 0.163273E-01_JPRB, 0.161647E-01_JPRB, 0.160037E-01_JPRB, &
131 & 0.158443E-01_JPRB, 0.156864E-01_JPRB, 0.155302E-01_JPRB, 0.153755E-01_JPRB, 0.152224E-01_JPRB /) 
132SELFREF(:, 4) = (/ &
133 & 0.597379E-01_JPRB, 0.509517E-01_JPRB, 0.434579E-01_JPRB, 0.370662E-01_JPRB, 0.316145E-01_JPRB, &
134 & 0.269647E-01_JPRB, 0.229988E-01_JPRB, 0.196162E-01_JPRB, 0.167311E-01_JPRB, 0.142703E-01_JPRB /) 
135SELFREF(:, 5) = (/ &
136 & 0.227517E+00_JPRB, 0.198401E+00_JPRB, 0.173011E+00_JPRB, 0.150870E+00_JPRB, 0.131563E+00_JPRB, &
137 & 0.114726E+00_JPRB, 0.100044E+00_JPRB, 0.872415E-01_JPRB, 0.760769E-01_JPRB, 0.663411E-01_JPRB /) 
138SELFREF(:, 6) = (/ &
139 & 0.453235E+00_JPRB, 0.414848E+00_JPRB, 0.379712E+00_JPRB, 0.347552E+00_JPRB, 0.318116E+00_JPRB, &
140 & 0.291173E+00_JPRB, 0.266512E+00_JPRB, 0.243940E+00_JPRB, 0.223279E+00_JPRB, 0.204368E+00_JPRB /) 
141SELFREF(:, 7) = (/ &
142 & 0.569263E+00_JPRB, 0.516415E+00_JPRB, 0.468473E+00_JPRB, 0.424982E+00_JPRB, 0.385528E+00_JPRB, &
143 & 0.349737E+00_JPRB, 0.317269E+00_JPRB, 0.287815E+00_JPRB, 0.261095E+00_JPRB, 0.236856E+00_JPRB /) 
144SELFREF(:, 8) = (/ &
145 & 0.490314E+00_JPRB, 0.448042E+00_JPRB, 0.409413E+00_JPRB, 0.374116E+00_JPRB, 0.341861E+00_JPRB, &
146 & 0.312387E+00_JPRB, 0.285455E+00_JPRB, 0.260844E+00_JPRB, 0.238355E+00_JPRB, 0.217805E+00_JPRB /) 
147SELFREF(:, 9) = (/ &
148 & 0.258162E+00_JPRB, 0.265085E+00_JPRB, 0.272193E+00_JPRB, 0.279493E+00_JPRB, 0.286988E+00_JPRB, &
149 & 0.294684E+00_JPRB, 0.302586E+00_JPRB, 0.310701E+00_JPRB, 0.319033E+00_JPRB, 0.327588E+00_JPRB /) 
150SELFREF(:,10) = (/ &
151 & 0.332019E+00_JPRB, 0.331902E+00_JPRB, 0.331784E+00_JPRB, 0.331666E+00_JPRB, 0.331549E+00_JPRB, &
152 & 0.331431E+00_JPRB, 0.331314E+00_JPRB, 0.331197E+00_JPRB, 0.331079E+00_JPRB, 0.330962E+00_JPRB /) 
153SELFREF(:,11) = (/ &
154 & 0.357523E+00_JPRB, 0.353154E+00_JPRB, 0.348839E+00_JPRB, 0.344576E+00_JPRB, 0.340366E+00_JPRB, &
155 & 0.336207E+00_JPRB, 0.332099E+00_JPRB, 0.328041E+00_JPRB, 0.324032E+00_JPRB, 0.320073E+00_JPRB /) 
156SELFREF(:,12) = (/ &
157 & 0.294662E+00_JPRB, 0.299043E+00_JPRB, 0.303488E+00_JPRB, 0.308000E+00_JPRB, 0.312579E+00_JPRB, &
158 & 0.317226E+00_JPRB, 0.321941E+00_JPRB, 0.326727E+00_JPRB, 0.331585E+00_JPRB, 0.336514E+00_JPRB /) 
159SELFREF(:,13) = (/ &
160 & 0.227445E+00_JPRB, 0.241545E+00_JPRB, 0.256519E+00_JPRB, 0.272422E+00_JPRB, 0.289311E+00_JPRB, &
161 & 0.307247E+00_JPRB, 0.326294E+00_JPRB, 0.346523E+00_JPRB, 0.368005E+00_JPRB, 0.390820E+00_JPRB /) 
162SELFREF(:,14) = (/ &
163 & 0.616203E-02_JPRB, 0.113523E-01_JPRB, 0.209144E-01_JPRB, 0.385307E-01_JPRB, 0.709852E-01_JPRB, &
164 & 0.130776E+00_JPRB, 0.240929E+00_JPRB, 0.443865E+00_JPRB, 0.817733E+00_JPRB, 0.150651E+01_JPRB /) 
165SELFREF(:,15) = (/ &
166 & 0.279552E-03_JPRB, 0.808472E-03_JPRB, 0.233812E-02_JPRB, 0.676192E-02_JPRB, 0.195557E-01_JPRB, &
167 & 0.565555E-01_JPRB, 0.163560E+00_JPRB, 0.473020E+00_JPRB, 0.136799E+01_JPRB, 0.395626E+01_JPRB /) 
168SELFREF(:,16) = (/ &
169 & 0.261006E-03_JPRB, 0.771043E-03_JPRB, 0.227776E-02_JPRB, 0.672879E-02_JPRB, 0.198777E-01_JPRB, &
170 & 0.587212E-01_JPRB, 0.173470E+00_JPRB, 0.512452E+00_JPRB, 0.151385E+01_JPRB, 0.447209E+01_JPRB /) 
171     
172!     -----------------------------------------------------------------
173IF (LHOOK) CALL DR_HOOK('SRTM_KGB29',1,ZHOOK_HANDLE)
174RETURN
175
1761000 CONTINUE
177CALL ABOR1("SRTM_KGB29:ERROR CLOSING FILE RADSRTM")
1781001 CONTINUE
179CALL ABOR1("SRTM_KGB29:ERROR READING FILE RADSRTM")
180
181END SUBROUTINE SRTM_KGB29
Note: See TracBrowser for help on using the repository browser.