This commit is contained in:
fmq
2026-07-21 22:25:14 +08:00
parent 15971a5e01
commit c53fc99c1d
298 changed files with 459694 additions and 31 deletions
+7
View File
@@ -0,0 +1,7 @@
The directory contains input files for a simple H-He model
of an O-star at Teff=35,000 K, log g = 4.
The model is computed in three staps:
- hhe35lt - LTE model, computed from scratch,
- hhe35nc - NLTE model with continua only,
- hhe35nl - NLTE model with lines.
+4
View File
@@ -0,0 +1,4 @@
$TLUSTY/RTlusty hhe35lt
$TLUSTY/RTlusty hhe35nc results/hhe35lt
$TLUSTY/RTlusty hhe35nl results/hhe35nc
+1
View File
@@ -0,0 +1 @@
/home/fmq/program/tlusty/tl208-s54/data
File diff suppressed because one or more lines are too long
+16
View File
@@ -0,0 +1,16 @@
35000 4
T T
''
50
8 1
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 9 0 110 0 '' ' '
+55
View File
@@ -0,0 +1,55 @@
READ LINE:35000 4
READ LINE:T T
READ LINE:''
READ LINE:50
READ LINE:8 1
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 0
READ LINE:1 0 9 0 110 0 '' ' '
READ LINE:
READ LINE:
1*******************************
M O D E L A T M O S P H E R E
*******************************
TEFF = 35000.
LOG G = 4.00
INPUT KEYWORD PARAMETERS:
-------------------------
CHEMICAL ELEMENTS INCLUDED
--------------------------
NUMBER ELEMENT ABUNDANCE
A=N(ELEM)/N(H) A/A(SOLAR)
1 H 1.00E+00 1.00E+00
2 He 8.51E-02 1.00E+00
3 Li 1.82E-09 1.00E+00
4 Be 2.40E-11 1.00E+00
5 B 6.17E-10 1.00E+00
6 C 2.69E-04 1.00E+00
7 N 6.76E-05 1.00E+00
8 O 4.90E-04 1.00E+00
YTOT WMY WMM 1.08594 1.36073D+00 2.09675D-24
0
EXPLICIT IONS INCLUDED
----------------------
NO. ION N0 N1 NK IZ IUPSUM ICUP FF
1 1 9 10 1 -100 16 0.000D+00
iopadd,irsct,irsche,irsch2,iophmi,ioph2p,iopoh,iopch 4 1 1 0 1 0 0 0
+33
View File
@@ -0,0 +1,33 @@
35000. 4.0 ! TEFF, GRAV
F F ! LTE, LTGRAY
'' ! no change of general optional parameters
*-----------------------------------------------------------------
* frequencies
50 ! NFREAD
*-----------------------------------------------------------------
* data for atoms
*
8 ! NATOMS
* mode abn modpf
2 0 0
2 0 0
0 0 0
0 0 0
0 0 0
1 0 0
1 0 0
1 0 0
*-----------------------------------------------------------------
* data for ions
*
*iat iz nlevs ilast ilvlin nonstd typion filei
*
1 0 9 0 100 0 ' H 1' './data/h1.dat'
1 1 1 1 0 0 ' H 2' ' '
2 0 14 0 100 0 'He 1' './data/he1.dat'
2 1 14 0 100 0 'He 2' './data/he2.dat'
2 2 1 1 0 0 'He 3' ' '
0 0 0 -1 0 0 ' ' ' '
*
* end
+376
View File
@@ -0,0 +1,376 @@
READ LINE: 35000. 4.0 ! TEFF, GRAV
READ LINE: F F ! LTE, LTGRAY
READ LINE: '' ! no change of general optional parameters
READ LINE:*-----------------------------------------------------------------
READ LINE:* frequencies
READ LINE: 50 ! NFREAD
READ LINE:*-----------------------------------------------------------------
READ LINE:* data for atoms
READ LINE:*
READ LINE: 8 ! NATOMS
READ LINE:* mode abn modpf
READ LINE: 2 0 0
READ LINE: 2 0 0
READ LINE: 0 0 0
READ LINE: 0 0 0
READ LINE: 0 0 0
READ LINE: 1 0 0
READ LINE: 1 0 0
READ LINE: 1 0 0
READ LINE:*-----------------------------------------------------------------
READ LINE:* data for ions
READ LINE:*
READ LINE:*iat iz nlevs ilast ilvlin nonstd typion filei
READ LINE:*
READ LINE: 1 0 9 0 100 0 ' H 1' './data/h1.dat'
READ LINE: 1 1 1 1 0 0 ' H 2' ' '
READ LINE: 2 0 14 0 100 0 'He 1' './data/he1.dat'
READ LINE: 2 1 14 0 100 0 'He 2' './data/he2.dat'
READ LINE: 2 2 1 1 0 0 'He 3' ' '
READ LINE: 0 0 0 -1 0 0 ' ' ' '
READ LINE:*
READ LINE:* end
READ LINE:
1*******************************
M O D E L A T M O S P H E R E
*******************************
TEFF = 35000.
LOG G = 4.00
INPUT KEYWORD PARAMETERS:
-------------------------
CHEMICAL ELEMENTS INCLUDED
--------------------------
NUMBER ELEMENT ABUNDANCE
A=N(ELEM)/N(H) A/A(SOLAR)
1 H 1.00E+00 1.00E+00 EXPLICIT: IAT= 1
2 He 8.51E-02 1.00E+00 EXPLICIT: IAT= 2
6 C 2.45E-04 1.00E+00
7 N 6.03E-05 1.00E+00
8 O 4.57E-04 1.00E+00
YTOT WMY WMM 1.08588 1.35982D+00 2.09547D-24
0
EXPLICIT IONS INCLUDED
----------------------
NO. ION N0 N1 NK IZ IUPSUM ICUP FF
1 H 1 1 9 10 1 -100 16 0.000D+00
2 He 1 11 24 25 1 0 16 0.000D+00
3 He 2 25 38 39 2 0 32 0.000D+00
iopadd,irsct,irsche,irsch2,iophmi,ioph2p,iopoh,iopch 4 1 1 0 1 0 0 0
0
EXPLICIT ENERGY LEVELS INCLUDED
-------------------------------
NO. LEVEL ION ION.FREQ.(s^-1) G NQ IEL ILK IAT IMOD ILT IIE IIF
1 (N=1) H 1 3.2880500D+15 2.00 1 1 0 1 7 0 -1 1
2 (N=2) H 1 8.2201250D+14 8.00 2 1 0 1 7 0 -2 2
3 (N=3) H 1 3.6533889D+14 18.00 3 1 0 1 7 0 -3 3
4 (N=4) H 1 2.0550313D+14 32.00 4 1 0 1 7 0 -4 4
5 (N=5) H 1 1.3152200D+14 50.00 5 1 0 1 7 0 -5 5
6 (N=6) H 1 9.1334722D+13 72.00 6 1 0 1 7 0 -5 6
7 (N=7) H 1 6.7103061D+13 98.00 7 1 0 1 7 0 -5 7
8 (N=8) H 1 5.1375781D+13 128.00 8 1 0 1 7 0 -5 8
9 (N=9) H 1 0.0000000D+00 162.00 9 1 0 1 7 0 -5 9
10 H 2 H 1 0.0000000D+00 1.00 1 1 1 1 7 0 -6 10
11 1 sing S He 1 5.9450352D+15 1.00 1 2 0 2 7 0 -7 11
12 2 trip S He 1 1.1526721D+15 3.00 2 2 0 2 7 0 -8 12
13 2 sing S He 1 9.6014543D+14 1.00 2 2 0 2 7 0 -9 13
14 2 trip P He 1 8.7593372D+14 9.00 2 2 0 2 7 0 -10 14
15 2 sing P He 1 8.1453622D+14 3.00 2 2 0 2 7 0 -11 15
16 3 trip S He 1 4.5172735D+14 3.00 3 2 0 2 7 0 -12 16
17 3 sing S He 1 4.0292112D+14 1.00 3 2 0 2 7 0 -12 17
18 3 trip P He 1 3.8193564D+14 9.00 3 2 0 2 7 0 -12 18
19 3 trip D He 1 3.6583679D+14 15.00 3 2 0 2 7 0 -12 19
20 3 sing D He 1 3.6574687D+14 5.00 3 2 0 2 7 0 -12 20
21 3 sing P He 1 3.6259902D+14 3.00 3 2 0 2 7 0 -12 21
22 4 trip S He 1 2.4004386D+14 3.00 4 2 0 2 7 0 -13 22
23 4 sing S He 1 2.2079719D+14 1.00 4 2 0 2 7 0 -13 23
24 4 trip P He 1 2.1249294D+14 9.00 4 2 0 2 7 0 -13 24
25 (N=1) He 2 1.3157598D+16 2.00 1 3 2 2 7 0 -14 25
26 (N=2) He 2 3.2893994D+15 8.00 2 3 0 2 7 0 -15 26
27 (N=3) He 2 1.4619553D+15 18.00 3 3 0 2 7 0 -16 27
28 (N=4) He 2 8.2234986D+14 32.00 4 3 0 2 7 0 -17 28
29 (N=5) He 2 5.2630391D+14 50.00 5 3 0 2 7 0 -18 29
30 (N=6) He 2 3.6548882D+14 72.00 6 3 0 2 7 0 -18 30
31 (N=7) He 2 2.6852240D+14 98.00 7 3 0 2 7 0 -18 31
32 (N=8) He 2 2.0558746D+14 128.00 8 3 0 2 7 0 -18 32
33 (N=9) He 2 1.6243948D+14 162.00 9 3 0 2 7 0 -18 33
34 (N=10) He 2 1.3157598D+14 200.00 10 3 0 2 7 0 -18 34
35 (N=11) He 2 1.0874048D+14 242.00 11 3 0 2 7 0 -18 35
36 (N=12) He 2 9.1372206D+13 288.00 12 3 0 2 7 0 -18 36
37 (N=13) He 2 7.7855608D+13 338.00 13 3 0 2 7 0 -18 37
38 (N=14) He 2 6.7130600D+13 392.00 14 3 0 2 7 0 -18 38
39 He 3 He 2 0.0000000D+00 1.00 1 3 3 2 7 0 -19 39
ils,ijfl 25 21 13289173674059048.
MAXIMUM NUMBER OF OVERLAPPING TRANSITIONS: 0
ACCURACY OF INTEGRATIONS:
Interval: 2.80000000E+16 1.00000000E+12 2.79990000E+16 2.79990003E+16
Planck functions: 17500. 4.9358E-04
35000. 4.3175E-04
70000. 2.4802E-04
TOTAL NUMBER OF FREQUENCIES: 128
SELECTED FREQUENCIES: 133
0
FREQUENCY POINTS AND WEIGHTS - EXPLICIT
---------------------------------------
IJ FREQ WEIGHT PROF
19 1.40247150D+16 2.45180439D+14 0.00000D+00
20 1.36569443D+16 4.90360892D+14 0.00000D+00
21 1.32891737D+16 2.54166193D+14 0.00000D+00
32 5.29702636D+15 5.59130561D+14 0.00000D+00
33 4.76732373D+15 5.03217505D+14 0.00000D+00
34 4.29059136D+15 4.52895754D+14 0.00000D+00
35 3.86153222D+15 4.07606179D+14 0.00000D+00
36 3.47537900D+15 2.69619403D+14 0.00000D+00
37 3.32229341D+15 1.09436786D+14 0.00000D+00
EXTERNAL IRRADIATION - EXTOT0, EXTOT: 0.000E+00 0.000E+00
VALUES OF SOME KEYWORD PARAMETERS:
==================================
ISPLIN= 0 IRTE = 0 IBC = 3 ILMCOR= 3 ILPSCT= 1
ILASCT= 0 DJMAX = 0.001 NTRALI= 3 IPSLTE= 0
ICOMPT= 0
IZSCAL= 0 IBCHE = 1 IVISC = 0
IFALI = 5 IFPOPR= 4 JALI = 1 IFRALI= 0
IFPREC= 1 IELCOR= -1 ICHC = 1 IRSPLT= 1 IATREF= 1
MODREF= 1 IACPP = 7 IACPD = 0 IFLEV = 0 IDLTE = 1000
POPZER=1.E-20 POPZR2=1.E-20 RADZER=1.E-20 NITZER= 1 IFDIEL= 0
IOVER = 1 ITLAS = 100
NITER = 30 NLAMBD= 2 ND = 70
JIDS = 0 IDMFIX= 1
NMU = 3
NELSC = 0 IHECOR= 0 IBFINT= 1 IRDER = 3 CHMAX = 0.001
ILDER = 0 IBPOPE= 1 CHMAXT= 0.010 NLAMT = 1
INTRPL= 0 ICHANG= 0
INHE = 1 INRE = 2 INPC = 3 INSE = 4 INMP = 0
INDL = 0 NDRE = 0 TAUDIV= 0.500 IDLST = 5 NRETC = 0
ICONV = 0 IPRESS= 0 ITEMP = 0
IOPADD= 4 IRSCT = 1 IOPHMI= 1 IOPH2P= 0
IACC = 7 IACD = 4 KSNG = 0 ITEK = 4 ORELAX= 1.000
IWINBL= -1
ICRSW = 0 SWPFAC= 0.100 SWPLIM= 0.001 SWPINC= 3.000
IFPRD = 0 XPDIV = 3.0
TRAD = 0. WDIL =0.000
HMIX0 = -1.0 VTB = 0. 1
XGRAD = 0.00 STRL1 =1.E-03 STRL2 =2.E-02
STRLX =1.E-10
FRCMAX=0.E+00 FRCMIN=1.E+12 FRLMAX=2.E+16 FRLMIN=1.E+13
CFRMAX= 2.00
DFTAIL= 0.250 NFTAIL= 21
TSNU = 0. VTNU = 0.00 DDNU = 0.750
IELNU = 0 CNU1 = 4.50 CNU2 = 3.00
ISPODF= 0
DPSILG= 10.00 DPSILT= 1.25 DPSILN= 10.00 DPSILD= 1.25
ICOMST= 1 ICOMDE= 1 ICOMBC= 1
ICMDRA= 0 KNISH = 0
NCFOR1= 0 NCFOR2= 1 NCCOUP= 0 NCITOT= 1 NCFULL= 1
Total number of lines : 0
Number of weak lines : 0
Intermediate lines : 0
Number of strong lines: 0
MAXIMUM NUMBER OF OVERLAPPING TRANSITIONS: 0
ACCURACY OF INTEGRATIONS:
Interval: 2.80000000E+16 1.00000000E+12 2.79990000E+16 2.79990003E+16
Planck functions: 17500. 4.9358E-04
35000. 4.3175E-04
70000. 2.4802E-04
TOTAL NUMBER OF FREQUENCIES: 128
SELECTED FREQUENCIES: 128
SCHEME OF RADIATIVE EQUIL. DETERMINED IN RESOLV
ONLY INTEGRAL EQUATION FOR ID <= 0
BOTH FOR 1 <= ID <= 65
SCHEME OF RADIATIVE EQUIL. DETERMINED IN RESOLV
ONLY INTEGRAL EQUATION FOR ID <= 0
BOTH FOR 1 <= ID <= 65
REFERENCE LEVEL INDICES AS FUNCTIONS OF DEPTH
ITER =
ID= 1 0 0
ID= 2 0 0
ID= 3 0 0
ID= 4 0 0
ID= 5 0 0
ID= 6 0 0
ID= 7 0 0
ID= 8 0 0
ID= 9 0 0
ID= 10 0 0
ID= 11 0 0
ID= 12 0 0
ID= 13 0 0
ID= 14 0 0
ID= 15 0 0
ID= 16 0 0
ID= 17 0 0
ID= 18 0 0
ID= 19 0 0
ID= 20 0 0
ID= 21 0 0
ID= 22 0 0
ID= 23 0 0
ID= 24 0 0
ID= 25 0 0
ID= 26 0 0
ID= 27 0 0
ID= 28 0 0
ID= 29 0 0
ID= 30 0 0
ID= 31 0 0
ID= 32 0 0
ID= 33 0 0
ID= 34 0 0
ID= 35 0 0
ID= 36 0 0
ID= 37 0 0
ID= 38 0 0
ID= 39 0 0
ID= 40 0 0
ID= 41 0 0
ID= 42 0 0
ID= 43 0 0
ID= 44 0 0
ID= 45 0 0
ID= 46 0 0
ID= 47 0 0
ID= 48 0 0
ID= 49 0 0
ID= 50 0 0
ID= 51 0 0
ID= 52 0 0
ID= 53 0 0
ID= 54 0 0
ID= 55 0 0
ID= 56 0 0
ID= 57 0 0
ID= 58 0 0
ID= 59 0 0
ID= 60 0 0
ID= 61 0 0
ID= 62 0 0
ID= 63 0 0
ID= 64 0 0
ID= 65 0 0
ID= 66 0 0
ID= 67 0 0
ID= 68 0 0
ID= 69 0 0
ID= 70 0 0
************************************
FINAL RESULTS:
MODEL QUANTITIES IN 1. ITERATION
************************************
TOTAL SURFACE FLUX NaN
----------------------
FINAL MODEL ATMOSPHERE
----------------------
ID MASS TAUROSS TEMP NE DENS P_gas LOG(G_rad) RAD/TOT CON/TOT (RAD+CON)/TOT
1 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
2 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
3 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
4 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
5 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
6 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
7 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
8 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
9 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
10 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
11 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
12 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
13 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
14 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
15 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
16 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
17 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
18 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
19 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
20 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
21 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
22 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
23 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
24 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
25 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
26 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
27 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
28 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
29 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
30 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
31 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
32 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
33 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
34 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
35 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
36 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
37 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
38 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
39 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
40 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
41 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
42 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
43 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
44 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
45 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
46 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
47 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
48 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
49 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
50 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
51 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
52 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
53 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
54 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
55 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
56 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
57 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
58 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
59 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
60 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
61 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
62 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
63 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
64 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
65 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
66 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
67 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
68 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
69 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
70 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
+33
View File
@@ -0,0 +1,33 @@
35000. 4.0 ! TEFF, GRAV
F F ! LTE, LTGRAY
'' ! no change of general optional parameters
*-----------------------------------------------------------------
* frequencies
50 ! NFREAD
*-----------------------------------------------------------------
* data for atoms
*
8 ! NATOMS
* mode abn modpf
2 0 0
2 0 0
0 0 0
0 0 0
0 0 0
1 0 0
1 0 0
1 0 0
*-----------------------------------------------------------------
* data for ions
*
*iat iz nlevs ilast ilvlin nonstd typion filei
*
1 0 9 0 0 0 ' H 1' './data/h1.dat'
1 1 1 1 0 0 ' H 2' ' '
2 0 14 0 0 0 'He 1' './data/he1.dat'
2 1 14 0 0 0 'He 2' './data/he2.dat'
2 2 1 1 0 0 'He 3' ' '
0 0 0 -1 0 0 ' ' ' '
*
* end
+383
View File
@@ -0,0 +1,383 @@
READ LINE: 35000. 4.0 ! TEFF, GRAV
READ LINE: F F ! LTE, LTGRAY
READ LINE: '' ! no change of general optional parameters
READ LINE:*-----------------------------------------------------------------
READ LINE:* frequencies
READ LINE: 50 ! NFREAD
READ LINE:*-----------------------------------------------------------------
READ LINE:* data for atoms
READ LINE:*
READ LINE: 8 ! NATOMS
READ LINE:* mode abn modpf
READ LINE: 2 0 0
READ LINE: 2 0 0
READ LINE: 0 0 0
READ LINE: 0 0 0
READ LINE: 0 0 0
READ LINE: 1 0 0
READ LINE: 1 0 0
READ LINE: 1 0 0
READ LINE:*-----------------------------------------------------------------
READ LINE:* data for ions
READ LINE:*
READ LINE:*iat iz nlevs ilast ilvlin nonstd typion filei
READ LINE:*
READ LINE: 1 0 9 0 0 0 ' H 1' './data/h1.dat'
READ LINE: 1 1 1 1 0 0 ' H 2' ' '
READ LINE: 2 0 14 0 0 0 'He 1' './data/he1.dat'
READ LINE: 2 1 14 0 0 0 'He 2' './data/he2.dat'
READ LINE: 2 2 1 1 0 0 'He 3' ' '
READ LINE: 0 0 0 -1 0 0 ' ' ' '
READ LINE:*
READ LINE:* end
READ LINE:
1*******************************
M O D E L A T M O S P H E R E
*******************************
TEFF = 35000.
LOG G = 4.00
INPUT KEYWORD PARAMETERS:
-------------------------
CHEMICAL ELEMENTS INCLUDED
--------------------------
NUMBER ELEMENT ABUNDANCE
A=N(ELEM)/N(H) A/A(SOLAR)
1 H 1.00E+00 1.00E+00 EXPLICIT: IAT= 1
2 He 8.51E-02 1.00E+00 EXPLICIT: IAT= 2
6 C 2.45E-04 1.00E+00
7 N 6.03E-05 1.00E+00
8 O 4.57E-04 1.00E+00
YTOT WMY WMM 1.08588 1.35982D+00 2.09547D-24
0
EXPLICIT IONS INCLUDED
----------------------
NO. ION N0 N1 NK IZ IUPSUM ICUP FF
1 H 1 1 9 10 1 -100 16 0.000D+00
2 He 1 11 24 25 1 0 16 0.000D+00
3 He 2 25 38 39 2 0 32 0.000D+00
iopadd,irsct,irsche,irsch2,iophmi,ioph2p,iopoh,iopch 4 1 1 0 1 0 0 0
0
EXPLICIT ENERGY LEVELS INCLUDED
-------------------------------
NO. LEVEL ION ION.FREQ.(s^-1) G NQ IEL ILK IAT IMOD ILT IIE IIF
1 (N=1) H 1 3.2880500D+15 2.00 1 1 0 1 7 0 -1 1
2 (N=2) H 1 8.2201250D+14 8.00 2 1 0 1 7 0 -2 2
3 (N=3) H 1 3.6533889D+14 18.00 3 1 0 1 7 0 -3 3
4 (N=4) H 1 2.0550313D+14 32.00 4 1 0 1 7 0 -4 4
5 (N=5) H 1 1.3152200D+14 50.00 5 1 0 1 7 0 -5 5
6 (N=6) H 1 9.1334722D+13 72.00 6 1 0 1 7 0 -5 6
7 (N=7) H 1 6.7103061D+13 98.00 7 1 0 1 7 0 -5 7
8 (N=8) H 1 5.1375781D+13 128.00 8 1 0 1 7 0 -5 8
9 (N=9) H 1 0.0000000D+00 162.00 9 1 0 1 7 0 -5 9
10 H 2 H 1 0.0000000D+00 1.00 1 1 1 1 7 0 -6 10
11 1 sing S He 1 5.9450352D+15 1.00 1 2 0 2 7 0 -7 11
12 2 trip S He 1 1.1526721D+15 3.00 2 2 0 2 7 0 -8 12
13 2 sing S He 1 9.6014543D+14 1.00 2 2 0 2 7 0 -9 13
14 2 trip P He 1 8.7593372D+14 9.00 2 2 0 2 7 0 -10 14
15 2 sing P He 1 8.1453622D+14 3.00 2 2 0 2 7 0 -11 15
16 3 trip S He 1 4.5172735D+14 3.00 3 2 0 2 7 0 -12 16
17 3 sing S He 1 4.0292112D+14 1.00 3 2 0 2 7 0 -12 17
18 3 trip P He 1 3.8193564D+14 9.00 3 2 0 2 7 0 -12 18
19 3 trip D He 1 3.6583679D+14 15.00 3 2 0 2 7 0 -12 19
20 3 sing D He 1 3.6574687D+14 5.00 3 2 0 2 7 0 -12 20
21 3 sing P He 1 3.6259902D+14 3.00 3 2 0 2 7 0 -12 21
22 4 trip S He 1 2.4004386D+14 3.00 4 2 0 2 7 0 -13 22
23 4 sing S He 1 2.2079719D+14 1.00 4 2 0 2 7 0 -13 23
24 4 trip P He 1 2.1249294D+14 9.00 4 2 0 2 7 0 -13 24
25 (N=1) He 2 1.3157598D+16 2.00 1 3 2 2 7 0 -14 25
26 (N=2) He 2 3.2893994D+15 8.00 2 3 0 2 7 0 -15 26
27 (N=3) He 2 1.4619553D+15 18.00 3 3 0 2 7 0 -16 27
28 (N=4) He 2 8.2234986D+14 32.00 4 3 0 2 7 0 -17 28
29 (N=5) He 2 5.2630391D+14 50.00 5 3 0 2 7 0 -18 29
30 (N=6) He 2 3.6548882D+14 72.00 6 3 0 2 7 0 -18 30
31 (N=7) He 2 2.6852240D+14 98.00 7 3 0 2 7 0 -18 31
32 (N=8) He 2 2.0558746D+14 128.00 8 3 0 2 7 0 -18 32
33 (N=9) He 2 1.6243948D+14 162.00 9 3 0 2 7 0 -18 33
34 (N=10) He 2 1.3157598D+14 200.00 10 3 0 2 7 0 -18 34
35 (N=11) He 2 1.0874048D+14 242.00 11 3 0 2 7 0 -18 35
36 (N=12) He 2 9.1372206D+13 288.00 12 3 0 2 7 0 -18 36
37 (N=13) He 2 7.7855608D+13 338.00 13 3 0 2 7 0 -18 37
38 (N=14) He 2 6.7130600D+13 392.00 14 3 0 2 7 0 -18 38
39 He 3 He 2 0.0000000D+00 1.00 1 3 3 2 7 0 -19 39
ils,ijfl 25 21 13289173674059048.
MAXIMUM NUMBER OF OVERLAPPING TRANSITIONS: 7
ACCURACY OF INTEGRATIONS:
Interval: 2.80000000E+16 1.00000000E+12 2.79990000E+16 2.79990003E+16
Planck functions: 17500. 2.3673E-04
35000. 4.0044E-04
70000. 1.0039E-04
TOTAL NUMBER OF FREQUENCIES: 3146
SELECTED FREQUENCIES: 3133
0
FREQUENCY POINTS AND WEIGHTS - EXPLICIT
---------------------------------------
IJ FREQ WEIGHT PROF
19 1.40247150D+16 2.45180439D+14 0.00000D+00
20 1.36569443D+16 4.90360892D+14 0.00000D+00
21 1.32891737D+16 1.64259068D+14 0.00000D+00
32 5.29702636D+15 1.70995639D+14 0.00000D+00
33 4.76732373D+15 3.84350582D+14 0.00000D+00
34 4.29059136D+15 4.52895754D+14 0.00000D+00
35 3.86153222D+15 4.07606179D+14 0.00000D+00
36 3.47537900D+15 2.69619403D+14 0.00000D+00
37 3.32229341D+15 9.09297079D+13 0.00000D+00
154 2.46604814D+15 1.06376566D+10 3.15594D-14
155 2.46603750D+15 1.06376566D+10 3.16517D-14
156 2.46602686D+15 1.06376566D+10 3.15594D-14
204 2.92271111D+15 2.51750618D+10 5.07557D-15
249 3.08254688D+15 2.65518230D+10 1.76373D-15
452 4.56673612D+14 3.02381655D+10 2.63113D-13
485 6.16509376D+14 4.08210986D+10 3.62907D-14
EXTERNAL IRRADIATION - EXTOT0, EXTOT: 0.000E+00 0.000E+00
VALUES OF SOME KEYWORD PARAMETERS:
==================================
ISPLIN= 0 IRTE = 0 IBC = 3 ILMCOR= 3 ILPSCT= 1
ILASCT= 0 DJMAX = 0.001 NTRALI= 3 IPSLTE= 0
ICOMPT= 0
IZSCAL= 0 IBCHE = 1 IVISC = 0
IFALI = 5 IFPOPR= 4 JALI = 1 IFRALI= 0
IFPREC= 1 IELCOR= -1 ICHC = 1 IRSPLT= 1 IATREF= 1
MODREF= 1 IACPP = 7 IACPD = 0 IFLEV = 0 IDLTE = 1000
POPZER=1.E-20 POPZR2=1.E-20 RADZER=1.E-20 NITZER= 1 IFDIEL= 0
IOVER = 1 ITLAS = 100
NITER = 30 NLAMBD= 2 ND = 70
JIDS = 0 IDMFIX= 1
NMU = 3
NELSC = 0 IHECOR= 0 IBFINT= 1 IRDER = 3 CHMAX = 0.001
ILDER = 0 IBPOPE= 1 CHMAXT= 0.010 NLAMT = 1
INTRPL= 0 ICHANG= 0
INHE = 1 INRE = 2 INPC = 3 INSE = 4 INMP = 0
INDL = 0 NDRE = 0 TAUDIV= 0.500 IDLST = 5 NRETC = 0
ICONV = 0 IPRESS= 0 ITEMP = 0
IOPADD= 4 IRSCT = 1 IOPHMI= 1 IOPH2P= 0
IACC = 7 IACD = 4 KSNG = 0 ITEK = 4 ORELAX= 1.000
IWINBL= -1
ICRSW = 0 SWPFAC= 0.100 SWPLIM= 0.001 SWPINC= 3.000
IFPRD = 0 XPDIV = 3.0
TRAD = 0. WDIL =0.000
HMIX0 = -1.0 VTB = 0. 1
XGRAD = 0.00 STRL1 =1.E-03 STRL2 =2.E-02
STRLX =1.E-10
FRCMAX=0.E+00 FRCMIN=1.E+12 FRLMAX=2.E+16 FRLMIN=1.E+13
CFRMAX= 2.00
DFTAIL= 0.250 NFTAIL= 21
TSNU = 0. VTNU = 0.00 DDNU = 0.750
IELNU = 0 CNU1 = 4.50 CNU2 = 3.00
ISPODF= 0
DPSILG= 10.00 DPSILT= 1.25 DPSILN= 10.00 DPSILD= 1.25
ICOMST= 1 ICOMDE= 1 ICOMBC= 1
ICMDRA= 0 KNISH = 0
NCFOR1= 0 NCFOR2= 1 NCCOUP= 0 NCITOT= 1 NCFULL= 1
Total number of lines : 137
Number of weak lines : 0
Intermediate lines : 0
Number of strong lines: 137
MAXIMUM NUMBER OF OVERLAPPING TRANSITIONS: 7
ACCURACY OF INTEGRATIONS:
Interval: 2.80000000E+16 1.00000000E+12 2.79990000E+16 2.79990003E+16
Planck functions: 17500. 2.3673E-04
35000. 4.0044E-04
70000. 1.0039E-04
TOTAL NUMBER OF FREQUENCIES: 3146
SELECTED FREQUENCIES: 3146
SCHEME OF RADIATIVE EQUIL. DETERMINED IN RESOLV
ONLY INTEGRAL EQUATION FOR ID <= 0
BOTH FOR 1 <= ID <= 65
SCHEME OF RADIATIVE EQUIL. DETERMINED IN RESOLV
ONLY INTEGRAL EQUATION FOR ID <= 0
BOTH FOR 1 <= ID <= 65
REFERENCE LEVEL INDICES AS FUNCTIONS OF DEPTH
ITER =
ID= 1 0 0
ID= 2 0 0
ID= 3 0 0
ID= 4 0 0
ID= 5 0 0
ID= 6 0 0
ID= 7 0 0
ID= 8 0 0
ID= 9 0 0
ID= 10 0 0
ID= 11 0 0
ID= 12 0 0
ID= 13 0 0
ID= 14 0 0
ID= 15 0 0
ID= 16 0 0
ID= 17 0 0
ID= 18 0 0
ID= 19 0 0
ID= 20 0 0
ID= 21 0 0
ID= 22 0 0
ID= 23 0 0
ID= 24 0 0
ID= 25 0 0
ID= 26 0 0
ID= 27 0 0
ID= 28 0 0
ID= 29 0 0
ID= 30 0 0
ID= 31 0 0
ID= 32 0 0
ID= 33 0 0
ID= 34 0 0
ID= 35 0 0
ID= 36 0 0
ID= 37 0 0
ID= 38 0 0
ID= 39 0 0
ID= 40 0 0
ID= 41 0 0
ID= 42 0 0
ID= 43 0 0
ID= 44 0 0
ID= 45 0 0
ID= 46 0 0
ID= 47 0 0
ID= 48 0 0
ID= 49 0 0
ID= 50 0 0
ID= 51 0 0
ID= 52 0 0
ID= 53 0 0
ID= 54 0 0
ID= 55 0 0
ID= 56 0 0
ID= 57 0 0
ID= 58 0 0
ID= 59 0 0
ID= 60 0 0
ID= 61 0 0
ID= 62 0 0
ID= 63 0 0
ID= 64 0 0
ID= 65 0 0
ID= 66 0 0
ID= 67 0 0
ID= 68 0 0
ID= 69 0 0
ID= 70 0 0
************************************
FINAL RESULTS:
MODEL QUANTITIES IN 1. ITERATION
************************************
TOTAL SURFACE FLUX NaN
----------------------
FINAL MODEL ATMOSPHERE
----------------------
ID MASS TAUROSS TEMP NE DENS P_gas LOG(G_rad) RAD/TOT CON/TOT (RAD+CON)/TOT
1 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
2 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
3 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
4 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
5 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
6 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
7 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
8 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
9 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
10 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
11 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
12 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
13 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
14 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
15 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
16 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
17 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
18 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
19 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
20 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
21 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
22 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
23 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
24 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
25 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
26 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
27 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
28 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
29 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
30 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
31 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
32 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
33 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
34 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
35 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
36 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
37 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
38 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
39 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
40 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
41 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
42 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
43 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
44 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
45 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
46 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
47 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
48 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
49 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
50 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
51 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
52 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
53 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
54 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
55 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
56 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
57 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
58 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
59 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
60 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
61 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
62 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
63 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
64 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
65 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
66 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
67 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
68 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
69 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
70 NaN NaN NaN NaN NaN NaN 0.000E+00 NaN 0.000E+00 NaN
View File
+615
View File
@@ -0,0 +1,615 @@
"""Utility programs for examining output from Tlusty
At the moment, it contains the following routines:
1) pconv - for ploting the convergence log contasined in the output
file from Tlusty (fort.9);
2) pmodel - extracting values of column mass and a selected state parameter
from the Tlusty output file fort.7m (coindensed model) or fort.12
(b-factors for NLTE models);
3) pmodels - similar to pmodel, but with an option to plot selected state
parameter for one or more Tlusty models, and a possibility of
plotting differences of between individual models
4) pmods - a plot of a range pf state parameters for one or more Tlusty models
Examples:
--------
To plot a convergence log of the last computed model:
>>> import matplotlib.pyplot as plt
>>> import tlusty as tl
>>> plt.ion()
>>> tl.pconv()
a convergence log for a previously computed model, say, hhe35lt:
>>> tl.pconv('hhe35lt')
To extract log(column mass) and temperature of the same model
>>> (m35,t35) = tl.pmodel('hhe35lt')
which can then be plotted or used for some other purpose.
To plot the temperature as a function of log(m) for the last computed
model, do
>>> tl.pmodels()
and to plot the temperature for three models, hhe35lt','hhe35nc, and
hhe35nl, and then differences from the first model, do
>>> tl.pmodels(['hhe35lt','hhe35nc','hhe35nl'])
>>> tl.pmodels(['hhe35lt','hhe35nc','hhe35nl'],diff=True)
To plot level populations for the first five levels of hydrogen for the
model hhe35nl, do
>>> tl.pmods('hhe35nl',[3,4,5,6,7])
"""
# Tlusty输出分析工具程序
# 当前包含以下功能:
# 1) pconv - 绘制Tlusty输出文件(fort.9)的收敛日志
# 2) pmodel - 从Tlusty输出文件(fort.7m或fort.12)提取列质量及指定状态参数
# 3) pmodels - 类似pmodel,支持多模型对比及差异分析
# 4) pmods - 绘制多个Tlusty模型的多状态参数
# 5) pflux - 绘制辐射通量或通量差异
import matplotlib.pyplot as plt # 导入绘图库
import numpy as np # 导入数值计算库
import sys # 系统相关功能
###################################################
def pconv(relcfile='fort'):
""""
绘制Tlusty输出文件(单位9)的收敛日志
类似旧IDL程序PCONV.PRO,生成2x3子图:
第一行显示温度(或电离态)的相对变化
第二行显示所有状态参数的最大相对变化
左列显示各深度的相对变化值
中列显示相对变化的对数
右列显示每迭代步的最大变化值
右侧子图最能反映整体收敛情况
标题会显示运行时间(若存在fort.69文件)
参数:
relcfile: str, 可选 - 模型核心文件名(自动添加.9后缀)
默认值:'fort'(对应fort.9
返回:无
"""
relcfile += '.9' # 补充文件后缀
try:
f = open(relcfile) # 打开文件
lines = f.readlines() # 读取所有行
except:
print(f'错误:无法打开{relcfile}') # 异常处理
return()
idep,itnu,delt,delp,delm = [],[],[],[],[] # 初始化变量
i = 3 # 从第4行开始读取数据
while i < len(lines): # 循环处理每一行
xlin = lines[i].replace('D','E') # 替换指数符号
val = list(map(float, xlin.split())) # 解析数值
itnu.append(val[0]) # 迭代次数
idep.append(val[1]) # 深度索引
delt.append(val[2]) # 温度变化
delp.append(val[4]) # 电离变化
delm.append(val[6]) # 状态向量最大变化
i += 1 # 下一行
niter = int(itnu[-1]) # 总迭代次数
nd = int(idep[0]) # 深度层数
# 设置坐标轴标题
xtit1 = '深度索引' # x轴标题(左列)
xtit2 = '迭代次数' # x轴标题(右列)
ytit1 = '相对变化值' # y轴标题(左列)
ytit2 = '相对变化对数' # y轴标题(中列)
ftit1 = '温度' # 第一行标题
ftit2 = '最大电离变化' # 第二行左列标题
ftit3 = '状态向量最大变化' # 第二行右列标题
if max(delt) == 0: # 若温度未变化则使用电离变化
delt = delp
ftit1 = ftit2
fig, axes = plt.subplots(2,3) # 创建2x3子图
# 设置各子图标题和坐标轴
axes[0,0].set(xlabel=xtit1, ylabel=ytit1, title=ftit1)
axes[0,1].set(xlabel=xtit1, ylabel=ytit2)
axes[1,0].set(xlabel=xtit1, ylabel=ytit1, title=ftit3)
axes[1,1].set(xlabel=xtit1, ylabel=ytit2)
i = 0
tmaxt, tmaxm, tmaxi = [], [], []
while i < niter: # 循环绘制各迭代步数据
i0, i1 = i*nd, (i+1)*nd
# 绘制温度变化
axes[0,0].plot(idep[i0:i1], delt[i0:i1]) # 左上
axes[0,1].plot(idep[i0:i1], np.log10(abs(delt[i0:i1]))) # 中上
# 绘制状态向量变化
axes[1,0].plot(idep[i0:i1], delm[i0:i1]) # 左下
axes[1,1].plot(idep[i0:i1], np.log10(abs(delm[i0:i1]))) # 中下
# 记录最大值
tmaxt.append(max(np.log10(abs(delt[i0:i1]))))
tmaxm.append(max(np.log10(abs(delm[i0:i1]))))
tmaxi.append(i+1) # 迭代次数
i += 1
# 绘制右侧最大值变化曲线
axes[0,2].set(xlabel=xtit2, ylabel='最大相对变化', title=ftit1)
axes[0,2].plot(tmaxi, tmaxt, 'ko--') # 右上
axes[1,2].set(xlabel=xtit2, ylabel='最大相对变化', title=ftit3)
axes[1,2].plot(tmaxi, tmaxm, 'ko--') # 右下
# 添加总标题(包含运行时间)
timfile = relcfile[:-2]+'.69'
try:
with open(timfile) as ft:
linti = ft.readlines()
titlt = f"耗时:{linti[-1].split()[2]}"
except:
titlt = ''
fig.suptitle(f"{relcfile}{titlt}")
plt.tight_layout()
plt.show()
# Next lines permit one to run the routine from the command line
#if __name__ == "__main__":
# import sys
# if len(sys.argv)==4:
# doit(sys.argv[1],sys.argv[2],sys.argv[3])
# else:
# print (__doc__)
# return()
####################################################
def pmodel(modfile='fort', ind=0):
"""
从Tlusty的压缩模型大气文件(单元7)中提取列质量和一个状态参数,也可从类似输出文件(单元12)提取b因子。
功能类似旧IDL程序PMODEL.PRO(或MODELS11.PRO)。
参数:
-----------
modfile: str, 可选
模型大气文件的核心名称。若名称不含小数点".",则自动添加".7"
默认值:'fort',即文件名默认为'fort.7'
ind: int, 可选 - 状态参数的索引
默认0,即温度
状态参数索引说明:
0 - 温度(K
1 - 电子密度(cm⁻³)
2 - 质量密度(g/cm³)
3 - 总粒子数密度(仅含分子模型)
后续索引 - 能级布居数
返回:
-----------
dm: array
列质量的对数(log10)
par: array
所选状态参数的值(温度为原始值,其他为对数)
"""
# 判断文件名格式并补充后缀
if modfile.count('.') == 0:
modfile += '.7' # 补充默认后缀".7"
# 尝试打开文件
try:
f = open(modfile)
lines = f.readlines() # 读取所有行
except:
print(f'错误:无法打开 {modfile}') # 异常处理
return ()
# 读取输入参数的深度数量和参数数量
x = lines[0] # 第一行数据
nd = int(x.split()[0]) # 总深度层数
npa = abs(int(x.split()[1])) # 状态参数数量
# 设置每行读取的深度数量(根据文件类型)
ndrow = 6
if modfile.count('.12') > 0:
ndrow = 8 # 若为b因子文件则调整
# 计算需要读取的行数
nr = nd // ndrow
if nd % ndrow != 0:
nr += 1 # 处理余数
# 读取深度数据
dm = [] # 初始化列质量列表
i = 0
while i < nr:
x = lines[i+1] # 从第二行开始读取深度数据
x = x.replace('D','E',6) # 替换指数符号
val = x.split() # 分割数值
j = 0
while j < ndrow:
k = ndrow * i + j
if k < nd:
dm.append(float(val[j])) # 存储深度值
j += 1
i += 1
# 读取状态参数数据
nrx = npa // 5 # 每行参数数量
if npa % 5 != 0:
nrx += 1 # 处理余数
par = [] # 初始化状态参数列表
i = nr + 1 # 从深度数据后开始读取参数
id = 0
while id < nd:
xpar = [] # 临时参数列表
j = 0
while j < nrx:
x = lines[i] # 读取当前行
x = x.replace('D','E',6) # 替换指数符号
val = x.split() # 分割数值
k = 0
while k < 5:
if 5*j + k < npa:
xpar.append(float(val[k])) # 存储参数值
k += 1
j += 1
i += 1
par.append(xpar[ind]) # 保存指定索引的参数值
id += 1
# 数据处理与绘图
dm = np.log10(dm) # 转换为列质量对数
par = np.array(par) # 转换为数组
if ind > 0:
par = np.log10(par) # 非温度参数取对数
# 创建绘图
fig, ax = plt.subplots()
ax.set_xlabel('log mass') # X轴标签
ax.set_title(modfile) # 标题
# 根据参数类型设置Y轴标签和绘图
if ind == 0:
ax.set_ylabel('temperature') # 温度标签
ax.plot(dm, par) # 绘制温度曲线
else:
ax.set_ylabel('log n') # 密度/布居数标签
ax.plot(dm, np.log10(par)) # 绘制对数曲线
plt.show() # 显示图形
# return (dm, par) # 返回数据数组
####################################################
def pmodels(modfiles=['fort'], ind=0, diff=False):
"""
类似pmodel函数,但支持多模型对比和差异分析
可绘制一个或多个Tlusty模型的某个状态参数,并可显示与首个模型的差异
参数:
-----------
modfiles: list of str, 可选
模型文件的核心名称列表。若名称不含小数点".",则自动添加".7"
默认值:['fort'](对应fort.7
ind: int, 可选 - 状态参数的索引
默认0(温度)
diff: bool, 可选
若为True,绘制指定状态参数与首个模型的差异
默认False(绘制实际参数值)
状态参数索引说明:
0 - 温度(K
1 - 电子密度(cm⁻³)
2 - 质量密度(g/cm³)
3 - 总粒子数密度(仅含分子模型)
后续索引 - 能级布居数
返回:
-----------
无(直接绘图)
"""
imod = 0 # 初始化模型计数器
for modfile in modfiles: # 遍历所有模型文件
if modfile.count('.') == 0: # 自动补充后缀".7"
modfile += '.7'
# 尝试打开文件
try:
f = open(modfile)
lines = f.readlines()
except:
print(f'错误:无法打开 {modfile}')
return()
# 读取输入参数的深度数量和参数数量
x = lines[0] # 第一行数据
nd = int(x.split()[0]) # 总深度层数
npa = abs(int(x.split()[1])) # 状态参数数量
# 设置每行读取的深度数量(根据文件类型)
ndrow = 6
if modfile.count('.12') > 0:
ndrow = 8 # 若为b因子文件则调整
# 计算需要读取的行数
nr = nd // ndrow
if nd % ndrow != 0:
nr += 1 # 处理余数
# 读取深度数据
dm = [] # 初始化列质量列表
i = 0
while i < nr:
x = lines[i+1] # 从第二行开始读取深度数据
x = x.replace('D','E',6) # 替换指数符号
val = x.split() # 分割数值
j = 0
while j < ndrow:
k = ndrow * i + j
if k < nd:
dm.append(float(val[j])) # 存储深度值
j += 1
i += 1
# 读取状态参数数据
nrx = npa // 5 # 每行参数数量
if npa % 5 != 0:
nrx += 1 # 处理余数
par = [] # 初始化状态参数列表
i = nr + 1 # 从深度数据后开始读取参数
id = 0
while id < nd:
xpar = [] # 临时参数列表
j = 0
while j < nrx:
x = lines[i] # 读取当前行
x = x.replace('D','E',6) # 替换指数符号
val = x.split() # 分割数值
k = 0
while k < 5:
if 5*j + k < npa:
xpar.append(float(val[k])) # 存储参数值
k += 1
j += 1
i += 1
par.append(xpar[ind]) # 保存指定索引的参数值
id += 1
# 数据处理与绘图
dm = np.log10(dm) # 转换为列质量对数
if ind != 0:
par = np.log10(par) # 非温度参数取对数
# 初始化绘图(首个模型)
if imod == 0:
fig, ax = plt.subplots() # 创建图形
ax.set_xlabel('log mass') # X轴标签
titl = modfile[:-2] # 标题初始化
dm0 = dm.copy() # 存储首个模型的深度数据
par0 = par.copy() # 存储首个模型的参数值
if diff: # 差异模式
par = np.array(par) - np.array(par0) # 计算差异
else: # 后续模型
titl += f', {modfile[:-2]}' # 更新标题
if diff: # 差异模式处理
# 线性插值到首个模型的深度网格
pari = np.interp(dm0, dm, par)
par = pari - par0 # 计算与首个模型的差异
# 设置Y轴标签
if ind == 0:
ax.set_ylabel('temperature') # 温度标签
else:
ax.set_ylabel('log n') # 密度/布居数标签
# 绘制数据
if not diff:
ax.plot(dm, par) # 绘制实际参数曲线
else:
ax.plot(dm0, par) # 绘制差异曲线
imod += 1 # 增加模型计数器
ax.set_title(titl) # 设置最终标题
plt.show() # 显示图形
#####################################################################
def pmods(modfiles, ind):
"""
类似pmodels函数,但支持同时绘制多个状态参数
可绘制一个或多个Tlusty模型的多个状态参数曲线
参数:
-----------
modfiles: list of str
模型文件的核心名称列表。若名称不含小数点".",则自动添加".7"
ind: list of int
需要绘制的状态参数索引列表
状态参数索引说明:
0 - 温度(K
1 - 电子密度(cm⁻³)
2 - 质量密度(g/cm³)
3 - 总粒子数密度(仅含分子模型)
后续索引 - 能级布居数
返回:
-----------
无(直接绘图)
"""
imod = 0 # 初始化模型计数器
for modfile in modfiles: # 遍历所有模型文件
if modfile.count('.') == 0: # 自动补充后缀".7"
modfile += '.7'
# 尝试打开文件
try:
f = open(modfile)
lines = f.readlines()
except:
print(f'错误:无法打开 {modfile}')
return()
# 读取输入参数的深度数量和参数数量
x = lines[0] # 第一行数据
nd = int(x.split()[0]) # 总深度层数
npa = abs(int(x.split()[1])) # 状态参数数量
# 设置每行读取的深度数量(根据文件类型)
ndrow = 6
if modfile.count('.12') > 0:
ndrow = 8 # 若为b因子文件则调整
# 计算需要读取的行数
nr = nd // ndrow
if nd % ndrow != 0:
nr += 1 # 处理余数
# 读取深度数据
dm = [] # 初始化列质量列表
i = 0
while i < nr:
x = lines[i+1] # 从第二行开始读取深度数据
x = x.replace('D','E',6) # 替换指数符号
val = x.split() # 分割数值
j = 0
while j < ndrow:
k = ndrow * i + j
if k < nd:
dm.append(float(val[j])) # 存储深度值
j += 1
i += 1
# 读取所有状态参数数据
nrx = npa // 5 # 每行参数数量
if npa % 5 != 0:
nrx += 1 # 处理余数
totpar = [] # 存储所有参数的二维数组
i = nr + 1 # 从深度数据后开始读取参数
id = 0
while id < nd:
xpar = [] # 临时参数列表
j = 0
while j < nrx:
x = lines[i] # 读取当前行
x = x.replace('D','E',6) # 替换指数符号
val = x.split() # 分割数值
k = 0
while k < 5:
if 5*j + k < npa:
xpar.append(float(val[k])) # 存储参数值
k += 1
j += 1
i += 1
totpar.append(xpar) # 存储所有参数的当前层数据
id += 1
# 数据处理
pararr = np.log10(np.array(totpar)) # 转换为对数形式
dm = np.log10(dm) # 转换为列质量对数
# 初始化绘图(首个模型)
if imod == 0:
fig, ax = plt.subplots() # 创建图形
ax.set_xlabel('log mass') # X轴标签
ax.set_ylabel('log n') # Y轴标签
titl = modfile[:-2] # 标题初始化
# 绘制指定状态参数
for indx in ind: # 遍历所有需要绘制的参数索引
ax.plot(dm, pararr[:, indx]) # 绘制对应参数曲线
# 更新标题
if imod != 0:
titl += f', {modfile[:-2]}' # 添加模型名称
imod += 1 # 增加模型计数器
ax.set_title(titl) # 设置最终标题
plt.show() # 显示图形
def pflux(modfiles=['fort'], rel=False, ilogx=False):
"""
绘制Tlusty输出文件(单元14)的出射通量,或多个模型的通量相对差异
也可用于绘制Synspec生成的合成光谱
参数:
-----------
modfiles: list of str, 可选
模型文件的核心名称列表。若名称不含小数点".",则自动添加".14"
默认值:['fort'](对应fort.14
rel: bool, 可选
若为True,绘制指定模型的通量相对于首个模型的百分比差异:
rel(i) = (flux(i)-flux(0))/flux(0)*100%
默认False(绘制实际通量值)
ilogx: bool, 可选
若为True,设置X轴(波长)为对数坐标
默认False(线性坐标)
返回:
-----------
无(直接绘图)
"""
imod = 0 # 初始化模型计数器
for modfile in modfiles: # 遍历所有模型文件
if modfile.count('.') == 0: # 自动补充后缀".14"
modfile += '.14'
# 读取波长和通量数据
try:
wl, fl = np.loadtxt(modfile, unpack=True) # 加载文件数据
except:
print(f'错误:无法打开 {modfile}')
return()
# 初始化绘图(首个模型)
if imod == 0:
fig, ax = plt.subplots() # 创建图形
ax.set_xlabel('波长') # X轴标签
titl = modfile[:-3] # 标题初始化
wl0 = wl.copy() # 存储首个模型的波长数据
fl0 = fl.copy() # 存储首个模型的通量数据
if rel: # 相对差异模式
fl = (fl - fl0)/fl0 * 100 # 计算初始差异
else: # 后续模型
titl += f', {modfile[:-3]}' # 更新标题
if rel: # 相对差异模式处理
# 线性插值到首个模型的波长网格
fli = np.interp(wl0, wl, fl)
fl = (fli - fl0)/fl0 * 100 # 计算相对差异
# 绘制数据
if not rel:
if ilogx:
ax.semilogx(wl, fl) # 对数坐标X轴
else:
ax.plot(wl, fl) # 线性坐标X轴
else:
if ilogx:
ax.semilogx(wl0, fl) # 对数坐标X轴 + 相对差异
else:
ax.plot(wl0, fl) # 线性坐标X轴 + 相对差异
imod += 1 # 增加模型计数器
ax.set_title(titl) # 设置最终标题
plt.show() # 显示图形
if __name__ == "__main__":
file = sys.argv[1]
pconv(file)