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
+29
View File
@@ -0,0 +1,29 @@
COMMON/FIXALP/ABSO(MFREQ),EMIS(MFREQ),SCAT(MFREQ),
* REIT(MDEPTH),REIN(MDEPTH),REIM(MDEPTH),
* REIP(MLVEXP,MDEPTH),
* AREIT(MDEPTH),AREIN(MDEPTH),AREIM(MDEPTH),
* AREIP(MLVEXP,MDEPTH),
* CREIT(MDEPTH),CREIN(MDEPTH),CREIM(MDEPTH),
* CREIP(MLVEXP,MDEPTH),
* REIX(MDEPTH),CREIX(MDEPTH),
* REDX(MDEPTH),REDT(MDEPTH),REDN(MDEPTH),
* REDM(MDEPTH),REDP(MLVEXP,MDEPTH),
* REDXM(MDEPTH),REDTM(MDEPTH),REDNM(MDEPTH),
* REDMM(MDEPTH),REDPM(MLVEXP,MDEPTH),
* REDTP(MDEPTH),REDNP(MDEPTH),REDXP(MDEPTH),
* REDMP(MDEPTH),REDPP(MLVEXP,MDEPTH),
* HEIT(MDEPTH),HEIN(MDEPTH),HEIM(MDEPTH),
* HEIP(MLVEXP,MDEPTH),
* HEITM(MDEPTH),HEINM(MDEPTH),HEIMM(MDEPTH),
* HEIPM(MLVEXP,MDEPTH),
* HEITP(MDEPTH),HEINP(MDEPTH),HEIMP(MDEPTH),
* HEIPP(MLVEXP,MDEPTH),
* EHET(MDEPTH),EHEN(MDEPTH),ERET(MDEPTH),EREN(MDEPTH),
* EHEP(MLVEX3,MDEPTH),EREP(MLVEX3,MDEPTH),
* APT(MLVEXP,MDEPTH),APN(MLVEXP,MDEPTH),
* AAPT(MLVEX3,MDEPTH),AAPN(MLVEX3,MDEPTH),
* CAPT(MLVEX3,MDEPTH),CAPN(MLVEX3,MDEPTH),
* APP(MLVEXP,MLVEXP,MDEPTH),
* AAPP(MLVEX3,MLVEX3,MDEPTH),
* CAPP(MLVEX3,MLVEX3,MDEPTH),QTLAS,
* IFALI,IFPOPR,irprec,ifprec,itold1,itold2,itlas
+33
View File
@@ -0,0 +1,33 @@
COMMON A(MTOT,MTOT), B(MTOT,MTOT), C(MTOT,MTOT),
* E(MTOT,MTOT),
* VECL(MTOT), Y1(MTOT), Y2(MTOT),
* PSI0(MTOT), PSIM(MTOT), PSIP(MTOT),
* RAD0(MTOT), RADM(MTOT), RADP(MTOT),
* FKM(MFREX), FK0(MFREX), FKP(MFREX),
* ABSOM(MFREX), ABSO0(MFREX), ABSOP(MFREX),
* EMISM(MFREX), EMIS0(MFREX), EMISP(MFREX),
* SCATM(MFREX), SCAT0(MFREX), SCATP(MFREX),
* DABTM(MFREX), DABT0(MFREX), DABTP(MFREX),
* DEMTM(MFREX), DEMT0(MFREX), DEMTP(MFREX),
* DABNM(MFREX), DABN0(MFREX), DABNP(MFREX),
* DEMNM(MFREX), DEMN0(MFREX), DEMNP(MFREX),
* DABMM(MFREX), DABM0(MFREX), DABMP(MFREX),
* DEMMM(MFREX), DEMM0(MFREX), DEMMP(MFREX),
* WDEPM(MFREX), WDEP0(MFREX), WDEPP(MFREX),
* SBFM(MLEVEL), SBF0(MLEVEL), SBFP(MLEVEL),
* HEX(MLEVEL), REX(MLEVEL), REXA(MLEVEL),
* DSBFM(MLEVEL), DSBF0(MLEVEL), DSBFP(MLEVEL),
* SUMDCH(MLEVEL),
* DRCHM(MLEVEL,MFREX), DRETM(MLEVEL,MFREX),
* DRCH0(MLEVEL,MFREX), DRET0(MLEVEL,MFREX),
* DRCHP(MLEVEL,MFREX), DRETP(MLEVEL,MFREX)
COMMON/EXPRAD/
* ABSOEX(MFREX,MDEPTH),EMISEX(MFREX,MDEPTH),
* SCATEX(MFREX,MDEPTH),
* DABTEX(MFREX,MDEPTH),DEMTEX(MFREX,MDEPTH),
* DABNEX(MFREX,MDEPTH),DEMNEX(MFREX,MDEPTH),
* DABMEX(MFREX,MDEPTH),DEMMEX(MFREX,MDEPTH),
* DRCHEX(MLVEXP,MFREX,MDEPTH),
* DRETEX(MLVEXP,MFREX,MDEPTH)
COMMON/BPOCOM/ESEMAT(MLEVEL,MLEVEL),BESE(MLEVEL),
* ATT(MLEVEL),ANN(MLEVEL)
+56
View File
@@ -0,0 +1,56 @@
C
PARAMETER (MPAG=MLEVEL/6+1)
C
CHARACTER*40 FIDATA(MION),FIODF1(MION),FIODF2(MION),FIBFCS(MION)
CHARACTER*10 TYPLEV(MLEVEL)
CHARACTER*4 TYPION(MION)
C
COMMON/ATOPAR/AMASS(MATOM),ABUND(MATOM,MDEPTH),NUMAT(MATOM),
* N0A(MATOM),NKA(MATOM),nref(matom),iatex(matom),
* nrefs(matom,mdepth),iadop(matom),
* iifix(matom),iatref,modref
common/atomas/amas(100)
COMMON/IONPAR/FF(MION),CHARG2(MION),
* NFIRST(MION),NLAST(MION),NNEXT(MION),
* IZ(MION),IUPSUM(MION),ICUP(MION),ilte(mion),
* iltion(mion)
COMMON/LEVPAR/ENION(MLEVEL),G(MLEVEL),NQUANT(MLEVEL),
* IATM(MLEVEL),IEL(MLEVEL),ILK(MLEVEL),ilin(mlevel),
* iltlev(mlevel),indlev(mlevel),
* imodl(mlevel),iiexp(mlevel),iifor(mlevel),
* ipzert(mlevel),
* igzert(mlevel),indlgz(mlevel),iinonz(mlevel),
* NLVEXP,NLVFOR,NLVEXZ,LBPFX
COMMON/TRAPAR/FR0(MTRANS),OSC0(MTRANS),CPAR(MTRANS),
* FRQMX(MTRANS),FR0PC(MTRANS),OMECOL(MLEVEL,MLEVEL),
* XGRAD,STRL1,STRL2,STRLX,
* ILOW(MTRANS),IUP(MTRANS),INDEXP(MTRANS),
* KFR0(MTRANS),KFR1(MTRANS),ILUCTR(MTRANS),
* IFC0(MTRANS),IFC1(MTRANS),
* IFR0(MTRANS),IFR1(MTRANS),ITRA(MLEVEL,MLEVEL),
* IPROF(MTRANS),ICOL(MTRANS),INTMOD(MTRANS),
* ITRCON(MTRANS),IDIEL(MTRANS),
* IJTF(MTRANS),LCOMP(MTRANS),LINE(MTRANS)
COMMON/PHOSET/S0CS(MLEVEL),ALFCS(MLEVEL),BETCS(MLEVEL),
* GAMCS(MLEVEL),IBF(MLEVEL)
COMMON/TOPCS/CTOP(MFIT,MCROSS), !sigma=alog10(sigma/10^-18) of fit point
* XTOP(MFIT,MCROSS) ! x = alog10(nu/nu0) of fit point
COMMON/TABCOL/CTEMP(MXTCOL,MCFIT,MCORAT), ! temperature vs.
* CRATE(MXTCOL,MCFIT,MCORAT) ! collisional rates
COMMON/VOIPAR/GAMAR(MVOIGT),STARK1(MVOIGT),STARK2(MVOIGT),
* STARK3(MVOIGT),VDWH(MVOIGT)
COMMON/HECRAT/COLHE1(19,19)
COMMON/TRACOR/LEXP(MTRANS),LALI(MTRANS)
COMMON/TRAALI/NFFIX,IFSUB,IFLEV
COMMON/AUXIND/IATH,IATHE,IELH,IELHM,IELHE1,IELHE2
COMMON/IONFIL/FIDATA,FIODF1,FIODF2,FIBFCS
COMMON/IONDAT/IATI(MION),IZI(MION),NLEVS(MION),NLLIM(MION)
COMMON/OSCHYD/OSH(20,20)
COMMON/PRINTP/NPGPOP,IIPR(6,MPAG),TYPLEV,TYPION
common/tabmax/frtabm
c
PARAMETER (MTRPRD=5)
COMMON/PRDPAR/DOPTR(MTRPRD,MDEPTH),COHER(MTRPRD,MDEPTH),
* PJBAR(MTRPRD,MDEPTH),RJBAR(MTRPRD,MDEPTH),
* XPDIV,
* IPRD(MTRANS),ITRTOT(MTRPRD),NTRPRD,IFPRD
+129
View File
@@ -0,0 +1,129 @@
C
C Parameters that specify dimensions of arrays
C
PARAMETER (MATOM = 99, ! max.num. of explicit atoms
* MION = 170, ! max.num. of explicit ions
* MLEVEL = 1134, ! max.num. of explicit levels
* MLVEXP = 233, ! max.num. of explicit linearized levels
* MTRANS =21000, ! max.num. of all transitions
* MDEPTH = 100, ! max.num. of depth points
* MFREQ =135000, ! max.num. of frequency points
* MFREQP=220000, ! working arrays of frequency
* MFREQC=125000, ! max.num. of freq.points in continuum
* MFREX = 54, ! max.num. of linearized frequencies
* MFREQL =25798, ! max.num. of frequencies per line
* MTOT = 280, ! max.num. of linearized parameters
* MMU = 6, ! max.num. of angle points
* MFIT = 357, ! max.num. of fit points (OP b-f c.s)
* MITJ = 380, ! max.num. of overlapping transitions
* MMCDW = 26, ! max.num. of levels with pseudocont.
* MMER = 12, ! max.num. of merged levels
* MVOIGT = 8080, ! max.num. of lines with Voigt profile
* MZZ = 10, ! maximum charge for occup.prob. ions
* NLMX = 80, ! highest hydrogenic level considered
* MSMX = 1, ! size of matrix kept in memory in SOLVE
* MFREQ1 =MFREQ, ! =1 for ISPLIN<5; =MFREQ otherwise
* MFRTAB =125000,! max.num. of freqeuncies in opac.table
C * MFRTAB = 3, ! max.num. of freqeuncies in opac.table
* MTABT = 21, ! max.number of temps in opac.table
* MTABR = 19, ! max.number of densities in opac.table
* MDEPTC = 2, ! max.num. of depth points (Compton)
* MMUC = 2, ! max.num. of angle points (Compton)
* MLEVE3 = 1, ! =1 for diag.prec; =MLEVEL for trid.prec.
* MLVEX3 = 1, ! =1 for diag.oper.; =MLVEXP for tridiag. .
* MTRAN3 = 1, ! =1 for diag.oper; =MTRANS for tridiag.
* MCROSS=MLEVEL+5,! max.num. of b-f cross.secs.
* MBF = MLEVEL, ! max.num. of b-f transitions
C NEW VARIABLES YFMO Jun 2017
* MCFIT = 10, ! max.num. of collision fit points
* MXTCOL = 3, ! max.num. of collision types (CE, CP, CH)
* MCORAT = MTRANS)! max.num. of col excitation transitions
C
C Basic physical constants
C
PARAMETER (H = 6.6256D-27, ! Planck constant h
* BOLK = 1.38054D-16, ! Boltzmann constant k
* HK = 4.79928144D-11, ! h/k
* CAS = 2.997925D18, ! light speed c (A/s)
* EH = 2.17853041D-11, ! ionizaton energy of hydrogen
* BN = 1.4743D-2, ! 2*h/c**3, c -light speed
* SIGE = 6.6516D-25, ! Thomson scattering c-s
* SIG4P = 4.5114062D-6, ! Stefan-Boltzmann const/4pi
* PI4H = 1.8966D27, ! 4pi/h
* PCK = 4.19168946D-10, ! 4pi/c
* HMASS = 1.67333D-24) ! mass of hydrogen atom
C
C Basic mathematical constants
C
PARAMETER (UN = 1.0D0,
* HALF = 0.5D0,
* TWO = 2.0D0)
C
C Unit number
C
PARAMETER (IBUFF = 95)
C
C Basic parameters
C
COMMON/BASNUM/NATOM,NION,NLEVEL,NTRANS,ND,NFREQ,NFREQC,NFREQE,
* IOPTAB,IDISK,IZSCAL,IDMFIX,IHESO6,IFMOL,IFENTR,
* NFREQL,NLEV0,ICOLHN,IOSCOR,ILGDER,IFRYB,IFRSET,
* NFREAD,NELSC,NTRANC,IOVER,JALI,IBC,IUBC,INTENS,
* IRDER,ILMCOR,IFDIEL,IFALIH,IFTENE,ITNDRE,
* ILPSCT,ILASCT,IRTE,IDLTE,IBFINT,INTRPL,ICHANG,
* NATOMS,IPSLTE,ISPODF,ITLUCY,NRETC,IFRAYL,IFPRAD
COMMON/INPPAR/TEFF,GRAV,
* YTOT(MDEPTH),WMM(MDEPTH),WMY(MDEPTH),
* TMOLIM,
* xmstar,xmdot,rstar,alpha0,reynum,
* QGRAV,EDISC,DZETA,RELDST,
* visc,zeta0,zeta1,dmvisc,fractv,
* omeg32,wbarm,wbar,alphav,pgas0,
* bergfc,cutlym,cutbal,
* ISPLIN,IRSPLT,ivisc,ibche,LTE,LTGREY,LCHC,LRESC
COMMON/MATKEY/NN,NN0,INHE,INRE,INPC,INSE,INZD,INMP,NDRE,insel
COMMON/FIXDEN/IFIXDE
COMMON/INVINT/XI2(NLMX),XI3(NLMX)
COMMON/RUNKEY/CHMAX,ITER,NITER,NITZER,INIT,LAC2,LFIN
COMMON/CONKEY/HMIX0,crflim,
* NCONIT,ICONV,INDL,IPRESS,ITEMP,ICBEG,
* itmcor,iconre,ideepc,ndcgap,IDCONZ
COMMON/OPCKEY/NCON,IOPHL1,IOPHL2,IPHE2C,IFMOFF
COMMON/PRINTS/IPRINT,IPRING,IPRIND,IPRINP,ICOOLP,ICHCKP,
* IPOPAC,IPRINI
COMMON/PSILIM/DPSILG,DPSILT,DPSILN,DPSILD
COMMON/CENTRL/ZND,IFZ0
C
C additional opacities
c
COMMON/OPCPAR/IOPADD,
* IOPHMI,
* IOPH2P,
* IOPHEM,
* IOPCH,
* IOPOH,
* IOPH2M,
* IOH2H2,IOH2HE,IOH2H,IOHHE,
* IOPHLI,
* IRSCT,
* IRSCHE,
* IRSCH2,
* KEEPOP,
* IOPOLD
C
COMMON/ANGLES/AMU(MMU),WTMU(MMU),FMU(MMU),NMU
c
common/comptn/amuc(mmuc),wtmuc(mmuc),
* amuc1(mmuc),amuc2(mmuc),amuc3(mmuc),
* amuj(mmuc),amuk(mmuc),amuh(mmuc),amun(mmuc),
* calph(mmuc,mmuc),cbeta(mmuc,mmuc),
* cgamm(mmuc,mmuc),RADZER,FRLCOM,
* SIGEC(MFREQ),ijorig(mfreq)
common/angnum/nmuc
common/compti/nedd,nsti,islab,ilbc,icompt,icomst,icomde,
* icombc,icmdra,knish,itcomp,icomve,icomrt,
* ichcoo,icomgr
common/comite/ncfor1,ncfor2,nccoup,ncitot,ncfull
common/mlcons/aconml,bconml,cconml
common/taursl/taurs(mdepth)
common/iprkey/iprybh,ipelch,ipeldo,ipconf
+1
View File
@@ -0,0 +1 @@
IMPLICIT REAL*8 (A-H,O-Z), LOGICAL*1 (L)
+14
View File
@@ -0,0 +1,14 @@
PARAMETER (MITER = 200,
* MLAMBD = 100)
COMMON/LAMBDA/NLAMBD,IFFIX(MITER),NETEXP(MITER),NETFIX(MITER),
* IETEXP(MITER,MLAMBD),IETFIX(MITER,MLAMBD),
* NITLAM(MITER+1),IELCOR
COMMON/CHNMAT/INHE0(MITER),INRE0(MITER),INPC0(MITER),
* INDL0(MITER),INSE0(MITER),INMP0(MITER),
* NN00(MITER),NDRE0(MITER),LCHMAT,LIROST
COMMON/ACCEL/ORELAX,ITEK,IACC,IACC0,IACD,KANT(MITER),KSNG,
* LSNG(MTOT),LASO,LRES2
COMMON/ACCLP/ILAM,IACPP,IACC0P,IACDP,LAC2P
COMMON/ACCLT/IACLT,IACLDT
COMMON/CHNAD/CHMAXT,NLAMT,ILDER,IBPOPE
+217
View File
@@ -0,0 +1,217 @@
C
PARAMETER (MLINH = 78,
* MHT = 7,
* MHE = 20,
* MHWL = 90)
c * MHWL = 65)
parameter (mfhtab=1000,
* mtabth=10,
* mtabeh=10)
INTEGER*2 ITRLIN
REAL*4 PRFLIN,BFCS
real*8 absopac(mtabt,mtabr,mfrtab)
C
COMMON/MODPAR/DM(MDEPTH),TEMP(MDEPTH),ELEC(MDEPTH),DENS(MDEPTH),
* TOTN(MDEPTH),
* ANTO(MDEPTH),ANMA(MDEPTH),ANH1(MDEPTH),ZD(MDEPTH),
* HKT1(MDEPTH),TK1(MDEPTH),HKT21(MDEPTH),SQT1(MDEPTH),
* TEMP1(MDEPTH),ELEC1(MDEPTH),DENS1(MDEPTH),
* DENSI(MDEPTH),DENSIM(MDEPTH),
* ELSCAT(MDEPTH),ALAB(MDEPTH),
c * ENRG(MDEPTH),
* DELDM(MDEPTH),DEDM1,DELDMZ(MDEPTH),
* THETAV(MDEPTH),VISCD(MDEPTH),DALPMX,XHYD,
* DMTOT,RRDIL,TEMPBD,ALPTAV,ALPGAV,NALP,IBETA
COMMON/LEVPOP/POPUL(MLEVEL,MDEPTH),BFAC(MLEVEL,MDEPTH),
* POPINV(MLEVEL,MDEPTH),
* POPGRP(MLEVEL),
* POP(MLEVEL),SBF(MLEVEL),DSBF(MLEVEL),USUM(MION)
COMMON/POPZR0/POPZER,POPZR2,POPZCH,RPOP0(MLVEXP,MDEPTH),
* IPZERO(MLEVEL,MDEPTH),IGZERO(MLVEXP,MDEPTH)
COMMON/CRSWPS/CRSW(MDEPTH),SWPFAC,SWPLIM,SWPINC,ICRSW
COMMON/WMCOMP/WNHINT(NLMX,MDEPTH),WNHEII(NLMX,MDEPTH),
* wop(mlevel,mdepth),ifwop(mlevel)
COMMON/REPART/REINT(MDEPTH),REDIF(MDEPTH),TAUDIV,IDLST
COMMON/TURBUL/VTURB(MDEPTH),VTURBS(MDEPTH),VTB,IPTURB
C
COMMON/LEVREF/SBPSI(MLEVEL,MDEPTH),SBLPSI(MLEVEL,MDEPTH),
* DSBPST(MLEVEL,MDEPTH),DSBPSN(MLEVEL,MDEPTH),
* ILTREF(MLEVEL,MDEPTH),IGUIDE(MLEVEL),
* ILTERF(MLEVEL,MDEPTH)
COMMON/LEVFIX/PT(MLEVEL,MDEPTH),PN(MLEVEL,MDEPTH),
* PP(MLEVEL,MDEPTH)
COMMON/LEVADD/USUMS(MION,MDEPTH),
* DUSMT(MION,MDEPTH),
* DUSMN(MION,MDEPTH),
* DIESIG(MION,MDEPTH)
COMMON/MRGPAR/SGM0(MMER),
* FRCH(MMER),
* SGEXT1(MMER,MDEPTH),
* GMER(MMER,MDEPTH),
* SGMSUM(NLMX,MMER,MDEPTH),
* SGMSUD(NLMX,MMER,MDEPTH),
* SGMG(MMER,MDEPTH),
* IMRG(MLEVEL),
* IIMER(MMER)
COMMON/UPSUMS/DUSUMT(MION),DUSUMN(MION)
C
COMMON/DWNPAR/ELEC23(MDEPTH),
* ACOR(MDEPTH),
* Z3(MZZ),
* DWC1(MZZ,MDEPTH),
* DWC2(MDEPTH),
* DWF1(MMCDW,MDEPTH),
C * DWFL(MFREQL,MDEPTH,MMCDW),
* MCDW(MTRANS),ITRCDW(MMCDW),NCDW
C
COMMON/OBFPAR/ITRBF(MBF)
C
COMMON/GFFPAR/GF0(MDEPTH),GF1(MDEPTH),GF2(MDEPTH),
* GF3(MDEPTH),GF4(MDEPTH),GF5(MDEPTH),GF6(MDEPTH),
* GF0D(MDEPTH),GF1D(MDEPTH),GF2D(MDEPTH),
* GF3D(MDEPTH),GF4D(MDEPTH),GF5D(MDEPTH),
* GF6D(MDEPTH),DELTT(MDEPTH)
C
COMMON/OFFPAR/SFF3(MION,MDEPTH),
* SFF2(MION,MDEPTH),
* DSFF(MION,MDEPTH),
* CFFN(MDEPTH),CFFT(MDEPTH)
C
COMMON/OTRPAR/ABTRA(MTRANS,MDEPTH),EMTRA(MTRANS,MDEPTH),
* DEMLT(MTRANS,MDEPTH)
C
COMMON/CURRNT/XKF(MDEPTH),XKF1(MDEPTH),XKFB(MDEPTH)
COMMON/CUROPA/ABSO1(MDEPTH),EMIS1(MDEPTH),SCAT1(MDEPTH),
* ABSOT(MDEPTH),ABSOE1(MFREX),
* EMEL1(MDEPTH),ABSO1L(MDEPTH),EMIS1L(MDEPTH),
* ABSOPR(MDEPTH),EMISPR(MDEPTH)
COMMON/TOTRAD/RAD(MFREQ1,MDEPTH),FHD(MFREQ),
* FAK(MFREQ1,MDEPTH),RADK(MFREQ1,MDEPTH),
* EXTRAD(MFREQ),EXTINT(MFREQ,MMU),HEXTRD(MFREQ),
* TRAD,WDIL,EXTOT,TSTAR
COMMON/CURRAD/RAD1(MDEPTH),ALI1(MDEPTH),FAK1(MDEPTH),
* radcm(mfreq,mdepth),
* RADL(MFREQL,MDEPTH),ABSALI(MFREQL,MDEPTH),
* alih1(mdepth)
COMMON/CURDER/DABT1(MDEPTH),DEMT1(MDEPTH),
* DABN1(MDEPTH),DEMN1(MDEPTH),
* DABM1(MDEPTH),DEMM1(MDEPTH),
* DABX1(MDEPTH),DEMX1(MDEPTH),
* DABP1(MLEVEL,MDEPTH),DEMP1(MLEVEL,MDEPTH),
* DRCH1(MLEVEL,MDEPTH),DRET1(MLEVEL,MDEPTH),
* ABSFF(MDEPTH),DABFT(MDEPTH),DABFN(MDEPTH),
* DSFDT(MDEPTH),DSFDN(MDEPTH),DSFDM(MDEPTH),
* DSFDP(MLVEXP,MDEPTH),
* DSFDTM(MDEPTH),DSFDNM(MDEPTH),
* DSFDPM(MLVEXP,MDEPTH),
* DSFDTP(MDEPTH),DSFDNP(MDEPTH),
* DSFDPP(MLVEXP,MDEPTH)
COMMON/CURTRI/ALIM1(MDEPTH),ALIP1(MDEPTH)
COMMON/EXPRAF/RADEX(MFREX,MDEPTH),FAKEX(MFREX,MDEPTH)
C
COMMON/TOTPRF/PRFLIN(MDEPTH,MFREQP)
COMMON/TOTFLX/FLTOT(MDEPTH),FLFIX(MDEPTH),FLEXP(MDEPTH),
* FCOOL(MDEPTH),FCOOLI(MDEPTH),FLRD(MDEPTH),
* FPRAD(MDEPTH),GRAD(MDEPTH),FPRD(MDEPTH),
* GRADF(MDEPTH,MFREQ)
C
COMMON/RRATES/RRU(MTRANS,MDEPTH),RRD(MTRANS,MDEPTH),
* DRDT(MTRANS,MDEPTH)
COMMON/RRTOFF/RDDP(MTRAN3,MDEPTH),RDDM(MTRAN3,MDEPTH)
COMMON/CRATES/COLRAT(MTRANS,MDEPTH),COLTAR(MTRANS,MDEPTH)
C
COMMON/FRQALL/FREQ(MFREQ),W(MFREQ),PROF(MFREQP),WCH(MFREQ),
* JIK(MFREQ),IJX(MFREQ),IJBF(MFREQ),IFS0,
* KIJ(MFREQ),LSKIP(MDEPTH,MFREQ)
COMMON/FRQINT/FRCMAX,FRCMIN,FRLMAX,FRLMIN,CFRMAX,DFTAIL,
* TSNU,VTNU,DDNU,CNU1,CNU2,IELNU,NFTAIL
COMMON/LINOVR/NITJ(MFREQ),IJLIN(MFREQ),ITRLIN(MITJ,MFREQ)
COMMON/LINFRQ/NLINES(MFREQ)
COMMON/PHOEXP/AIJBF(MFREQ),BFCS(MCROSS,MFREQC),IFREQB(MFREQC)
COMMON/FREAUX/W0E(MFREQ),BNUE(MFREQ),WC(MFREQ),
* IJTC(MTRANS),IJALI(MFREQ),IJEX(MFREQ),IJFR(MFREQ)
COMMON/COMPIF/LINEXP(MTRANS)
C
COMMON/SURFAC/FLUX(MFREQ),FH(MFREQ),Q0(MFREQ),UU0(MFREQ)
C
COMMON/FILES/PSY0(MTOT,MDEPTH),PSY1(MTOT,MDEPTH),
* PSY2(MTOT,MDEPTH),PSY3(MTOT,MDEPTH)
C
COMMON/PRESSR/PTOTAL(MDEPTH),PGS(MDEPTH),PRADT(MDEPTH),
& PRADA(MDEPTH)
COMMON/HEQAUX/PRD0,IHECOR
COMMON/OPMEAN/ABROSD(MDEPTH),SUMDPL(MDEPTH),
& ABPLAD(MDEPTH),ABPMIN
COMMON/CHARFX/QFIX(MDEPTH)
COMMON/WINDBL/ALBE(MFREQ),IWINBL
COMMON/DFEALI/DJMAX,NTRALI
COMMON/OPACAD/ABAD,EMAD,SCAD,DAT,DAN,DET,DEN,DST,DSN,DDN(MLEVEL)
COMMON/MODCON/FLXC(MDEPTH),DELTA(MDEPTH)
COMMON/RESDER/RSAT,RSBT,RSAN,RSBN,RSAX(MLEVEL),RSBX(MLEVEL)
COMMON/GRAYTS/TAUROS(MDEPTH),TAUFLX(MDEPTH),
* TAUTHE(MDEPTH),THETA(MDEPTH)
COMMON/TAURSS/TROSS(MDEPTH)
COMMON/TCONST/TDISK,ITCONS
C
COMMON/HYDADD/PHMOL(MDEPTH),ANEREL,IHM,IH2,IH2P
COMMON/ELDNSP/ANP,AHTOT,AHMOL
C
COMMON/RRVALS/RR(99,99),ABNDD(99,MDEPTH),ENEV(99,30),IONIZ(99),
* IREF,IREFA,LGR(99),LRM(99)
COMMON/STATEP/Q,QM,DQT,DQN,DQM,ENER,ENTR,QREF,DQTR,DQNR,PFHYD
COMMON/ODFCHT/CHANT(MDEPTH)
COMMON/STRAUX/XK0(MLINH),XK,DBETA,BETAD,ADH,DIVH
COMMON/STDPAR/ELSTD,IDSTD
c
c parameters for hydrogen Stark broadening tables
c
COMMON/HYDPRF/PRFHYD(MLINH,MHWL,MHT,MHE),
* WLHYD(MLINH,MHWL),
* WLH(MHWL,MLINH),
* XTLEM(MHT,MLINH),
* XNELEM(MHE,MLINH),
* NWLHYD(MLINH),
* NWLH(MLINH),
* NTH(MLINH),
* NEH(MLINH),
* ILINH(4,22),
* IHYDPR
C
COMMON/XENPRF/PRFXB(MLINH,MHWL,MHT,MHE),
* PRFXR(MLINH,MHWL,MHT,MHE),
* ALXEN(MLINH,MHWL),
* XTXEN(MHT,MLINH),
* XNEXEN(MHE,MLINH),XNEMIN,
* NWLXEN(MLINH),
* NTHXEN(MLINH),
* NEHXEN(MLINH),
* ILXEN(4,22),
* IHXENB
C
COMMON/LTEGRP/TAUFIR,TAULAS,ABROS0,TSURF,ALBAVE,DION0,
* DM1,ABPLA0,NNEWD,
* NDGREY,IDGREY
COMMON/COMPTF/DLNFR(MFREQ),BNUS(MFREQ),
* CDER10(MFREQ),CDER1P(MFREQ),CDER1M(MFREQ),
* CDER20(MFREQ),CDER2P(MFREQ),CDER2M(MFREQ),
* DELJ(MFREQ,MDEPTH)
COMMON/VISPAR/TVISC(MDEPTH),DTVIST(MDEPTH),DTVISN(MDEPTH),
* DTVISR(MDEPTH)
C
c parameters for the opacity tables
c
COMMON/TABLOP/ FRTB1,FRTB2,RTAB1,RTAB2,TTAB1,TTAB2
common/numbopac/ numfreq,numrho,numtemp,numrh(mtabt)
common/vectors/ tempvec(mtabt),rhovec(mtabr),
* rhomat(mtabt,mtabr)
common/opacities/frtab(mfrtab),frtlim,absopac
common/raytbl/raytab(mtabt,mtabr),raysc(mdepth)
common/binopa/ibinop
C
c parameters for the hydrogen opacity tables
c
common/tabhyg/hglim,ihgom
COMMON/TABLOH/ FRGTB1,FRGTB2,EGTAB1,EGTAB2,TGTAB1,TGTAB2
common/numgopac/ nugfreq,nugele,nugtemp
common/vectorg/ temvec(mtabth),elevec(mtabeh)
common/opacitieg/frgtab(mfhtab),hydcrs(mtabth,mtabeh,mfhtab)
+34
View File
@@ -0,0 +1,34 @@
PARAMETER (MFODF = 180,
* MHOD = 3,
* MFRO = MFREQL,
* MDODF = 3,
c * MKULEV= 2,
c * MLINE = 2,
c * MCFE = 2 )
* MKULEV= 7000,
* MLINE = 1140000,
* MCFE = 7824000 )
C
REAL*4 SIGFE
C
COMMON/ODFION/INODF1(MION),INODF2(MION),INBFCS(MION),
* IKOBS(MION)
C
COMMON/ODFCTR/FRODF(MLEVEL),NFRODF(MHOD),INDODF(MLEVEL),
* JNDODF(MTRANS)
COMMON/ODFFRQ/FROS(MFRO,MHOD),WNUS(MFRO,MHOD),XDO(3,MHOD),
* KDO(4,MHOD)
COMMON/ODFMOD/I1ODF(MLEVEL),I2ODF(MLEVEL),NQLODF(MLEVEL)
COMMON/ODFSTK/XKIJ(MHOD,NLMX),WL0(MHOD,NLMX),FIJ(MHOD,NLMX)
COMMON/SPLCOM/SIGFE(MDODF,MCFE),
& FRS1,FRS2,DXNU,XJID(MDEPTH),JIDI(MDEPTH),JIDR(MDODF),
& JIDS,JIDN,NFRS1,NFTT
COMMON/OPALIM/M1FILE(NLMX,MHOD),M2FILE(NLMX,MHOD),IMERG
COMMON/OPLIMT/ALLIM1,ABLIM1,ABLIM2,ABLIM3
COMMON/LEVCOM/EMKU(MLEVEL,2),YMKU(MLEVEL,2),
& XEV(MLEVEL,MION),XOD(MLEVEL,MION),EU(2*MLEVEL),
& JEN(2*MLEVEL),
& EEV(MKULEV),AEV(MKULEV),SEV(MKULEV),WEV(MKULEV),
& EOD(MKULEV),AOD(MKULEV),SOD(MKULEV),WOD(MKULEV),
& KSEV(MKULEV),KSOD(MKULEV),NEVKU(MION),NODKU(MION),
& NLEVKU,NLINKU,KEVE,KODD
+612
View File
@@ -0,0 +1,612 @@
# TLUSTY 208 - 非局部热动力平衡(Non-LTE)恒星大气模型程序
TLUSTY是一个通用的恒星大气和吸积盘非局部热动力平衡(Non-LTE)模型计算程序。该程序基于FORTRAN语言开发,可用于计算恒星大气和吸积盘的物理特性和辐射场。
## 程序概述
TLUSTY是一种用于计算恒星大气和吸积盘模型的通用代码。程序使用混合的完全线性化/加速Lambda迭代(CL/ALI)方法来求解辐射转移和统计平衡方程组。
## 主要源文件结构
### 主程序文件:tlusty208.f
这是程序的主要源代码文件,包含程序入口点和主要计算流程。主要模块包括:
- `PROGRAM TLUSTY`: 主程序入口点,实现主要计算流程控制
- 输入:读取基本参数
- 初始化:调用START和初始化例程
- 迭代循环:交替调用RESOLV(形式解)和SOLVE/SOLVES/RYBSOL(线性方程求解)
- 输出:计算完成后输出结果
- `SUBROUTINE START`: 一般输入和初始化过程
- 读取主要输入参数
- 调用INITIA进行详细初始化
- 调用COMSET设置公共变量
- 调用PRDINI初始化部分辐射场
- `SUBROUTINE INITIA`: 输入和初始化驱动程序
- 读取基本输入参数(温度、重力等)
- 设置频率点和权重
- 初始化湍流速度
- 调用STATE读取原子参数
- 设置显式离子、能级和跃迁参数
- `SUBROUTINE RESOLV`: 辐射转移方程的形式解
- 执行形式解步骤,计算辐射场
- 计算辐射转移和相关导数
- 处理连续辐射和谱线辐射
- 更新粒子数密度和温度
- `SUBROUTINE ACCEL2`: 用于加速收敛的程序
- 实现Ng加速或其他收敛加速技术
- 加速迭代过程的收敛速度
- `SUBROUTINE SOLVE`/`SOLVES`: 线性化方程的解法
- 求解统计平衡方程和辐射转移方程
- 计算能级布居数的修正值
- 大矩阵方法(SOLVE)和小矩阵方法(SOLVES
- `SUBROUTINE RYBSOL`: 替代解法
- 提供另一种线性方程组求解方法
- 适用于特定条件下的计算
- `BLOCK DATA`: 初始化氢原子振子强度数据
- 为所有可能的氢原子跃迁提供振子强度值
- 数据存储在`OSH`数组中供程序使用
- `SUBROUTINE STATE`: 原子和离子状态数据读取
- 读取原子质量、丰度等参数
- 设置元素的电离状态信息
- 计算原子占据概率和布居数
- `SUBROUTINE COMSET`: 设置通用参数
- 初始化各种通用变量和数组
- 设置各种物理过程的控制参数
- 为计算过程准备必要的公共数据
- `SUBROUTINE TABINI`: 不透明度表初始化
- 读取预先计算的不透明度数据
- 设置不透明度表的温度和密度网格
- 准备插值所需的参数
- `SUBROUTINE INPDIS`: 吸积盘特定参数输入
- 读取吸积盘特定的物理参数
- 设置盘几何形状和物理条件
- 计算初始的盘结构模型
### 包含文件
这些文件定义了程序中使用的公共变量、数组和参数:
#### IMPLIC.FOR
包含基本的变量类型定义:
```fortran
IMPLICIT REAL*8 (A-H,O-Z), LOGICAL*1 (L)
```
所有的变量默认为双精度实数,逻辑变量为单字节。
#### BASICS.FOR
定义程序中使用的基本参数和常量:
- 数组维度的最大值参数:
- `MATOM` (99): 显式原子的最大数量
- `MION` (170): 显式离子的最大数量
- `MLEVEL` (1134): 显式能级的最大数量
- `MDEPTH` (100): 深度点的最大数量
- `MFREQ` (135000): 频率点的最大数量
- 物理常数:
- `H` (6.6256D-27): Planck常数
- `BOLK` (1.38054D-16): Boltzmann常数
- `EH` (2.17853041D-11): 氢原子电离能
- `CAS` (2.997925D18): 光速(Å/s
- 主要公共变量块:
- `/BASNUM/`: 基本数值参数(原子数、离子数、能级数等)
- `/INPPAR/`: 输入参数(有效温度、重力等)
- `/RUNKEY/`: 运行控制参数
- `/CONKEY/`: 收敛控制参数
- `/PRINTS/`: 打印控制参数
- `/OPCKEY/`: 不透明度计算控制
- `/OPCPAR/`: 额外不透明度参数
- `/ANGLES/`: 角度点和权重
- `/COMPTN/`: 康普顿散射相关参数
- `/MLCONS/`: 混合长度对流参数
#### ITERAT.FOR
包含与迭代过程相关的参数和变量:
- 迭代参数(最大迭代次数、Lambda迭代控制)
- `MITER` (200): 最大迭代次数
- `MLAMBD` (100): 最大Lambda迭代次数
- 迭代控制公共变量块:
- `/LAMBDA/`: Lambda迭代参数
- `/CHNMAT/`: 矩阵变化参数
- `/ACCEL/`: 加速方法控制
- `/ACCLP/`: 加速参数
- `/ACCLT/`: 温度加速控制
- `/CHNAD/`: 变化大小监控
#### ALIPAR.FOR
包含加速Lambda迭代(ALI)方法的参数:
- `/FIXALP/`: 固定ALI参数
- `ABSO`, `EMIS`, `SCAT`: 吸收、发射和散射系数
- `REIT`, `REIN`, `REIM`: 辐射场相关导数
- `REIP`: 能级布居数相关导数
- `HEIT`, `HEIN`, `HEIM`: 预处理算子
- `APT`, `APN`: 近似Lambda算子
- `APP`: 近似算子矩阵
- 与加速Lambda迭代相关的其他变量
#### ATOMIC.FOR
包含原子数据和参数:
- `/ATOPAR/`: 原子参数
- `AMASS`: 原子质量
- `ABUND`: 元素丰度
- `NUMAT`: 原子数量
- `N0A`, `NKA`: 能级索引
- `/IONPAR/`: 离子参数
- `FF`: 能级因子
- `CHARG2`: 电荷平方
- `NFIRST`, `NLAST`: 能级索引范围
- `IZ`: 离子电荷
- `IUPSUM`: 上能级总和控制
- `/LEVPAR/`: 能级参数
- `ENION`: 电离能
- `G`: 统计权重
- `NQUANT`: 量子数
- `IATM`, `IEL`: 原子和电离属性
- `ILK`: 能级耦合
- `/TRAPAR/`: 跃迁参数
- `FR0`: 跃迁频率
- `OSC0`: 振子强度
- `CPAR`: 碰撞参数
- `ILOW`, `IUP`: 下能级和上能级
- `ITRA`: 跃迁索引
- `/OSCHYD/`: 氢原子振子强度数据
- `OSH`: 氢原子振子强度表
#### MODELQ.FOR
包含模型物理量和状态变量:
- `/MODPAR/`: 模型参数
- `DM`: 柱质量
- `TEMP`: 温度
- `ELEC`: 电子密度
- `DENS`: 总密度
- `ZD`: 深度
- `THETAV`: 粘滞温度参数
- `VISCD`: 粘滞系数
- `/LEVPOP/`: 能级布居数
- `POPUL`: 能级布居数
- `BFAC`: 偏离因子
- `POPINV`: 逆布居数
- `POP`: 临时布居数
- `USUM`: 分配函数
- `/TURBUL/`: 湍流速度
- `VTURB`: 湍流速度
- `VTURBS`: 湍流速度(表面值)
- `VTB`: 全局湍流速度参数
- `/TOTRAD/`: 总辐射场
- `RAD`: 平均辐射场
- `FHD`: 辐射通量
- `FAK`: 角因子
- `EXTRAD`: 外部辐射
- `/FRQALL/`: 频率点和权重
- `FREQ`: 频率点
- `W`: 频率权重
- `PROF`: 轮廓函数
- `WCH`: 频率通道
- `/HYDPRF/`: 氢原子Stark加宽
- `PRFHYD`: 氢轮廓数据
- `WLHYD`: 波长点
- `XTLEM`: 温度网格
- `XNELEM`: 电子密度网格
#### ODFPAR.FOR
包含不透明度分布函数(ODF)参数:
- ODF参数维度定义:
- `MFODF` (180): ODF频率点最大数
- `MHOD` (3): ODF函数最大数
- `MKULEV` (7000): Kurucz能级最大数
- `MLINE` (1140000): 谱线最大数
- `/ODFION/`: ODF离子参数
- `INODF1`, `INODF2`: ODF单元号
- `INBFCS`: 连续谱截面单元号
- `IKOBS`: ODF观测值
- `/ODFCTR/`: ODF控制参数
- `FRODF`: ODF频率
- `NFRODF`: 频率数量
- `INDODF`: 能级索引
- `/SPLCOM/`: 样条插值参数
- `SIGFE`: 铁谱线数据
- `FRS1`, `FRS2`: 频率范围
- `DXNU`: 频率步长
#### ARRAY1.FOR
包含主要工作数组的定义:
- 线性方程组系数矩阵:
- `A`, `B`, `C`, `E`: 线性方程组系数矩阵
- `VECL`, `Y1`, `Y2`: 向量和解向量
- `PSI0`, `PSIM`, `PSIP`: 状态向量
- 辐射场数组:
- `RAD0`, `RADM`, `RADP`: 辐射场
- `FK0`, `FKM`, `FKP`: 角矩
- `ABSO0`, `ABSOM`, `ABSOP`: 吸收系数
- `EMIS0`, `EMISM`, `EMISP`: 发射系数
- `SCAT0`, `SCATM`, `SCATP`: 散射系数
- 导数数组:
- `DABT0`, `DABTM`, `DABTP`: 吸收温度导数
- `DEMN0`, `DEMNM`, `DEMNP`: 发射数密度导数
- `DRCH0`, `DRCHM`, `DRCHP`: 色散关系温度导数
## 输入参数
READ(IBUFF,*) TEFF,GRAV
READ(IBUFF,*) XMSTAR,XMDOT,RSTAR,RELDST
READ(IBUFF,*) LTE,LTGREY
READ(IBUFF,*) FINSTD
READ(IBUFF,*) NFREAD
READ(IBUFF,*,END=20,ERR=20) IATII,IZII,NLEVSI,ILASTI,ILVLIN,NONSTD,TYPIOI,FILEI
READ(IBUFF,*) IUPSUM(ION),ICUP(ION),MODEFF,NFF
READ(IBUFF,*) INODF1(ION),INODF2(ION),FIODF1(ION),FIODF2(ION),FIBFCS(ION)
READ(IBUFF,*) (ALBE(I),I=1,NFREQ)
READ(IBUFF,*) (ALBE(I),I=1,NFREQ)
READ(IBUFF,*) ALCON0,ALCHE2,ALLIN0
READ(IBUFF,*) NUMMOD
READ(IBUFF,*) IJ1,IJ2,ALB
read(ibuff,'(a80)') dum
READ(IBUFF,*) MA,ABN,MODPF0
READ(IBUFF,*) (ABNDD(I,ID),ID=1,ND)
READ(IBUFF,*) IOLD,MODE,NXTOLD,ISINEW,ISIOLD,NXTSIO,REL
READ(IBUFF,*) TAU1,TAU2,TAUL
READ(IBUFF,*) (TAU0(I),I=1,ND)
READ(IBUFF,*,ERR=90) IL1,IU1,IM1,IP1
READ(IBUFF,*,ERR=100) ALLIM1
READ(IBUFF,*,ERR=190) IL1,IU1,IM1,IP1
READ(IBUFF,*,ERR=200,END=200) ABLIM1,ABLIM2,ABLIM3
READ(IBUFF,*) TAU1
READ(IBUFF,*) TDIV
READ(IBUFF,*) TAU0(ND)
READ(IBUFF,*) TDIV
READ(IBUFF,*) TAU0(1),TAU0(ND)
## 关键计算模块详解
### 光谱线处理模块
- **谱线形成**
- `SUBROUTINE LINEOP`: 计算谱线不透明度
- 输入:频率、温度、电子密度、能级布居数
- 计算:谱线轮廓函数、吸收系数、发射系数
- 输出:谱线贡献到总不透明度
- `SUBROUTINE LTEOPA`: 处理LTE情况下的谱线不透明度
- 使用玻尔兹曼分布计算能级布居数
- 计算基于LTE条件的谱线吸收系数
- **谱线轮廓**
- `SUBROUTINE VOIGT`: 计算Voigt轮廓函数
- 输入:阻尼参数、离线心距离
- 计算:Voigt函数值
- 考虑自然加宽、碰撞加宽和Doppler加宽
- `SUBROUTINE STARK`: 计算Stark加宽轮廓
- 处理电场对谱线的影响
- 计算氢谱线的Stark加宽
### 连续谱处理模块
- **连续不透明度**
- `SUBROUTINE OPASUM`: 计算总连续不透明度
- 汇总各种连续吸收过程
- 计算散射贡献
- 组合谱线和连续谱不透明度
- `SUBROUTINE HYDCON`: 计算氢连续不透明度
- 考虑氢原子的光电离和自由-自由吸收
- 处理负氢离子的贡献
- **散射过程**
- `SUBROUTINE ELSCET`: 计算电子散射
- 计算汤姆逊散射截面
- 考虑电子速度分布的影响
- `SUBROUTINE RAYSET`: 计算瑞利散射
- 处理中性氢和氦的瑞利散射
- 计算频率依赖的散射截面
### 辐射转移求解模块
- **形式解**
- `SUBROUTINE FEAUT`: 短特征法求解
- 沿特征线积分辐射转移方程
- 计算平均辐射场和辐射通量
- 处理各向异性辐射场
- `SUBROUTINE ELIMIN`: 消去法求解
- 进行前向消去和后向替代
- 解带状矩阵系统
- **Lambda迭代**
- `SUBROUTINE LAMBDA`: 执行Lambda操作
- 将源函数转换为平均辐射场
- 应用近似Lambda算子加速收敛
- 处理多频率点的耦合
### 统计平衡求解模块
- **能级布居数计算**
- `SUBROUTINE NLTEBS`: 计算非LTE布居数
- 组装统计平衡方程
- 考虑所有辐射和碰撞过程
- 求解非线性方程组
- `SUBROUTINE LTEPOP`: 计算LTE布居数
- 基于Saha-Boltzmann方程
- 考虑分配函数
- 计算电离分数
- **线性化求解**
- `SUBROUTINE MATRIX`: 组装线性方程组
- 建立统计平衡方程的线性化版本
- 包含辐射转移方程的贡献
- 处理温度、电子密度和布居数的线性关系
- `SUBROUTINE GAUSSJ`: 高斯-约当消元法
- 求解大型线性方程组
- 执行矩阵求逆操作
- 计算布居数的修正值
### 物理过程计算模块
- **碰撞过程**
- `SUBROUTINE COLRAT`: 计算碰撞速率
- 考虑电子碰撞激发
- 处理电子碰撞电离
- 计算温度依赖的碰撞截面
- `SUBROUTINE COLCHG`: 更新碰撞速率
- 响应温度或电子密度的变化
- 重新计算碰撞系数
- **辐射过程**
- `SUBROUTINE RADTRS`: 计算辐射跃迁速率
- 计算吸收和受激发射速率
- 处理自发发射
- 考虑光电离和复合过程
- `SUBROUTINE PHOTCS`: 计算光电离截面
- 基于原子数据计算截面
- 处理频率依赖关系
- 考虑共振结构
### 吸积盘特性模块
- **盘结构**
- `SUBROUTINE VERTST`: 计算垂直结构
- 处理流体静力学平衡
- 考虑辐射压力
- 计算垂直温度和密度分布
- `SUBROUTINE VISCUS`: 处理粘滞加热
- 计算α粘滞参数的影响
- 考虑粘滞加热对温度的贡献
- 计算能量平衡
- **盘辐射**
- `SUBROUTINE DISKRT`: 盘辐射转移
- 考虑盘几何形状对辐射场的影响
- 处理中心辐射源的贡献
- 计算盘表面辐射通量
## 主要计算流程
1. **初始化阶段**
- 读取输入参数(有效温度、重力加速度等)
- 设置频率点和权重
- 读取原子数据和初始化原子参数
- 初始化深度点和物理状态变量
- 初始化辐射场
2. **主迭代循环**
- 形式解步骤(`RESOLV`):
- 解辐射转移方程
- 计算辐射场
- 更新物理条件(温度、电子密度等)
- 加速收敛(`ACCEL2`):
- 应用加速技术提高收敛速度
- 线性化方程求解(`SOLVE`/`SOLVES`/`RYBSOL`):
- 组装线性方程组
- 求解统计平衡方程
- 更新能级布居数
- 检查收敛条件
3. **结果输出**
- 输出最终的模型大气结构(温度、密度、电子密度等)
- 输出各原子和离子的能级布居数
- 输出辐射场和谱线强度
- 输出最终的恒星光谱或吸积盘谱
## 物理处理详情
### 非LTE处理
- **统计平衡方程**
- 考虑所有辐射跃迁和碰撞跃迁
- 包括连续谱跃迁(光电离、复合)和谱线跃迁
- 考虑碰撞电离和复合过程
- **能级布居数计算**
- 使用线性化方法求解统计平衡方程
- 考虑所有相关的跃迁过程
- 包括复杂原子模型的多能级系统
### 辐射转移处理
- **连续谱辐射转移**
- 考虑光电离和自由-自由吸收
- 包括散射过程(电子散射、Rayleigh散射等)
- 考虑负氢离子的吸收和发射
- **谱线辐射转移**
- 详细的谱线轮廓(Voigt轮廓、Stark加宽等)
- 考虑线重叠效应
- 使用部分再分配函数(PRD)处理共振线
- **加速Lambda迭代**
- 提高辐射转移方程求解的收敛速度
- 使用算子分裂技术
- 使用近似Lambda算子
### 原子物理处理
- **原子数据**
- 能级能量和统计权重
- 辐射跃迁概率和振子强度
- 光电离截面
- 碰撞截面和速率
- **线轮廓**
- Doppler加宽(热运动和微湍流)
- 自然加宽
- Stark加宽(电场效应)
- van der Waals加宽(中性粒子碰撞)
### 吸积盘模型特性
- **垂直结构**
- 基于α-粘滞盘模型
- 考虑辐射压力和自引力
- 计算垂直于盘平面的结构
- **辐射场**
- 考虑盘内部的辐射和中心辐射源的贡献
- 处理非各向同性辐射场
- 考虑盘的几何形状对辐射场的影响
## 输入参数
对于恒星大气:
- `TEFF`: 有效温度,定义恒星的总辐射通量
- `GRAV`: 重力加速度(log g),定义恒星表面引力强度
对于吸积盘:
- `XMSTAR`: 中心天体质量,通常以太阳质量为单位
- `XMDOT`: 吸积率,定义物质流入率
- `RSTAR`: 恒星半径
- `RELDST`: 相对于中心天体的距离
物理模型控制参数:
- `LTE`: 局部热动力平衡标志(0表示非LTE,1表示LTE)
- `LTGREY`: 灰大气标志(控制是否使用灰大气近似)
- `NFREAD`: 读取的连续谱频率点数量
- `VTB`: 微湍流速度,影响谱线宽度
原子和离子参数:
- `IATII`, `IZII`: 原子序数和离子电荷
- `NLEVSI`: 能级数量
- `ILASTI`: 最后一个能级的标识
- `ILVLIN`: 跃迁上限
## 输出结果
程序输出恒星大气或吸积盘的详细模型,包括:
- **物理结构**
- 温度分布:`TEMP(ID)` 在各深度点的温度
- 密度分布:`DENS(ID)` 在各深度点的密度
- 电子密度分布:`ELEC(ID)` 在各深度点的电子密度
- 气体和辐射压力:`PTOTAL`, `PRADT`
- **原子过程**
- 各种原子和离子的能级布居数:`POPUL(I,ID)`
- 离子化分数
- 原子和分子密度
- **辐射场**
- 平均辐射场:`RAD(IJ,ID)`
- 辐射通量:`FLUX(IJ)`
- 各向异性因子
- **谱线特性**
- 谱线轮廓
- 等值宽度
- 谱线吸收系数
## 程序文件依赖关系
```
tlusty208.f
|
├── IMPLIC.FOR - 包含变量类型定义
|
├── BASICS.FOR - 基本参数和常量定义
|
├── ITERAT.FOR - 迭代控制参数
|
├── ALIPAR.FOR - ALI方法参数
|
├── ATOMIC.FOR - 原子数据参数
|
├── MODELQ.FOR - 模型物理量参数
|
├── ODFPAR.FOR - ODF参数
|
└── ARRAY1.FOR - 工作数组定义
```
## 运行说明
要运行TLUSTY,需要准备适当的输入文件,然后执行编译后的可执行文件。
### 编译程序
程序使用FORTRAN77/90编译器编译,编译命令类似:
```
gfortran -o tlusty.exe tlusty208.f
```
### 准备输入文件
需要准备以下输入文件:
1. 主要控制文件:包含模型参数、计算控制参数
2. 原子数据文件:包含能级和跃迁数据
3. 不透明度数据文件(如果使用)
### 运行程序
执行编译后的程序:
```
./tlusty.exe < input_file
```
### 注意事项
- 确保输入参数在程序定义的范围内
- 对于复杂原子的非LTE计算,收敛可能较困难
- 复杂模型的计算可能需要较长时间
## 理论背景
TLUSTY基于以下理论框架:
- 辐射转移理论
- 统计平衡原理
- 非LTE原子物理学
- 恒星大气和吸积盘物理
程序通过求解耦合的辐射转移和统计平衡方程组来计算自洽的恒星大气或吸积盘模型,考虑了详细的原子物理过程、辐射场和各种物理条件的相互作用。
+99
View File
@@ -0,0 +1,99 @@
# TLUSTY 208 程序主要函数索引
本文档提供了TLUSTY 208程序中主要函数的位置索引,包括文件名和行号。
## 主程序和核心函数
### 主程序和初始化
- `PROGRAM TLUSTY` (tlusty208.f: 1-56): 主程序入口点,实现主要计算流程控制
- `SUBROUTINE START` (tlusty208.f: 114-129): 一般输入和初始化过程
- `SUBROUTINE INITIA` (tlusty208.f: 137-552): 输入和初始化驱动程序
- `BLOCK DATA` (tlusty208.f: 79-113): 初始化氢原子振子强度数据
- `SUBROUTINE COMSET` ((tlusty208.f: 38051-38214): 设置通用参数
- `SUBROUTINE TABINI` (tlusty208.f: 44456-44781): 不透明度表初始化
- `SUBROUTINE INPDIS` (tlusty208.f: 40329-40517): 吸积盘特定参数输入
### 主要求解函数
- `SUBROUTINE RESOLV` (tlusty208.f: 3741-3955): 辐射转移方程的形式解,控制形式解的主要流程
- `SUBROUTINE INILAM` (tlusty208.f: 3956-4191): RESOLV的辅助过程,初始化模型参数
- `SUBROUTINE OPAINI` (tlusty208.f: 31376-:31530): 初始化不透明度计算
- `SUBROUTINE ACCEL2` (tlusty208.f: 29751-29820): 用于加速收敛的程序
- `SUBROUTINE ACCELP` (tlusty208.f: 29821-29986): 对布居数的收敛加速
- `SUBROUTINE SOLVE` (tlusty208.f: 14465-14680): 线性化方程的解法 (大矩阵方法)
- `SUBROUTINE SOLVES` (tlusty208.f: 14788-15064): 线性化方程的解法 (小矩阵方法)
- `SUBROUTINE RYBSOL` (tlusty208.f: 46622-46845): Rybicki方法的替代解法
- `SUBROUTINE TIMING` (tlusty208.f: 29898-29929): 计时程序
- `SUBROUTINE QUIT` (tlusty208.f: 29930-29985): 程序终止和错误报告
### 物理过程相关函数
- `SUBROUTINE OPACTR` (tlusty208.f: 47544-47795): 计算吸收和发射系数及其导数
- `SUBROUTINE NEWPOP` (tlusty208.f: 4467-4535): 更新布居数
- `SUBROUTINE LEVSOL` (tlusty208.f: 5210-5285): 求解能级布居数方程
- `SUBROUTINE STEQEQ` (tlusty208.f: 5286-5760): 求解统计平衡方程
- `SUBROUTINE ELCOR` (tlusty208.f: 5684-5761): 重新评估电子数密度
- `SUBROUTINE MATGEN` (tlusty208.f: 15064-15130): 控制矩阵A、B和C的评估
- `SUBROUTINE RHSGEN` (tlusty208.f: 22175-22175): 控制右侧向量的评估
- `SUBROUTINE LINEQS` (tlusty208.f: 13771-13831): 求解线性方程组
- `SUBROUTINE RYBMAT` (tlusty208.f: 46846-47426): 评估Rybicki形式的线性化矩阵
- `SUBROUTINE RYBCHN` (tlusty208.f: 47426-47486): 处理Rybicki形式的相对变化
- `SUBROUTINE TRIDAG` (tlusty208.f: 47677-47678): 求解三对角系统
- `SUBROUTINE RYBHEQ` (tlusty208.f: 47795-47864): Rybicki形式的流体静力学平衡
## 光谱处理模块
### 谱线处理函数
- `FUNCTION PROFIL` (tlusty208.f: 8176-8228): 标准吸收轮廓函数
- `SUBROUTINE GAMSP` (tlusty208.f: 8176-8176): 用户提供的阻尼参数表达式
- `FUNCTION SIGMAR` (tlusty208.f: 40671-40773): 计算表面质量密度
### 连续谱处理函数
- `FUNCTION SBFHE1` (tlusty208.f: 10262-10329): 计算中性氦的光电离截面
- `FUNCTION TOPBAS` (tlusty208.f: 10641-10704): 计算光电离截面
- `FUNCTION SGHE12` (tlusty208.f: 10229-10262): 氦I的n=2态的光电离截面特殊公式
## 辅助数学函数
- `FUNCTION EXPINT` (tlusty208.f: 13831-13985): 第一指数积分函数E1(X)
- `SUBROUTINE INTERP` (tlusty208.f: 13831-13985): 一般插值程序
- `SUBROUTINE HESOLV` (tlusty208.f: 42087-42139): 求解流体静力学平衡方程和z-m关系的耦合系统
- `SUBROUTINE PSOLVE` (tlusty208.f: 42670-42755): 求解二阶压力方程
- `SUBROUTINE ZMRHO` (tlusty208.f: 42755-42755): DM、DENS和ZD的初始估计
- `SUBROUTINE GRIDP` (tlusty208.f: 42005-42087): 评估函数的新网格点
## 其他重要函数
- `SUBROUTINE CONCOR` (tlusty208.f: 27900-27976): 完成线性化迭代后初始化模型参数DELTA
- `SUBROUTINE CONREF` (tlusty208.f: 27976-28314): (功能未明确)
- `SUBROUTINE PZEVLD` (tlusty208.f: 28314-28378): 确定总压力、气体压力和压力对数梯度
- `SUBROUTINE DMEVAL` (tlusty208.f: 43536-43599): 当z尺度为基本尺度时重新计算m尺度
- `SUBROUTINE VISINI` (tlusty208.f: 43476-43536): 初始化处理盘粘性所需的量
- `SUBROUTINE DMDER` (tlusty208.f: 40671-40671): (功能未明确)
- `SUBROUTINE QUARTC` (tlusty208.f: 41576-41664): 求解四次代数方程
- `SUBROUTINE TEMPER` (tlusty208.f: 41391-41459): 评估温度、电子密度等
## 碰撞处理函数
- `FUNCTION CHEAV` (tlusty208.f: 13347-13418): 计算中性氦的碰撞激发率
- `SUBROUTINE SETCOL` (未在代码中找到具体位置): 设置碰撞率
## 辐射场处理函数
- `SUBROUTINE TLOCAL` (tlusty208.f: 41576-41664): 作为光深度函数的局部温度
- `SUBROUTINE ODFSET` (tlusty208.f: 29986-30022): 初始化线ODF
- `SUBROUTINE OPASUM` (未在代码中找到具体位置): 计算总连续不透明度
## 包含文件
- `IMPLIC.FOR` (行1-2): 包含基本的变量类型定义
- `BASICS.FOR` (行1-130): 定义基本参数和常量
- `ITERAT.FOR` (行1-15): 包含与迭代过程相关的参数
- `ALIPAR.FOR` (行1-30): 包含加速Lambda迭代参数
- `ATOMIC.FOR` (行1-57): 包含原子数据参数
- `MODELQ.FOR` (行1-218): 包含模型物理量参数
- `ODFPAR.FOR` (行1-35): 包含不透明度分布函数参数
- `ARRAY1.FOR` (行1-34): 包含主要工作数组定义
+50010
View File
File diff suppressed because it is too large Load Diff