[4773] | 1 | SUBROUTINE SRTM_KGB28 |
---|
| 2 | |
---|
| 3 | ! Originally by J.Delamere, Atmospheric & Environmental Research. |
---|
| 4 | ! Revision: 2.4 |
---|
| 5 | ! BAND 28: 38000-50000 cm-1 (low - O3,O2; high - O3,O2) |
---|
| 6 | ! Reformatted for F90 by JJMorcrette, ECMWF |
---|
| 7 | ! R. Elkhatib 12-10-2005 Split for faster and more robust compilation. |
---|
| 8 | ! G.Mozdzynski March 2011 read constants from files |
---|
| 9 | ! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. |
---|
| 10 | ! F. Vana 05-Mar-2015 Support for single precision |
---|
| 11 | ! ------------------------------------------------------------------ |
---|
| 12 | |
---|
| 13 | USE PARKIND1 , ONLY : JPRB |
---|
| 14 | USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK |
---|
| 15 | USE YOMLUN , ONLY : NULRAD |
---|
| 16 | USE YOMMP0 , ONLY : NPROC, MYPROC |
---|
| 17 | USE MPL_MODULE, ONLY : MPL_BROADCAST |
---|
| 18 | USE YOMTAG , ONLY : MTAGRAD |
---|
| 19 | USE YOESRTA28 , ONLY : KA, KB, SFLUXREF, RAYL, STRRAT, LAYREFFR, KA_D, KB_D |
---|
| 20 | |
---|
| 21 | ! ------------------------------------------------------------------ |
---|
| 22 | |
---|
| 23 | IMPLICIT NONE |
---|
| 24 | |
---|
| 25 | ! KURUCZ |
---|
| 26 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
| 27 | |
---|
| 28 | #include "abor1.intfb.h" |
---|
| 29 | |
---|
| 30 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB28',0,ZHOOK_HANDLE) |
---|
| 31 | |
---|
| 32 | IF( MYPROC==1 )THEN |
---|
| 33 | READ(NULRAD,ERR=1001) KA_D,KB_D |
---|
| 34 | KA = REAL(KA_D,JPRB) |
---|
| 35 | KB = REAL(KB_D,JPRB) |
---|
| 36 | ENDIF |
---|
| 37 | IF( NPROC>1 )THEN |
---|
| 38 | CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB28:') |
---|
| 39 | CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB28:') |
---|
| 40 | ENDIF |
---|
| 41 | |
---|
| 42 | SFLUXREF(:,1) = (/ & |
---|
| 43 | & 1.06156_JPRB , 0.599910_JPRB , 0.422462_JPRB , 0.400077_JPRB , & |
---|
| 44 | & 0.282221_JPRB , 0.187893_JPRB , 6.77357E-02_JPRB, 3.04572E-02_JPRB, & |
---|
| 45 | & 2.00442E-02_JPRB, 2.30786E-03_JPRB, 2.08824E-03_JPRB, 1.42604E-03_JPRB, & |
---|
| 46 | & 9.67384E-04_JPRB, 6.35362E-04_JPRB, 1.47727E-04_JPRB, 6.87639E-06_JPRB /) |
---|
| 47 | SFLUXREF(:,2) = (/ & |
---|
| 48 | & 1.07598_JPRB , 0.585099_JPRB , 0.422852_JPRB , 0.400077_JPRB , & |
---|
| 49 | & 0.282221_JPRB , 0.187893_JPRB , 6.69686E-02_JPRB, 3.09070E-02_JPRB, & |
---|
| 50 | & 2.02400E-02_JPRB, 2.47760E-03_JPRB, 1.89411E-03_JPRB, 1.41122E-03_JPRB, & |
---|
| 51 | & 1.12449E-03_JPRB, 5.73505E-04_JPRB, 2.04160E-04_JPRB, 1.58371E-05_JPRB /) |
---|
| 52 | SFLUXREF(:,3) = (/ & |
---|
| 53 | & 0.461647_JPRB , 0.406113_JPRB , 0.332506_JPRB , 0.307508_JPRB , & |
---|
| 54 | & 0.211167_JPRB , 0.235457_JPRB , 0.495886_JPRB , 0.363921_JPRB , & |
---|
| 55 | & 0.192700_JPRB , 2.04678E-02_JPRB, 1.55407E-02_JPRB, 1.03882E-02_JPRB, & |
---|
| 56 | & 1.10778E-02_JPRB, 1.00504E-02_JPRB, 4.93497E-03_JPRB, 5.73410E-04_JPRB /) |
---|
| 57 | SFLUXREF(:,4) = (/ & |
---|
| 58 | & 0.132669_JPRB , 0.175058_JPRB , 0.359263_JPRB , 0.388142_JPRB , & |
---|
| 59 | & 0.350359_JPRB , 0.475892_JPRB , 0.489593_JPRB , 0.408437_JPRB , & |
---|
| 60 | & 0.221049_JPRB , 1.94514E-02_JPRB, 1.54848E-02_JPRB, 1.44999E-02_JPRB, & |
---|
| 61 | & 1.44568E-02_JPRB, 1.00527E-02_JPRB, 4.95897E-03_JPRB, 5.73327E-04_JPRB /) |
---|
| 62 | SFLUXREF(:,5) = (/ & |
---|
| 63 | & 7.54800E-02_JPRB, 0.232246_JPRB , 0.359263_JPRB , 0.388142_JPRB , & |
---|
| 64 | & 0.350359_JPRB , 0.426317_JPRB , 0.493485_JPRB , 0.432016_JPRB , & |
---|
| 65 | & 0.239203_JPRB , 1.74951E-02_JPRB, 1.74477E-02_JPRB, 1.83566E-02_JPRB, & |
---|
| 66 | & 1.44818E-02_JPRB, 1.01048E-02_JPRB, 4.97487E-03_JPRB, 5.66831E-04_JPRB /) |
---|
| 67 | |
---|
| 68 | ! Rayleigh extinction coefficient at v = ????? cm-1. |
---|
| 69 | RAYL = 2.02E-05_JPRB |
---|
| 70 | |
---|
| 71 | STRRAT = 6.67029E-07_JPRB |
---|
| 72 | |
---|
| 73 | LAYREFFR = 58 |
---|
| 74 | |
---|
| 75 | ! ------------------------------------------------------------------ |
---|
| 76 | |
---|
| 77 | ! The array KA contains absorption coefs at the 16 chosen g-values |
---|
| 78 | ! for a range of pressure levels> ~100mb, temperatures, and binary |
---|
| 79 | ! species parameters (see taumol.f for definition). The first |
---|
| 80 | ! index in the array, JS, runs from 1 to 9, and corresponds to |
---|
| 81 | ! different values of the binary species parameter. For instance, |
---|
| 82 | ! JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8, |
---|
| 83 | ! JS = 3 corresponds to the parameter value 2/8, etc. The second index |
---|
| 84 | ! in the array, JT, which runs from 1 to 5, corresponds to different |
---|
| 85 | ! temperatures. More specifically, JT = 3 means that the data are for |
---|
| 86 | ! the reference temperature TREF for this pressure level, JT = 2 refers |
---|
| 87 | ! to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5 |
---|
| 88 | ! is for TREF+30. The third index, JP, runs from 1 to 13 and refers |
---|
| 89 | ! to the JPth reference pressure level (see taumol.f for these levels |
---|
| 90 | ! in mb). The fourth index, IG, goes from 1 to 16, and indicates |
---|
| 91 | ! which g-interval the absorption coefficients are for. |
---|
| 92 | ! ----------------------------------------------------------------- |
---|
| 93 | |
---|
| 94 | ! ----------------------------------------------------------------- |
---|
| 95 | ! The array KB contains absorption coefs at the 16 chosen g-values |
---|
| 96 | ! for a range of pressure levels < ~100mb and temperatures. The first |
---|
| 97 | ! index in the array, JT, which runs from 1 to 5, corresponds to |
---|
| 98 | ! different temperatures. More specifically, JT = 3 means that the |
---|
| 99 | ! data are for the reference temperature TREF for this pressure |
---|
| 100 | ! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for |
---|
| 101 | ! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. |
---|
| 102 | ! The second index, JP, runs from 13 to 59 and refers to the JPth |
---|
| 103 | ! reference pressure level (see taumol.f for the value of these |
---|
| 104 | ! pressure levels in mb). The third index, IG, goes from 1 to 16, |
---|
| 105 | ! and tells us which g-interval the absorption coefficients are for. |
---|
| 106 | ! ----------------------------------------------------------------- |
---|
| 107 | |
---|
| 108 | IF (LHOOK) CALL DR_HOOK('SRTM_KGB28',1,ZHOOK_HANDLE) |
---|
| 109 | RETURN |
---|
| 110 | |
---|
| 111 | 1001 CONTINUE |
---|
| 112 | CALL ABOR1("SRTM_KGB28:ERROR READING FILE RADSRTM") |
---|
| 113 | |
---|
| 114 | END SUBROUTINE SRTM_KGB28 |
---|