source: LMDZ6/trunk/libf/phylmd/ecrad.v1.5.1/srtm_kgb20.F90 @ 5428

Last change on this file since 5428 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.6 KB
Line 
1SUBROUTINE SRTM_KGB20
2
3!     Originally by J.Delamere, Atmospheric & Environmental Research.
4!     Revision: 2.4
5!     BAND 20:  5150-6150 cm-1 (low - H2O; high - H2O)
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 YOESRTA20 , ONLY : KA, KB, KA_D, KB_D, SELFREF, FORREF, SFLUXREF, RAYL, ABSCH4, LAYREFFR 
18
19!     ------------------------------------------------------------------
20
21IMPLICIT NONE
22
23! KURUCZ
24REAL(KIND=JPRB) :: ZHOOK_HANDLE
25
26#include "abor1.intfb.h"
27
28IF (LHOOK) CALL DR_HOOK('SRTM_KGB20',0,ZHOOK_HANDLE)
29
30IF( MYPROC==1 )THEN
31  READ(NULRAD,ERR=1001) KA_D,KB_D
32  KA = REAL(KA_D,JPRB)
33  KB = REAL(KB_D,JPRB)
34ENDIF
35IF( NPROC>1 )THEN
36  CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB20:')
37  CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB20:')
38ENDIF
39
40SFLUXREF = (/ &
41 & 9.34081_JPRB , 8.93720_JPRB    , 8.19346_JPRB    , 7.39196_JPRB    , &
42 & 6.12127_JPRB , 5.23956_JPRB    , 4.24941_JPRB    , 3.20013_JPRB    , &
43 & 2.16047_JPRB , 0.234509_JPRB   , 0.194593_JPRB   , 0.151512_JPRB   , &
44 & 0.110315_JPRB, 7.09959E-02_JPRB, 2.70573E-02_JPRB, 3.36042E-03_JPRB /) 
45 
46ABSCH4 = (/   &
47 & 1.01381E-03_JPRB,6.33692E-03_JPRB,1.94185E-02_JPRB,4.83210E-02_JPRB, &
48 & 2.36574E-03_JPRB,6.61973E-04_JPRB,5.64552E-04_JPRB,2.83183E-04_JPRB, &
49 & 7.43623E-05_JPRB,8.90159E-07_JPRB,6.98728E-07_JPRB,6.51832E-08_JPRB, &
50 & 2.96619E-08_JPRB,         0._JPRB,         0._JPRB,         0._JPRB /) 
51
52!     Rayleigh extinction coefficient at v = 5670 cm-1.
53RAYL = 4.12E-09_JPRB
54
55LAYREFFR = 3
56
57!     ------------------------------------------------------------------
58
59!     The array KA contains absorption coefs at the 16 chosen g-values
60!     for a range of pressure levels> ~100mb, temperatures, and binary
61!     species parameters (see taumol.f for definition).  The first
62!     index in the array, JS, runs from 1 to 9, and corresponds to
63!     different values of the binary species parameter.  For instance,
64!     JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8,
65!     JS = 3 corresponds to the parameter value 2/8, etc.  The second index
66!     in the array, JT, which runs from 1 to 5, corresponds to different
67!     temperatures.  More specifically, JT = 3 means that the data are for
68!     the reference temperature TREF for this  pressure level, JT = 2 refers
69!     to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5
70!     is for TREF+30.  The third index, JP, runs from 1 to 13 and refers
71!     to the JPth reference pressure level (see taumol.f for these levels
72!     in mb).  The fourth index, IG, goes from 1 to 16, and indicates
73!     which g-interval the absorption coefficients are for.
74!     -----------------------------------------------------------------
75
76!     -----------------------------------------------------------------
77!     The array KB contains absorption coefs at the 16 chosen g-values
78!     for a range of pressure levels < ~100mb and temperatures. The first
79!     index in the array, JT, which runs from 1 to 5, corresponds to
80!     different temperatures.  More specifically, JT = 3 means that the
81!     data are for the reference temperature TREF for this pressure
82!     level, JT = 2 refers to the temperature TREF-15, JT = 1 is for
83!     TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. 
84!     The second index, JP, runs from 13 to 59 and refers to the JPth
85!     reference pressure level (see taumol.f for the value of these
86!     pressure levels in mb).  The third index, IG, goes from 1 to 16,
87!     and tells us which g-interval the absorption coefficients are for.
88!     -----------------------------------------------------------------
89
90
91FORREF(:, 1) = (/ 0.214504E-06_JPRB, 0.460418E-06_JPRB, 0.357608E-05_JPRB, 0.192037E-05_JPRB /)
92FORREF(:, 2) = (/ 0.142576E-05_JPRB, 0.364463E-05_JPRB, 0.117033E-04_JPRB, 0.112085E-04_JPRB /)
93FORREF(:, 3) = (/ 0.101536E-04_JPRB, 0.124096E-04_JPRB, 0.509190E-04_JPRB, 0.565282E-04_JPRB /)
94FORREF(:, 4) = (/ 0.143394E-03_JPRB, 0.154700E-03_JPRB, 0.466498E-03_JPRB, 0.918829E-03_JPRB /)
95FORREF(:, 5) = (/ 0.251631E-02_JPRB, 0.241729E-02_JPRB, 0.240057E-02_JPRB, 0.350408E-02_JPRB /)
96FORREF(:, 6) = (/ 0.410309E-02_JPRB, 0.416851E-02_JPRB, 0.390925E-02_JPRB, 0.383694E-02_JPRB /)
97FORREF(:, 7) = (/ 0.445387E-02_JPRB, 0.448657E-02_JPRB, 0.432310E-02_JPRB, 0.370739E-02_JPRB /)
98FORREF(:, 8) = (/ 0.458150E-02_JPRB, 0.460014E-02_JPRB, 0.450245E-02_JPRB, 0.336718E-02_JPRB /)
99FORREF(:, 9) = (/ 0.465423E-02_JPRB, 0.465595E-02_JPRB, 0.467006E-02_JPRB, 0.368061E-02_JPRB /)
100FORREF(:,10) = (/ 0.493955E-02_JPRB, 0.490181E-02_JPRB, 0.481941E-02_JPRB, 0.367577E-02_JPRB /)
101FORREF(:,11) = (/ 0.511876E-02_JPRB, 0.490981E-02_JPRB, 0.493303E-02_JPRB, 0.357423E-02_JPRB /)
102FORREF(:,12) = (/ 0.509845E-02_JPRB, 0.511556E-02_JPRB, 0.504031E-02_JPRB, 0.355915E-02_JPRB /)
103FORREF(:,13) = (/ 0.523822E-02_JPRB, 0.530473E-02_JPRB, 0.523811E-02_JPRB, 0.414259E-02_JPRB /)
104FORREF(:,14) = (/ 0.551133E-02_JPRB, 0.535831E-02_JPRB, 0.546702E-02_JPRB, 0.473875E-02_JPRB /)
105FORREF(:,15) = (/ 0.609781E-02_JPRB, 0.589859E-02_JPRB, 0.561187E-02_JPRB, 0.528981E-02_JPRB /)
106FORREF(:,16) = (/ 0.644958E-02_JPRB, 0.631718E-02_JPRB, 0.625201E-02_JPRB, 0.600448E-02_JPRB /)
107
108!     -----------------------------------------------------------------
109!     The array SELFREF 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
115SELFREF(:, 1) = (/ &
116 & 0.217058E-03_JPRB, 0.176391E-03_JPRB, 0.143342E-03_JPRB, 0.116486E-03_JPRB, 0.946614E-04_JPRB, &
117 & 0.769257E-04_JPRB, 0.625131E-04_JPRB, 0.508007E-04_JPRB, 0.412828E-04_JPRB, 0.335481E-04_JPRB /) 
118SELFREF(:, 2) = (/ &
119 & 0.598055E-03_JPRB, 0.484805E-03_JPRB, 0.393000E-03_JPRB, 0.318580E-03_JPRB, 0.258252E-03_JPRB, &
120 & 0.209348E-03_JPRB, 0.169705E-03_JPRB, 0.137569E-03_JPRB, 0.111518E-03_JPRB, 0.904008E-04_JPRB /) 
121SELFREF(:, 3) = (/ &
122 & 0.102691E-02_JPRB, 0.930281E-03_JPRB, 0.842740E-03_JPRB, 0.763437E-03_JPRB, 0.691596E-03_JPRB, &
123 & 0.626516E-03_JPRB, 0.567560E-03_JPRB, 0.514152E-03_JPRB, 0.465769E-03_JPRB, 0.421940E-03_JPRB /) 
124SELFREF(:, 4) = (/ &
125 & 0.388569E-02_JPRB, 0.365098E-02_JPRB, 0.343045E-02_JPRB, 0.322324E-02_JPRB, 0.302854E-02_JPRB, &
126 & 0.284561E-02_JPRB, 0.267372E-02_JPRB, 0.251222E-02_JPRB, 0.236047E-02_JPRB, 0.221789E-02_JPRB /) 
127SELFREF(:, 5) = (/ &
128 & 0.349845E-01_JPRB, 0.326678E-01_JPRB, 0.305045E-01_JPRB, 0.284845E-01_JPRB, 0.265982E-01_JPRB, &
129 & 0.248369E-01_JPRB, 0.231921E-01_JPRB, 0.216563E-01_JPRB, 0.202222E-01_JPRB, 0.188831E-01_JPRB /) 
130SELFREF(:, 6) = (/ &
131 & 0.613705E-01_JPRB, 0.562676E-01_JPRB, 0.515890E-01_JPRB, 0.472994E-01_JPRB, 0.433665E-01_JPRB, &
132 & 0.397606E-01_JPRB, 0.364545E-01_JPRB, 0.334233E-01_JPRB, 0.306442E-01_JPRB, 0.280961E-01_JPRB /) 
133SELFREF(:, 7) = (/ &
134 & 0.656981E-01_JPRB, 0.602660E-01_JPRB, 0.552830E-01_JPRB, 0.507120E-01_JPRB, 0.465190E-01_JPRB, &
135 & 0.426726E-01_JPRB, 0.391443E-01_JPRB, 0.359077E-01_JPRB, 0.329387E-01_JPRB, 0.302153E-01_JPRB /) 
136SELFREF(:, 8) = (/ &
137 & 0.671782E-01_JPRB, 0.616461E-01_JPRB, 0.565695E-01_JPRB, 0.519110E-01_JPRB, 0.476361E-01_JPRB, &
138 & 0.437132E-01_JPRB, 0.401134E-01_JPRB, 0.368100E-01_JPRB, 0.337787E-01_JPRB, 0.309970E-01_JPRB /) 
139SELFREF(:, 9) = (/ &
140 & 0.675902E-01_JPRB, 0.620888E-01_JPRB, 0.570351E-01_JPRB, 0.523928E-01_JPRB, 0.481284E-01_JPRB, &
141 & 0.442110E-01_JPRB, 0.406125E-01_JPRB, 0.373069E-01_JPRB, 0.342703E-01_JPRB, 0.314809E-01_JPRB /) 
142SELFREF(:,10) = (/ &
143 & 0.708308E-01_JPRB, 0.651419E-01_JPRB, 0.599099E-01_JPRB, 0.550981E-01_JPRB, 0.506728E-01_JPRB, &
144 & 0.466030E-01_JPRB, 0.428600E-01_JPRB, 0.394176E-01_JPRB, 0.362517E-01_JPRB, 0.333401E-01_JPRB /) 
145SELFREF(:,11) = (/ &
146 & 0.698445E-01_JPRB, 0.646584E-01_JPRB, 0.598573E-01_JPRB, 0.554128E-01_JPRB, 0.512982E-01_JPRB, &
147 & 0.474892E-01_JPRB, 0.439630E-01_JPRB, 0.406986E-01_JPRB, 0.376766E-01_JPRB, 0.348791E-01_JPRB /) 
148SELFREF(:,12) = (/ &
149 & 0.743921E-01_JPRB, 0.682057E-01_JPRB, 0.625337E-01_JPRB, 0.573334E-01_JPRB, 0.525655E-01_JPRB, &
150 & 0.481942E-01_JPRB, 0.441863E-01_JPRB, 0.405118E-01_JPRB, 0.371428E-01_JPRB, 0.340540E-01_JPRB /) 
151SELFREF(:,13) = (/ &
152 & 0.775758E-01_JPRB, 0.709818E-01_JPRB, 0.649484E-01_JPRB, 0.594277E-01_JPRB, 0.543764E-01_JPRB, &
153 & 0.497544E-01_JPRB, 0.455253E-01_JPRB, 0.416556E-01_JPRB, 0.381149E-01_JPRB, 0.348751E-01_JPRB /) 
154SELFREF(:,14) = (/ &
155 & 0.776545E-01_JPRB, 0.714761E-01_JPRB, 0.657894E-01_JPRB, 0.605550E-01_JPRB, 0.557372E-01_JPRB, &
156 & 0.513026E-01_JPRB, 0.472209E-01_JPRB, 0.434639E-01_JPRB, 0.400058E-01_JPRB, 0.368229E-01_JPRB /) 
157SELFREF(:,15) = (/ &
158 & 0.855675E-01_JPRB, 0.787337E-01_JPRB, 0.724456E-01_JPRB, 0.666598E-01_JPRB, 0.613360E-01_JPRB, &
159 & 0.564374E-01_JPRB, 0.519301E-01_JPRB, 0.477827E-01_JPRB, 0.439666E-01_JPRB, 0.404552E-01_JPRB /) 
160SELFREF(:,16) = (/ &
161 & 0.934781E-01_JPRB, 0.855190E-01_JPRB, 0.782376E-01_JPRB, 0.715761E-01_JPRB, 0.654819E-01_JPRB, &
162 & 0.599065E-01_JPRB, 0.548058E-01_JPRB, 0.501394E-01_JPRB, 0.458704E-01_JPRB, 0.419648E-01_JPRB /) 
163     
164!     -----------------------------------------------------------------
165IF (LHOOK) CALL DR_HOOK('SRTM_KGB20',1,ZHOOK_HANDLE)
166RETURN
167
1681001 CONTINUE
169CALL ABOR1("SRTM_KGB20:ERROR READING FILE RADSRTM")
170
171END SUBROUTINE SRTM_KGB20
Note: See TracBrowser for help on using the repository browser.