|
[Fortran] 纯文本查看 复制代码 004 | character ( 256 ) , parameter :: kvsgFile = '11kvsg-4.9-5.0-1-H2O-0.0p-CO2-1p-300K-11.dat' |
005 | character ( 256 ) , parameter :: kvsgqFile = '11kvsgq-4.9-5.0-1-H2O-0.0p-CO2-1p-300K.dat' |
006 | character ( 256 ) , parameter :: abscFile = '11absc-4.9-5.0-1-H2O-0.0p-CO2-1p-300K.dat' |
007 | character ( 256 ) , parameter :: CO 2 File = '02-3.7-3.8.par' |
008 | character ( 256 ) , parameter :: CH 4 File = 'F:\JavaHAWKS\HITRAN04\02_hit2010.par' |
009 | character ( 256 ) , parameter :: H 2 OFile = '01_0-30000_HITEMP-35.par' |
032 | REAL :: kq ( nq ) , aq ( numt , nq ) , & |
033 | gq ( nq ) = ( / 5.120075E-02 , 1.170678E-01 , 2.015873E-01 , 3.007074E-01 , 4.095012E-01 , 5.225285E-01 , & |
034 | 6.341280E-01 , 7.387071E-01 , 8.310236E-01 , 9.064499E-01 , 9.612060E-01 , 9.925594E-01 / ) , & |
035 | wq ( nq ) = ( / 5.556622E-02 , 7.576839E-02 , 9.258290E-02 , 1.048306E-01 , 1.118451E-01 , 1.132605E-01 , & |
036 | 1.090012E-01 , 9.927844E-02 , 8.457905E-02 , 6.563999E-02 , 4.341329E-02 , 1.904792E-02 / ) |
042 | cnchk = xmfr ( 1 ) * xmfr ( 2 ) + xmfr ( 1 ) * xmfr ( 3 ) + xmfr ( 3 ) * xmfr ( 2 ) |
043 | IF ( cnchk > 1 .d -6 ) PAUSE 'ERROR: you cannot use pressure-based absorption coefficient for mixture!' |
047 | OPEN ( 7 , FILE = kvsgFile ) |
050 | 6 format ( 'VARIABLES = k,g0,g1,g2,g3,g4,a1,a2,a3,a4' ) |
053 | OPEN ( 8 , FILE = kvsgqFile , STATUS = 'unknown' ) |
057 | 8 format ( ' wq' , 9 x , 'gq' , 9 x , 'kq' , 8 x , 'aq1' , 8 x , 'aq2' , 8 x , 'aq3' , 8 x , 'aq4' ) |
060 | IF ( iwr > 0 ) OPEN ( 9 , FILE = abscFile , STATUS = 'unknown' ) |
067 | read ( 9 , 92 ) dummy , wvnm_b 2 , wvnm_e 2 , wvnmst 2 |
068 | number 2 = ( wvnm_e 2 - wvnm_b 2 ) / wvnmst 2 +1 |
069 | IF ( number 2 /= number ) PAUSE 'bad data file' |
070 | read ( 9 , * ) ( absc ( i ) , i = 1 , number ) |
073 | wvnm ( i ) = wvnm_b 2 + ( i -1 ) * wvnmst 2 |
079 | number = ( wvnm_e - wvnm_b ) / wvnmst +1 |
080 | IF ( number > nabs ) PAUSE 'increase nabs' |
082 | wvnm ( i ) = wvnm_b + ( i -1 ) * wvnmst |
088 | IF ( xmfr ( ifg ) < . 9 d -3 ) CYCLE |
092 | write ( * , * ) 'Reading CO2 data' |
093 | OPEN ( lu , FILE = CO 2 File , action = 'READ' ) |
096 | write ( * , * ) 'Reading H2O data' |
097 | OPEN ( lu , FILE = H 2 OFile , action = 'READ' ) |
100 | write ( * , * ) 'Reading CH4 data' |
101 | OPEN ( lu , FILE = CH 4 File , action = 'READ' ) |
106 | write ( * , * ) 'Gas ' , ifg , ', lines read: ' , lines |
107 | mass = 1 .d 3 * molemass ( ifg ) / nnn |
113 | IF ( ipl == 0 ) cr = cr * xmfr ( ifg ) * P |
115 | write ( * , * ) 'start of absc loop for co2' |
117 | V 0 = ( 1 d 0 - DEXP ( -666 d 0 * hckt 0 ) ) * * 2 * ( 1 d 0 - DEXP ( -2396 d 0 * hckt 0 ) ) * & |
118 | ( 1 d 0 - DEXP ( -1351 d 0 * hckt 0 ) ) |
119 | V = ( 1 d 0 - DEXP ( -666 d 0 * hckt ) ) * * 2 * ( 1 d 0 - DEXP ( -2396 d 0 * hckt ) ) * & |
120 | ( 1 d 0 - DEXP ( -1351 d 0 * hckt ) ) |
126 | write ( * , * ) 'start of absc loop for h2o' |
128 | V 0 = ( 1 d 0 - DEXP ( -3652 d 0 * hckt 0 ) ) * ( 1 d 0 - DEXP ( -1595 d 0 * hckt 0 ) ) * & |
129 | ( 1 d 0 - DEXP ( -3756 d 0 * hckt 0 ) ) |
130 | V = ( 1 d 0 - DEXP ( -3652 d 0 * hckt ) ) * ( 1 d 0 - DEXP ( -1595 d 0 * hckt ) ) * & |
131 | ( 1 d 0 - DEXP ( -3756 d 0 * hckt ) ) |
137 | write ( * , * ) 'start of absc loop for ch4' |
139 | V 0 = ( 1 d 0 - DEXP ( -1306 d 0 * hckt 0 ) ) * * 3 * ( 1 d 0 - DEXP ( -1526 d 0 * hckt 0 ) ) * * 2 * & |
140 | ( 1 d 0 - DEXP ( -2914 d 0 * hckt 0 ) ) * ( 1 d 0 - DEXP ( -3020 d 0 * hckt 0 ) ) * * 3 |
141 | V = ( 1 d 0 - DEXP ( -1306 d 0 * hckt ) ) * * 3 * ( 1 d 0 - DEXP ( -1526 d 0 * hckt ) ) * * 2 * & |
142 | ( 1 d 0 - DEXP ( -2914 d 0 * hckt ) ) * ( 1 d 0 - DEXP ( -3020 d 0 * hckt ) ) * * 3 |
150 | c 1 sigt 4 ( 0 ) = c 1 / ( sigma * Tref * * 4 ) |
153 | IF ( l - ( l / 10000 ) * 10000 == 0 ) write ( * , * ) 'reading line #' , l |
154 | line_width = ( Data ( l , 4 ) * xmfr ( ifg ) + Data ( l , 3 ) * ( 1 .d 0 - xmfr ( ifg ) ) ) * patm * TT 0 * * Data ( l , 6 ) |
156 | intensity = Data ( l , 2 ) * VR 0 * DEXP ( hcktt 0 * Data ( l , 5 ) ) |
158 | intensity = intensity * cr * ( 1 d 0 - DEXP ( - data ( l , 1 ) * hckt ) ) / ( 1 d 0 - DEXP ( - data ( l , 1 ) * hckt 0 ) ) |
160 | kplancksum = kplancksum + intensity * c 1 sigt 4 ( 0 ) * data ( l , 1 ) * * 3 / ( EXP ( hck / Tref * data ( l , 1 ) ) -1 .d 0 ) |
162 | klmax = intensity / ( PI * line_width ) |
163 | IF ( klmax < klmin ) CYCLE |
165 | icl = ( data ( l , 1 ) - wvnm_b ) / wvnmst +1 |
168 | deta = ( data ( l , 1 ) - wvnm ( i ) ) / line_width |
169 | dk = klmax / ( 1 .d 0 + deta * deta ) |
174 | deta = ( data ( l , 1 ) - wvnm ( i ) ) / line_width |
175 | dk = klmax / ( 1 .d 0 + deta * deta ) |
181 | write ( * , * ) 'end of absc loop' |
186 | write ( 9 , 95 ) wvnm_b , wvnm_e , wvnmst |
187 | write ( 9 , 99 ) ( absc ( i ) , i = 1 , number ) |
192 | 96 FORMAT ( 'variables = "absco"' ) |
194 | 98 FORMAT ( 'zone i=' , i 8 ) |
198 | sootfc = sootf ( fvsoot , nsoot , ksoot ) |
200 | absc ( i ) = absc ( i ) + sootfc * wvnm ( i ) |
210 | IF ( absc ( i ) > kmax ) then |
216 | write ( * , 93 ) kmax , wvnm ( imax ) |
218 | write ( * , 94 ) kmax , wvnm ( imax ) |
220 | 93 FORMAT ( ' kmax =' , f 12.5 , 'cm-1 at ' , f 10.4 , 'cm-1' ) |
221 | 94 FORMAT ( ' kmax =' , f 12.5 , 'bar-1cm-1 at ' , f 10.4 , 'cm-1' ) |
222 | IF ( kmax > kdmax .and. kdmax > 0 .d 0 ) & |
223 | write ( * , * ) 'WARNING!!! kdmax is less than maximum absorption coefficient!!' |
224 | kmin = max ( 1 .d -9 , kdmin ) |
228 | pwrk_step = ( pwrk_max - pwrk_min ) / REAL ( n_pwrk -1 ) |
|
|