1 | SUBROUTINE SRTM_KGB27 |
---|
2 | |
---|
3 | ! Originally by J.Delamere, Atmospheric & Environmental Research. |
---|
4 | ! Revision: 2.4 |
---|
5 | ! BAND 16: 29000-38000 cm-1 (low - O3; high - O3) |
---|
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 | ! F. Vana 05-Mar-2015 Support for single precision |
---|
10 | ! ------------------------------------------------------------------ |
---|
11 | |
---|
12 | USE PARKIND1 , ONLY : JPRB |
---|
13 | USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK |
---|
14 | USE YOMLUN , ONLY : NULRAD |
---|
15 | USE YOMMP0 , ONLY : NPROC, MYPROC |
---|
16 | USE MPL_MODULE, ONLY : MPL_BROADCAST |
---|
17 | USE YOMTAG , ONLY : MTAGRAD |
---|
18 | USE YOESRTA27 , ONLY : KA, KB, SFLUXREF, RAYL, SCALEKUR, LAYREFFR, & |
---|
19 | & KA_D, KB_D |
---|
20 | |
---|
21 | ! ------------------------------------------------------------------ |
---|
22 | |
---|
23 | IMPLICIT NONE |
---|
24 | |
---|
25 | ! KURUCZ |
---|
26 | ! The following values were obtained using the "low resolution" |
---|
27 | ! version of the Kurucz solar source function. For unknown reasons, |
---|
28 | ! the total irradiance in this band differs from the corresponding |
---|
29 | ! total in the "high-resolution" version of the Kurucz function. |
---|
30 | ! Therefore, below these values are scaled by the factor SCALEKUR. |
---|
31 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
32 | |
---|
33 | #include "abor1.intfb.h" |
---|
34 | |
---|
35 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB27',0,ZHOOK_HANDLE) |
---|
36 | |
---|
37 | IF( MYPROC==1 )THEN |
---|
38 | READ(NULRAD,ERR=1001) KA_D,KB_D |
---|
39 | KA = REAL(KA_D,JPRB) |
---|
40 | KB = REAL(KB_D,JPRB) |
---|
41 | ENDIF |
---|
42 | IF( NPROC>1 )THEN |
---|
43 | CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB27:') |
---|
44 | CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB27:') |
---|
45 | ENDIF |
---|
46 | |
---|
47 | SFLUXREF = (/ & |
---|
48 | & 14.0526_JPRB , 11.4794_JPRB , 8.72590_JPRB , 5.56966_JPRB , & |
---|
49 | & 3.80927_JPRB , 1.57690_JPRB , 1.15099_JPRB , 1.10012_JPRB , & |
---|
50 | & 0.658212_JPRB , 5.86859E-02_JPRB, 5.56186E-02_JPRB, 4.68040E-02_JPRB, & |
---|
51 | & 3.64897E-02_JPRB, 3.58053E-02_JPRB, 1.38130E-02_JPRB, 1.90193E-03_JPRB /) |
---|
52 | |
---|
53 | ! Rayleigh extinction coefficient at v = 2925 cm-1. |
---|
54 | RAYL = (/ & |
---|
55 | & 3.44534E-06_JPRB,4.14480E-06_JPRB,4.95069E-06_JPRB,5.81204E-06_JPRB, & |
---|
56 | & 6.69748E-06_JPRB,7.56488E-06_JPRB,8.36344E-06_JPRB,9.04135E-06_JPRB, & |
---|
57 | & 9.58324E-06_JPRB,9.81542E-06_JPRB,9.75119E-06_JPRB,9.74533E-06_JPRB, & |
---|
58 | & 9.74139E-06_JPRB,9.73525E-06_JPRB,9.73577E-06_JPRB,9.73618E-06_JPRB /) |
---|
59 | |
---|
60 | SCALEKUR = 50.15_JPRB/48.37_JPRB |
---|
61 | |
---|
62 | LAYREFFR = 32 |
---|
63 | |
---|
64 | ! ------------------------------------------------------------------ |
---|
65 | |
---|
66 | ! The array KA contains absorption coefs at the 16 chosen g-values |
---|
67 | ! for a range of pressure levels> ~100mb, temperatures, and binary |
---|
68 | ! species parameters (see taumol.f for definition). The first |
---|
69 | ! index in the array, JS, runs from 1 to 9, and corresponds to |
---|
70 | ! different values of the binary species parameter. For instance, |
---|
71 | ! JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8, |
---|
72 | ! JS = 3 corresponds to the parameter value 2/8, etc. The second index |
---|
73 | ! in the array, JT, which runs from 1 to 5, corresponds to different |
---|
74 | ! temperatures. More specifically, JT = 3 means that the data are for |
---|
75 | ! the reference temperature TREF for this pressure level, JT = 2 refers |
---|
76 | ! to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5 |
---|
77 | ! is for TREF+30. The third index, JP, runs from 1 to 13 and refers |
---|
78 | ! to the JPth reference pressure level (see taumol.f for these levels |
---|
79 | ! in mb). The fourth index, IG, goes from 1 to 16, and indicates |
---|
80 | ! which g-interval the absorption coefficients are for. |
---|
81 | ! ----------------------------------------------------------------- |
---|
82 | |
---|
83 | ! ----------------------------------------------------------------- |
---|
84 | ! The array KB contains absorption coefs at the 16 chosen g-values |
---|
85 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
86 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
87 | ! different temperatures. More specifically, JT = 3 means that the |
---|
88 | ! data are for the reference temperature TREF for this pressure |
---|
89 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
90 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
91 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
92 | ! reference pressure level (see taumol.f for the value of these |
---|
93 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
94 | ! and tells us which g-interval the absorption coefficients are for. |
---|
95 | ! ----------------------------------------------------------------- |
---|
96 | |
---|
97 | |
---|
98 | ! ----------------------------------------------------------------- |
---|
99 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB27',1,ZHOOK_HANDLE) |
---|
100 | RETURN |
---|
101 | |
---|
102 | 1001 CONTINUE |
---|
103 | CALL ABOR1("SRTM_KGB27:ERROR READING FILE RADSRTM") |
---|
104 | |
---|
105 | END SUBROUTINE SRTM_KGB27 |
---|