From f08c328b70ccc4d423df60b6653fc9e145393092 Mon Sep 17 00:00:00 2001 From: Asfmq <2696428814@qq.com> Date: Wed, 25 Mar 2026 13:31:23 +0800 Subject: [PATCH] =?UTF-8?q?tlusty=E9=87=8D=E6=9E=84=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib.rs | 29 +-- src/{ => synspec}/math/count_words.rs | 0 src/{ => synspec}/math/crosew.rs | 16 +- src/{ => synspec}/math/divhe2.rs | 0 src/{ => synspec}/math/eps.rs | 0 src/{ => synspec}/math/extprf.rs | 0 src/{ => synspec}/math/feautr.rs | 0 src/{ => synspec}/math/gamhe.rs | 0 src/{ => synspec}/math/griem.rs | 0 src/{ => synspec}/math/he2sew.rs | 0 src/{ => synspec}/math/heset.rs | 0 src/{ => synspec}/math/hylset.rs | 0 src/{ => synspec}/math/inibla.rs | 0 src/{ => synspec}/math/iniblm.rs | 0 src/{ => synspec}/math/intrp.rs | 0 src/{ => synspec}/math/ispec.rs | 0 src/synspec/math/mod.rs | 59 +++++ src/{ => synspec}/math/molop.rs | 2 +- src/{ => synspec}/math/partdv.rs | 0 src/{ => synspec}/math/phe2.rs | 0 src/{ => synspec}/math/phtion.rs | 2 +- src/{ => synspec}/math/phtx.rs | 2 +- src/{ => synspec}/math/pretab.rs | 22 +- src/{ => synspec}/math/sffhmi_old.rs | 0 src/{ => synspec}/math/sgmerg.rs | 0 src/{ => synspec}/math/starkir.rs | 2 +- src/{ => synspec}/math/tint.rs | 0 src/{ => synspec}/math/voigtk.rs | 0 src/{ => synspec}/math/wtot.rs | 0 src/synspec/mod.rs | 5 + src/{ => tlusty}/data.rs | 0 src/{ => tlusty}/io/chckse.rs | 18 +- src/{ => tlusty}/io/format.rs | 0 src/{ => tlusty}/io/incldy.rs | 14 +- src/{ => tlusty}/io/initia.rs | 2 +- src/{ => tlusty}/io/inpmod.rs | 10 +- src/{ => tlusty}/io/input.rs | 0 src/{ => tlusty}/io/iroset.rs | 14 +- src/{ => tlusty}/io/kurucz.rs | 2 +- src/{ => tlusty}/io/levcd.rs | 14 +- src/{ => tlusty}/io/linset.rs | 28 +-- src/{ => tlusty}/io/ltegr.rs | 4 +- src/{ => tlusty}/io/ltegrd.rs | 4 +- src/{ => tlusty}/io/mod.rs | 0 src/{ => tlusty}/io/model.rs | 0 src/{ => tlusty}/io/nstout.rs | 0 src/{ => tlusty}/io/nstpar.rs | 2 +- src/{ => tlusty}/io/odfset.rs | 2 +- src/{ => tlusty}/io/outpri.rs | 2 +- src/{ => tlusty}/io/rayini.rs | 10 +- src/{ => tlusty}/io/reader.rs | 0 src/{ => tlusty}/io/resolv.rs | 10 +- src/{ => tlusty}/io/settrm.rs | 2 +- src/{ => tlusty}/io/srtfrq.rs | 4 +- src/{ => tlusty}/io/start.rs | 8 +- src/{ => tlusty}/io/tabini.rs | 2 +- src/{ => tlusty}/io/writer.rs | 0 src/{ => tlusty}/io/xenini.rs | 2 +- src/{ => tlusty}/math/accel2.rs | 8 +- src/{ => tlusty}/math/accelp.rs | 2 +- src/{ => tlusty}/math/alifr1.rs | 4 +- src/{ => tlusty}/math/alifr3.rs | 4 +- src/{ => tlusty}/math/alifr6.rs | 2 +- src/{ => tlusty}/math/alifrk.rs | 2 +- src/{ => tlusty}/math/alisk1.rs | 2 +- src/{ => tlusty}/math/alisk2.rs | 2 +- src/{ => tlusty}/math/alist1.rs | 2 +- src/{ => tlusty}/math/alist2.rs | 2 +- src/{ => tlusty}/math/allard.rs | 2 +- src/{ => tlusty}/math/allardt.rs | 0 src/{ => tlusty}/math/angset.rs | 4 +- src/{ => tlusty}/math/betah.rs | 2 +- src/{ => tlusty}/math/bhe.rs | 2 +- src/{ => tlusty}/math/bkhsgo.rs | 0 src/{ => tlusty}/math/bpop.rs | 14 +- src/{ => tlusty}/math/bpopc.rs | 4 +- src/{ => tlusty}/math/bpope.rs | 2 +- src/{ => tlusty}/math/bpopf.rs | 6 +- src/{ => tlusty}/math/bpopt.rs | 2 +- src/{ => tlusty}/math/bre.rs | 2 +- src/{ => tlusty}/math/brez.rs | 2 +- src/{ => tlusty}/math/brte.rs | 2 +- src/{ => tlusty}/math/brtez.rs | 0 src/{ => tlusty}/math/butler.rs | 0 src/{ => tlusty}/math/carbon.rs | 0 src/{ => tlusty}/math/ceh12.rs | 0 src/{ => tlusty}/math/change.rs | 4 +- src/{ => tlusty}/math/chctab.rs | 4 +- src/{ => tlusty}/math/cheav.rs | 0 src/{ => tlusty}/math/cheavj.rs | 0 src/{ => tlusty}/math/cia_h2h.rs | 0 src/{ => tlusty}/math/cia_h2h2.rs | 0 src/{ => tlusty}/math/cia_h2he.rs | 0 src/{ => tlusty}/math/cia_hhe.rs | 0 src/{ => tlusty}/math/cion.rs | 2 +- src/{ => tlusty}/math/ckoest.rs | 2 +- src/{ => tlusty}/math/colh.rs | 4 +- src/{ => tlusty}/math/colhe.rs | 2 +- src/{ => tlusty}/math/colis.rs | 2 +- src/{ => tlusty}/math/collhe.rs | 0 src/{ => tlusty}/math/column.rs | 4 +- src/{ => tlusty}/math/compt0.rs | 2 +- src/{ => tlusty}/math/comset.rs | 2 +- src/{ => tlusty}/math/concor.rs | 2 +- src/{ => tlusty}/math/conout.rs | 2 +- src/{ => tlusty}/math/conref.rs | 2 +- src/{ => tlusty}/math/contmd.rs | 2 +- src/{ => tlusty}/math/contmp.rs | 2 +- src/{ => tlusty}/math/convec.rs | 2 +- src/{ => tlusty}/math/coolrt.rs | 2 +- src/{ => tlusty}/math/corrwm.rs | 32 +-- src/{ => tlusty}/math/cross.rs | 2 +- src/{ => tlusty}/math/cspec.rs | 2 +- src/{ => tlusty}/math/ctdata.rs | 0 src/{ => tlusty}/math/cubic.rs | 0 src/{ => tlusty}/math/dielrc.rs | 4 +- src/{ => tlusty}/math/dietot.rs | 16 +- src/{ => tlusty}/math/divstr.rs | 2 +- src/{ => tlusty}/math/dmder.rs | 2 +- src/{ => tlusty}/math/dmeval.rs | 16 +- src/{ => tlusty}/math/dopgam.rs | 2 +- src/{ => tlusty}/math/dwnfr.rs | 6 +- src/{ => tlusty}/math/dwnfr0.rs | 4 +- src/{ => tlusty}/math/dwnfr1.rs | 6 +- src/{ => tlusty}/math/elcor.rs | 8 +- src/{ => tlusty}/math/eldenc.rs | 8 +- src/{ => tlusty}/math/eldens.rs | 10 +- src/{ => tlusty}/math/emat.rs | 10 +- src/{ => tlusty}/math/entene.rs | 2 +- src/{ => tlusty}/math/erfcx.rs | 0 src/{ => tlusty}/math/expint.rs | 2 +- src/{ => tlusty}/math/expo.rs | 0 src/{ => tlusty}/math/ffcros.rs | 0 src/{ => tlusty}/math/gami.rs | 0 src/{ => tlusty}/math/gamsp.rs | 0 src/{ => tlusty}/math/gauleg.rs | 0 src/{ => tlusty}/math/gaunt.rs | 0 src/{ => tlusty}/math/getlal.rs | 4 +- src/{ => tlusty}/math/getwrd.rs | 0 src/{ => tlusty}/math/gfree.rs | 18 +- src/{ => tlusty}/math/ghydop.rs | 2 +- src/{ => tlusty}/math/gntk.rs | 0 src/{ => tlusty}/math/gomini.rs | 8 +- src/{ => tlusty}/math/grcor.rs | 0 src/{ => tlusty}/math/greyd.rs | 2 +- src/{ => tlusty}/math/gridp.rs | 2 +- src/{ => tlusty}/math/gvdw.rs | 0 src/{ => tlusty}/math/h2minus.rs | 4 +- src/{ => tlusty}/math/hedif.rs | 10 +- src/{ => tlusty}/math/hephot.rs | 0 src/{ => tlusty}/math/hesol6.rs | 4 +- src/{ => tlusty}/math/hesolv.rs | 12 +- src/{ => tlusty}/math/hidalg.rs | 0 src/{ => tlusty}/math/ijali2.rs | 22 +- src/{ => tlusty}/math/ijalis.rs | 10 +- src/{ => tlusty}/math/indexx.rs | 0 src/{ => tlusty}/math/inicom.rs | 2 +- src/{ => tlusty}/math/inifrc.rs | 4 +- src/{ => tlusty}/math/inifrs.rs | 2 +- src/{ => tlusty}/math/inifrt.rs | 2 +- src/{ => tlusty}/math/inilam.rs | 2 +- src/{ => tlusty}/math/inkul.rs | 16 +- src/{ => tlusty}/math/inpdis.rs | 10 +- src/{ => tlusty}/math/interp.rs | 2 +- src/{ => tlusty}/math/interpolate.rs | 0 src/{ => tlusty}/math/inthyd.rs | 4 +- src/{ => tlusty}/math/intlem.rs | 6 +- src/{ => tlusty}/math/intxen.rs | 2 +- src/{ => tlusty}/math/irc.rs | 2 +- src/{ => tlusty}/math/lagran.rs | 0 src/{ => tlusty}/math/laguer.rs | 0 src/{ => tlusty}/math/lemini.rs | 6 +- src/{ => tlusty}/math/levgrp.rs | 2 +- src/{ => tlusty}/math/levset.rs | 2 +- src/{ => tlusty}/math/levsol.rs | 14 +- src/{ => tlusty}/math/lineqs.rs | 0 src/{ => tlusty}/math/linpro.rs | 6 +- src/{ => tlusty}/math/linsel.rs | 0 src/{ => tlusty}/math/linspl.rs | 0 src/{ => tlusty}/math/locate.rs | 0 src/{ => tlusty}/math/lucy.rs | 2 +- src/{ => tlusty}/math/lymlin.rs | 2 +- src/{ => tlusty}/math/matcon.rs | 4 +- src/{ => tlusty}/math/matgen.rs | 30 +-- src/{ => tlusty}/math/matinv.rs | 0 src/{ => tlusty}/math/meanop.rs | 6 +- src/{ => tlusty}/math/meanopt.rs | 2 +- src/{ => tlusty}/math/minv3.rs | 0 src/{ => tlusty}/math/mod.rs | 60 +---- src/{ => tlusty}/math/moleq.rs | 6 +- src/{ => tlusty}/math/mpartf.rs | 0 src/{ => tlusty}/math/newdm.rs | 2 +- src/{ => tlusty}/math/newdmt.rs | 6 +- src/{ => tlusty}/math/newpop.rs | 8 +- src/{ => tlusty}/math/odf1.rs | 32 +-- src/{ => tlusty}/math/odffr.rs | 2 +- src/{ => tlusty}/math/odfhst.rs | 6 +- src/{ => tlusty}/math/odfhyd.rs | 4 +- src/{ => tlusty}/math/odfhys.rs | 18 +- src/{ => tlusty}/math/odfmer.rs | 0 src/{ => tlusty}/math/opacf0.rs | 2 +- src/{ => tlusty}/math/opacf1.rs | 6 +- src/{ => tlusty}/math/opacfa.rs | 2 +- src/{ => tlusty}/math/opacfd.rs | 2 +- src/{ => tlusty}/math/opacfl.rs | 0 src/{ => tlusty}/math/opact1.rs | 2 +- src/{ => tlusty}/math/opactd.rs | 2 +- src/{ => tlusty}/math/opactr.rs | 8 +- src/{ => tlusty}/math/opadd.rs | 2 +- src/{ => tlusty}/math/opadd0.rs | 2 +- src/{ => tlusty}/math/opahst.rs | 2 +- src/{ => tlusty}/math/opaini.rs | 0 src/{ => tlusty}/math/opctab.rs | 4 +- src/{ => tlusty}/math/opdata.rs | 2 +- src/{ => tlusty}/math/opfrac.rs | 2 +- src/{ => tlusty}/math/osccor.rs | 0 src/{ => tlusty}/math/output.rs | 6 +- src/{ => tlusty}/math/partf.rs | 4 +- src/{ => tlusty}/math/pfcno.rs | 2 +- src/{ => tlusty}/math/pffe.rs | 2 +- src/{ => tlusty}/math/pfheav.rs | 2 +- src/{ => tlusty}/math/pfni.rs | 2 +- src/{ => tlusty}/math/pfspec.rs | 0 src/{ => tlusty}/math/pgset.rs | 2 +- src/{ => tlusty}/math/prchan.rs | 0 src/{ => tlusty}/math/prd.rs | 2 +- src/{ => tlusty}/math/prdini.rs | 2 +- src/{ => tlusty}/math/princ.rs | 16 +- src/{ => tlusty}/math/prnt.rs | 16 +- src/{ => tlusty}/math/profil.rs | 2 +- src/{ => tlusty}/math/profsp.rs | 10 +- src/{ => tlusty}/math/prsent.rs | 0 src/{ => tlusty}/math/psolve.rs | 6 +- src/{ => tlusty}/math/pzert.rs | 10 +- src/{ => tlusty}/math/pzeval.rs | 2 +- src/{ => tlusty}/math/pzevld.rs | 14 +- src/{ => tlusty}/math/quartc.rs | 0 src/{ => tlusty}/math/quasim.rs | 8 +- src/{ => tlusty}/math/quit.rs | 0 src/{ => tlusty}/math/radpre.rs | 2 +- src/{ => tlusty}/math/radtot.rs | 2 +- src/{ => tlusty}/math/raph.rs | 0 src/{ => tlusty}/math/rates1.rs | 2 +- src/{ => tlusty}/math/ratmal.rs | 8 +- src/{ => tlusty}/math/ratmat.rs | 12 +- src/{ => tlusty}/math/ratsp1.rs | 2 +- src/{ => tlusty}/math/rayleigh.rs | 4 +- src/{ => tlusty}/math/rayset.rs | 2 +- src/{ => tlusty}/math/rdata.rs | 14 +- src/{ => tlusty}/math/rdatax.rs | 2 +- src/{ => tlusty}/math/readbf.rs | 4 +- src/{ => tlusty}/math/rechck.rs | 2 +- src/{ => tlusty}/math/reflev.rs | 12 +- src/{ => tlusty}/math/reiman.rs | 0 src/{ => tlusty}/math/rhoeos.rs | 2 +- src/{ => tlusty}/math/rhonen.rs | 4 +- src/{ => tlusty}/math/rhsgen.rs | 4 +- src/{ => tlusty}/math/rossop.rs | 2 +- src/{ => tlusty}/math/rosstd.rs | 2 +- src/{ => tlusty}/math/rte_sc.rs | 0 src/{ => tlusty}/math/rteang.rs | 0 src/{ => tlusty}/math/rtecf0.rs | 12 +- src/{ => tlusty}/math/rtecf1.rs | 12 +- src/{ => tlusty}/math/rtecmc.rs | 14 +- src/{ => tlusty}/math/rtecmu.rs | 2 +- src/{ => tlusty}/math/rtecom.rs | 12 +- src/{ => tlusty}/math/rtedf1.rs | 2 +- src/{ => tlusty}/math/rtedf2.rs | 12 +- src/{ => tlusty}/math/rtefe2.rs | 0 src/{ => tlusty}/math/rtefr1.rs | 2 +- src/{ => tlusty}/math/rteint.rs | 4 +- src/{ => tlusty}/math/rtesol.rs | 0 src/{ => tlusty}/math/russel.rs | 2 +- src/{ => tlusty}/math/rybchn.rs | 6 +- src/{ => tlusty}/math/rybene.rs | 4 +- src/{ => tlusty}/math/rybheq.rs | 4 +- src/{ => tlusty}/math/rybmat.rs | 2 +- src/{ => tlusty}/math/rybsol.rs | 2 +- src/{ => tlusty}/math/sabolf.rs | 4 +- src/{ => tlusty}/math/sbfch.rs | 2 +- src/{ => tlusty}/math/sbfhe1.rs | 0 src/{ => tlusty}/math/sbfhmi.rs | 2 +- src/{ => tlusty}/math/sbfhmi_old.rs | 0 src/{ => tlusty}/math/sbfoh.rs | 2 +- src/{ => tlusty}/math/setdrt.rs | 4 +- src/{ => tlusty}/math/sffhmi.rs | 2 +- src/{ => tlusty}/math/sffhmi_add.rs | 2 +- src/{ => tlusty}/math/sghe12.rs | 0 src/{ => tlusty}/math/sgmer.rs | 2 +- src/{ => tlusty}/math/sgmer1.rs | 0 src/{ => tlusty}/math/sigave.rs | 2 +- src/{ => tlusty}/math/sigk.rs | 2 +- src/{ => tlusty}/math/sigmar.rs | 0 src/{ => tlusty}/math/solve.rs | 2 +- src/{ => tlusty}/math/solves.rs | 10 +- src/{ => tlusty}/math/spsigk.rs | 2 +- src/{ => tlusty}/math/stark0.rs | 0 src/{ => tlusty}/math/starka.rs | 0 src/{ => tlusty}/math/state.rs | 4 +- src/{ => tlusty}/math/steqeq.rs | 2 +- src/{ => tlusty}/math/switch.rs | 0 src/{ => tlusty}/math/szirc.rs | 2 +- src/{ => tlusty}/math/tabint.rs | 2 +- src/{ => tlusty}/math/taufr1.rs | 2 +- src/{ => tlusty}/math/tdpini.rs | 6 +- src/{ => tlusty}/math/temcor.rs | 2 +- src/{ => tlusty}/math/temper.rs | 2 +- src/{ => tlusty}/math/timing.rs | 0 src/{ => tlusty}/math/tiopf.rs | 0 src/{ => tlusty}/math/tlocal.rs | 2 +- src/{ => tlusty}/math/topbas.rs | 2 +- src/{ => tlusty}/math/traini.rs | 8 +- src/{ => tlusty}/math/tridag.rs | 0 src/{ => tlusty}/math/trmder.rs | 4 +- src/{ => tlusty}/math/trmdrt.rs | 0 src/{ => tlusty}/math/ubeta.rs | 2 +- src/{ => tlusty}/math/vern16.rs | 2 +- src/{ => tlusty}/math/vern18.rs | 2 +- src/{ => tlusty}/math/vern20.rs | 2 +- src/{ => tlusty}/math/vern26.rs | 2 +- src/{ => tlusty}/math/verner.rs | 10 +- src/{ => tlusty}/math/visini.rs | 2 +- src/{ => tlusty}/math/voigt.rs | 0 src/{ => tlusty}/math/voigte.rs | 0 src/{ => tlusty}/math/wn.rs | 0 src/{ => tlusty}/math/wnstor.rs | 4 +- src/{ => tlusty}/math/xk2dop.rs | 0 src/{ => tlusty}/math/yint.rs | 0 src/{ => tlusty}/math/ylintp.rs | 0 src/{ => tlusty}/math/zmrho.rs | 4 +- src/tlusty/mod.rs | 16 ++ src/{ => tlusty}/physics/mod.rs | 0 src/tlusty/runner.rs | 305 ++++++++++++++++++++++++++ src/{ => tlusty}/state/alipar.rs | 0 src/{ => tlusty}/state/arrays.rs | 0 src/{ => tlusty}/state/atomic.rs | 0 src/{ => tlusty}/state/config.rs | 0 src/{ => tlusty}/state/constants.rs | 0 src/{ => tlusty}/state/iterat.rs | 0 src/{ => tlusty}/state/mod.rs | 0 src/{ => tlusty}/state/model.rs | 0 src/{ => tlusty}/state/odfpar.rs | 0 342 files changed, 992 insertions(+), 670 deletions(-) rename src/{ => synspec}/math/count_words.rs (100%) rename src/{ => synspec}/math/crosew.rs (95%) rename src/{ => synspec}/math/divhe2.rs (100%) rename src/{ => synspec}/math/eps.rs (100%) rename src/{ => synspec}/math/extprf.rs (100%) rename src/{ => synspec}/math/feautr.rs (100%) rename src/{ => synspec}/math/gamhe.rs (100%) rename src/{ => synspec}/math/griem.rs (100%) rename src/{ => synspec}/math/he2sew.rs (100%) rename src/{ => synspec}/math/heset.rs (100%) rename src/{ => synspec}/math/hylset.rs (100%) rename src/{ => synspec}/math/inibla.rs (100%) rename src/{ => synspec}/math/iniblm.rs (100%) rename src/{ => synspec}/math/intrp.rs (100%) rename src/{ => synspec}/math/ispec.rs (100%) create mode 100644 src/synspec/math/mod.rs rename src/{ => synspec}/math/molop.rs (99%) rename src/{ => synspec}/math/partdv.rs (100%) rename src/{ => synspec}/math/phe2.rs (100%) rename src/{ => synspec}/math/phtion.rs (99%) rename src/{ => synspec}/math/phtx.rs (99%) rename src/{ => synspec}/math/pretab.rs (89%) rename src/{ => synspec}/math/sffhmi_old.rs (100%) rename src/{ => synspec}/math/sgmerg.rs (100%) rename src/{ => synspec}/math/starkir.rs (99%) rename src/{ => synspec}/math/tint.rs (100%) rename src/{ => synspec}/math/voigtk.rs (100%) rename src/{ => synspec}/math/wtot.rs (100%) create mode 100644 src/synspec/mod.rs rename src/{ => tlusty}/data.rs (100%) rename src/{ => tlusty}/io/chckse.rs (96%) rename src/{ => tlusty}/io/format.rs (100%) rename src/{ => tlusty}/io/incldy.rs (96%) rename src/{ => tlusty}/io/initia.rs (99%) rename src/{ => tlusty}/io/inpmod.rs (98%) rename src/{ => tlusty}/io/input.rs (100%) rename src/{ => tlusty}/io/iroset.rs (98%) rename src/{ => tlusty}/io/kurucz.rs (99%) rename src/{ => tlusty}/io/levcd.rs (98%) rename src/{ => tlusty}/io/linset.rs (94%) rename src/{ => tlusty}/io/ltegr.rs (98%) rename src/{ => tlusty}/io/ltegrd.rs (99%) rename src/{ => tlusty}/io/mod.rs (100%) rename src/{ => tlusty}/io/model.rs (100%) rename src/{ => tlusty}/io/nstout.rs (100%) rename src/{ => tlusty}/io/nstpar.rs (99%) rename src/{ => tlusty}/io/odfset.rs (99%) rename src/{ => tlusty}/io/outpri.rs (99%) rename src/{ => tlusty}/io/rayini.rs (97%) rename src/{ => tlusty}/io/reader.rs (100%) rename src/{ => tlusty}/io/resolv.rs (98%) rename src/{ => tlusty}/io/settrm.rs (99%) rename src/{ => tlusty}/io/srtfrq.rs (97%) rename src/{ => tlusty}/io/start.rs (97%) rename src/{ => tlusty}/io/tabini.rs (99%) rename src/{ => tlusty}/io/writer.rs (100%) rename src/{ => tlusty}/io/xenini.rs (99%) rename src/{ => tlusty}/math/accel2.rs (98%) rename src/{ => tlusty}/math/accelp.rs (99%) rename src/{ => tlusty}/math/alifr1.rs (99%) rename src/{ => tlusty}/math/alifr3.rs (99%) rename src/{ => tlusty}/math/alifr6.rs (99%) rename src/{ => tlusty}/math/alifrk.rs (99%) rename src/{ => tlusty}/math/alisk1.rs (99%) rename src/{ => tlusty}/math/alisk2.rs (99%) rename src/{ => tlusty}/math/alist1.rs (99%) rename src/{ => tlusty}/math/alist2.rs (99%) rename src/{ => tlusty}/math/allard.rs (99%) rename src/{ => tlusty}/math/allardt.rs (100%) rename src/{ => tlusty}/math/angset.rs (98%) rename src/{ => tlusty}/math/betah.rs (98%) rename src/{ => tlusty}/math/bhe.rs (99%) rename src/{ => tlusty}/math/bkhsgo.rs (100%) rename src/{ => tlusty}/math/bpop.rs (97%) rename src/{ => tlusty}/math/bpopc.rs (99%) rename src/{ => tlusty}/math/bpope.rs (99%) rename src/{ => tlusty}/math/bpopf.rs (98%) rename src/{ => tlusty}/math/bpopt.rs (99%) rename src/{ => tlusty}/math/bre.rs (99%) rename src/{ => tlusty}/math/brez.rs (99%) rename src/{ => tlusty}/math/brte.rs (99%) rename src/{ => tlusty}/math/brtez.rs (100%) rename src/{ => tlusty}/math/butler.rs (100%) rename src/{ => tlusty}/math/carbon.rs (100%) rename src/{ => tlusty}/math/ceh12.rs (100%) rename src/{ => tlusty}/math/change.rs (98%) rename src/{ => tlusty}/math/chctab.rs (98%) rename src/{ => tlusty}/math/cheav.rs (100%) rename src/{ => tlusty}/math/cheavj.rs (100%) rename src/{ => tlusty}/math/cia_h2h.rs (100%) rename src/{ => tlusty}/math/cia_h2h2.rs (100%) rename src/{ => tlusty}/math/cia_h2he.rs (100%) rename src/{ => tlusty}/math/cia_hhe.rs (100%) rename src/{ => tlusty}/math/cion.rs (99%) rename src/{ => tlusty}/math/ckoest.rs (99%) rename src/{ => tlusty}/math/colh.rs (99%) rename src/{ => tlusty}/math/colhe.rs (99%) rename src/{ => tlusty}/math/colis.rs (99%) rename src/{ => tlusty}/math/collhe.rs (100%) rename src/{ => tlusty}/math/column.rs (98%) rename src/{ => tlusty}/math/compt0.rs (99%) rename src/{ => tlusty}/math/comset.rs (99%) rename src/{ => tlusty}/math/concor.rs (99%) rename src/{ => tlusty}/math/conout.rs (99%) rename src/{ => tlusty}/math/conref.rs (99%) rename src/{ => tlusty}/math/contmd.rs (99%) rename src/{ => tlusty}/math/contmp.rs (99%) rename src/{ => tlusty}/math/convec.rs (99%) rename src/{ => tlusty}/math/coolrt.rs (99%) rename src/{ => tlusty}/math/corrwm.rs (94%) rename src/{ => tlusty}/math/cross.rs (99%) rename src/{ => tlusty}/math/cspec.rs (99%) rename src/{ => tlusty}/math/ctdata.rs (100%) rename src/{ => tlusty}/math/cubic.rs (100%) rename src/{ => tlusty}/math/dielrc.rs (99%) rename src/{ => tlusty}/math/dietot.rs (91%) rename src/{ => tlusty}/math/divstr.rs (98%) rename src/{ => tlusty}/math/dmder.rs (98%) rename src/{ => tlusty}/math/dmeval.rs (95%) rename src/{ => tlusty}/math/dopgam.rs (99%) rename src/{ => tlusty}/math/dwnfr.rs (97%) rename src/{ => tlusty}/math/dwnfr0.rs (96%) rename src/{ => tlusty}/math/dwnfr1.rs (97%) rename src/{ => tlusty}/math/elcor.rs (97%) rename src/{ => tlusty}/math/eldenc.rs (97%) rename src/{ => tlusty}/math/eldens.rs (97%) rename src/{ => tlusty}/math/emat.rs (96%) rename src/{ => tlusty}/math/entene.rs (98%) rename src/{ => tlusty}/math/erfcx.rs (100%) rename src/{ => tlusty}/math/expint.rs (99%) rename src/{ => tlusty}/math/expo.rs (100%) rename src/{ => tlusty}/math/ffcros.rs (100%) rename src/{ => tlusty}/math/gami.rs (100%) rename src/{ => tlusty}/math/gamsp.rs (100%) rename src/{ => tlusty}/math/gauleg.rs (100%) rename src/{ => tlusty}/math/gaunt.rs (100%) rename src/{ => tlusty}/math/getlal.rs (98%) rename src/{ => tlusty}/math/getwrd.rs (100%) rename src/{ => tlusty}/math/gfree.rs (93%) rename src/{ => tlusty}/math/ghydop.rs (99%) rename src/{ => tlusty}/math/gntk.rs (100%) rename src/{ => tlusty}/math/gomini.rs (96%) rename src/{ => tlusty}/math/grcor.rs (100%) rename src/{ => tlusty}/math/greyd.rs (99%) rename src/{ => tlusty}/math/gridp.rs (99%) rename src/{ => tlusty}/math/gvdw.rs (100%) rename src/{ => tlusty}/math/h2minus.rs (97%) rename src/{ => tlusty}/math/hedif.rs (97%) rename src/{ => tlusty}/math/hephot.rs (100%) rename src/{ => tlusty}/math/hesol6.rs (99%) rename src/{ => tlusty}/math/hesolv.rs (98%) rename src/{ => tlusty}/math/hidalg.rs (100%) rename src/{ => tlusty}/math/ijali2.rs (94%) rename src/{ => tlusty}/math/ijalis.rs (97%) rename src/{ => tlusty}/math/indexx.rs (100%) rename src/{ => tlusty}/math/inicom.rs (98%) rename src/{ => tlusty}/math/inifrc.rs (99%) rename src/{ => tlusty}/math/inifrs.rs (99%) rename src/{ => tlusty}/math/inifrt.rs (99%) rename src/{ => tlusty}/math/inilam.rs (99%) rename src/{ => tlusty}/math/inkul.rs (98%) rename src/{ => tlusty}/math/inpdis.rs (98%) rename src/{ => tlusty}/math/interp.rs (99%) rename src/{ => tlusty}/math/interpolate.rs (100%) rename src/{ => tlusty}/math/inthyd.rs (98%) rename src/{ => tlusty}/math/intlem.rs (96%) rename src/{ => tlusty}/math/intxen.rs (99%) rename src/{ => tlusty}/math/irc.rs (98%) rename src/{ => tlusty}/math/lagran.rs (100%) rename src/{ => tlusty}/math/laguer.rs (100%) rename src/{ => tlusty}/math/lemini.rs (99%) rename src/{ => tlusty}/math/levgrp.rs (99%) rename src/{ => tlusty}/math/levset.rs (99%) rename src/{ => tlusty}/math/levsol.rs (94%) rename src/{ => tlusty}/math/lineqs.rs (100%) rename src/{ => tlusty}/math/linpro.rs (98%) rename src/{ => tlusty}/math/linsel.rs (100%) rename src/{ => tlusty}/math/linspl.rs (100%) rename src/{ => tlusty}/math/locate.rs (100%) rename src/{ => tlusty}/math/lucy.rs (99%) rename src/{ => tlusty}/math/lymlin.rs (99%) rename src/{ => tlusty}/math/matcon.rs (99%) rename src/{ => tlusty}/math/matgen.rs (93%) rename src/{ => tlusty}/math/matinv.rs (100%) rename src/{ => tlusty}/math/meanop.rs (96%) rename src/{ => tlusty}/math/meanopt.rs (99%) rename src/{ => tlusty}/math/minv3.rs (100%) rename src/{ => tlusty}/math/mod.rs (90%) rename src/{ => tlusty}/math/moleq.rs (98%) rename src/{ => tlusty}/math/mpartf.rs (100%) rename src/{ => tlusty}/math/newdm.rs (99%) rename src/{ => tlusty}/math/newdmt.rs (99%) rename src/{ => tlusty}/math/newpop.rs (96%) rename src/{ => tlusty}/math/odf1.rs (95%) rename src/{ => tlusty}/math/odffr.rs (99%) rename src/{ => tlusty}/math/odfhst.rs (96%) rename src/{ => tlusty}/math/odfhyd.rs (98%) rename src/{ => tlusty}/math/odfhys.rs (96%) rename src/{ => tlusty}/math/odfmer.rs (100%) rename src/{ => tlusty}/math/opacf0.rs (99%) rename src/{ => tlusty}/math/opacf1.rs (99%) rename src/{ => tlusty}/math/opacfa.rs (99%) rename src/{ => tlusty}/math/opacfd.rs (99%) rename src/{ => tlusty}/math/opacfl.rs (100%) rename src/{ => tlusty}/math/opact1.rs (99%) rename src/{ => tlusty}/math/opactd.rs (99%) rename src/{ => tlusty}/math/opactr.rs (98%) rename src/{ => tlusty}/math/opadd.rs (99%) rename src/{ => tlusty}/math/opadd0.rs (99%) rename src/{ => tlusty}/math/opahst.rs (99%) rename src/{ => tlusty}/math/opaini.rs (100%) rename src/{ => tlusty}/math/opctab.rs (99%) rename src/{ => tlusty}/math/opdata.rs (99%) rename src/{ => tlusty}/math/opfrac.rs (99%) rename src/{ => tlusty}/math/osccor.rs (100%) rename src/{ => tlusty}/math/output.rs (98%) rename src/{ => tlusty}/math/partf.rs (99%) rename src/{ => tlusty}/math/pfcno.rs (99%) rename src/{ => tlusty}/math/pffe.rs (94%) rename src/{ => tlusty}/math/pfheav.rs (99%) rename src/{ => tlusty}/math/pfni.rs (99%) rename src/{ => tlusty}/math/pfspec.rs (100%) rename src/{ => tlusty}/math/pgset.rs (99%) rename src/{ => tlusty}/math/prchan.rs (100%) rename src/{ => tlusty}/math/prd.rs (99%) rename src/{ => tlusty}/math/prdini.rs (99%) rename src/{ => tlusty}/math/princ.rs (97%) rename src/{ => tlusty}/math/prnt.rs (97%) rename src/{ => tlusty}/math/profil.rs (99%) rename src/{ => tlusty}/math/profsp.rs (98%) rename src/{ => tlusty}/math/prsent.rs (100%) rename src/{ => tlusty}/math/psolve.rs (96%) rename src/{ => tlusty}/math/pzert.rs (95%) rename src/{ => tlusty}/math/pzeval.rs (99%) rename src/{ => tlusty}/math/pzevld.rs (96%) rename src/{ => tlusty}/math/quartc.rs (100%) rename src/{ => tlusty}/math/quasim.rs (96%) rename src/{ => tlusty}/math/quit.rs (100%) rename src/{ => tlusty}/math/radpre.rs (99%) rename src/{ => tlusty}/math/radtot.rs (99%) rename src/{ => tlusty}/math/raph.rs (100%) rename src/{ => tlusty}/math/rates1.rs (99%) rename src/{ => tlusty}/math/ratmal.rs (97%) rename src/{ => tlusty}/math/ratmat.rs (97%) rename src/{ => tlusty}/math/ratsp1.rs (99%) rename src/{ => tlusty}/math/rayleigh.rs (98%) rename src/{ => tlusty}/math/rayset.rs (99%) rename src/{ => tlusty}/math/rdata.rs (97%) rename src/{ => tlusty}/math/rdatax.rs (99%) rename src/{ => tlusty}/math/readbf.rs (96%) rename src/{ => tlusty}/math/rechck.rs (99%) rename src/{ => tlusty}/math/reflev.rs (98%) rename src/{ => tlusty}/math/reiman.rs (100%) rename src/{ => tlusty}/math/rhoeos.rs (99%) rename src/{ => tlusty}/math/rhonen.rs (98%) rename src/{ => tlusty}/math/rhsgen.rs (99%) rename src/{ => tlusty}/math/rossop.rs (99%) rename src/{ => tlusty}/math/rosstd.rs (99%) rename src/{ => tlusty}/math/rte_sc.rs (100%) rename src/{ => tlusty}/math/rteang.rs (100%) rename src/{ => tlusty}/math/rtecf0.rs (97%) rename src/{ => tlusty}/math/rtecf1.rs (98%) rename src/{ => tlusty}/math/rtecmc.rs (97%) rename src/{ => tlusty}/math/rtecmu.rs (99%) rename src/{ => tlusty}/math/rtecom.rs (97%) rename src/{ => tlusty}/math/rtedf1.rs (99%) rename src/{ => tlusty}/math/rtedf2.rs (97%) rename src/{ => tlusty}/math/rtefe2.rs (100%) rename src/{ => tlusty}/math/rtefr1.rs (99%) rename src/{ => tlusty}/math/rteint.rs (99%) rename src/{ => tlusty}/math/rtesol.rs (100%) rename src/{ => tlusty}/math/russel.rs (99%) rename src/{ => tlusty}/math/rybchn.rs (98%) rename src/{ => tlusty}/math/rybene.rs (99%) rename src/{ => tlusty}/math/rybheq.rs (99%) rename src/{ => tlusty}/math/rybmat.rs (99%) rename src/{ => tlusty}/math/rybsol.rs (99%) rename src/{ => tlusty}/math/sabolf.rs (99%) rename src/{ => tlusty}/math/sbfch.rs (99%) rename src/{ => tlusty}/math/sbfhe1.rs (100%) rename src/{ => tlusty}/math/sbfhmi.rs (98%) rename src/{ => tlusty}/math/sbfhmi_old.rs (100%) rename src/{ => tlusty}/math/sbfoh.rs (99%) rename src/{ => tlusty}/math/setdrt.rs (97%) rename src/{ => tlusty}/math/sffhmi.rs (99%) rename src/{ => tlusty}/math/sffhmi_add.rs (99%) rename src/{ => tlusty}/math/sghe12.rs (100%) rename src/{ => tlusty}/math/sgmer.rs (99%) rename src/{ => tlusty}/math/sgmer1.rs (100%) rename src/{ => tlusty}/math/sigave.rs (99%) rename src/{ => tlusty}/math/sigk.rs (99%) rename src/{ => tlusty}/math/sigmar.rs (100%) rename src/{ => tlusty}/math/solve.rs (99%) rename src/{ => tlusty}/math/solves.rs (98%) rename src/{ => tlusty}/math/spsigk.rs (97%) rename src/{ => tlusty}/math/stark0.rs (100%) rename src/{ => tlusty}/math/starka.rs (100%) rename src/{ => tlusty}/math/state.rs (99%) rename src/{ => tlusty}/math/steqeq.rs (99%) rename src/{ => tlusty}/math/switch.rs (100%) rename src/{ => tlusty}/math/szirc.rs (98%) rename src/{ => tlusty}/math/tabint.rs (99%) rename src/{ => tlusty}/math/taufr1.rs (99%) rename src/{ => tlusty}/math/tdpini.rs (96%) rename src/{ => tlusty}/math/temcor.rs (99%) rename src/{ => tlusty}/math/temper.rs (99%) rename src/{ => tlusty}/math/timing.rs (100%) rename src/{ => tlusty}/math/tiopf.rs (100%) rename src/{ => tlusty}/math/tlocal.rs (99%) rename src/{ => tlusty}/math/topbas.rs (99%) rename src/{ => tlusty}/math/traini.rs (96%) rename src/{ => tlusty}/math/tridag.rs (100%) rename src/{ => tlusty}/math/trmder.rs (99%) rename src/{ => tlusty}/math/trmdrt.rs (100%) rename src/{ => tlusty}/math/ubeta.rs (98%) rename src/{ => tlusty}/math/vern16.rs (99%) rename src/{ => tlusty}/math/vern18.rs (98%) rename src/{ => tlusty}/math/vern20.rs (99%) rename src/{ => tlusty}/math/vern26.rs (99%) rename src/{ => tlusty}/math/verner.rs (97%) rename src/{ => tlusty}/math/visini.rs (99%) rename src/{ => tlusty}/math/voigt.rs (100%) rename src/{ => tlusty}/math/voigte.rs (100%) rename src/{ => tlusty}/math/wn.rs (100%) rename src/{ => tlusty}/math/wnstor.rs (98%) rename src/{ => tlusty}/math/xk2dop.rs (100%) rename src/{ => tlusty}/math/yint.rs (100%) rename src/{ => tlusty}/math/ylintp.rs (100%) rename src/{ => tlusty}/math/zmrho.rs (98%) create mode 100644 src/tlusty/mod.rs rename src/{ => tlusty}/physics/mod.rs (100%) create mode 100644 src/tlusty/runner.rs rename src/{ => tlusty}/state/alipar.rs (100%) rename src/{ => tlusty}/state/arrays.rs (100%) rename src/{ => tlusty}/state/atomic.rs (100%) rename src/{ => tlusty}/state/config.rs (100%) rename src/{ => tlusty}/state/constants.rs (100%) rename src/{ => tlusty}/state/iterat.rs (100%) rename src/{ => tlusty}/state/mod.rs (100%) rename src/{ => tlusty}/state/model.rs (100%) rename src/{ => tlusty}/state/odfpar.rs (100%) diff --git a/src/lib.rs b/src/lib.rs index ad1b4bd..51f7065 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,23 +5,14 @@ //! //! # 模块结构 //! -//! - `state`: 状态管理 (COMMON 块转换) -//! - `constants`: 物理常数和维度参数 -//! - `config`: 运行时配置 -//! - `atomic`: 原子/离子/能级数据 -//! - `model`: 大气模型状态 -//! - `arrays`: 大型计算数组 -//! - `io`: Fortran I/O 兼容层 -//! - `reader`: Fortran 格式输入读取 -//! - `writer`: Fortran 格式输出 -//! - `model`: 模型文件 (fort.7/8) -//! - `input`: 主输入 (fort.5) -//! - `math`: 数学工具函数 -//! - `data`: 静态数据数组 -//! - `physics`: 物理计算模块 +//! - `tlusty`: TLUSTY 专用模块 +//! - `data`: 静态数据数组 +//! - `io`: I/O 模块 +//! - `math`: 数学函数 +//! - `physics`: 物理计算 +//! - `state`: 状态管理 (COMMON 块) +//! - `synspec`: SYNSPEC 专用模块 +//! - `math`: 数学函数 -pub mod data; -pub mod io; -pub mod math; -pub mod physics; -pub mod state; +pub mod tlusty; +pub mod synspec; diff --git a/src/math/count_words.rs b/src/synspec/math/count_words.rs similarity index 100% rename from src/math/count_words.rs rename to src/synspec/math/count_words.rs diff --git a/src/math/crosew.rs b/src/synspec/math/crosew.rs similarity index 95% rename from src/math/crosew.rs rename to src/synspec/math/crosew.rs index a09b4a3..ec20b85 100644 --- a/src/math/crosew.rs +++ b/src/synspec/math/crosew.rs @@ -6,9 +6,9 @@ //! //! 设置光致电离截面数组,用于辐射转移计算。 -use super::sigk::{sigk, SigkParams}; -use crate::state::atomic::AtomicData; -use crate::state::constants::{MCROSS, MFREQ}; +use crate::tlusty::math::sigk::{sigk, SigkParams}; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::constants::{MCROSS, MFREQ}; // ============================================================================ // 常量 @@ -115,7 +115,7 @@ pub fn croset(params: &CrosetParams) -> Vec> { itr: it, mode: 0, atomic, - opdata: &super::topbas::OpData::default(), + opdata: &crate::tlusty::math::topbas::OpData::default(), }; cross[it][ij] = sigk(&sigk_params); } @@ -128,7 +128,7 @@ pub fn croset(params: &CrosetParams) -> Vec> { itr: it, mode: 1, atomic, - opdata: &super::topbas::OpData::default(), + opdata: &crate::tlusty::math::topbas::OpData::default(), }; cross[it][ij] = sigk(&sigk_params); @@ -226,7 +226,7 @@ pub fn crosew(params: &CrosewParams) -> Vec> { itr: it, mode: 0, atomic, - opdata: &super::topbas::OpData::default(), + opdata: &crate::tlusty::math::topbas::OpData::default(), }; cross[it][ij] = sigk(&sigk_params); } @@ -239,7 +239,7 @@ pub fn crosew(params: &CrosewParams) -> Vec> { itr: it, mode: 1, atomic, - opdata: &super::topbas::OpData::default(), + opdata: &crate::tlusty::math::topbas::OpData::default(), }; cross[it][ij] = sigk(&sigk_params); @@ -257,7 +257,7 @@ pub fn crosew(params: &CrosewParams) -> Vec> { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::AtomicData; + use crate::tlusty::state::atomic::AtomicData; fn create_test_atomic() -> AtomicData { let mut atomic = AtomicData::new(); diff --git a/src/math/divhe2.rs b/src/synspec/math/divhe2.rs similarity index 100% rename from src/math/divhe2.rs rename to src/synspec/math/divhe2.rs diff --git a/src/math/eps.rs b/src/synspec/math/eps.rs similarity index 100% rename from src/math/eps.rs rename to src/synspec/math/eps.rs diff --git a/src/math/extprf.rs b/src/synspec/math/extprf.rs similarity index 100% rename from src/math/extprf.rs rename to src/synspec/math/extprf.rs diff --git a/src/math/feautr.rs b/src/synspec/math/feautr.rs similarity index 100% rename from src/math/feautr.rs rename to src/synspec/math/feautr.rs diff --git a/src/math/gamhe.rs b/src/synspec/math/gamhe.rs similarity index 100% rename from src/math/gamhe.rs rename to src/synspec/math/gamhe.rs diff --git a/src/math/griem.rs b/src/synspec/math/griem.rs similarity index 100% rename from src/math/griem.rs rename to src/synspec/math/griem.rs diff --git a/src/math/he2sew.rs b/src/synspec/math/he2sew.rs similarity index 100% rename from src/math/he2sew.rs rename to src/synspec/math/he2sew.rs diff --git a/src/math/heset.rs b/src/synspec/math/heset.rs similarity index 100% rename from src/math/heset.rs rename to src/synspec/math/heset.rs diff --git a/src/math/hylset.rs b/src/synspec/math/hylset.rs similarity index 100% rename from src/math/hylset.rs rename to src/synspec/math/hylset.rs diff --git a/src/math/inibla.rs b/src/synspec/math/inibla.rs similarity index 100% rename from src/math/inibla.rs rename to src/synspec/math/inibla.rs diff --git a/src/math/iniblm.rs b/src/synspec/math/iniblm.rs similarity index 100% rename from src/math/iniblm.rs rename to src/synspec/math/iniblm.rs diff --git a/src/math/intrp.rs b/src/synspec/math/intrp.rs similarity index 100% rename from src/math/intrp.rs rename to src/synspec/math/intrp.rs diff --git a/src/math/ispec.rs b/src/synspec/math/ispec.rs similarity index 100% rename from src/math/ispec.rs rename to src/synspec/math/ispec.rs diff --git a/src/synspec/math/mod.rs b/src/synspec/math/mod.rs new file mode 100644 index 0000000..4d213d3 --- /dev/null +++ b/src/synspec/math/mod.rs @@ -0,0 +1,59 @@ +//! SYNSPEC 数学工具函数。 +//! +//! 重构自 SYNSPEC Fortran 代码。 + +mod count_words; +mod crosew; +mod divhe2; +mod eps; +mod extprf; +mod feautr; +mod gamhe; +mod griem; +mod he2sew; +mod heset; +mod hylset; +mod inibla; +mod iniblm; +mod intrp; +mod ispec; +mod molop; +mod partdv; +mod phe2; +mod phtion; +mod phtx; +mod pretab; +mod sffhmi_old; +mod sgmerg; +mod starkir; +mod tint; +mod voigtk; +mod wtot; + +pub use count_words::count_words; +pub use crosew::{croset, crosew, CrosetParams, CrosewParams}; +pub use divhe2::divhe2; +pub use eps::eps; +pub use extprf::extprf; +pub use feautr::{feautr, FeautrParams}; +pub use gamhe::{gamhe, GamheData, GamheParams}; +pub use griem::{griem, GriemParams}; +pub use he2sew::{he2sew, He2WindowParams}; +pub use heset::{heset, HesetInput, HesetOutput}; +pub use hylset::{hylset, HylsetParams, HylsetOutput}; +pub use inibla::{inibla, IniblaParams, IniblaOutput, compute_doppler_width, compute_vdw_width, compute_planck, CL, H, BOLK, BN, HK}; +pub use iniblm::{iniblm, IniblmParams, IniblmOutput, compute_molecular_doppler_width, compute_molecular_planck}; +pub use intrp::{intrp, intrp_to_vec}; +pub use ispec::{ispec, PROFILE_VOIGT, PROFILE_HYDROGEN, PROFILE_HEI_4471, PROFILE_HEI_4388, PROFILE_HEI_4026}; +pub use molop::{molop_pure, MolopConfig, MolopModelState, MolopFreqParams, MolLineData, MolModelState, MolopOutput}; +pub use partdv::{partdv, partdv_with_params, PartdvParams}; +pub use phe2::{phe2, Phe2Params, Phe2Output}; +pub use phtion::{phtion, phtion_pure, PhtionParams, PhtionOutput, PhotcsData, MFRQ}; +pub use phtx::{phtx, PhtxParams, PhtxOutput, PhtxState, LevelPhotoData, HhePhotoData}; +pub use pretab::{pretab, VoigtTables}; +pub use sffhmi_old::sffhmi_old; +pub use sgmerg::{sgmerg, sgmerg_pure, SgmergParams}; +pub use starkir::starkir; +pub use tint::{tint, TintResult}; +pub use voigtk::{voigtk, MVOI}; +pub use wtot::{wtot, LINE_4471, LINE_4387, LINE_4026, LINE_4922}; diff --git a/src/math/molop.rs b/src/synspec/math/molop.rs similarity index 99% rename from src/math/molop.rs rename to src/synspec/math/molop.rs index 4c84221..ae2c6b0 100644 --- a/src/math/molop.rs +++ b/src/synspec/math/molop.rs @@ -4,7 +4,7 @@ //! //! 计算给定深度点的总分子谱线不透明度 (ABLIN) 和发射率 (EMLIN)。 -use super::voigtk::{voigtk, MVOI}; +use crate::synspec::math::voigtk::{voigtk, MVOI}; /// 常量 const UN: f64 = 1.0; diff --git a/src/math/partdv.rs b/src/synspec/math/partdv.rs similarity index 100% rename from src/math/partdv.rs rename to src/synspec/math/partdv.rs diff --git a/src/math/phe2.rs b/src/synspec/math/phe2.rs similarity index 100% rename from src/math/phe2.rs rename to src/synspec/math/phe2.rs diff --git a/src/math/phtion.rs b/src/synspec/math/phtion.rs similarity index 99% rename from src/math/phtion.rs rename to src/synspec/math/phtion.rs index cb634ef..c1890df 100644 --- a/src/math/phtion.rs +++ b/src/synspec/math/phtion.rs @@ -4,7 +4,7 @@ //! //! 计算详细光致电离的吸收和发射系数(从 READPH 读取的表格数据)。 -use crate::state::constants::{HK, BN}; +use crate::tlusty::state::constants::{HK, BN}; /// 光致电离截面数据(对应 COMMON/PHOTCS/) #[derive(Debug, Clone)] diff --git a/src/math/phtx.rs b/src/synspec/math/phtx.rs similarity index 99% rename from src/math/phtx.rs rename to src/synspec/math/phtx.rs index 83ba2f7..d3457b8 100644 --- a/src/math/phtx.rs +++ b/src/synspec/math/phtx.rs @@ -6,7 +6,7 @@ //! 1. 能级光致电离(NLTE 布居数) //! 2. 氢/氦光致电离(LTE 布居数) -use crate::state::constants::{HK, BN}; +use crate::tlusty::state::constants::{HK, BN}; /// c3 常数:hc/k [cm K] const C3: f64 = 1.4387886; diff --git a/src/math/pretab.rs b/src/synspec/math/pretab.rs similarity index 89% rename from src/math/pretab.rs rename to src/synspec/math/pretab.rs index d64bbdf..fecf2f8 100644 --- a/src/math/pretab.rs +++ b/src/synspec/math/pretab.rs @@ -7,7 +7,7 @@ //! - 最多 10 个 Doppler 宽度 //! - 共 MVOI=2001 个点 -use crate::math::interp::interp; +use crate::tlusty::math::interp::interp; /// Voigt 表步长 (每 Doppler 宽度的步数) const VSTEPS: f64 = 200.0; @@ -67,9 +67,9 @@ impl VoigtTables { /// 创建新的 Voigt 表 (未初始化)。 pub fn new() -> Self { Self { - h0tab: vec![0.0; crate::state::MVOI], - h1tab: vec![0.0; crate::state::MVOI], - h2tab: vec![0.0; crate::state::MVOI], + h0tab: vec![0.0; crate::tlusty::state::MVOI], + h1tab: vec![0.0; crate::tlusty::state::MVOI], + h2tab: vec![0.0; crate::tlusty::state::MVOI], } } @@ -83,7 +83,7 @@ impl VoigtTables { /// 3. 计算 H0TAB(i) = exp(-v²) (Gauss 轮廓) /// 4. 计算 H2TAB(i) = H0TAB(i) * (1 - 2v²) (二阶导数) pub fn compute(&mut self) { - let n = crate::state::MVOI; + let n = crate::tlusty::state::MVOI; // 准备插值输入 let mut x = TABVI.to_vec(); @@ -133,9 +133,9 @@ mod tests { let tables = pretab(); // 检查数组大小 - assert_eq!(tables.h0tab.len(), crate::state::MVOI); - assert_eq!(tables.h1tab.len(), crate::state::MVOI); - assert_eq!(tables.h2tab.len(), crate::state::MVOI); + assert_eq!(tables.h0tab.len(), crate::tlusty::state::MVOI); + assert_eq!(tables.h1tab.len(), crate::tlusty::state::MVOI); + assert_eq!(tables.h2tab.len(), crate::tlusty::state::MVOI); // H0TAB 在 v=0 时应为 1 (exp(0) = 1) assert_relative_eq!(tables.h0tab[0], 1.0, epsilon = 1e-15); @@ -192,8 +192,8 @@ mod tests { #[test] fn test_voigt_tables_default() { let tables = VoigtTables::default(); - assert_eq!(tables.h0tab.len(), crate::state::MVOI); - assert_eq!(tables.h1tab.len(), crate::state::MVOI); - assert_eq!(tables.h2tab.len(), crate::state::MVOI); + assert_eq!(tables.h0tab.len(), crate::tlusty::state::MVOI); + assert_eq!(tables.h1tab.len(), crate::tlusty::state::MVOI); + assert_eq!(tables.h2tab.len(), crate::tlusty::state::MVOI); } } diff --git a/src/math/sffhmi_old.rs b/src/synspec/math/sffhmi_old.rs similarity index 100% rename from src/math/sffhmi_old.rs rename to src/synspec/math/sffhmi_old.rs diff --git a/src/math/sgmerg.rs b/src/synspec/math/sgmerg.rs similarity index 100% rename from src/math/sgmerg.rs rename to src/synspec/math/sgmerg.rs diff --git a/src/math/starkir.rs b/src/synspec/math/starkir.rs similarity index 99% rename from src/math/starkir.rs rename to src/synspec/math/starkir.rs index 1227694..e39f991 100644 --- a/src/math/starkir.rs +++ b/src/synspec/math/starkir.rs @@ -2,7 +2,7 @@ //! //! 重构自 SYNSPEC `starkir.f` -use crate::math::eint; +use crate::tlusty::math::eint; /// 物理常量 const PI: f64 = 3.14159265; diff --git a/src/math/tint.rs b/src/synspec/math/tint.rs similarity index 100% rename from src/math/tint.rs rename to src/synspec/math/tint.rs diff --git a/src/math/voigtk.rs b/src/synspec/math/voigtk.rs similarity index 100% rename from src/math/voigtk.rs rename to src/synspec/math/voigtk.rs diff --git a/src/math/wtot.rs b/src/synspec/math/wtot.rs similarity index 100% rename from src/math/wtot.rs rename to src/synspec/math/wtot.rs diff --git a/src/synspec/mod.rs b/src/synspec/mod.rs new file mode 100644 index 0000000..890af1b --- /dev/null +++ b/src/synspec/mod.rs @@ -0,0 +1,5 @@ +//! SYNSPEC 模块。 +//! +//! 合成光谱计算。 + +pub mod math; diff --git a/src/data.rs b/src/tlusty/data.rs similarity index 100% rename from src/data.rs rename to src/tlusty/data.rs diff --git a/src/io/chckse.rs b/src/tlusty/io/chckse.rs similarity index 96% rename from src/io/chckse.rs rename to src/tlusty/io/chckse.rs index 1fd6ba4..86be252 100644 --- a/src/io/chckse.rs +++ b/src/tlusty/io/chckse.rs @@ -7,9 +7,9 @@ //! 计算每个能级的总进出速率,用于检查统计平衡。 //! 输出到 fort.16:每个能级的 速率及相对差异。 -use crate::state::atomic::AtomicData; -use crate::state::constants::HK; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::constants::HK; +use crate::tlusty::state::model::ModelState; // ============================================================================ // 输入参数结构体 @@ -66,10 +66,10 @@ pub struct ChckseOutput { /// 计算 Saha-Boltzmann 因子(简化版,仅用于 CHCKSE)。 fn compute_sbf( t: f64, - levpar: &crate::state::atomic::LevPar, - ionpar: &crate::state::atomic::IonPar, + levpar: &crate::tlusty::state::atomic::LevPar, + ionpar: &crate::tlusty::state::atomic::IonPar, ) -> Vec { - use crate::state::constants::BOLK; + use crate::tlusty::state::constants::BOLK; const CCON: f64 = 2.0706e-16; @@ -344,9 +344,9 @@ pub fn format_chckse_output(output: &ChckseOutput) -> String { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::{AtomicData, IonPar, LevPar, TraPar}; - use crate::state::constants::{MDEPTH, MLEVEL, MTRANS}; - use crate::state::model::{CraTes, LevPop, ModPar, ModelState, RrRates, WmComp}; + use crate::tlusty::state::atomic::{AtomicData, IonPar, LevPar, TraPar}; + use crate::tlusty::state::constants::{MDEPTH, MLEVEL, MTRANS}; + use crate::tlusty::state::model::{CraTes, LevPop, ModPar, ModelState, RrRates, WmComp}; fn create_test_model() -> ModelState { let mut model = ModelState::default(); diff --git a/src/io/format.rs b/src/tlusty/io/format.rs similarity index 100% rename from src/io/format.rs rename to src/tlusty/io/format.rs diff --git a/src/io/incldy.rs b/src/tlusty/io/incldy.rs similarity index 96% rename from src/io/incldy.rs rename to src/tlusty/io/incldy.rs index 129562f..ea58cff 100644 --- a/src/io/incldy.rs +++ b/src/tlusty/io/incldy.rs @@ -8,10 +8,10 @@ //! - 计算深度结构和 LTE 占据数 use super::{FortranReader, Result}; -use crate::state::atomic::AtomicData; -use crate::state::config::InpPar; -use crate::state::constants::{BOLK, MDEPTH}; -use crate::state::model::{LevPop, ModPar, WmComp}; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::InpPar; +use crate::tlusty::state::constants::{BOLK, MDEPTH}; +use crate::tlusty::state::model::{LevPop, ModPar, WmComp}; // ============================================================================ // 常量 @@ -208,9 +208,9 @@ pub fn read_cloudy_model( #[cfg(test)] mod tests { use super::*; - use crate::state::config::InpPar; - use crate::state::constants::MDEPTH; - use crate::state::model::ModPar; + use crate::tlusty::state::config::InpPar; + use crate::tlusty::state::constants::MDEPTH; + use crate::tlusty::state::model::ModPar; fn create_test_input() -> CloudyModelInput { let ndpth = 5; diff --git a/src/io/initia.rs b/src/tlusty/io/initia.rs similarity index 99% rename from src/io/initia.rs rename to src/tlusty/io/initia.rs index e962c39..7581ec7 100644 --- a/src/io/initia.rs +++ b/src/tlusty/io/initia.rs @@ -17,7 +17,7 @@ //! 本模块将纯计算部分提取为独立函数,便于测试。 use super::{Result, FortranReader, FortranWriter}; -use crate::state::constants::*; +use crate::tlusty::state::constants::*; // ============================================================================ // 物理常数 diff --git a/src/io/inpmod.rs b/src/tlusty/io/inpmod.rs similarity index 98% rename from src/io/inpmod.rs rename to src/tlusty/io/inpmod.rs index abede86..8932afa 100644 --- a/src/io/inpmod.rs +++ b/src/tlusty/io/inpmod.rs @@ -10,9 +10,9 @@ //! - 处理分子平衡(如果启用) use super::{FortranReader, Result}; -use crate::state::atomic::{AtoPar, LevPar}; -use crate::state::config::{BasNum, InpPar}; -use crate::state::constants::{MDEPTH, MLEVEL}; +use crate::tlusty::state::atomic::{AtoPar, LevPar}; +use crate::tlusty::state::config::{BasNum, InpPar}; +use crate::tlusty::state::constants::{MDEPTH, MLEVEL}; // ============================================================================ // 常量 @@ -473,8 +473,8 @@ pub fn inpmod( #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::LevPar; - use crate::state::config::{BasNum, InpPar}; + use crate::tlusty::state::atomic::LevPar; + use crate::tlusty::state::config::{BasNum, InpPar}; use std::io::Cursor; fn create_test_basnum() -> BasNum { diff --git a/src/io/input.rs b/src/tlusty/io/input.rs similarity index 100% rename from src/io/input.rs rename to src/tlusty/io/input.rs diff --git a/src/io/iroset.rs b/src/tlusty/io/iroset.rs similarity index 98% rename from src/io/iroset.rs rename to src/tlusty/io/iroset.rs index e9d384c..6efabd4 100644 --- a/src/io/iroset.rs +++ b/src/tlusty/io/iroset.rs @@ -16,13 +16,13 @@ //! - fort.41: 谱线截面摘要 use super::Result; -use crate::math::quit as quit_func; -use crate::math::voigte as voigte_func; -use crate::state::atomic::AtomicData; -use crate::state::config::BasNum; -use crate::state::constants::*; -use crate::state::model::ModelState; -use crate::state::odfpar::OdfData; +use crate::tlusty::math::quit as quit_func; +use crate::tlusty::math::voigte as voigte_func; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::*; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::state::odfpar::OdfData; use std::io::Write; // ============================================================================ diff --git a/src/io/kurucz.rs b/src/tlusty/io/kurucz.rs similarity index 99% rename from src/io/kurucz.rs rename to src/tlusty/io/kurucz.rs index 6057a59..1dc63e8 100644 --- a/src/io/kurucz.rs +++ b/src/tlusty/io/kurucz.rs @@ -12,7 +12,7 @@ //! - 提取温度、密度、电子密度等物理量 use super::{IoError, Result}; -use crate::state::constants::*; +use crate::tlusty::state::constants::*; use std::io::BufRead; // ============================================================================ diff --git a/src/io/levcd.rs b/src/tlusty/io/levcd.rs similarity index 98% rename from src/io/levcd.rs rename to src/tlusty/io/levcd.rs index acdd31f..2e32757 100644 --- a/src/io/levcd.rs +++ b/src/tlusty/io/levcd.rs @@ -9,13 +9,13 @@ //! 假设 Gamma(T)=0.05, T=Teff。 use super::{FortranReader, IoError, Result}; -use crate::math::indexx as indexx_func; -use crate::math::quit as quit_func; -use crate::math::wn as wn_func; -use crate::state::atomic::{AtomicData, IonPar, LevPar}; -use crate::state::constants::*; -use crate::state::model::ModPar; -use crate::state::odfpar::LevCom; +use crate::tlusty::math::indexx as indexx_func; +use crate::tlusty::math::quit as quit_func; +use crate::tlusty::math::wn as wn_func; +use crate::tlusty::state::atomic::{AtomicData, IonPar, LevPar}; +use crate::tlusty::state::constants::*; +use crate::tlusty::state::model::ModPar; +use crate::tlusty::state::odfpar::LevCom; use std::fs::File; use std::io::{BufRead, BufReader, BufWriter, Write}; diff --git a/src/io/linset.rs b/src/tlusty/io/linset.rs similarity index 94% rename from src/io/linset.rs rename to src/tlusty/io/linset.rs index fdd5cd7..dedb81e 100644 --- a/src/io/linset.rs +++ b/src/tlusty/io/linset.rs @@ -4,10 +4,10 @@ //! //! 为 START 的辅助过程,设置频率点和积分权重用于谱线计算。 -use crate::state::atomic::{AtoPar, IonPar, LevPar, TraPar}; -use crate::state::config::{BasNum, InpPar}; -use crate::state::constants::{CAS, HALF, MFREQ, MFREQP, MTRANS, TWO, UN}; -use crate::state::model::{FrqAll, LinOvr, StdPar, Turbul}; +use crate::tlusty::state::atomic::{AtoPar, IonPar, LevPar, TraPar}; +use crate::tlusty::state::config::{BasNum, InpPar}; +use crate::tlusty::state::constants::{CAS, HALF, MFREQ, MFREQP, MTRANS, TWO, UN}; +use crate::tlusty::state::model::{FrqAll, LinOvr, StdPar, Turbul}; // ============================================================================ // 常量 @@ -260,7 +260,7 @@ fn handle_itr_zero( } // 调用 STARK0 - let (xkij, wl0, fij) = crate::math::stark0(ii, jj, izz); + let (xkij, wl0, fij) = crate::tlusty::math::stark0(ii, jj, izz); let fxk = f00 * xkij; let dbeta = wl0 * wl0 * C18IN / fxk; let betad = dopp * dbeta; @@ -268,7 +268,7 @@ fn handle_itr_zero( let fid0 = OS0 * (trapar.osc0[it_idx] - fij) * dop1 * PISQ1; // 调用 DIVSTR - let (adh, divh) = crate::math::divstr(betad, izz as i32); + let (adh, divh) = crate::tlusty::math::divstr(betad, izz as i32); // 计算轮廓 let ifr0_it = trapar.ifr0[it_idx]; @@ -278,7 +278,7 @@ fn handle_itr_zero( for ij in ifr0_it..=ifr1_it { let ij_idx = (ij - 1) as usize; let beta = dbeta * (state.freq[ij_idx] - fr0_it).abs(); - let sg = crate::math::starka(beta, fac, adh, betad, divh); + let sg = crate::tlusty::math::starka(beta, fac, adh, betad, divh); let mut sg0 = 0.0; let v = (state.freq[ij_idx] - fr0_it) * dop1; if v.abs() <= 13.0 { @@ -317,7 +317,7 @@ fn handle_inmod_zero( let fr = state.freq[ij_idx]; // 创建 PROFIL 参数 - let profil_params = crate::math::ProfilParams { + let profil_params = crate::tlusty::math::ProfilParams { fr, a: params.agam, dop: params.dop, @@ -335,7 +335,7 @@ fn handle_inmod_zero( iquasi: 0, }; - let profil_val = crate::math::profil(&profil_params); + let profil_val = crate::tlusty::math::profil(&profil_params); state.prof[ij_idx] = profil_val * s / params.dop; state.ijlin[ij_idx] = itr; } @@ -379,7 +379,7 @@ fn setup_simpson( _itr: i32, ) -> anyhow::Result<()> { if n % 2 != 1 { - return Err(crate::math::quit::quit_error( + return Err(crate::tlusty::math::quit::quit_error( "even number of points in Simpson - LINSET", n as i32, n as i32, @@ -424,7 +424,7 @@ fn setup_modified_simpson( m: usize, ) -> anyhow::Result<()> { if n % 2 != 1 { - return Err(crate::math::quit::quit_error( + return Err(crate::tlusty::math::quit::quit_error( "even number of points in MSimpson - LINSET", n as i32, n as i32, @@ -473,7 +473,7 @@ fn setup_modified_simpson( // 处理 XMAX < 0 的情况(非对称) if n % 4 != 1 { - return Err(crate::math::quit::quit_error( + return Err(crate::tlusty::math::quit::quit_error( "conflict in MSimpson - LINSET", n as i32, n as i32, @@ -524,7 +524,7 @@ fn compute_profiles_and_weights( state.w[ij_idx] = params.dop * w0[i]; // 创建 PROFIL 参数 - let profil_params = crate::math::ProfilParams { + let profil_params = crate::tlusty::math::ProfilParams { fr: state.freq[ij_idx], a: params.agam, dop: params.dop, @@ -542,7 +542,7 @@ fn compute_profiles_and_weights( iquasi: 0, }; - let profil_val = crate::math::profil(&profil_params); + let profil_val = crate::tlusty::math::profil(&profil_params); state.prof[ij_idx] = profil_val * s / params.dop; } diff --git a/src/io/ltegr.rs b/src/tlusty/io/ltegr.rs similarity index 98% rename from src/io/ltegr.rs rename to src/tlusty/io/ltegr.rs index f30ee85..e9ab8e4 100644 --- a/src/io/ltegr.rs +++ b/src/tlusty/io/ltegr.rs @@ -23,8 +23,8 @@ //! - `wnstor`: 能级占据数存储 use super::FortranWriter; -use crate::state::constants::{BOLK, MDEPTH, HALF, TWO, UN, SIG4P}; -use crate::math::{compute_hopf, compute_temperature, rossop, RossopConfig, RossopParams, RossopModelState, RossopOutput}; +use crate::tlusty::state::constants::{BOLK, MDEPTH, HALF, TWO, UN, SIG4P}; +use crate::tlusty::math::{compute_hopf, compute_temperature, rossop, RossopConfig, RossopParams, RossopModelState, RossopOutput}; // ============================================================================ // 配置结构体 diff --git a/src/io/ltegrd.rs b/src/tlusty/io/ltegrd.rs similarity index 99% rename from src/io/ltegrd.rs rename to src/tlusty/io/ltegrd.rs index 82d14eb..5f10b0d 100644 --- a/src/io/ltegrd.rs +++ b/src/tlusty/io/ltegrd.rs @@ -7,8 +7,8 @@ //! 计算初始的 LTE-Grey 盘模型,作为后续非 LTE 迭代的起点。 //! 这是盘模型(disk model)的计算,与大气模型(ltegr)不同。 -use crate::math::zmrho; -use crate::state::constants::{HALF, MDEPTH, TWO, UN, SIG4P, SIGE, BOLK}; +use crate::tlusty::math::zmrho; +use crate::tlusty::state::constants::{HALF, MDEPTH, TWO, UN, SIG4P, SIGE, BOLK}; // ============================================================================ // 常量 diff --git a/src/io/mod.rs b/src/tlusty/io/mod.rs similarity index 100% rename from src/io/mod.rs rename to src/tlusty/io/mod.rs diff --git a/src/io/model.rs b/src/tlusty/io/model.rs similarity index 100% rename from src/io/model.rs rename to src/tlusty/io/model.rs diff --git a/src/io/nstout.rs b/src/tlusty/io/nstout.rs similarity index 100% rename from src/io/nstout.rs rename to src/tlusty/io/nstout.rs diff --git a/src/io/nstpar.rs b/src/tlusty/io/nstpar.rs similarity index 99% rename from src/io/nstpar.rs rename to src/tlusty/io/nstpar.rs index 4d8cee3..6ce95de 100644 --- a/src/io/nstpar.rs +++ b/src/tlusty/io/nstpar.rs @@ -6,7 +6,7 @@ //! 共有 236 个可配置参数。 use super::{FortranReader, FortranWriter, Result}; -use crate::math::getwrd; +use crate::tlusty::math::getwrd; // ============================================================================ // 参数常量 diff --git a/src/io/odfset.rs b/src/tlusty/io/odfset.rs similarity index 99% rename from src/io/odfset.rs rename to src/tlusty/io/odfset.rs index f275478..8200002 100644 --- a/src/io/odfset.rs +++ b/src/tlusty/io/odfset.rs @@ -14,7 +14,7 @@ use std::fs::File; use std::io::{BufRead, BufReader, Write}; use super::{FortranReader, IoError, Result}; -use crate::state::constants::{MDEPTH, MFODF, MFREQ, MDODF, MTRANS, MION}; +use crate::tlusty::state::constants::{MDEPTH, MFODF, MFREQ, MDODF, MTRANS, MION}; // ============================================================================ // 数据结构 diff --git a/src/io/outpri.rs b/src/tlusty/io/outpri.rs similarity index 99% rename from src/io/outpri.rs rename to src/tlusty/io/outpri.rs index 60d0fc4..3fe5b85 100644 --- a/src/io/outpri.rs +++ b/src/tlusty/io/outpri.rs @@ -11,7 +11,7 @@ use std::io::{BufWriter, Write}; -use crate::state::constants::{MDEPTH, MFREQ, MFREX, MLEVEL, UN, HALF}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MFREX, MLEVEL, UN, HALF}; // 物理常数 /// Stefan-Boltzmann 常数 × 4 diff --git a/src/io/rayini.rs b/src/tlusty/io/rayini.rs similarity index 97% rename from src/io/rayini.rs rename to src/tlusty/io/rayini.rs index 5e3f465..e393848 100644 --- a/src/io/rayini.rs +++ b/src/tlusty/io/rayini.rs @@ -10,11 +10,11 @@ use std::path::Path; use super::{FortranReader, IoError, Result}; -use crate::math::rayset::rayset; -use crate::math::rayleigh::{rayleigh, RayleighParams}; -use crate::state::constants::{MDEPTH, MTABR, MTABT}; -use crate::state::model::{EosPar, NumbOpac, RaySct, RayTbl, TabLop, Vectors}; -use crate::state::config::BasNum; +use crate::tlusty::math::rayset::rayset; +use crate::tlusty::math::rayleigh::{rayleigh, RayleighParams}; +use crate::tlusty::state::constants::{MDEPTH, MTABR, MTABT}; +use crate::tlusty::state::model::{EosPar, NumbOpac, RaySct, RayTbl, TabLop, Vectors}; +use crate::tlusty::state::config::BasNum; /// Rayleigh 散射表数据(从文件读取) #[derive(Debug, Clone)] diff --git a/src/io/reader.rs b/src/tlusty/io/reader.rs similarity index 100% rename from src/io/reader.rs rename to src/tlusty/io/reader.rs diff --git a/src/io/resolv.rs b/src/tlusty/io/resolv.rs similarity index 98% rename from src/io/resolv.rs rename to src/tlusty/io/resolv.rs index 4121670..6e717c9 100644 --- a/src/io/resolv.rs +++ b/src/tlusty/io/resolv.rs @@ -30,8 +30,8 @@ //! - fort.6: 标准输出(进度和诊断信息) use super::FortranWriter; -use crate::state::constants::{MDEPTH, MFREQ, MLEVEL}; -use crate::math::{ +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MLEVEL}; +use crate::tlusty::math::{ rayset, prd, opaini, rates1_pure, ratsp1, steqeq_pure, newpop, elcor_pure, accelp, rosstd_evaluate, output, pzert, pzeval_pure, radpre_pure, timing, conout_pure, @@ -39,9 +39,9 @@ use crate::math::{ rybheq, princ_pure, coolrt_pure, rechck_pure, rteint, rtecmu, taufr1, linsel_pure, rtecf1, }; -use crate::state::config::TlustyConfig; -use crate::state::atomic::AtomicData; -use crate::state::model::ModelState; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::model::ModelState; // ============================================================================ // 配置结构体 diff --git a/src/io/settrm.rs b/src/tlusty/io/settrm.rs similarity index 99% rename from src/io/settrm.rs rename to src/tlusty/io/settrm.rs index f516437..84c8cbf 100644 --- a/src/io/settrm.rs +++ b/src/tlusty/io/settrm.rs @@ -8,7 +8,7 @@ //! - 计算边缘热力学量 use super::{FortranReader, IoError, Result}; -use crate::math::{prsent, PrsentParams, ThermTables}; +use crate::tlusty::math::{prsent, PrsentParams, ThermTables}; use std::path::Path; // 气体常数 (erg/mol/K) diff --git a/src/io/srtfrq.rs b/src/tlusty/io/srtfrq.rs similarity index 97% rename from src/io/srtfrq.rs rename to src/tlusty/io/srtfrq.rs index 5e43449..74cda50 100644 --- a/src/io/srtfrq.rs +++ b/src/tlusty/io/srtfrq.rs @@ -8,8 +8,8 @@ //! 3. 选择最终频率集 //! 4. 计算积分权重 -use crate::state::config::BasNum; -use crate::state::constants::{BN, HALF, HK, SIG4P, UN, TWO}; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::{BN, HALF, HK, SIG4P, UN, TWO}; /// SRTFRQ 输出信息 #[derive(Debug, Clone, Default)] diff --git a/src/io/start.rs b/src/tlusty/io/start.rs similarity index 97% rename from src/io/start.rs rename to src/tlusty/io/start.rs index 5afa5ff..82a18cf 100644 --- a/src/io/start.rs +++ b/src/tlusty/io/start.rs @@ -16,10 +16,10 @@ //! - fort.1: 读取 idisk 参数 use super::FortranReader; -use crate::math::{comset, ComsetParams}; -use crate::state::config::TlustyConfig; -use crate::state::atomic::AtomicData; -use crate::state::model::ModelState; +use crate::tlusty::math::{comset, ComsetParams}; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::model::ModelState; // ============================================================================ // 配置参数 diff --git a/src/io/tabini.rs b/src/tlusty/io/tabini.rs similarity index 99% rename from src/io/tabini.rs rename to src/tlusty/io/tabini.rs index bce22bb..e2440a5 100644 --- a/src/io/tabini.rs +++ b/src/tlusty/io/tabini.rs @@ -20,7 +20,7 @@ use std::io::{BufRead, BufReader, BufWriter, Read, Write}; use std::path::Path; use super::{FortranReader, IoError, Result}; -use crate::state::constants::{MATOM, MFREQC, MFRTAB, MTABR, MTABT}; +use crate::tlusty::state::constants::{MATOM, MFREQC, MFRTAB, MTABR, MTABT}; /// 最大表维度 pub const MTABTO: usize = 100; diff --git a/src/io/writer.rs b/src/tlusty/io/writer.rs similarity index 100% rename from src/io/writer.rs rename to src/tlusty/io/writer.rs diff --git a/src/io/xenini.rs b/src/tlusty/io/xenini.rs similarity index 99% rename from src/io/xenini.rs rename to src/tlusty/io/xenini.rs index 22dda08..71a1d9e 100644 --- a/src/io/xenini.rs +++ b/src/tlusty/io/xenini.rs @@ -5,7 +5,7 @@ //! 读取 XENOMORPH 表数据文件(蓝翼和红翼),填充 XenPrf 结构体。 use super::{FortranReader, IoError, Result}; -use crate::state::model::XenPrf; +use crate::tlusty::state::model::XenPrf; use std::io::BufRead; use std::path::Path; diff --git a/src/math/accel2.rs b/src/tlusty/math/accel2.rs similarity index 98% rename from src/math/accel2.rs rename to src/tlusty/math/accel2.rs index ef204f3..edba672 100644 --- a/src/math/accel2.rs +++ b/src/tlusty/math/accel2.rs @@ -18,10 +18,10 @@ //! //! Auer, L. 1987, in Numerical Radiative Transfer, ed. W. Kalkofen (Cambridge: Cambridge Univ. Press), 101 -use crate::state::constants::{MDEPTH, MFREQ, MLEVEL}; -use crate::state::model::ModelState; -use crate::state::config::TlustyConfig; -use crate::state::atomic::AtomicData; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MLEVEL}; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::atomic::AtomicData; // ============================================================================ // 配置参数 diff --git a/src/math/accelp.rs b/src/tlusty/math/accelp.rs similarity index 99% rename from src/math/accelp.rs rename to src/tlusty/math/accelp.rs index c63cdd1..935a80a 100644 --- a/src/math/accelp.rs +++ b/src/tlusty/math/accelp.rs @@ -4,7 +4,7 @@ //! 使用 Auer (1987) 算法加速 populations 的收敛。 //! 参考: Numerical Radiative Transfer, p. 101 -use crate::io::{FortranWriter, IoError, Result}; +use crate::tlusty::io::{FortranWriter, IoError, Result}; /// 加速收敛参数。 pub struct AccelpParams<'a> { diff --git a/src/math/alifr1.rs b/src/tlusty/math/alifr1.rs similarity index 99% rename from src/math/alifr1.rs rename to src/tlusty/math/alifr1.rs index 9fe67e9..8d3e57c 100644 --- a/src/math/alifr1.rs +++ b/src/tlusty/math/alifr1.rs @@ -16,8 +16,8 @@ //! //! 当 IFALI > 5 时,返回 `true`,调用者应调用 `alifr3`。 -use crate::state::alipar::FixAlp; -use crate::state::constants::{UN, TWO, HALF}; +use crate::tlusty::state::alipar::FixAlp; +use crate::tlusty::state::constants::{UN, TWO, HALF}; /// ALIFR1 输入参数 pub struct Alifr1Params { diff --git a/src/math/alifr3.rs b/src/tlusty/math/alifr3.rs similarity index 99% rename from src/math/alifr3.rs rename to src/tlusty/math/alifr3.rs index 6d61370..2c86441 100644 --- a/src/math/alifr3.rs +++ b/src/tlusty/math/alifr3.rs @@ -6,8 +6,8 @@ //! 温度、电子密度和占据数的导数。 //! 这是一致三对角算子的变体。 -use crate::state::alipar::FixAlp; -use crate::state::constants::{MLEVEL, MDEPTH, UN, TWO}; +use crate::tlusty::state::alipar::FixAlp; +use crate::tlusty::state::constants::{MLEVEL, MDEPTH, UN, TWO}; /// ALIFR3 输入参数 pub struct Alifr3Params { diff --git a/src/math/alifr6.rs b/src/tlusty/math/alifr6.rs similarity index 99% rename from src/math/alifr6.rs rename to src/tlusty/math/alifr6.rs index 6d55e39..7c184c3 100644 --- a/src/math/alifr6.rs +++ b/src/tlusty/math/alifr6.rs @@ -16,7 +16,7 @@ //! - IBC 下边界条件处理 //! - IFALI>=7 时额外的导数 (HEITP, HEINP, HEIPP, REDTP, REDNP, REDPP) -use crate::state::constants::{MLVEXP, UN}; +use crate::tlusty::state::constants::{MLVEXP, UN}; // 常量 const T23: f64 = 2.0 / 3.0; diff --git a/src/math/alifrk.rs b/src/tlusty/math/alifrk.rs similarity index 99% rename from src/math/alifrk.rs rename to src/tlusty/math/alifrk.rs index 098cb65..be3664c 100644 --- a/src/math/alifrk.rs +++ b/src/tlusty/math/alifrk.rs @@ -6,7 +6,7 @@ //! 计算流体静力学和辐射平衡量 - ALI 点的总加热和冷却率对 //! 温度、电子密度和占据数的导数。 -use crate::state::constants::{MDEPTH, MFREQ, UN, HALF}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, UN, HALF}; /// ALIFRK 输入参数 pub struct AlifrkParams { diff --git a/src/math/alisk1.rs b/src/tlusty/math/alisk1.rs similarity index 99% rename from src/math/alisk1.rs rename to src/tlusty/math/alisk1.rs index 53f30a3..794087d 100644 --- a/src/math/alisk1.rs +++ b/src/tlusty/math/alisk1.rs @@ -22,7 +22,7 @@ //! 5. 辐射压力计算 //! 6. Rosseland 平均不透明度 -use crate::state::constants::{MDEPTH, MFREQ, MTRANS, UN, HK, PCK}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MTRANS, UN, HK, PCK}; // ============================================================================ // 配置结构体 diff --git a/src/math/alisk2.rs b/src/tlusty/math/alisk2.rs similarity index 99% rename from src/math/alisk2.rs rename to src/tlusty/math/alisk2.rs index 2306033..a143098 100644 --- a/src/math/alisk2.rs +++ b/src/tlusty/math/alisk2.rs @@ -13,7 +13,7 @@ //! - 支持 Opacity Sampling 选项 (ISPODF) //! - 扩展频率数据存储顺序不同 -use crate::state::constants::{MDEPTH, MFREQ, MTRANS, UN, HK, PCK}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MTRANS, UN, HK, PCK}; // ============================================================================ // 配置结构体 diff --git a/src/math/alist1.rs b/src/tlusty/math/alist1.rs similarity index 99% rename from src/math/alist1.rs rename to src/tlusty/math/alist1.rs index bd031ff..7a28987 100644 --- a/src/math/alist1.rs +++ b/src/tlusty/math/alist1.rs @@ -17,7 +17,7 @@ //! - ALIFR1: ALI 频率相关计算 //! - ROSSTD: Rosseland 平均不透明度 -use crate::state::constants::{MDEPTH, MFREQ, MLEVEL, MTRANS, HALF, HK, PCK, UN}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MLEVEL, MTRANS, HALF, HK, PCK, UN}; // ============================================================================ // 输入/输出结构体 diff --git a/src/math/alist2.rs b/src/tlusty/math/alist2.rs similarity index 99% rename from src/math/alist2.rs rename to src/tlusty/math/alist2.rs index fd7f22c..bdaa867 100644 --- a/src/math/alist2.rs +++ b/src/tlusty/math/alist2.rs @@ -10,7 +10,7 @@ //! - IRDER = 2: 计算 APP (能级导数) //! - IRDER = 3: 计算 APT, APN, APP (所有导数) -use crate::state::constants::{MDEPTH, MFREQ, MLEVEL, MTRANS, MLVEXP, UN}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MLEVEL, MTRANS, MLVEXP, UN}; /// ALIST2 输入参数(只读) pub struct Alist2Params<'a> { diff --git a/src/math/allard.rs b/src/tlusty/math/allard.rs similarity index 99% rename from src/math/allard.rs rename to src/tlusty/math/allard.rs index 9763873..34c1769 100644 --- a/src/math/allard.rs +++ b/src/tlusty/math/allard.rs @@ -4,7 +4,7 @@ //! //! 计算氢线的准分子不透明度轮廓,基于 Allard 等人的数据表。 -use crate::state::model::{CalphatD, CallardA, CallardB, CallardC, CallardG, ModelState}; +use crate::tlusty::state::model::{CalphatD, CallardA, CallardB, CallardC, CallardG, ModelState}; // 归一化常数 // 8.8528e-29 * lambda_0^2 * f_ij diff --git a/src/math/allardt.rs b/src/tlusty/math/allardt.rs similarity index 100% rename from src/math/allardt.rs rename to src/tlusty/math/allardt.rs diff --git a/src/math/angset.rs b/src/tlusty/math/angset.rs similarity index 98% rename from src/math/angset.rs rename to src/tlusty/math/angset.rs index 74269ea..da00a82 100644 --- a/src/math/angset.rs +++ b/src/tlusty/math/angset.rs @@ -4,7 +4,7 @@ //! //! 设置角度点和角度相关量,用于处理 Compton 散射。 -use crate::state::{Comptn, MMUC}; +use crate::tlusty::state::{Comptn, MMUC}; // ============================================================================ // 常量 @@ -105,7 +105,7 @@ pub fn angset(comptn: &mut Comptn, nmuc_init: usize) { #[cfg(test)] mod tests { use super::*; - use crate::state::MFREQ; + use crate::tlusty::state::MFREQ; fn create_test_comptn() -> Comptn { Comptn::default() diff --git a/src/math/betah.rs b/src/tlusty/math/betah.rs similarity index 98% rename from src/math/betah.rs rename to src/tlusty/math/betah.rs index c8a37c8..e4fae1e 100644 --- a/src/math/betah.rs +++ b/src/tlusty/math/betah.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `betah.f` -use crate::math::erfcx; +use crate::tlusty::math::erfcx; /// 求解总压力标高 β。 /// diff --git a/src/math/bhe.rs b/src/tlusty/math/bhe.rs similarity index 99% rename from src/math/bhe.rs rename to src/tlusty/math/bhe.rs index 2b53c9c..3a285b2 100644 --- a/src/math/bhe.rs +++ b/src/tlusty/math/bhe.rs @@ -5,7 +5,7 @@ //! 这些函数填充矩阵 A, B, C 的流体静力学平衡行 //! (NFREQE+INHE)-th row。 -use crate::state::constants::{BOLK, HALF, MDEPTH, MFREQ, MLEVEL, MTOT, TWO, UN}; +use crate::tlusty::state::constants::{BOLK, HALF, MDEPTH, MFREQ, MLEVEL, MTOT, TWO, UN}; // ============================================================================ // 控制参数 diff --git a/src/math/bkhsgo.rs b/src/tlusty/math/bkhsgo.rs similarity index 100% rename from src/math/bkhsgo.rs rename to src/tlusty/math/bkhsgo.rs diff --git a/src/math/bpop.rs b/src/tlusty/math/bpop.rs similarity index 97% rename from src/math/bpop.rs rename to src/tlusty/math/bpop.rs index 88c2ef8..1662483 100644 --- a/src/math/bpop.rs +++ b/src/tlusty/math/bpop.rs @@ -23,13 +23,13 @@ //! - BPOPT: B 矩阵 T 部分(温度相关) //! - BPOPC: B 矩阵 C 部分(电荷守恒) -use crate::state::arrays::{BpoCom, MainArrays}; -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::MLEVEL; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; -use crate::state::alipar::FixAlp; +use crate::tlusty::state::arrays::{BpoCom, MainArrays}; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::MLEVEL; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::state::alipar::FixAlp; use super::matinv; diff --git a/src/math/bpopc.rs b/src/tlusty/math/bpopc.rs similarity index 99% rename from src/math/bpopc.rs rename to src/tlusty/math/bpopc.rs index 77acf82..884e677 100644 --- a/src/math/bpopc.rs +++ b/src/tlusty/math/bpopc.rs @@ -14,8 +14,8 @@ //! - APNN = (占据数向量) * (dAJ/d(ne)) //! - APM = (占据数向量) * (dAJ/dN) -use crate::state::constants::*; -use crate::math::state::{state_pure, StateParams, StateOutput}; +use crate::tlusty::state::constants::*; +use crate::tlusty::math::state::{state_pure, StateParams, StateOutput}; // ============================================================================ // 输入参数结构体 diff --git a/src/math/bpope.rs b/src/tlusty/math/bpope.rs similarity index 99% rename from src/math/bpope.rs rename to src/tlusty/math/bpope.rs index 9dcf9e3..aa9102a 100644 --- a/src/math/bpope.rs +++ b/src/tlusty/math/bpope.rs @@ -4,7 +4,7 @@ //! //! 处理完全重叠情况下的 B 矩阵元素。 -use crate::state::constants::{MFREX, MLEVEL, MLVEXP, UN}; +use crate::tlusty::state::constants::{MFREX, MLEVEL, MLVEXP, UN}; /// BPOPE 输入参数 pub struct BpopeParams { diff --git a/src/math/bpopf.rs b/src/tlusty/math/bpopf.rs similarity index 98% rename from src/math/bpopf.rs rename to src/tlusty/math/bpopf.rs index a990732..da0296b 100644 --- a/src/math/bpopf.rs +++ b/src/tlusty/math/bpopf.rs @@ -14,9 +14,9 @@ //! //! 如果 IFALI >= 6,还需要计算 A 和 C 矩阵的相应元素。 -use crate::state::alipar::FixAlp; -use crate::state::arrays::{BpoCom, MainArrays}; -use crate::state::constants::{MLEVEL, MLVEX3, MTOT, UN}; +use crate::tlusty::state::alipar::FixAlp; +use crate::tlusty::state::arrays::{BpoCom, MainArrays}; +use crate::tlusty::state::constants::{MLEVEL, MLVEX3, MTOT, UN}; /// BPOPF 输入参数 pub struct BpopfParams<'a> { diff --git a/src/math/bpopt.rs b/src/tlusty/math/bpopt.rs similarity index 99% rename from src/math/bpopt.rs rename to src/tlusty/math/bpopt.rs index b8e8f70..de1132f 100644 --- a/src/math/bpopt.rs +++ b/src/tlusty/math/bpopt.rs @@ -9,7 +9,7 @@ //! - 处理统计平衡方程对温度和密度的依赖性 //! - 支持 LTE 和非 LTE 两种模式 -use crate::state::constants::{HK, H, UN}; +use crate::tlusty::state::constants::{HK, H, UN}; // ============================================================================ // 常量 diff --git a/src/math/bre.rs b/src/tlusty/math/bre.rs similarity index 99% rename from src/math/bre.rs rename to src/tlusty/math/bre.rs index 469581d..98af04f 100644 --- a/src/math/bre.rs +++ b/src/tlusty/math/bre.rs @@ -5,7 +5,7 @@ //! 计算辐射平衡方程对应的矩阵 A, B, C 部分(第 NFREQE+INRE 行)。 //! 包含积分方程部分和微分方程部分。 -use crate::state::constants::{HALF, SIG4P, UN}; +use crate::tlusty::state::constants::{HALF, SIG4P, UN}; // ============================================================================ // 常量 diff --git a/src/math/brez.rs b/src/tlusty/math/brez.rs similarity index 99% rename from src/math/brez.rs rename to src/tlusty/math/brez.rs index cd1b954..25d6270 100644 --- a/src/math/brez.rs +++ b/src/tlusty/math/brez.rs @@ -5,7 +5,7 @@ //! 与 BRE 类似,但使用几何深度 ZD 而非柱质量密度 DM 进行差分。 //! 用于球对称或柱对称几何配置。 -use crate::state::constants::{HALF, SIG4P, UN}; +use crate::tlusty::state::constants::{HALF, SIG4P, UN}; /// 最大线性化能级数 const MLVEXP: usize = 233; diff --git a/src/math/brte.rs b/src/tlusty/math/brte.rs similarity index 99% rename from src/math/brte.rs rename to src/tlusty/math/brte.rs index 5ce47b2..46096ce 100644 --- a/src/math/brte.rs +++ b/src/tlusty/math/brte.rs @@ -5,7 +5,7 @@ //! 计算线性化辐射转移方程的矩阵 A, B, C 部分(前 NFREQE 行)。 //! 处理三种深度情况:上边界、内部点、下边界。 -use crate::state::constants::{HALF, UN}; +use crate::tlusty::state::constants::{HALF, UN}; // ============================================================================ // 常量 diff --git a/src/math/brtez.rs b/src/tlusty/math/brtez.rs similarity index 100% rename from src/math/brtez.rs rename to src/tlusty/math/brtez.rs diff --git a/src/math/butler.rs b/src/tlusty/math/butler.rs similarity index 100% rename from src/math/butler.rs rename to src/tlusty/math/butler.rs diff --git a/src/math/carbon.rs b/src/tlusty/math/carbon.rs similarity index 100% rename from src/math/carbon.rs rename to src/tlusty/math/carbon.rs diff --git a/src/math/ceh12.rs b/src/tlusty/math/ceh12.rs similarity index 100% rename from src/math/ceh12.rs rename to src/tlusty/math/ceh12.rs diff --git a/src/math/change.rs b/src/tlusty/math/change.rs similarity index 98% rename from src/math/change.rs rename to src/tlusty/math/change.rs index e800089..9a16b45 100644 --- a/src/math/change.rs +++ b/src/tlusty/math/change.rs @@ -7,8 +7,8 @@ //! - 支持多种模式来计算新能级的粒子数 //! - 使用 STEQEQ 计算 LTE 粒子数 -use crate::math::steqeq::{steqeq_pure, SteqeqConfig, SteqeqParams, SteqeqOutput, MAX_LEVEL}; -use crate::state::constants::{BOLK, MDEPTH, MLEVEL, UN}; +use crate::tlusty::math::steqeq::{steqeq_pure, SteqeqConfig, SteqeqParams, SteqeqOutput, MAX_LEVEL}; +use crate::tlusty::state::constants::{BOLK, MDEPTH, MLEVEL, UN}; /// CHANGE 配置参数 #[derive(Debug, Clone)] diff --git a/src/math/chctab.rs b/src/tlusty/math/chctab.rs similarity index 98% rename from src/math/chctab.rs rename to src/tlusty/math/chctab.rs index a5ce027..a9721a2 100644 --- a/src/math/chctab.rs +++ b/src/tlusty/math/chctab.rs @@ -3,8 +3,8 @@ //! 重构自 TLUSTY `chctab.f` //! 比较当前模型参数与不透明度表中的参数,并调整设置以避免重复计算。 -use crate::io::{FortranWriter, IoError, Result}; -use crate::state::constants::MATOM; +use crate::tlusty::io::{FortranWriter, IoError, Result}; +use crate::tlusty::state::constants::MATOM; /// 元素符号表 pub const ELEMENT_SYMBOLS: [&str; 99] = [ diff --git a/src/math/cheav.rs b/src/tlusty/math/cheav.rs similarity index 100% rename from src/math/cheav.rs rename to src/tlusty/math/cheav.rs diff --git a/src/math/cheavj.rs b/src/tlusty/math/cheavj.rs similarity index 100% rename from src/math/cheavj.rs rename to src/tlusty/math/cheavj.rs diff --git a/src/math/cia_h2h.rs b/src/tlusty/math/cia_h2h.rs similarity index 100% rename from src/math/cia_h2h.rs rename to src/tlusty/math/cia_h2h.rs diff --git a/src/math/cia_h2h2.rs b/src/tlusty/math/cia_h2h2.rs similarity index 100% rename from src/math/cia_h2h2.rs rename to src/tlusty/math/cia_h2h2.rs diff --git a/src/math/cia_h2he.rs b/src/tlusty/math/cia_h2he.rs similarity index 100% rename from src/math/cia_h2he.rs rename to src/tlusty/math/cia_h2he.rs diff --git a/src/math/cia_hhe.rs b/src/tlusty/math/cia_hhe.rs similarity index 100% rename from src/math/cia_hhe.rs rename to src/tlusty/math/cia_hhe.rs diff --git a/src/math/cion.rs b/src/tlusty/math/cion.rs similarity index 99% rename from src/math/cion.rs rename to src/tlusty/math/cion.rs index 532cd59..c10e39f 100644 --- a/src/math/cion.rs +++ b/src/tlusty/math/cion.rs @@ -4,7 +4,7 @@ //! //! 基于 Raymond 的方法,使用 Tim Kallman 的程序。 -use crate::math::expo; +use crate::tlusty::math::expo; /// 碰撞电离速率系数数组。 struct CionData { diff --git a/src/math/ckoest.rs b/src/tlusty/math/ckoest.rs similarity index 99% rename from src/math/ckoest.rs rename to src/tlusty/math/ckoest.rs index 0c50f51..30ff705 100644 --- a/src/math/ckoest.rs +++ b/src/tlusty/math/ckoest.rs @@ -4,7 +4,7 @@ //! //! 参考:Koester (1985, AA 149, 423) -use crate::state::CAS; +use crate::tlusty::state::CAS; /// 基本光子截面常数 const PHOT0: f64 = 2.815e29; diff --git a/src/math/colh.rs b/src/tlusty/math/colh.rs similarity index 99% rename from src/math/colh.rs rename to src/tlusty/math/colh.rs index 0b44020..9acb80a 100644 --- a/src/math/colh.rs +++ b/src/tlusty/math/colh.rs @@ -9,8 +9,8 @@ use super::butler::butler; use super::ceh12::ceh12; use super::cspec::cspec; use super::irc::irc; -use crate::data::{COLH_CCOOL, COLH_CHOT}; -use crate::state::constants::{EH, HK, TWO, UN}; +use crate::tlusty::data::{COLH_CCOOL, COLH_CHOT}; +use crate::tlusty::state::constants::{EH, HK, TWO, UN}; // 物理常量 const CC0: f64 = 5.465e-11; diff --git a/src/math/colhe.rs b/src/tlusty/math/colhe.rs similarity index 99% rename from src/math/colhe.rs rename to src/tlusty/math/colhe.rs index 5f3d6e3..edc8d7b 100644 --- a/src/math/colhe.rs +++ b/src/tlusty/math/colhe.rs @@ -8,7 +8,7 @@ //! - 支持多种碰撞速率公式(ICOL = 0, 1, 2, 3) //! - 包含碰撞电离和碰撞激发 -use crate::state::constants::{HK, H, UN}; +use crate::tlusty::state::constants::{HK, H, UN}; // ============================================================================ // 常量和数据 diff --git a/src/math/colis.rs b/src/tlusty/math/colis.rs similarity index 99% rename from src/math/colis.rs rename to src/tlusty/math/colis.rs index c5cfc25..f9af506 100644 --- a/src/math/colis.rs +++ b/src/tlusty/math/colis.rs @@ -14,7 +14,7 @@ use super::colh::{colh, ColhAtomicData, ColhOutput, ColhParams}; use super::cspec::cspec; use super::irc::irc; use super::ylintp::ylintp; -use crate::state::constants::{EH, HK, TWO, UN}; +use crate::tlusty::state::constants::{EH, HK, TWO, UN}; // ============================================================================ // 常量 diff --git a/src/math/collhe.rs b/src/tlusty/math/collhe.rs similarity index 100% rename from src/math/collhe.rs rename to src/tlusty/math/collhe.rs diff --git a/src/math/column.rs b/src/tlusty/math/column.rs similarity index 98% rename from src/math/column.rs rename to src/tlusty/math/column.rs index ff4ce82..71362b3 100644 --- a/src/math/column.rs +++ b/src/tlusty/math/column.rs @@ -3,8 +3,8 @@ //! 重构自 TLUSTY `column.f` //! 使用牛顿迭代法近似确定圆盘的总柱质量 DMTOT。 -use crate::io::{FortranWriter, Result}; -use crate::state::constants::{SIG4P, TWO}; +use crate::tlusty::io::{FortranWriter, Result}; +use crate::tlusty::state::constants::{SIG4P, TWO}; // 物理常数 const XMDSUN: f64 = 6.3029e25; // 太阳质量转换因子 diff --git a/src/math/compt0.rs b/src/tlusty/math/compt0.rs similarity index 99% rename from src/math/compt0.rs rename to src/tlusty/math/compt0.rs index 24fdc0f..1c1db21 100644 --- a/src/math/compt0.rs +++ b/src/tlusty/math/compt0.rs @@ -4,7 +4,7 @@ //! //! 计算 Compton 散射源函数的辅助量 COMPA, COMPB, COMPC, COMPD, COMPE, COMPS。 -use crate::state::constants::{MDEPTH, MFREQ, TWO, UN}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, TWO, UN}; // ============================================================================ // 常量 diff --git a/src/math/comset.rs b/src/tlusty/math/comset.rs similarity index 99% rename from src/math/comset.rs rename to src/tlusty/math/comset.rs index fb17725..01bc253 100644 --- a/src/math/comset.rs +++ b/src/tlusty/math/comset.rs @@ -7,7 +7,7 @@ //! - 插值系数 DELJ //! - Klein-Nishina 散射截面 SIGEC -use crate::state::constants::{BN, HALF, HK, MDEPTH, MFREQ, SIGE, UN}; +use crate::tlusty::state::constants::{BN, HALF, HK, MDEPTH, MFREQ, SIGE, UN}; // ============================================================================ // 常量 diff --git a/src/math/concor.rs b/src/tlusty/math/concor.rs similarity index 99% rename from src/math/concor.rs rename to src/tlusty/math/concor.rs index 0cf276e..0af6977 100644 --- a/src/math/concor.rs +++ b/src/tlusty/math/concor.rs @@ -14,7 +14,7 @@ //! 3. 遍历深度点,根据上下层压力和温度计算新的温度 //! 4. 如果 ITMCOR != 0,调用 TEMCOR 重新计算对流通量 -use crate::state::constants::{UN, TWO}; +use crate::tlusty::state::constants::{UN, TWO}; // ============================================================================ // 配置结构体 diff --git a/src/math/conout.rs b/src/tlusty/math/conout.rs similarity index 99% rename from src/math/conout.rs rename to src/tlusty/math/conout.rs index 00c9924..02d4509 100644 --- a/src/math/conout.rs +++ b/src/tlusty/math/conout.rs @@ -10,7 +10,7 @@ //! - 确定对流区的起始和结束深度 //! - 根据 ICONV 参数调整 NDRE 和 REDIF/REINT 数组 -use crate::state::constants::{HALF, SIG4P, UN}; +use crate::tlusty::state::constants::{HALF, SIG4P, UN}; // ============================================================================ // 配置结构体 diff --git a/src/math/conref.rs b/src/tlusty/math/conref.rs similarity index 99% rename from src/math/conref.rs rename to src/tlusty/math/conref.rs index 183f691..ca433f3 100644 --- a/src/math/conref.rs +++ b/src/tlusty/math/conref.rs @@ -10,7 +10,7 @@ //! - 迭代修正温度以满足能量守恒 //! - 处理辐射/对流通量分配 -use crate::state::constants::{HALF, SIG4P, UN}; +use crate::tlusty::state::constants::{HALF, SIG4P, UN}; // ============================================================================ // 常量 diff --git a/src/math/contmd.rs b/src/tlusty/math/contmd.rs similarity index 99% rename from src/math/contmd.rs rename to src/tlusty/math/contmd.rs index 4a75cb3..b6f895a 100644 --- a/src/math/contmd.rs +++ b/src/tlusty/math/contmd.rs @@ -17,7 +17,7 @@ //! //! 求解得到的 DELTA(对数温度梯度)用于更新温度结构。 -use crate::state::constants::{HALF, PCK, SIG4P, UN}; +use crate::tlusty::state::constants::{HALF, PCK, SIG4P, UN}; use super::convec::{convec, ConvecConfig, ConvecParams}; use super::cubic::{cubic, CubicCon}; use super::conout::format_conout_header; diff --git a/src/math/contmp.rs b/src/tlusty/math/contmp.rs similarity index 99% rename from src/math/contmp.rs rename to src/tlusty/math/contmp.rs index 655a45f..492f7b4 100644 --- a/src/math/contmp.rs +++ b/src/tlusty/math/contmp.rs @@ -9,7 +9,7 @@ //! - 这会产生关于对数温度梯度的三次方程 //! - 迭代计算温度分布、电子密度、平均不透明度 -use crate::state::constants::{BOLK, HALF, SIG4P, UN, MDEPTH}; +use crate::tlusty::state::constants::{BOLK, HALF, SIG4P, UN, MDEPTH}; // ============================================================================ // 常量 diff --git a/src/math/convec.rs b/src/tlusty/math/convec.rs similarity index 99% rename from src/math/convec.rs rename to src/tlusty/math/convec.rs index 0b58a44..ff389ec 100644 --- a/src/math/convec.rs +++ b/src/tlusty/math/convec.rs @@ -13,7 +13,7 @@ use super::trmder::{trmder, TrmderConfig, TrmderParams}; use super::trmdrt::{trmdrt, TrmdrtParams}; use super::prsent::{prsent, PrsentParams, ThermTables}; use super::eldens::EldensConfig; -use crate::state::constants::{UN, HALF}; +use crate::tlusty::state::constants::{UN, HALF}; // ============================================================================ // 常量 diff --git a/src/math/coolrt.rs b/src/tlusty/math/coolrt.rs similarity index 99% rename from src/math/coolrt.rs rename to src/tlusty/math/coolrt.rs index b251673..18fa1f6 100644 --- a/src/math/coolrt.rs +++ b/src/tlusty/math/coolrt.rs @@ -13,7 +13,7 @@ //! - 累积各离子的冷却和加热贡献 //! 3. 可选输出到 fort.85/86/87/88 -use crate::state::constants::{MDEPTH, MION}; +use crate::tlusty::state::constants::{MDEPTH, MION}; // 物理常数 const PI4: f64 = 4.0 * std::f64::consts::PI; diff --git a/src/math/corrwm.rs b/src/tlusty/math/corrwm.rs similarity index 94% rename from src/math/corrwm.rs rename to src/tlusty/math/corrwm.rs index ccdf60c..214dc4a 100644 --- a/src/math/corrwm.rs +++ b/src/tlusty/math/corrwm.rs @@ -3,12 +3,12 @@ //! 重构自 TLUSTY `corrwm.f` //! 处理各种频率点处理标志,特别是与"减法权重"相关的标志(仅在非重叠模式下)。 -use crate::io::{FortranWriter, Result}; -use crate::math::quit::quit; -use crate::state::atomic::TraPar; -use crate::state::config::BasNum; -use crate::state::constants::{BN, MFREX, PI4H}; -use crate::state::model::{FrqAll, FreAux, PhoExp}; +use crate::tlusty::io::{FortranWriter, Result}; +use crate::tlusty::math::quit::quit; +use crate::tlusty::state::atomic::TraPar; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::{BN, MFREX, PI4H}; +use crate::tlusty::state::model::{FrqAll, FreAux, PhoExp}; /// CORRWM 参数结构体 pub struct CorrwmParams<'a> { @@ -360,10 +360,10 @@ pub fn corrwm_io(params: &mut CorrwmParams, writer: &mut Fort let line = format!( "{:8}{}{}{}{}", ij + 1, - crate::io::format_exp_fortran(frqall.freq[ij], 17, 8, true), - crate::io::format_exp_fortran(frqall.w[ij], 17, 8, true), - crate::io::format_exp_fortran(0.0, 15, 5, true), // 占位 - crate::io::format_exp_fortran(frqall.prof[ij], 17, 8, true) + crate::tlusty::io::format_exp_fortran(frqall.freq[ij], 17, 8, true), + crate::tlusty::io::format_exp_fortran(frqall.w[ij], 17, 8, true), + crate::tlusty::io::format_exp_fortran(0.0, 15, 5, true), // 占位 + crate::tlusty::io::format_exp_fortran(frqall.prof[ij], 17, 8, true) ); writer.write_raw(&line)?; writer.write_newline()?; @@ -371,8 +371,8 @@ pub fn corrwm_io(params: &mut CorrwmParams, writer: &mut Fort let line = format!( "{:8}{}{}", ij + 1, - crate::io::format_exp_fortran(frqall.freq[ij], 17, 8, true), - crate::io::format_exp_fortran(frqall.w[ij], 17, 8, true) + crate::tlusty::io::format_exp_fortran(frqall.freq[ij], 17, 8, true), + crate::tlusty::io::format_exp_fortran(frqall.w[ij], 17, 8, true) ); writer.write_raw(&line)?; writer.write_newline()?; @@ -392,10 +392,10 @@ pub fn corrwm_io(params: &mut CorrwmParams, writer: &mut Fort #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::TraPar; - use crate::state::config::BasNum; - use crate::state::constants::{MFREQ, MDEPTH, MTRANS, MFREQC}; - use crate::state::model::{FrqAll, FreAux, PhoExp}; + use crate::tlusty::state::atomic::TraPar; + use crate::tlusty::state::config::BasNum; + use crate::tlusty::state::constants::{MFREQ, MDEPTH, MTRANS, MFREQC}; + use crate::tlusty::state::model::{FrqAll, FreAux, PhoExp}; fn create_test_state() -> (BasNum, TraPar, FrqAll, FreAux, PhoExp) { let mut basnum = BasNum::default(); diff --git a/src/math/cross.rs b/src/tlusty/math/cross.rs similarity index 99% rename from src/math/cross.rs rename to src/tlusty/math/cross.rs index 3a7f458..c8fc259 100644 --- a/src/math/cross.rs +++ b/src/tlusty/math/cross.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `cross.f` 和 `crossd.f`。 -use crate::state::{AtomicData, BasNum, ModelState}; +use crate::tlusty::state::{AtomicData, BasNum, ModelState}; // ============================================================================ // CROSS - 基本光电离截面 diff --git a/src/math/cspec.rs b/src/tlusty/math/cspec.rs similarity index 99% rename from src/math/cspec.rs rename to src/tlusty/math/cspec.rs index d7085e3..7d2c6a4 100644 --- a/src/math/cspec.rs +++ b/src/tlusty/math/cspec.rs @@ -12,7 +12,7 @@ //! - IC = -11: 特殊处理 //! - IC = -12: He I 禁戒跃迁 -use crate::state::constants::UN; +use crate::tlusty::state::constants::UN; /// He I 禁戒跃迁的系数 (CHE1FB) /// 原始 Fortran DATA 语句: diff --git a/src/math/ctdata.rs b/src/tlusty/math/ctdata.rs similarity index 100% rename from src/math/ctdata.rs rename to src/tlusty/math/ctdata.rs diff --git a/src/math/cubic.rs b/src/tlusty/math/cubic.rs similarity index 100% rename from src/math/cubic.rs rename to src/tlusty/math/cubic.rs diff --git a/src/math/dielrc.rs b/src/tlusty/math/dielrc.rs similarity index 99% rename from src/math/dielrc.rs rename to src/tlusty/math/dielrc.rs index fffe876..39808df 100644 --- a/src/math/dielrc.rs +++ b/src/tlusty/math/dielrc.rs @@ -5,13 +5,13 @@ //! //! 计算 H, He, C, N, O, Ne, Mg, Si, S, Ar, Ca, Fe, Ni 的双电子复合速率。 -use crate::data::{ +use crate::tlusty::data::{ DIELRC_ADI as ADI, DIELRC_BDI as BDI, DIELRC_CDD as CDD, DIELRC_DCFE as DCFE, DIELRC_DEFE as DEFE, DIELRC_GFE as GFE, DIELRC_GLI as GLI, DIELRC_GNI as GNI, DIELRC_INID as INID, DIELRC_ISTOREY as ISTOREY, DIELRC_RSTOREY as RSTOREY, DIELRC_T0 as T0, DIELRC_T1 as T1, DIELRC_UU as UU, }; -use crate::math::expo; +use crate::tlusty::math::expo; // 常量 const CONS: f64 = 0.1239529 * 3.28805e15 / 13.595; diff --git a/src/math/dietot.rs b/src/tlusty/math/dietot.rs similarity index 91% rename from src/math/dietot.rs rename to src/tlusty/math/dietot.rs index 6fd5e3f..ab7fa5d 100644 --- a/src/math/dietot.rs +++ b/src/tlusty/math/dietot.rs @@ -3,10 +3,10 @@ //! 重构自 TLUSTY `dietot.f` //! 遍历所有离子和深度点,计算双电子复合速率和伪截面。 -use crate::math::dielrc::dielrc; -use crate::state::atomic::{AtoPar, IonPar, LevPar}; -use crate::state::config::{BasNum, InpPar}; -use crate::state::model::{LevAdd, ModPar}; +use crate::tlusty::math::dielrc::dielrc; +use crate::tlusty::state::atomic::{AtoPar, IonPar, LevPar}; +use crate::tlusty::state::config::{BasNum, InpPar}; +use crate::tlusty::state::model::{LevAdd, ModPar}; /// DIETOT 参数结构体 pub struct DietotParams<'a> { @@ -62,10 +62,10 @@ pub fn dietot(params: &mut DietotParams) { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::{AtoPar, IonPar, LevPar}; - use crate::state::config::{BasNum, InpPar}; - use crate::state::constants::{MDEPTH, MION, MLEVEL, MATOM}; - use crate::state::model::{LevAdd, ModPar}; + use crate::tlusty::state::atomic::{AtoPar, IonPar, LevPar}; + use crate::tlusty::state::config::{BasNum, InpPar}; + use crate::tlusty::state::constants::{MDEPTH, MION, MLEVEL, MATOM}; + use crate::tlusty::state::model::{LevAdd, ModPar}; fn create_test_state() -> ( BasNum, diff --git a/src/math/divstr.rs b/src/tlusty/math/divstr.rs similarity index 98% rename from src/math/divstr.rs rename to src/tlusty/math/divstr.rs index d9da00e..f5713bc 100644 --- a/src/math/divstr.rs +++ b/src/tlusty/math/divstr.rs @@ -4,7 +4,7 @@ //! //! 用于 STARKA - 确定 Doppler 和渐近 Stark 轮廓之间的分割点。 -use crate::state::constants::{TWO, UN}; +use crate::tlusty::state::constants::{TWO, UN}; // ============================================================================ // DIVSTR - Stark 轮廓分割点 diff --git a/src/math/dmder.rs b/src/tlusty/math/dmder.rs similarity index 98% rename from src/math/dmder.rs rename to src/tlusty/math/dmder.rs index 4321ba0..faf8036 100644 --- a/src/math/dmder.rs +++ b/src/tlusty/math/dmder.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `dmder.f` -use crate::state::constants::{MDEPTH, UN}; +use crate::tlusty::state::constants::{MDEPTH, UN}; /// 深度导数参数。 /// diff --git a/src/math/dmeval.rs b/src/tlusty/math/dmeval.rs similarity index 95% rename from src/math/dmeval.rs rename to src/tlusty/math/dmeval.rs index 7e6c568..48f0495 100644 --- a/src/math/dmeval.rs +++ b/src/tlusty/math/dmeval.rs @@ -3,14 +3,14 @@ //! 重构自 TLUSTY `dmeval.f` //! 当 z 标度是基本标度时,辅助 RESOLV 重新计算 m 标度。 -use crate::io::{FortranWriter, Result}; -use crate::math::erfcx::erfcx; -use crate::state::arrays::ComputeArrays; -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{BOLK, HALF, PCK, SIG4P, TWO, UN}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::io::{FortranWriter, Result}; +use crate::tlusty::math::erfcx::erfcx; +use crate::tlusty::state::arrays::ComputeArrays; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{BOLK, HALF, PCK, SIG4P, TWO, UN}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; /// DMEVAL 参数结构体 pub struct DmevalParams<'a> { diff --git a/src/math/dopgam.rs b/src/tlusty/math/dopgam.rs similarity index 99% rename from src/math/dopgam.rs rename to src/tlusty/math/dopgam.rs index e935a40..a54fadd 100644 --- a/src/math/dopgam.rs +++ b/src/tlusty/math/dopgam.rs @@ -4,7 +4,7 @@ //! //! 计算谱线的 Doppler 宽度和总阻尼参数。 -use crate::math::gamsp; +use crate::tlusty::math::gamsp; const BOL2: f64 = 2.76108e-16; const CIN: f64 = 1.0 / 2.997925e10; diff --git a/src/math/dwnfr.rs b/src/tlusty/math/dwnfr.rs similarity index 97% rename from src/math/dwnfr.rs rename to src/tlusty/math/dwnfr.rs index 9a8caae..9a08038 100644 --- a/src/math/dwnfr.rs +++ b/src/tlusty/math/dwnfr.rs @@ -2,8 +2,8 @@ //! //! 重构自 TLUSTY `dwnfr.f` -use crate::state::constants::UN; -use crate::state::config::InpPar; +use crate::tlusty::state::constants::UN; +use crate::tlusty::state::config::InpPar; // ============================================================================ // DWNFR - 溶解分数 (所有频率) @@ -191,7 +191,7 @@ mod tests { #[test] fn test_dwnfr_consistency_with_dwnfr1() { use super::super::dwnfr1; - use crate::state::model::DwnPar; + use crate::tlusty::state::model::DwnPar; let inppar = InpPar::default(); diff --git a/src/math/dwnfr0.rs b/src/tlusty/math/dwnfr0.rs similarity index 96% rename from src/math/dwnfr0.rs rename to src/tlusty/math/dwnfr0.rs index 64e6580..c8ce531 100644 --- a/src/math/dwnfr0.rs +++ b/src/tlusty/math/dwnfr0.rs @@ -2,8 +2,8 @@ //! //! 重构自 TLUSTY `dwnfr0.f` -use crate::state::constants::{MDEPTH, MZZ, UN}; -use crate::state::model::{DwnPar, ModPar}; +use crate::tlusty::state::constants::{MDEPTH, MZZ, UN}; +use crate::tlusty::state::model::{DwnPar, ModPar}; // ============================================================================ // DWNFR0 - 溶解分数辅助量 diff --git a/src/math/dwnfr1.rs b/src/tlusty/math/dwnfr1.rs similarity index 97% rename from src/math/dwnfr1.rs rename to src/tlusty/math/dwnfr1.rs index 3bc9285..2012387 100644 --- a/src/math/dwnfr1.rs +++ b/src/tlusty/math/dwnfr1.rs @@ -2,9 +2,9 @@ //! //! 重构自 TLUSTY `dwnfr1.f` -use crate::state::constants::UN; -use crate::state::config::InpPar; -use crate::state::model::DwnPar; +use crate::tlusty::state::constants::UN; +use crate::tlusty::state::config::InpPar; +use crate::tlusty::state::model::DwnPar; // ============================================================================ // DWNFR1 - 溶解分数 (单频率) diff --git a/src/math/elcor.rs b/src/tlusty/math/elcor.rs similarity index 97% rename from src/math/elcor.rs rename to src/tlusty/math/elcor.rs index d1afb67..05e05cd 100644 --- a/src/math/elcor.rs +++ b/src/tlusty/math/elcor.rs @@ -7,10 +7,10 @@ //! - 使用迭代方法求解电荷守恒方程 //! - 与统计平衡方程耦合 -use crate::math::moleq::{moleq_pure, MoleqOutput, MoleqParams}; -use crate::math::state::{state_pure, StateOutput, StateParams}; -use crate::math::steqeq::{steqeq_pure, SteqeqConfig, SteqeqParams}; -use crate::state::constants::{HALF, MDEPTH, MLEVEL, UN}; +use crate::tlusty::math::moleq::{moleq_pure, MoleqOutput, MoleqParams}; +use crate::tlusty::math::state::{state_pure, StateOutput, StateParams}; +use crate::tlusty::math::steqeq::{steqeq_pure, SteqeqConfig, SteqeqParams}; +use crate::tlusty::state::constants::{HALF, MDEPTH, MLEVEL, UN}; /// ELCOR 配置参数 #[derive(Debug, Clone)] diff --git a/src/math/eldenc.rs b/src/tlusty/math/eldenc.rs similarity index 97% rename from src/math/eldenc.rs rename to src/tlusty/math/eldenc.rs index 63a0ccf..63d8c64 100644 --- a/src/math/eldenc.rs +++ b/src/tlusty/math/eldenc.rs @@ -7,10 +7,10 @@ //! - 分析各元素对电子密度的贡献 //! - 输出电子供体信息 -use crate::math::moleq::{moleq_pure, MoleqParams}; -use crate::math::rhonen::{rhonen_pure, RhonenParams}; -use crate::math::state::{state_pure, StateParams}; -use crate::state::constants::{MDEPTH, MLEVEL}; +use crate::tlusty::math::moleq::{moleq_pure, MoleqParams}; +use crate::tlusty::math::rhonen::{rhonen_pure, RhonenParams}; +use crate::tlusty::math::state::{state_pure, StateParams}; +use crate::tlusty::state::constants::{MDEPTH, MLEVEL}; /// 最大温度表点数 pub const MTABT: usize = 21; diff --git a/src/math/eldens.rs b/src/tlusty/math/eldens.rs similarity index 97% rename from src/math/eldens.rs rename to src/tlusty/math/eldens.rs index bead2d2..eb7e74e 100644 --- a/src/math/eldens.rs +++ b/src/tlusty/math/eldens.rs @@ -8,11 +8,11 @@ //! - 计算电荷守恒和粒子守恒 //! - 计算内能和熵 -use crate::math::lineqs::lineqs; -use crate::math::moleq::{moleq_pure, MoleqParams, MoleculeEqData}; -use crate::math::mpartf::{mpartf, MpartfResult}; -use crate::math::state::{state_pure, StateParams}; -use crate::state::constants::{BOLK, HMASS, UN, TWO, HALF}; +use crate::tlusty::math::lineqs::lineqs; +use crate::tlusty::math::moleq::{moleq_pure, MoleqParams, MoleculeEqData}; +use crate::tlusty::math::mpartf::{mpartf, MpartfResult}; +use crate::tlusty::math::state::{state_pure, StateParams}; +use crate::tlusty::state::constants::{BOLK, HMASS, UN, TWO, HALF}; /// ELDENS 配置参数 #[derive(Debug, Clone)] diff --git a/src/math/emat.rs b/src/tlusty/math/emat.rs similarity index 96% rename from src/math/emat.rs rename to src/tlusty/math/emat.rs index 6771a7e..83769ee 100644 --- a/src/math/emat.rs +++ b/src/tlusty/math/emat.rs @@ -4,11 +4,11 @@ //! //! 为 SOLVE 辅助程序,填充 sub-sub-diagonal 带状矩阵 E。 -use crate::state::constants::PCK; -use crate::state::alipar::FixAlp; -use crate::state::arrays::MainArrays; -use crate::state::config::MatKey; -use crate::state::model::RePart; +use crate::tlusty::state::constants::PCK; +use crate::tlusty::state::alipar::FixAlp; +use crate::tlusty::state::arrays::MainArrays; +use crate::tlusty::state::config::MatKey; +use crate::tlusty::state::model::RePart; // ============================================================================ // EMAT - 带状矩阵 E 元素 diff --git a/src/math/entene.rs b/src/tlusty/math/entene.rs similarity index 98% rename from src/math/entene.rs rename to src/tlusty/math/entene.rs index 865f303..62fac62 100644 --- a/src/math/entene.rs +++ b/src/tlusty/math/entene.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `entene.f`。 -use crate::math::mpartf::mpartf; +use crate::tlusty::math::mpartf::mpartf; const EV2ERG: f64 = 1.6018e-12; const ENTCON: f64 = 103.973; diff --git a/src/math/erfcx.rs b/src/tlusty/math/erfcx.rs similarity index 100% rename from src/math/erfcx.rs rename to src/tlusty/math/erfcx.rs diff --git a/src/math/expint.rs b/src/tlusty/math/expint.rs similarity index 99% rename from src/math/expint.rs rename to src/tlusty/math/expint.rs index 367a7b5..0f071db 100644 --- a/src/math/expint.rs +++ b/src/tlusty/math/expint.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `expinx.f` 和 `eint.f` -use crate::math::expo; +use crate::tlusty::math::expo; /// 计算缩放的第一指数积分 E1。 /// diff --git a/src/math/expo.rs b/src/tlusty/math/expo.rs similarity index 100% rename from src/math/expo.rs rename to src/tlusty/math/expo.rs diff --git a/src/math/ffcros.rs b/src/tlusty/math/ffcros.rs similarity index 100% rename from src/math/ffcros.rs rename to src/tlusty/math/ffcros.rs diff --git a/src/math/gami.rs b/src/tlusty/math/gami.rs similarity index 100% rename from src/math/gami.rs rename to src/tlusty/math/gami.rs diff --git a/src/math/gamsp.rs b/src/tlusty/math/gamsp.rs similarity index 100% rename from src/math/gamsp.rs rename to src/tlusty/math/gamsp.rs diff --git a/src/math/gauleg.rs b/src/tlusty/math/gauleg.rs similarity index 100% rename from src/math/gauleg.rs rename to src/tlusty/math/gauleg.rs diff --git a/src/math/gaunt.rs b/src/tlusty/math/gaunt.rs similarity index 100% rename from src/math/gaunt.rs rename to src/tlusty/math/gaunt.rs diff --git a/src/math/getlal.rs b/src/tlusty/math/getlal.rs similarity index 98% rename from src/math/getlal.rs rename to src/tlusty/math/getlal.rs index 3a69046..04d0bad 100644 --- a/src/math/getlal.rs +++ b/src/tlusty/math/getlal.rs @@ -3,8 +3,8 @@ //! 重构自 TLUSTY `getlal.f` //! 读取 Lyman alpha/beta/gamma 和 Balmer alpha 的谱线轮廓函数。 -use crate::io::{FortranReader, Result}; -use crate::state::model::{ +use crate::tlusty::io::{FortranReader, Result}; +use crate::tlusty::state::model::{ CalphatD, CallardA, CallardB, CallardC, CallardG, ModelState, Quasun, }; use std::fs::File; diff --git a/src/math/getwrd.rs b/src/tlusty/math/getwrd.rs similarity index 100% rename from src/math/getwrd.rs rename to src/tlusty/math/getwrd.rs diff --git a/src/math/gfree.rs b/src/tlusty/math/gfree.rs similarity index 93% rename from src/math/gfree.rs rename to src/tlusty/math/gfree.rs index 4ed04f1..a91eef5 100644 --- a/src/math/gfree.rs +++ b/src/tlusty/math/gfree.rs @@ -53,7 +53,7 @@ const C14: f64 = 2.997925e14; /// ... /// END /// ``` -pub fn gfree0(id: usize, temp: &[f64], gffpar: &mut crate::state::GffPar) { +pub fn gfree0(id: usize, temp: &[f64], gffpar: &mut crate::tlusty::state::GffPar) { let t = temp[id]; let thet0_over_t = THET0 / t; @@ -124,7 +124,7 @@ pub fn gfree0(id: usize, temp: &[f64], gffpar: &mut crate::state::GffPar) { /// END IF /// end /// ``` -pub fn gfreed(id: usize, fr: f64, ch: f64, gffpar: &crate::state::GffPar) -> (f64, f64) { +pub fn gfreed(id: usize, fr: f64, ch: f64, gffpar: &crate::tlusty::state::GffPar) -> (f64, f64) { let x = C14 * ch / fr; let xmini = 1.0 / XMIN; @@ -177,7 +177,7 @@ pub fn gfreed(id: usize, fr: f64, ch: f64, gffpar: &crate::state::GffPar) -> (f6 /// END IF /// END /// ``` -pub fn gfree1(id: usize, x: f64, gffpar: &crate::state::GffPar) -> f64 { +pub fn gfree1(id: usize, x: f64, gffpar: &crate::tlusty::state::GffPar) -> f64 { let xmini = 1.0 / XMIN; if x < 1.0 { @@ -195,12 +195,12 @@ pub fn gfree1(id: usize, x: f64, gffpar: &crate::state::GffPar) -> f64 { #[cfg(test)] mod tests { use super::*; - use crate::state::GffPar; + use crate::tlusty::state::GffPar; fn create_test_gffpar() -> GffPar { let mut gffpar = GffPar::new(); // 使用典型温度 10000K - let temp = vec![10000.0; crate::state::MDEPTH]; + let temp = vec![10000.0; crate::tlusty::state::MDEPTH]; // 初始化第一个深度点 gfree0(0, &temp, &mut gffpar); gffpar @@ -209,7 +209,7 @@ mod tests { #[test] fn test_gfree0_basic() { let mut gffpar = GffPar::new(); - let temp = vec![10000.0; crate::state::MDEPTH]; + let temp = vec![10000.0; crate::tlusty::state::MDEPTH]; gfree0(0, &temp, &mut gffpar); @@ -229,7 +229,7 @@ mod tests { // 低温测试:T = 100K // THT = THET0/T = 5040.4/100 = 50.4 > THMIN = 0.04 // 所以进入 IF 分支,计算非零导数 - let temp = vec![100.0; crate::state::MDEPTH]; + let temp = vec![100.0; crate::tlusty::state::MDEPTH]; gfree0(0, &temp, &mut gffpar); @@ -245,7 +245,7 @@ mod tests { // 高温测试:T = 200000K // THT = THET0/T = 5040.4/200000 = 0.025 < THMIN = 0.04 // 所以进入 ELSE 分支,导数为零 - let temp = vec![200000.0; crate::state::MDEPTH]; + let temp = vec![200000.0; crate::tlusty::state::MDEPTH]; gfree0(0, &temp, &mut gffpar); @@ -297,7 +297,7 @@ mod tests { fn test_gfree_consistency() { // 测试 gfree0 和 gfreed 的一致性 let mut gffpar = GffPar::new(); - let temp = vec![10000.0; crate::state::MDEPTH]; + let temp = vec![10000.0; crate::tlusty::state::MDEPTH]; gfree0(0, &temp, &mut gffpar); diff --git a/src/math/ghydop.rs b/src/tlusty/math/ghydop.rs similarity index 99% rename from src/math/ghydop.rs rename to src/tlusty/math/ghydop.rs index 7defda3..57a12f5 100644 --- a/src/math/ghydop.rs +++ b/src/tlusty/math/ghydop.rs @@ -4,7 +4,7 @@ //! //! 从 Gomez 表计算氢的谱线和伪连续谱不透明度。 -use crate::state::constants::{MDEPTH, MFHTAB, MFREQ, MTABEH, MTABTH, UN}; +use crate::tlusty::state::constants::{MDEPTH, MFHTAB, MFREQ, MTABEH, MTABTH, UN}; // ============================================================================ // 常量 diff --git a/src/math/gntk.rs b/src/tlusty/math/gntk.rs similarity index 100% rename from src/math/gntk.rs rename to src/tlusty/math/gntk.rs diff --git a/src/math/gomini.rs b/src/tlusty/math/gomini.rs similarity index 96% rename from src/math/gomini.rs rename to src/tlusty/math/gomini.rs index 54cdf0a..e4ed922 100644 --- a/src/math/gomini.rs +++ b/src/tlusty/math/gomini.rs @@ -3,10 +3,10 @@ //! 重构自 TLUSTY `gomini.f` //! 读取热过程和瑞利散射的不透明度表。 -use crate::io::{FortranReader, Result}; -use crate::state::config::TlustyConfig; -use crate::state::constants::{MFHTAB, MTABEH, MTABTH, UN}; -use crate::state::model::{GomezTab, IntCfg, ModelState}; +use crate::tlusty::io::{FortranReader, Result}; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{MFHTAB, MTABEH, MTABTH, UN}; +use crate::tlusty::state::model::{GomezTab, IntCfg, ModelState}; use std::io::BufReader; use std::fs::File; diff --git a/src/math/grcor.rs b/src/tlusty/math/grcor.rs similarity index 100% rename from src/math/grcor.rs rename to src/tlusty/math/grcor.rs diff --git a/src/math/greyd.rs b/src/tlusty/math/greyd.rs similarity index 99% rename from src/math/greyd.rs rename to src/tlusty/math/greyd.rs index 534e1bf..b4498fe 100644 --- a/src/math/greyd.rs +++ b/src/tlusty/math/greyd.rs @@ -8,7 +8,7 @@ //! - 迭代求解表面温度和质量深度 //! - 计算 Rosseland 和 Planck 平均不透明度 -use crate::state::constants::{HK, MDEPTH, MFREQ, MFREQC, MLEVEL, UN}; +use crate::tlusty::state::constants::{HK, MDEPTH, MFREQ, MFREQC, MLEVEL, UN}; // 物理常数 /// Boltzmann 常数 diff --git a/src/math/gridp.rs b/src/tlusty/math/gridp.rs similarity index 99% rename from src/math/gridp.rs rename to src/tlusty/math/gridp.rs index 6d16687..7d73094 100644 --- a/src/math/gridp.rs +++ b/src/tlusty/math/gridp.rs @@ -3,7 +3,7 @@ //! 原始 Fortran: gridp.f //! 将曲线 y=f(x) 分成 n-1 等长段,确定新网格点 -use crate::state::MDEPTH; +use crate::tlusty::state::MDEPTH; /// 网格点评估 /// diff --git a/src/math/gvdw.rs b/src/tlusty/math/gvdw.rs similarity index 100% rename from src/math/gvdw.rs rename to src/tlusty/math/gvdw.rs diff --git a/src/math/h2minus.rs b/src/tlusty/math/h2minus.rs similarity index 97% rename from src/math/h2minus.rs rename to src/tlusty/math/h2minus.rs index 8df9a7b..a6b1ae0 100644 --- a/src/math/h2minus.rs +++ b/src/tlusty/math/h2minus.rs @@ -5,8 +5,8 @@ //! //! 使用 Bell 1980 的数据表进行双线性插值计算 H⁻ 自由-自由吸收系数。 -use crate::data::{H2MINUS_FFKAPP, H2MINUS_FFLAMB, H2MINUS_FFTHET}; -use crate::math::locate::locate; +use crate::tlusty::data::{H2MINUS_FFKAPP, H2MINUS_FFLAMB, H2MINUS_FFTHET}; +use crate::tlusty::math::locate::locate; // 常量 const BOLK: f64 = 1.380649e-16; // 玻尔兹曼常数 (erg/K) diff --git a/src/math/hedif.rs b/src/tlusty/math/hedif.rs similarity index 97% rename from src/math/hedif.rs rename to src/tlusty/math/hedif.rs index 3ad5f02..014e2e2 100644 --- a/src/math/hedif.rs +++ b/src/tlusty/math/hedif.rs @@ -3,11 +3,11 @@ //! 重构自 TLUSTY `hedif.f` //! 计算深度相关的氦丰度剖面。 -use crate::io::{FortranWriter, Result}; -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::MDEPTH; -use crate::state::model::{Hediff, ModelState}; +use crate::tlusty::io::{FortranWriter, Result}; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::MDEPTH; +use crate::tlusty::state::model::{Hediff, ModelState}; // 物理常数 const SMAS: f64 = 1.9891e33; // 太阳质量 (g) diff --git a/src/math/hephot.rs b/src/tlusty/math/hephot.rs similarity index 100% rename from src/math/hephot.rs rename to src/tlusty/math/hephot.rs diff --git a/src/math/hesol6.rs b/src/tlusty/math/hesol6.rs similarity index 99% rename from src/math/hesol6.rs rename to src/tlusty/math/hesol6.rs index fa339f3..3e5b2cd 100644 --- a/src/math/hesol6.rs +++ b/src/tlusty/math/hesol6.rs @@ -8,8 +8,8 @@ //! 3. 状态方程 //! 4. z-m 关系 -use crate::math::erfcx::erfcx; -use crate::math::matinv::matinv; +use crate::tlusty::math::erfcx::erfcx; +use crate::tlusty::math::matinv::matinv; const UN: f64 = 1.0; const HALF: f64 = 0.5; diff --git a/src/math/hesolv.rs b/src/tlusty/math/hesolv.rs similarity index 98% rename from src/math/hesolv.rs rename to src/tlusty/math/hesolv.rs index dd9fb3a..43f8c23 100644 --- a/src/math/hesolv.rs +++ b/src/tlusty/math/hesolv.rs @@ -7,12 +7,12 @@ //! - 使用 Newton-Raphson 迭代方法 //! - 给定声速(总压力/密度),求解压力和深度分布 -use crate::math::erfcx::erfcx; -use crate::math::matinv::matinv; -use crate::math::rhonen::{rhonen_pure, RhonenParams}; -use crate::math::steqeq::{steqeq_pure, SteqeqConfig, SteqeqParams}; -use crate::math::wnstor::wnstor; -use crate::state::constants::{HALF, MDEPTH, TWO, UN}; +use crate::tlusty::math::erfcx::erfcx; +use crate::tlusty::math::matinv::matinv; +use crate::tlusty::math::rhonen::{rhonen_pure, RhonenParams}; +use crate::tlusty::math::steqeq::{steqeq_pure, SteqeqConfig, SteqeqParams}; +use crate::tlusty::math::wnstor::wnstor; +use crate::tlusty::state::constants::{HALF, MDEPTH, TWO, UN}; /// HESOLV 辅助参数(PRSAUX COMMON 块) #[derive(Debug, Clone)] diff --git a/src/math/hidalg.rs b/src/tlusty/math/hidalg.rs similarity index 100% rename from src/math/hidalg.rs rename to src/tlusty/math/hidalg.rs diff --git a/src/math/ijali2.rs b/src/tlusty/math/ijali2.rs similarity index 94% rename from src/math/ijali2.rs rename to src/tlusty/math/ijali2.rs index b62fb25..942f6cf 100644 --- a/src/math/ijali2.rs +++ b/src/tlusty/math/ijali2.rs @@ -3,11 +3,11 @@ //! 重构自 TLUSTY `ijali2.f` //! 在完全混合 CL/ALI 方案中,设置个别跃迁的 ALI 处理标志。 -use crate::state::atomic::{TraCor, TraPar}; -use crate::state::config::BasNum; -use crate::state::constants::{MITJ, MFREQ}; -use crate::state::model::{CompIf, FreAux, LinFrq, LinOvr}; -use crate::state::odfpar::SplCom; +use crate::tlusty::state::atomic::{TraCor, TraPar}; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::{MITJ, MFREQ}; +use crate::tlusty::state::model::{CompIf, FreAux, LinFrq, LinOvr}; +use crate::tlusty::state::odfpar::SplCom; /// IJALI2 参数结构体 pub struct Ijali2Params<'a> { @@ -20,7 +20,7 @@ pub struct Ijali2Params<'a> { /// 频率辅助数据 pub freaux: &'a mut FreAux, /// 频率网格 - pub frqall: &'a mut crate::state::model::FrqAll, + pub frqall: &'a mut crate::tlusty::state::model::FrqAll, /// 线重叠数据 pub linovr: &'a mut LinOvr, /// 线频率数据 @@ -211,11 +211,11 @@ pub fn ijali2(params: &mut Ijali2Params) -> Ijali2Output { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::{TraCor, TraPar}; - use crate::state::config::BasNum; - use crate::state::constants::{MFREQ, MTRANS}; - use crate::state::model::{CompIf, FreAux, FrqAll, LinFrq, LinOvr}; - use crate::state::odfpar::SplCom; + use crate::tlusty::state::atomic::{TraCor, TraPar}; + use crate::tlusty::state::config::BasNum; + use crate::tlusty::state::constants::{MFREQ, MTRANS}; + use crate::tlusty::state::model::{CompIf, FreAux, FrqAll, LinFrq, LinOvr}; + use crate::tlusty::state::odfpar::SplCom; fn create_test_params() -> ( BasNum, diff --git a/src/math/ijalis.rs b/src/tlusty/math/ijalis.rs similarity index 97% rename from src/math/ijalis.rs rename to src/tlusty/math/ijalis.rs index 527d244..25f41eb 100644 --- a/src/math/ijalis.rs +++ b/src/tlusty/math/ijalis.rs @@ -3,9 +3,9 @@ //! 重构自 TLUSTY `ijalis.f` //! 在完全混合 CL/ALI 方案中,设置个别跃迁的 ALI 处理标志。 -use crate::io::{FortranReader, Result}; -use crate::state::atomic::{AtoPar, LevPar, TraAli, TraCor, TraPar}; -use crate::state::model::FreAux; +use crate::tlusty::io::{FortranReader, Result}; +use crate::tlusty::state::atomic::{AtoPar, LevPar, TraAli, TraCor, TraPar}; +use crate::tlusty::state::model::FreAux; /// IJALIS 参数结构体 pub struct IjalisParams<'a> { @@ -277,8 +277,8 @@ pub fn ijalis_io( #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::{AtoPar, LevPar, TraAli, TraCor, TraPar}; - use crate::state::model::FreAux; + use crate::tlusty::state::atomic::{AtoPar, LevPar, TraAli, TraCor, TraPar}; + use crate::tlusty::state::model::FreAux; fn create_test_params() -> ( TraPar, diff --git a/src/math/indexx.rs b/src/tlusty/math/indexx.rs similarity index 100% rename from src/math/indexx.rs rename to src/tlusty/math/indexx.rs diff --git a/src/math/inicom.rs b/src/tlusty/math/inicom.rs similarity index 98% rename from src/math/inicom.rs rename to src/tlusty/math/inicom.rs index e37bdf7..8a23943 100644 --- a/src/math/inicom.rs +++ b/src/tlusty/math/inicom.rs @@ -4,7 +4,7 @@ //! //! INILAM 的辅助过程,初始化 Compton 散射的 g 因子。 -use crate::state::constants::{MDEPTH, UN}; +use crate::tlusty::state::constants::{MDEPTH, UN}; /// Compton 散射 g 因子初始化。 /// diff --git a/src/math/inifrc.rs b/src/tlusty/math/inifrc.rs similarity index 99% rename from src/math/inifrc.rs rename to src/tlusty/math/inifrc.rs index fa01ca1..a5584c5 100644 --- a/src/math/inifrc.rs +++ b/src/tlusty/math/inifrc.rs @@ -14,8 +14,8 @@ //! - `ialiex = 0`: 设置频率,全部使用 ALI //! - `ialiex = 1`: 修改 IJALI 以处理显式频率 -use crate::math::indexx::indexx; -use crate::state::constants::{H, HALF, MFREQ, MFREQC, MLEVEL, UN}; +use crate::tlusty::math::indexx::indexx; +use crate::tlusty::state::constants::{H, HALF, MFREQ, MFREQC, MLEVEL, UN}; /// INIFRC 输入参数 #[derive(Debug, Clone)] diff --git a/src/math/inifrs.rs b/src/tlusty/math/inifrs.rs similarity index 99% rename from src/math/inifrs.rs rename to src/tlusty/math/inifrs.rs index 6310dca..0d2b730 100644 --- a/src/math/inifrs.rs +++ b/src/tlusty/math/inifrs.rs @@ -5,7 +5,7 @@ //! 此模块设置频率网格用于不透明度采样模式。 use super::indexx::indexx; -use crate::state::constants::{ +use crate::tlusty::state::constants::{ BOLK, H, HMASS, MATOM, MFREQ, MFREQC, MFREQL, MFREQP, MLEVEL, MTRANS, TWO, UN, HALF, }; diff --git a/src/math/inifrt.rs b/src/tlusty/math/inifrt.rs similarity index 99% rename from src/math/inifrt.rs rename to src/tlusty/math/inifrt.rs index b00be01..5063259 100644 --- a/src/math/inifrt.rs +++ b/src/tlusty/math/inifrt.rs @@ -5,7 +5,7 @@ //! 设置连续谱频率网格,包括电离限附近的频率点。 use super::indexx::indexx; -use crate::state::constants::{H, HALF, MFREQC, MLEVEL, UN}; +use crate::tlusty::state::constants::{H, HALF, MFREQC, MLEVEL, UN}; // 数学常数 const THIRD: f64 = 1.0 / 3.0; diff --git a/src/math/inilam.rs b/src/tlusty/math/inilam.rs similarity index 99% rename from src/math/inilam.rs rename to src/tlusty/math/inilam.rs index 89f4326..bacc7d5 100644 --- a/src/math/inilam.rs +++ b/src/tlusty/math/inilam.rs @@ -17,7 +17,7 @@ //! - 计算新的占据数 //! - 求解辐射转移方程 -use crate::state::constants::{BOLK, HALF, MDEPTH, MFREQ, MLEVEL, MTRANS, PCK, SIG4P, UN}; +use crate::tlusty::state::constants::{BOLK, HALF, MDEPTH, MFREQ, MLEVEL, MTRANS, PCK, SIG4P, UN}; // ============================================================================ // 配置参数 diff --git a/src/math/inkul.rs b/src/tlusty/math/inkul.rs similarity index 98% rename from src/math/inkul.rs rename to src/tlusty/math/inkul.rs index 8519c5b..b88cf93 100644 --- a/src/math/inkul.rs +++ b/src/tlusty/math/inkul.rs @@ -9,10 +9,10 @@ //! - 计算多普勒宽度、阻尼参数、线强 //! - 填充 LINED 和 COLKUR 数组 -use crate::state::constants::*; -use crate::state::atomic::*; -use crate::state::model::*; -use crate::state::odfpar::*; +use crate::tlusty::state::constants::*; +use crate::tlusty::state::atomic::*; +use crate::tlusty::state::model::*; +use crate::tlusty::state::odfpar::*; // ============================================================================ // 常量 (来自 Fortran PARAMETER) @@ -470,7 +470,7 @@ pub fn parse_line_record(line: &str) -> Option { use std::fs::File; use std::io::{BufRead, BufReader}; -use crate::io::Result; +use crate::tlusty::io::Result; /// 执行 INKUL,从文件读取数据。 /// @@ -502,9 +502,9 @@ pub fn inkul(params: &InkulParams, file_path: &str) -> Result { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::*; - use crate::state::model::*; - use crate::state::odfpar::*; + use crate::tlusty::state::atomic::*; + use crate::tlusty::state::model::*; + use crate::tlusty::state::odfpar::*; /// 创建最小测试用的 AtomicData fn create_test_atomic_data() -> AtomicData { diff --git a/src/math/inpdis.rs b/src/tlusty/math/inpdis.rs similarity index 98% rename from src/math/inpdis.rs rename to src/tlusty/math/inpdis.rs index a9acef8..7c83462 100644 --- a/src/math/inpdis.rs +++ b/src/tlusty/math/inpdis.rs @@ -8,11 +8,11 @@ //! - 总柱质量计算 //! - 有效温度和引力参数设置 -use crate::io::{FortranWriter, Result}; -use crate::math::column::{column, ColumnParams}; -use crate::math::grcor::grcor; -use crate::math::sigmar::sigmar; -use crate::state::constants::{SIG4P, TWO}; +use crate::tlusty::io::{FortranWriter, Result}; +use crate::tlusty::math::column::{column, ColumnParams}; +use crate::tlusty::math::grcor::grcor; +use crate::tlusty::math::sigmar::sigmar; +use crate::tlusty::state::constants::{SIG4P, TWO}; // 物理常数 const VELC: f64 = 2.997925e10; // 光速 (cm/s) diff --git a/src/math/interp.rs b/src/tlusty/math/interp.rs similarity index 99% rename from src/math/interp.rs rename to src/tlusty/math/interp.rs index 7bd448f..91f07dc 100644 --- a/src/math/interp.rs +++ b/src/tlusty/math/interp.rs @@ -3,7 +3,7 @@ //! 原始 Fortran: interp.f //! 支持 (NPOL-1) 阶插值,可选对数插值 -use crate::state::MDEPTH; +use crate::tlusty::state::MDEPTH; /// 通用插值过程 /// diff --git a/src/math/interpolate.rs b/src/tlusty/math/interpolate.rs similarity index 100% rename from src/math/interpolate.rs rename to src/tlusty/math/interpolate.rs diff --git a/src/math/inthyd.rs b/src/tlusty/math/inthyd.rs similarity index 98% rename from src/math/inthyd.rs rename to src/tlusty/math/inthyd.rs index c945327..8a8bdf0 100644 --- a/src/math/inthyd.rs +++ b/src/tlusty/math/inthyd.rs @@ -4,8 +4,8 @@ //! //! 从 Lemke 表格中插值计算氢线的 Stark 展宽轮廓。 -use crate::math::{divstr, starka, yint}; -use crate::state::HydPrf; +use crate::tlusty::math::{divstr, starka, yint}; +use crate::tlusty::state::HydPrf; // ============================================================================ // INTHYD - 氢线表格插值 diff --git a/src/math/intlem.rs b/src/tlusty/math/intlem.rs similarity index 96% rename from src/math/intlem.rs rename to src/tlusty/math/intlem.rs index 9fd2194..a86929e 100644 --- a/src/math/intlem.rs +++ b/src/tlusty/math/intlem.rs @@ -4,8 +4,8 @@ //! //! 从 Lemke 表格中计算氢线 Stark 展宽轮廓。 -use crate::math::inthyd; -use crate::state::model::{HydPrf, ModPar, StrAux, Turbul}; +use crate::tlusty::math::inthyd; +use crate::tlusty::state::model::{HydPrf, ModPar, StrAux, Turbul}; // ============================================================================ // INTLEM - Lemke 表格积分 @@ -71,7 +71,7 @@ pub fn intlem( #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MHWL; + use crate::tlusty::state::constants::MHWL; fn create_test_modpar() -> ModPar { let mut modpar = ModPar::default(); diff --git a/src/math/intxen.rs b/src/tlusty/math/intxen.rs similarity index 99% rename from src/math/intxen.rs rename to src/tlusty/math/intxen.rs index 4e001cf..7c74b4f 100644 --- a/src/math/intxen.rs +++ b/src/tlusty/math/intxen.rs @@ -4,7 +4,7 @@ //! //! 对氢线的 Xenomorph 表进行温度和电子密度的二维插值。 -use crate::math::interpolate::yint; +use crate::tlusty::math::interpolate::yint; /// Xenomorph 表插值。 /// diff --git a/src/math/irc.rs b/src/tlusty/math/irc.rs similarity index 98% rename from src/math/irc.rs rename to src/tlusty/math/irc.rs index e6384a8..87d8e2c 100644 --- a/src/math/irc.rs +++ b/src/tlusty/math/irc.rs @@ -4,7 +4,7 @@ //! //! 基于 Johnson (1972)。 -use crate::math::{expinx, szirc}; +use crate::tlusty::math::{expinx, szirc}; /// 氢原子碰撞电离激发速率。 /// diff --git a/src/math/lagran.rs b/src/tlusty/math/lagran.rs similarity index 100% rename from src/math/lagran.rs rename to src/tlusty/math/lagran.rs diff --git a/src/math/laguer.rs b/src/tlusty/math/laguer.rs similarity index 100% rename from src/math/laguer.rs rename to src/tlusty/math/laguer.rs diff --git a/src/math/lemini.rs b/src/tlusty/math/lemini.rs similarity index 99% rename from src/math/lemini.rs rename to src/tlusty/math/lemini.rs index a7deb60..ad5f077 100644 --- a/src/math/lemini.rs +++ b/src/tlusty/math/lemini.rs @@ -10,9 +10,9 @@ use std::fs::File; use std::io::{BufRead, BufReader}; -use crate::state::constants::*; -use crate::state::model::{HydPrf, StrAux}; -use crate::io::{FortranReader, Result, IoError}; +use crate::tlusty::state::constants::*; +use crate::tlusty::state::model::{HydPrf, StrAux}; +use crate::tlusty::io::{FortranReader, Result, IoError}; // ============================================================================ // 常量 diff --git a/src/math/levgrp.rs b/src/tlusty/math/levgrp.rs similarity index 99% rename from src/math/levgrp.rs rename to src/tlusty/math/levgrp.rs index e6953f3..85b19f5 100644 --- a/src/math/levgrp.rs +++ b/src/tlusty/math/levgrp.rs @@ -4,7 +4,7 @@ //! //! 计算能级组的总占据数和相对占据数。 -use crate::state::constants::{MDEPTH, MLEVEL, MLVEXP}; +use crate::tlusty::state::constants::{MDEPTH, MLEVEL, MLVEXP}; // ============================================================================ // LEVGRP 参数结构体 diff --git a/src/math/levset.rs b/src/tlusty/math/levset.rs similarity index 99% rename from src/math/levset.rs rename to src/tlusty/math/levset.rs index 26c0a52..88b2647 100644 --- a/src/math/levset.rs +++ b/src/tlusty/math/levset.rs @@ -15,7 +15,7 @@ //! - < -100: 分组处理 //! - < -200: 分组处理(不同方式) -use crate::state::constants::{MLEVEL, MDEPTH, MLVEXP}; +use crate::tlusty::state::constants::{MLEVEL, MDEPTH, MLVEXP}; /// LEVSET 的输入参数 pub struct LevsetParams { diff --git a/src/math/levsol.rs b/src/tlusty/math/levsol.rs similarity index 94% rename from src/math/levsol.rs rename to src/tlusty/math/levsol.rs index 43032f1..b7ad315 100644 --- a/src/math/levsol.rs +++ b/src/tlusty/math/levsol.rs @@ -4,10 +4,10 @@ //! //! 通过求解速率方程得到新的能级占据数。 -use crate::math::lineqs::lineqs_nr; -use crate::state::atomic::AtoPar; -use crate::state::config::{BasNum, InpPar}; -use crate::state::constants::MLEVEL; +use crate::tlusty::math::lineqs::lineqs_nr; +use crate::tlusty::state::atomic::AtoPar; +use crate::tlusty::state::config::{BasNum, InpPar}; +use crate::tlusty::state::constants::MLEVEL; // ============================================================================ // LEVSOL - 能级求解器 @@ -126,9 +126,9 @@ pub fn levsol( #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::AtoPar; - use crate::state::config::{BasNum, InpPar}; - use crate::state::constants::MLEVEL; + use crate::tlusty::state::atomic::AtoPar; + use crate::tlusty::state::config::{BasNum, InpPar}; + use crate::tlusty::state::constants::MLEVEL; fn create_test_atopar() -> AtoPar { let mut atopar = AtoPar::default(); diff --git a/src/math/lineqs.rs b/src/tlusty/math/lineqs.rs similarity index 100% rename from src/math/lineqs.rs rename to src/tlusty/math/lineqs.rs diff --git a/src/math/linpro.rs b/src/tlusty/math/linpro.rs similarity index 98% rename from src/math/linpro.rs rename to src/tlusty/math/linpro.rs index a0a21de..1de051a 100644 --- a/src/math/linpro.rs +++ b/src/tlusty/math/linpro.rs @@ -10,9 +10,9 @@ use super::profsp::profsp; use super::voigt::voigt; -use crate::state::atomic::AtomicData; -use crate::state::model::ModelState; -use crate::state::constants::*; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::state::constants::*; // ============================================================================ // 常量 diff --git a/src/math/linsel.rs b/src/tlusty/math/linsel.rs similarity index 100% rename from src/math/linsel.rs rename to src/tlusty/math/linsel.rs diff --git a/src/math/linspl.rs b/src/tlusty/math/linspl.rs similarity index 100% rename from src/math/linspl.rs rename to src/tlusty/math/linspl.rs diff --git a/src/math/locate.rs b/src/tlusty/math/locate.rs similarity index 100% rename from src/math/locate.rs rename to src/tlusty/math/locate.rs diff --git a/src/math/lucy.rs b/src/tlusty/math/lucy.rs similarity index 99% rename from src/math/lucy.rs rename to src/tlusty/math/lucy.rs index 241995d..b66e53b 100644 --- a/src/math/lucy.rs +++ b/src/tlusty/math/lucy.rs @@ -18,7 +18,7 @@ //! - DELH = 辐射流偏离 //! - DELTAT = 温度修正 -use crate::state::constants::{BN, BOLK, HALF, HK, MDEPTH, MFREQ, MTRANS, SIG4P, UN}; +use crate::tlusty::state::constants::{BN, BOLK, HALF, HK, MDEPTH, MFREQ, MTRANS, SIG4P, UN}; // ============================================================================ // 常量 diff --git a/src/math/lymlin.rs b/src/tlusty/math/lymlin.rs similarity index 99% rename from src/math/lymlin.rs rename to src/tlusty/math/lymlin.rs index 2497eba..b32b923 100644 --- a/src/math/lymlin.rs +++ b/src/tlusty/math/lymlin.rs @@ -4,7 +4,7 @@ //! //! 计算前 30 条 Lyman 线的不透明度和发射率贡献。 -use crate::state::constants::{MDEPTH, TWO}; +use crate::tlusty::state::constants::{MDEPTH, TWO}; // ============================================================================ // 常量参数 diff --git a/src/math/matcon.rs b/src/tlusty/math/matcon.rs similarity index 99% rename from src/math/matcon.rs rename to src/tlusty/math/matcon.rs index d72f0ca..547cd6a 100644 --- a/src/math/matcon.rs +++ b/src/tlusty/math/matcon.rs @@ -7,8 +7,8 @@ //! - 修改能量平衡行 (NRE) 和新的 DELTA 行 (NDEL) //! - 参考 Grenfell, Astr.Ap. 20, 293 (1972) -use crate::math::convec::{convec, ConvecConfig, ConvecOutput, ConvecParams}; -use crate::state::constants::{BOLK, HALF, UN}; +use crate::tlusty::math::convec::{convec, ConvecConfig, ConvecOutput, ConvecParams}; +use crate::tlusty::state::constants::{BOLK, HALF, UN}; /// MATCON 配置参数 #[derive(Debug, Clone)] diff --git a/src/math/matgen.rs b/src/tlusty/math/matgen.rs similarity index 93% rename from src/math/matgen.rs rename to src/tlusty/math/matgen.rs index d8b0d78..a2bd767 100644 --- a/src/math/matgen.rs +++ b/src/tlusty/math/matgen.rs @@ -17,13 +17,13 @@ //! 6. 调用 MATCON 添加对流贡献 //! 7. 如果 INSE > 0,处理统计平衡方程 -use crate::state::arrays::{ExpRad, MainArrays}; -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::MTOT; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; -use crate::state::alipar::FixAlp; +use crate::tlusty::state::arrays::{ExpRad, MainArrays}; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::MTOT; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::state::alipar::FixAlp; // ============================================================================ // 输入/输出结构体 @@ -294,11 +294,11 @@ mod tests { #[test] fn test_matgen_prepare_zeros_matrices() { - use crate::state::arrays::MainArrays; - use crate::state::config::TlustyConfig; - use crate::state::atomic::AtomicData; - use crate::state::model::ModelState; - use crate::state::arrays::ExpRad; + use crate::tlusty::state::arrays::MainArrays; + use crate::tlusty::state::config::TlustyConfig; + use crate::tlusty::state::atomic::AtomicData; + use crate::tlusty::state::model::ModelState; + use crate::tlusty::state::arrays::ExpRad; let mut config = TlustyConfig::default(); config.basnum.nd = 3; @@ -327,9 +327,9 @@ mod tests { #[test] fn test_matgen_skip_zero_populations_no_inse() { - use crate::state::config::TlustyConfig; - use crate::state::atomic::AtomicData; - use crate::state::arrays::MainArrays; + use crate::tlusty::state::config::TlustyConfig; + use crate::tlusty::state::atomic::AtomicData; + use crate::tlusty::state::arrays::MainArrays; let mut config = TlustyConfig::default(); config.matkey.nn0 = 5; diff --git a/src/math/matinv.rs b/src/tlusty/math/matinv.rs similarity index 100% rename from src/math/matinv.rs rename to src/tlusty/math/matinv.rs diff --git a/src/math/meanop.rs b/src/tlusty/math/meanop.rs similarity index 96% rename from src/math/meanop.rs rename to src/tlusty/math/meanop.rs index 77152d1..638cc9a 100644 --- a/src/math/meanop.rs +++ b/src/tlusty/math/meanop.rs @@ -2,9 +2,9 @@ //! //! 重构自 TLUSTY `meanop.f` -use crate::state::constants::{HK, MFREQ, MFREQC}; -use crate::state::FrqAll; -use crate::state::FreAux; +use crate::tlusty::state::constants::{HK, MFREQ, MFREQC}; +use crate::tlusty::state::FrqAll; +use crate::tlusty::state::FreAux; // ============================================================================ // MEANOP - 平均不透明度 diff --git a/src/math/meanopt.rs b/src/tlusty/math/meanopt.rs similarity index 99% rename from src/math/meanopt.rs rename to src/tlusty/math/meanopt.rs index e6fd811..e349ff8 100644 --- a/src/math/meanopt.rs +++ b/src/tlusty/math/meanopt.rs @@ -6,7 +6,7 @@ //! 然后计算 Rosseland 和 Planck 平均不透明度。 use super::opctab::{opctab, OpctabOutput}; -use crate::state::constants::{HK, UN}; +use crate::tlusty::state::constants::{HK, UN}; /// MEANOPT 输入参数 pub struct MeanoptParams<'a> { diff --git a/src/math/minv3.rs b/src/tlusty/math/minv3.rs similarity index 100% rename from src/math/minv3.rs rename to src/tlusty/math/minv3.rs diff --git a/src/math/mod.rs b/src/tlusty/math/mod.rs similarity index 90% rename from src/math/mod.rs rename to src/tlusty/math/mod.rs index bb90ca0..e9ff2ab 100644 --- a/src/math/mod.rs +++ b/src/tlusty/math/mod.rs @@ -54,15 +54,12 @@ mod contmd; mod contmp; mod convec; mod coolrt; -mod count_words; mod cross; -mod crosew; mod cspec; mod ctdata; mod cubic; mod dielrc; mod dietot; -mod divhe2; mod divstr; mod dopgam; mod dmder; @@ -75,16 +72,12 @@ mod eldenc; mod eldens; mod emat; mod entene; -mod eps; mod erfcx; mod expo; mod expint; -mod extprf; -mod feautr; mod ffcros; mod gauleg; mod getwrd; -mod gamhe; mod gami; mod getlal; mod gamsp; @@ -93,25 +86,19 @@ mod ghydop; mod gaunt; mod gntk; mod gridp; -mod griem; mod gomini; mod grcor; mod gvdw; -mod he2sew; mod greyd; mod h2minus; mod hephot; mod hedif; -mod heset; mod hesol6; mod hesolv; mod hidalg; pub mod indexx; mod ijali2; mod inifrs; -mod hylset; -mod inibla; -mod iniblm; mod inilam; mod inpdis; mod ijalis; @@ -119,9 +106,7 @@ mod inicom; mod inifrc; mod inifrt; mod inkul; -mod interp; -mod intrp; -mod ispec; +pub mod interp; mod inthyd; mod intlem; mod intxen; @@ -148,7 +133,6 @@ mod meanopt; mod minv3; mod mpartf; mod moleq; -mod molop; mod newdm; mod newdmt; mod newpop; @@ -163,7 +147,6 @@ mod opfrac; mod opadd; mod opadd0; mod partf; -mod partdv; mod opahst; mod opacfa; mod opacf0; @@ -187,7 +170,6 @@ mod princ; mod pzeval; mod prnt; mod prsent; -mod pretab; mod profil; mod profsp; mod quartc; @@ -195,9 +177,6 @@ mod pfni; mod pzert; mod pzevld; mod pfspec; -mod phe2; -mod phtion; -mod phtx; mod pgset; mod psolve; pub mod quit; @@ -250,13 +229,11 @@ mod setdrt; mod sghe12; mod sgmer; mod sgmer1; -mod sgmerg; mod sigave; -mod sigk; +pub mod sigk; mod sigmar; mod state; mod sffhmi; -mod sffhmi_old; mod tabint; mod taufr1; mod sffhmi_add; @@ -265,7 +242,6 @@ mod solve; mod solves; mod stark0; mod starka; -mod starkir; mod steqeq; mod temcor; mod temper; @@ -273,9 +249,8 @@ mod szirc; mod switch; mod tiopf; mod timing; -mod tint; mod tlocal; -mod topbas; +pub mod topbas; mod tdpini; mod traini; mod trmdrt; @@ -290,8 +265,6 @@ mod vern26; mod visini; mod voigt; mod voigte; -mod voigtk; -mod wtot; mod wn; mod wnstor; mod xk2dop; @@ -364,15 +337,12 @@ pub use contmd::{contmd_pure, ContmdConfig, ContmdParams, ContmdOutput, CubconDa pub use contmp::{contmp, ContmpConfig, ContmpParams, ContmpOutput}; pub use convec::{convec, convc1, ConvecConfig, ConvecParams, ConvecOutput, Convc1Output}; pub use coolrt::{coolrt_pure, CoolrtParams, CoolrtOutput, compute_taud, find_fe2_ion}; -pub use count_words::count_words; pub use cross::{cross, crossd}; -pub use crosew::{croset, crosew, CrosetParams, CrosewParams}; pub use cspec::cspec; pub use ctdata::{hction, hctrecom, CTION, CTRECOMB}; pub use cubic::{cubic, CubicCon}; pub use dielrc::dielrc; pub use dietot::{dietot, DietotParams}; -pub use divhe2::divhe2; pub use divstr::divstr; pub use dopgam::dopgam; pub use dmder::{dmder, DepthDeriv}; @@ -385,16 +355,12 @@ pub use elcor::{elcor_pure, ElcorConfig, ElcorParams, ElcorOutput}; pub use eldenc::{eldenc_pure, EldencConfig, EldencParams, EldencOutput, MTABT, MTABR}; pub use eldens::{eldens_pure, EldensParams, EldensOutput, EldensConfig}; pub use entene::{entene, EnteneOutput, EnteneParams}; -pub use eps::eps; pub use erfcx::{erfcin, erfcx}; pub use expo::expo; pub use expint::{eint, expinx}; -pub use extprf::extprf; -pub use feautr::{feautr, FeautrParams}; pub use ffcros::ffcros; pub use gauleg::gauleg; pub use getwrd::getwrd; -pub use gamhe::{gamhe, GamheData, GamheParams}; pub use gami::gami; pub use getlal::{getlal, GetlalParams, GetlalResult}; pub use gamsp::gamsp; @@ -403,7 +369,6 @@ pub use ghydop::{ghydop, GhydopParams, GhydopResult}; pub use gaunt::gaunt; pub use gntk::gntk; pub use gridp::gridp; -pub use griem::{griem, GriemParams}; pub use gomini::{gomini, GominiParams, GominiResult}; pub use gvdw::{gvdw, GvdwParams}; pub use grcor::grcor; @@ -412,18 +377,13 @@ pub use greyd::{ GreydConfig, GreydState, GreydOutput, GreydIterOutput, }; pub use h2minus::h2minus; -pub use he2sew::{he2sew, He2WindowParams}; pub use hephot::hephot; pub use hedif::{hedif, hedif_io, HedifParams, HedifResult}; -pub use heset::{heset, HesetInput, HesetOutput}; -pub use hylset::{hylset, HylsetParams, HylsetOutput}; pub use hesol6::{hesol6, Hesol6Aux, Hesol6Output, Hesol6Params}; pub use hesolv::{hesolv_pure, HesolvAux, HesolvConfig, HesolvModelState, HesolvAtomicParams, HesolvParams, HesolvOutput}; pub use hidalg::hidalg; pub use indexx::indexx; pub use inifrs::{inifrs, InifrsConfig, InifrsFreqControl, InifrsOutput}; -pub use inibla::{inibla, IniblaParams, IniblaOutput, compute_doppler_width, compute_vdw_width, compute_planck}; -pub use iniblm::{iniblm, IniblmParams, IniblmOutput, compute_molecular_doppler_width, compute_molecular_planck}; pub use inilam::{inilam_pure, InilamConfig, InilamModelState, InilamAtomicParams, InilamFreqParams, InilamOutput}; pub use inpdis::{inpdis_pure, inpdis_io, InpDisParams, InpDisResult}; pub use ijalis::{ijalis, ijalis_io, IjalisParams, IjalisOutput}; @@ -433,8 +393,6 @@ pub use inifrc::{inifrc, InifrcParams, InifrcOutput}; pub use inifrt::{inifrt, InifrtParams, InifrtOutput}; pub use inkul::{inkul, inkul_pure, InkulParams, InkulOutput, ColKur, Lined, LineRecord}; pub use interp::interp; -pub use intrp::{intrp, intrp_to_vec}; -pub use ispec::{ispec, PROFILE_VOIGT, PROFILE_HYDROGEN}; pub use inthyd::inthyd; pub use intlem::intlem; pub use intxen::intxen; @@ -462,7 +420,6 @@ pub use meanopt::{meanopt, MeanoptModelState, MeanoptOutput, MeanoptParams}; pub use minv3::minv3; pub use mpartf::{mpartf, MpartfResult}; pub use moleq::{moleq_pure, MoleqParams, MoleqOutput, MoleculeEqData, parse_molecule_data}; -pub use molop::{molop_pure, MolopConfig, MolopModelState, MolopFreqParams, MolLineData, MolModelState, MolopOutput}; pub use newdmt::{newdmt_pure, NewdmtConfig, NewdmtModelState, NewdmtPrsAux, NewdmtFactrs}; pub use newpop::{newpop, NewpopParams, NewpopResult}; pub use osccor::{osccor, OsccorParams, OsccorOutput, format_oscillation_message}; @@ -470,7 +427,6 @@ pub use opfrac::{opfrac_pure, opfrac_init, OpfracParams, OpfracOutput, PfOptB}; pub use opadd::{opadd, OpaddInput, OpaddModel, OpaddSwitches, OpaddOutput, OpaddCache}; pub use opadd0::{opadd0, Opadd0Params, Opadd0FreqData, Opadd0OutputState}; pub use partf::{partf_pure, PartfParams, PartfOutput, PartfMode}; -pub use partdv::{partdv, partdv_with_params, PartdvParams}; pub use opahst::{opahst, OpahstParams, OpahstOutput, LymanConfig, BalmerConfig, NLMX}; pub use opacfa::{opacfa, OpacfaParams, OpacfaOutput}; pub use opacf0::{opacf0, Opacf0Config, Opacf0ModelState, Opacf0AtomicParams, Opacf0FreqParams, Opacf0Output}; @@ -508,16 +464,12 @@ pub use prchan::{prchan, PrchanParams, PrchanOutput, format_change_report}; pub use princ::{princ_pure, PrincParams, PrincOutput, PrincTransResult, PrincDepthResult, format_princ_header, format_princ_line}; pub use prsent::{prsent, PrsentParams, PrsentOutput, ThermTables}; -pub use pretab::{pretab, VoigtTables}; pub use profil::{profil, ProfilParams}; pub use profsp::{profsp, ProfspParams}; pub use pfni::pfni; pub use pzert::pzert; pub use pzevld::pzevld; pub use pfspec::pfspec; -pub use phe2::{phe2, Phe2Params, Phe2Output}; -pub use phtion::{phtion, phtion_pure, PhtionParams, PhtionOutput, PhotcsData, MFRQ}; -pub use phtx::{phtx, PhtxParams, PhtxOutput, PhtxState, LevelPhotoData, HhePhotoData}; pub use pgset::{pgset, PgsetParams, PgsetOutput, MDEPTH}; pub use psolve::psolve; pub use quartc::quartc; @@ -584,7 +536,6 @@ pub use sbfoh::sbfoh; pub use setdrt::setdrt; pub use sghe12::sghe12; pub use sgmer::{sgmer0, sgmer1, sgmerd}; -pub use sgmerg::{sgmerg, sgmerg_pure, SgmergParams}; pub use sigmar::sigmar; pub use sigave::{sigave_from_data, sigave_pure, SigaveParams, SigaveOutput}; pub use sigk::{sigk, SigkParams}; @@ -594,14 +545,12 @@ pub use state::{ get_max_ionization, get_element_symbol, }; pub use sffhmi::sffhmi; -pub use sffhmi_old::sffhmi_old; pub use sffhmi_add::sffhmi_add; pub use spsigk::spsigk; pub use tabint::{tabint, IntCff, OpacTable, TabintParams}; pub use taufr1::{taufr1, Taufr1Params, Taufr1Result}; pub use stark0::stark0; pub use starka::starka; -pub use starkir::starkir; pub use steqeq::{steqeq_pure, SteqeqParams, SteqeqOutput, SteqeqConfig, MAX_LEVEL}; pub use temcor::{temcor_pure, TemcorConfig, TemcorParams, TemcorOutput, TemcorDepthResult, format_temcor_line}; @@ -610,7 +559,6 @@ pub use szirc::szirc; pub use switch::{switch_init, switch_update, SwitchInitParams, SwitchUpdateParams, SwitchOutput, format_crsw_message}; pub use tiopf::tiopf; pub use timing::{timing, TimingParams, TimingOutput, TimingMode, format_timing_message, reset_timer}; -pub use tint::{tint, TintResult}; pub use tlocal::{ tlocal, TlocalConfig, TlocalFactrs, TlocalFlxaux, TlocalModelState, TlocalParams, }; @@ -628,8 +576,6 @@ pub use vern26::vern26; pub use visini::{visini, VisiniParams, VisiniOutput}; pub use voigt::voigt; pub use voigte::voigte; -pub use voigtk::{voigtk, MVOI}; -pub use wtot::{wtot, LINE_4471, LINE_4387, LINE_4026, LINE_4922}; pub use wn::wn; pub use wnstor::wnstor; pub use xk2dop::xk2dop; diff --git a/src/math/moleq.rs b/src/tlusty/math/moleq.rs similarity index 98% rename from src/math/moleq.rs rename to src/tlusty/math/moleq.rs index d3ee04e..bb1d58b 100644 --- a/src/math/moleq.rs +++ b/src/tlusty/math/moleq.rs @@ -7,9 +7,9 @@ //! - 计算电子密度、熵、内能 //! - 计算质量密度和平均分子量 -use crate::math::mpartf::{mpartf, MpartfResult}; -use crate::math::russel::{russel, MoleculeData, RusselParams, RusselOutput, MAX_ELEM, MAX_MOL}; -use crate::state::constants::{BOLK, HMASS}; +use crate::tlusty::math::mpartf::{mpartf, MpartfResult}; +use crate::tlusty::math::russel::{russel, MoleculeData, RusselParams, RusselOutput, MAX_ELEM, MAX_MOL}; +use crate::tlusty::state::constants::{BOLK, HMASS}; /// 常量 const ECONST: f64 = 4.342945e-1; diff --git a/src/math/mpartf.rs b/src/tlusty/math/mpartf.rs similarity index 100% rename from src/math/mpartf.rs rename to src/tlusty/math/mpartf.rs diff --git a/src/math/newdm.rs b/src/tlusty/math/newdm.rs similarity index 99% rename from src/math/newdm.rs rename to src/tlusty/math/newdm.rs index 84de01d..9e82a76 100644 --- a/src/math/newdm.rs +++ b/src/tlusty/math/newdm.rs @@ -15,7 +15,7 @@ //! //! 同时计算新深度尺度的所有必要状态参数(密度、z、压力、不透明度、温度)。 -use crate::state::constants::{HALF, MDEPTH, TWO, UN}; +use crate::tlusty::state::constants::{HALF, MDEPTH, TWO, UN}; // ============================================================================ // 常量 diff --git a/src/math/newdmt.rs b/src/tlusty/math/newdmt.rs similarity index 99% rename from src/math/newdmt.rs rename to src/tlusty/math/newdmt.rs index 791c6fb..ef6d96b 100644 --- a/src/math/newdmt.rs +++ b/src/tlusty/math/newdmt.rs @@ -7,9 +7,9 @@ //! 计算新的 m-scale(柱质量密度),基于新网格更好地表示温度变化。 //! 使用 GRIDP 函数找到最优网格点分布。 -use crate::math::gridp::gridp; -use crate::math::interp::interp; -use crate::state::constants::{HALF, MDEPTH, TWO, UN}; +use crate::tlusty::math::gridp::gridp; +use crate::tlusty::math::interp::interp; +use crate::tlusty::state::constants::{HALF, MDEPTH, TWO, UN}; // ============================================================================ // 常量 diff --git a/src/math/newpop.rs b/src/tlusty/math/newpop.rs similarity index 96% rename from src/math/newpop.rs rename to src/tlusty/math/newpop.rs index 64a509f..cb666d0 100644 --- a/src/math/newpop.rs +++ b/src/tlusty/math/newpop.rs @@ -3,10 +3,10 @@ //! 重构自 TLUSTY `newpop.f` //! 更新占据数数组,计算最大相对变化和 b 因子。 -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{MDEPTH, MLEVEL, UN}; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{MDEPTH, MLEVEL, UN}; +use crate::tlusty::state::model::ModelState; /// NEWPOP 参数结构体 pub struct NewpopParams<'a> { diff --git a/src/math/odf1.rs b/src/tlusty/math/odf1.rs similarity index 95% rename from src/math/odf1.rs rename to src/tlusty/math/odf1.rs index 8a260ab..a7eba66 100644 --- a/src/math/odf1.rs +++ b/src/tlusty/math/odf1.rs @@ -14,17 +14,17 @@ //! - `ID` - 深度索引 //! - `ODF` - 输出:插值到显式频率集的不透明度分布函数 -use crate::state::atomic::AtomicData; -use crate::state::config::InpPar; -use crate::state::constants::{CAS, H, HALF, UN}; -use crate::state::model::{ModPar, StrAux}; -use crate::state::odfpar::{OdfCtr, OdfMod, OdfStk, OdfFrq}; -use crate::state::{MFREQ, MFRO, NLMX, MDEPTH}; -use crate::math::divstr::divstr; -use crate::math::dwnfr::dwnfr; -use crate::math::odfhst::odfhst; -use crate::math::sigk::{sigk, SigkParams}; -use crate::math::topbas::OpData; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::InpPar; +use crate::tlusty::state::constants::{CAS, H, HALF, UN}; +use crate::tlusty::state::model::{ModPar, StrAux}; +use crate::tlusty::state::odfpar::{OdfCtr, OdfMod, OdfStk, OdfFrq}; +use crate::tlusty::state::{MFREQ, MFRO, NLMX, MDEPTH}; +use crate::tlusty::math::divstr::divstr; +use crate::tlusty::math::dwnfr::dwnfr; +use crate::tlusty::math::odfhst::odfhst; +use crate::tlusty::math::sigk::{sigk, SigkParams}; +use crate::tlusty::math::topbas::OpData; // ============================================================================ // 常量 @@ -376,11 +376,11 @@ pub fn odf1(params: &Odf1Params, cache: &mut Odf1Cache) -> Odf1Output { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::AtomicData; - use crate::state::config::InpPar; - use crate::state::model::{ModPar, StrAux}; - use crate::state::odfpar::{OdfCtr, OdfMod, OdfStk, OdfFrq}; - use crate::math::topbas::OpData; + use crate::tlusty::state::atomic::AtomicData; + use crate::tlusty::state::config::InpPar; + use crate::tlusty::state::model::{ModPar, StrAux}; + use crate::tlusty::state::odfpar::{OdfCtr, OdfMod, OdfStk, OdfFrq}; + use crate::tlusty::math::topbas::OpData; fn create_test_params<'a>( atomic: &'a AtomicData, diff --git a/src/math/odffr.rs b/src/tlusty/math/odffr.rs similarity index 99% rename from src/math/odffr.rs rename to src/tlusty/math/odffr.rs index 3bd03f0..57d0e35 100644 --- a/src/math/odffr.rs +++ b/src/tlusty/math/odffr.rs @@ -11,7 +11,7 @@ //! - IL: 下能级索引 //! - IU: 上能级索引(通常是下一离子的基态或 ODF 形式中的平均能级) -use crate::state::constants::{HALF, MFRO}; +use crate::tlusty::state::constants::{HALF, MFRO}; /// 常量 (从 Fortran PARAMETER 语句) /// FRH = 3.28805D15 diff --git a/src/math/odfhst.rs b/src/tlusty/math/odfhst.rs similarity index 96% rename from src/math/odfhst.rs rename to src/tlusty/math/odfhst.rs index e87c959..d7206d4 100644 --- a/src/math/odfhst.rs +++ b/src/tlusty/math/odfhst.rs @@ -4,9 +4,9 @@ //! //! 用于 ODF1 的辅助例程,替代多次调用 STARKA。 -use crate::state::constants::{TWO, UN}; -use crate::state::model::StrAux; -use crate::state::MFRO; +use crate::tlusty::state::constants::{TWO, UN}; +use crate::tlusty::state::model::StrAux; +use crate::tlusty::state::MFRO; /// ODF Stark 展宽辅助函数。 /// diff --git a/src/math/odfhyd.rs b/src/tlusty/math/odfhyd.rs similarity index 98% rename from src/math/odfhyd.rs rename to src/tlusty/math/odfhyd.rs index 219161b..c07df42 100644 --- a/src/math/odfhyd.rs +++ b/src/tlusty/math/odfhyd.rs @@ -7,8 +7,8 @@ use super::divstr::divstr; use super::indexx::indexx; use super::odfhst::odfhst; -use crate::state::constants::{HALF, TWO, UN}; -use crate::state::model::StrAux; +use crate::tlusty::state::constants::{HALF, TWO, UN}; +use crate::tlusty::state::model::StrAux; // 物理常量 /// 玻尔兹曼常数 / 氢质量 diff --git a/src/math/odfhys.rs b/src/tlusty/math/odfhys.rs similarity index 96% rename from src/math/odfhys.rs rename to src/tlusty/math/odfhys.rs index 8c3b3e8..5d74d95 100644 --- a/src/math/odfhys.rs +++ b/src/tlusty/math/odfhys.rs @@ -5,11 +5,11 @@ //! //! 注意:此模块是 ODF 处理的核心模块,涉及频率网格设置和 Stark 展宽参数计算。 -use crate::math::stark0::stark0; -use crate::state::atomic::{IonPar, LevPar, TraPar}; -use crate::state::config::BasNum; -use crate::state::constants::{NLMX, MFRO}; -use crate::state::odfpar::{OdfFrq, OdfMod, OdfStk}; +use crate::tlusty::math::stark0::stark0; +use crate::tlusty::state::atomic::{IonPar, LevPar, TraPar}; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::{NLMX, MFRO}; +use crate::tlusty::state::odfpar::{OdfFrq, OdfMod, OdfStk}; /// ODFHYS 参数结构体(简化版) pub struct OdfhysParams<'a> { @@ -306,10 +306,10 @@ pub fn odfhys_full( #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::{IonPar, LevPar, TraPar}; - use crate::state::config::BasNum; - use crate::state::constants::{MFREQ, MLEVEL, MTRANS, MHOD}; - use crate::state::odfpar::{OdfFrq, OdfMod, OdfStk}; + use crate::tlusty::state::atomic::{IonPar, LevPar, TraPar}; + use crate::tlusty::state::config::BasNum; + use crate::tlusty::state::constants::{MFREQ, MLEVEL, MTRANS, MHOD}; + use crate::tlusty::state::odfpar::{OdfFrq, OdfMod, OdfStk}; fn create_test_state() -> (BasNum, IonPar, LevPar, TraPar, OdfFrq, OdfMod, OdfStk, Vec) { let mut basnum = BasNum::default(); diff --git a/src/math/odfmer.rs b/src/tlusty/math/odfmer.rs similarity index 100% rename from src/math/odfmer.rs rename to src/tlusty/math/odfmer.rs diff --git a/src/math/opacf0.rs b/src/tlusty/math/opacf0.rs similarity index 99% rename from src/math/opacf0.rs rename to src/tlusty/math/opacf0.rs index 5f39fa1..1dc96bd 100644 --- a/src/math/opacf0.rs +++ b/src/tlusty/math/opacf0.rs @@ -15,7 +15,7 @@ //! 6. 初始化谱线不透明度 //! 7. 循环频率点计算总不透明度 -use crate::state::constants::{HK, H, UN, SIGE, NLMX, MFREQ, MFREQL, MLEVEL, MTRANS, MION, MMER}; +use crate::tlusty::state::constants::{HK, H, UN, SIGE, NLMX, MFREQ, MFREQL, MLEVEL, MTRANS, MION, MMER}; // 物理常数 (来自 opacf0.f) /// Rydberg 频率 diff --git a/src/math/opacf1.rs b/src/tlusty/math/opacf1.rs similarity index 99% rename from src/math/opacf1.rs rename to src/tlusty/math/opacf1.rs index b286b32..3dbe62d 100644 --- a/src/math/opacf1.rs +++ b/src/tlusty/math/opacf1.rs @@ -5,7 +5,7 @@ //! 对于给定频率索引 IJ,计算所有深度点的吸收、发射和散射系数。 //! 这与 OPACF0 互补:OPACF0 计算单深度所有频率,OPACF1 计算单频率所有深度。 -use crate::state::constants::{UN, SIGE, NLMX, MFREQ, MLEVEL, MTRANS, MION, MMER, MDEPTH}; +use crate::tlusty::state::constants::{UN, SIGE, NLMX, MFREQ, MLEVEL, MTRANS, MION, MMER, MDEPTH}; // 物理常数 /// 光速 × 1e14 @@ -294,13 +294,13 @@ fn crossd( /// 计算 H⁻ 自由-自由不透明度 SFFHMI fn sffhmi(popul_h: f64, fr: f64, t: f64) -> f64 { // 调用 sffhmi 模块的函数 - crate::math::sffhmi::sffhmi(popul_h, fr, t) + crate::tlusty::math::sffhmi::sffhmi(popul_h, fr, t) } /// 计算自由-自由截面 FFCROS fn ffcros(ion: i32, it: i32, t: f64, fr: f64) -> f64 { // 调用 ffcros 模块的函数 - crate::math::ffcros::ffcros(ion, it, t, fr) + crate::tlusty::math::ffcros::ffcros(ion, it, t, fr) } /// 计算氢 Gaunt 因子 GFREE1 diff --git a/src/math/opacfa.rs b/src/tlusty/math/opacfa.rs similarity index 99% rename from src/math/opacfa.rs rename to src/tlusty/math/opacfa.rs index acacaba..12ea12a 100644 --- a/src/math/opacfa.rs +++ b/src/tlusty/math/opacfa.rs @@ -15,7 +15,7 @@ //! 6. 计算谱线贡献 (如果 icoolp != 0) //! 7. 最终不透明度计算 -use crate::state::constants::{HK, UN}; +use crate::tlusty::state::constants::{HK, UN}; // 物理常数 const C14: f64 = 2.99793e14; diff --git a/src/math/opacfd.rs b/src/tlusty/math/opacfd.rs similarity index 99% rename from src/math/opacfd.rs rename to src/tlusty/math/opacfd.rs index 324381d..c00e8b2 100644 --- a/src/math/opacfd.rs +++ b/src/tlusty/math/opacfd.rs @@ -18,7 +18,7 @@ //! - `dabft`, `dabfn` - 自由-自由导数 //! - `absot` - 存储的不透明度 -use crate::state::constants::{MDEPTH, MFREQ, MLEVEL}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MLEVEL}; // 常量 const C14: f64 = 2.99793e14; diff --git a/src/math/opacfl.rs b/src/tlusty/math/opacfl.rs similarity index 100% rename from src/math/opacfl.rs rename to src/tlusty/math/opacfl.rs diff --git a/src/math/opact1.rs b/src/tlusty/math/opact1.rs similarity index 99% rename from src/math/opact1.rs rename to src/tlusty/math/opact1.rs index 5ff09e4..40615ac 100644 --- a/src/math/opact1.rs +++ b/src/tlusty/math/opact1.rs @@ -5,7 +5,7 @@ //! 对于给定频率点,计算所有深度点的吸收、发射和散射系数。 use super::opctab::{opctab, OpctabParams, OpctabTableData, OpctabModelState, OpctabOutput}; -use crate::state::constants::{HK, UN}; +use crate::tlusty::state::constants::{HK, UN}; /// OPACT1 输入参数 pub struct Opact1Params<'a> { diff --git a/src/math/opactd.rs b/src/tlusty/math/opactd.rs similarity index 99% rename from src/math/opactd.rs rename to src/tlusty/math/opactd.rs index 428c693..622bb3e 100644 --- a/src/math/opactd.rs +++ b/src/tlusty/math/opactd.rs @@ -5,7 +5,7 @@ //! 与 OPACT1 类似,但额外计算温度和密度导数。 use super::opctab::{opctab, OpctabParams, OpctabTableData, OpctabModelState, OpctabOutput}; -use crate::state::constants::{HK, UN}; +use crate::tlusty::state::constants::{HK, UN}; /// 微分步长 const DELT: f64 = 1e-3; diff --git a/src/math/opactr.rs b/src/tlusty/math/opactr.rs similarity index 98% rename from src/math/opactr.rs rename to src/tlusty/math/opactr.rs index 4894c4e..666f05b 100644 --- a/src/math/opactr.rs +++ b/src/tlusty/math/opactr.rs @@ -23,7 +23,7 @@ //! - DSCT1: 散射系数对温度的导数 //! - DEMT1: 发射系数对温度的导数 -use crate::state::constants::{MDEPTH, MFREQ, MLEVEL, BN, HALF, HK, UN}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, MLEVEL, BN, HALF, HK, UN}; /// ΔT/T 用于数值导数计算 const DELT: f64 = 1.0e-2; @@ -336,7 +336,7 @@ pub fn opactr_pure( let an = if config.idisk > 0 { model_state.antp[id] } else { - model_state.pgs[id] / (crate::state::constants::BOLK * t) + model_state.pgs[id] / (crate::tlusty::state::constants::BOLK * t) }; // 计算电子密度和总密度(简化版本) @@ -400,7 +400,7 @@ pub fn opactr_pure( model_state.dens[id] = dens0[id]; let t = model_state.temp[id]; let an = dens0[id] / model_state.wmm[id] + elec0[id]; - model_state.pgs[id] = an * crate::state::constants::BOLK * t; + model_state.pgs[id] = an * crate::tlusty::state::constants::BOLK * t; } } else { // 盘模型 @@ -408,7 +408,7 @@ pub fn opactr_pure( let t = model_state.temp[id]; let an = model_state.antp[id]; // 实际需要调用 ELDENS - model_state.pgs[id] = an * crate::state::constants::BOLK * t; + model_state.pgs[id] = an * crate::tlusty::state::constants::BOLK * t; } } diff --git a/src/math/opadd.rs b/src/tlusty/math/opadd.rs similarity index 99% rename from src/math/opadd.rs rename to src/tlusty/math/opadd.rs index 651faa6..f4188a5 100644 --- a/src/math/opadd.rs +++ b/src/tlusty/math/opadd.rs @@ -12,7 +12,7 @@ //! - CIA (碰撞诱导吸收) 不透明度 use super::{cia_h2h, cia_h2h2, cia_h2he, cia_hhe, h2minus, sbfch, sbfoh}; -use crate::math::sffhmi::sffhmi; +use crate::tlusty::math::sffhmi::sffhmi; // ============================================================================ // 常量 diff --git a/src/math/opadd0.rs b/src/tlusty/math/opadd0.rs similarity index 99% rename from src/math/opadd0.rs rename to src/tlusty/math/opadd0.rs index 94f05df..85ae1d7 100644 --- a/src/math/opadd0.rs +++ b/src/tlusty/math/opadd0.rs @@ -10,7 +10,7 @@ //! - H2+ 束缚-自由和自由-自由 //! - He- 自由-自由 -use crate::math::sbfhmi::sbfhmi; +use crate::tlusty::math::sbfhmi::sbfhmi; /// 常量 (从 Fortran PARAMETER 语句) /// H I Rayleigh 散射阈值频率 diff --git a/src/math/opahst.rs b/src/tlusty/math/opahst.rs similarity index 99% rename from src/math/opahst.rs rename to src/tlusty/math/opahst.rs index ddf3226..31b569f 100644 --- a/src/math/opahst.rs +++ b/src/tlusty/math/opahst.rs @@ -7,7 +7,7 @@ //! - 配置 M1FILE 和 M2FILE 数组 //! - 计算 Stark 参数 -use crate::math::stark0::stark0; +use crate::tlusty::math::stark0::stark0; /// 最大谱线数(与 Fortran NLMX 一致) pub const NLMX: usize = 30; diff --git a/src/math/opaini.rs b/src/tlusty/math/opaini.rs similarity index 100% rename from src/math/opaini.rs rename to src/tlusty/math/opaini.rs diff --git a/src/math/opctab.rs b/src/tlusty/math/opctab.rs similarity index 99% rename from src/math/opctab.rs rename to src/tlusty/math/opctab.rs index 4749c61..af7c2a1 100644 --- a/src/math/opctab.rs +++ b/src/tlusty/math/opctab.rs @@ -9,8 +9,8 @@ //! //! 这是一个简化版本,所有插值都是线性的,fortran中也是线性插值。 -use crate::math::rayleigh::{rayleigh, RayleighParams}; -use crate::state::model::{EosPar, RaySct}; +use crate::tlusty::math::rayleigh::{rayleigh, RayleighParams}; +use crate::tlusty::state::model::{EosPar, RaySct}; /// 参考频率 (FRRAY0) const FRRAY0: f64 = 5.0872638e14; diff --git a/src/math/opdata.rs b/src/tlusty/math/opdata.rs similarity index 99% rename from src/math/opdata.rs rename to src/tlusty/math/opdata.rs index 876b830..b480a15 100644 --- a/src/math/opdata.rs +++ b/src/tlusty/math/opdata.rs @@ -3,7 +3,7 @@ //! 重构自 TLUSTY `opdata.f` //! 从 RBF.DAT 文件读取光致电离截面拟合系数。 -use crate::io::{FortranReader, Result}; +use crate::tlusty::io::{FortranReader, Result}; use std::io::BufReader; use std::fs::File; diff --git a/src/math/opfrac.rs b/src/tlusty/math/opfrac.rs similarity index 99% rename from src/math/opfrac.rs rename to src/tlusty/math/opfrac.rs index 46f52c7..c6dd915 100644 --- a/src/math/opfrac.rs +++ b/src/tlusty/math/opfrac.rs @@ -8,7 +8,7 @@ //! - 计算配分函数(通过插值) //! - 计算电离分数 -use crate::io::{Result, IoError}; +use crate::tlusty::io::{Result, IoError}; // ============================================================================ // 常量 diff --git a/src/math/osccor.rs b/src/tlusty/math/osccor.rs similarity index 100% rename from src/math/osccor.rs rename to src/tlusty/math/osccor.rs diff --git a/src/math/output.rs b/src/tlusty/math/output.rs similarity index 98% rename from src/math/output.rs rename to src/tlusty/math/output.rs index aa52af9..b91e687 100644 --- a/src/math/output.rs +++ b/src/tlusty/math/output.rs @@ -3,9 +3,9 @@ //! 重构自 TLUSTY `output.f` //! 将模型写入文件,可作为后续运行的输入模型。 -use crate::io::{FortranWriter, Result, format_exp_fortran}; -use crate::state::config::TlustyConfig; -use crate::state::model::ModelState; +use crate::tlusty::io::{FortranWriter, Result, format_exp_fortran}; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::model::ModelState; use std::io::Write; /// OUTPUT 参数结构体 diff --git a/src/math/partf.rs b/src/tlusty/math/partf.rs similarity index 99% rename from src/math/partf.rs rename to src/tlusty/math/partf.rs index 95d710b..3101444 100644 --- a/src/math/partf.rs +++ b/src/tlusty/math/partf.rs @@ -12,8 +12,8 @@ //! //! Traving, Baschek, and Holweger, Abhand. Hamburg. Sternwarte. Band VIII, Nr. 1 (1966) -use crate::data; -use crate::io::{Result, IoError}; +use crate::tlusty::data; +use crate::tlusty::io::{Result, IoError}; // ============================================================================ // 常量 diff --git a/src/math/pfcno.rs b/src/tlusty/math/pfcno.rs similarity index 99% rename from src/math/pfcno.rs rename to src/tlusty/math/pfcno.rs index 4f292b5..f9f4622 100644 --- a/src/math/pfcno.rs +++ b/src/tlusty/math/pfcno.rs @@ -7,7 +7,7 @@ //! - He-like 离子: N VI, O VII //! - O VI (使用 Sparks & Fischel 1971 数据表) -use crate::state::constants::{BOLK, EH, NLMX}; +use crate::tlusty::state::constants::{BOLK, EH, NLMX}; /// CNO 元素高电离态配分函数。 /// diff --git a/src/math/pffe.rs b/src/tlusty/math/pffe.rs similarity index 94% rename from src/math/pffe.rs rename to src/tlusty/math/pffe.rs index 5d389e6..5b9b0e7 100644 --- a/src/math/pffe.rs +++ b/src/tlusty/math/pffe.rs @@ -5,7 +5,7 @@ //! //! 在温度和电子密度网格上进行二维插值计算配分函数。 -use crate::data::{PFFE_NCA as NCA, PFFE_PN as PN, PFFE_P4A as P4A, PFFE_P4B as P4B, PFFE_P5A as P5A, PFFE_P5B as P5B, PFFE_P6A as P6A, PFFE_P6B as P6B, PFFE_P7A as P7A, PFFE_P7B as P7B, PFFE_P8A as P8A, PFFE_P8B as P8B, PFFE_P9A as P9A, PFFE_P9B as P9B, PFFE_TT as TT}; +use crate::tlusty::data::{PFFE_NCA as NCA, PFFE_PN as PN, PFFE_P4A as P4A, PFFE_P4B as P4B, PFFE_P5A as P5A, PFFE_P5B as P5B, PFFE_P6A as P6A, PFFE_P6B as P6B, PFFE_P7A as P7A, PFFE_P7B as P7B, PFFE_P8A as P8A, PFFE_P8B as P8B, PFFE_P9A as P9A, PFFE_P9B as P9B, PFFE_TT as TT}; // 常量 const XEN: f64 = 2.302585093; // ln(10) diff --git a/src/math/pfheav.rs b/src/tlusty/math/pfheav.rs similarity index 99% rename from src/math/pfheav.rs rename to src/tlusty/math/pfheav.rs index 72678a1..eb6fac2 100644 --- a/src/math/pfheav.rs +++ b/src/tlusty/math/pfheav.rs @@ -8,7 +8,7 @@ //! - 使用 Kurucz 的配分函数系数表 //! - 考虑等离子体 Debye 屏蔽效应 -use crate::io::{Result, IoError}; +use crate::tlusty::io::{Result, IoError}; // ============================================================================ // 常量 diff --git a/src/math/pfni.rs b/src/tlusty/math/pfni.rs similarity index 99% rename from src/math/pfni.rs rename to src/tlusty/math/pfni.rs index 328e3fe..b2cc3d7 100644 --- a/src/math/pfni.rs +++ b/src/tlusty/math/pfni.rs @@ -5,7 +5,7 @@ //! //! 配分函数只依赖于温度(没有密度依赖)。 -use crate::data::{ +use crate::tlusty::data::{ PFNI_G0, PFNI_P4A, PFNI_P4B, PFNI_P5A, PFNI_P5B, PFNI_P6A, PFNI_P6B, PFNI_P7A, PFNI_P7B, PFNI_P8A, PFNI_P8B, PFNI_P9A, PFNI_P9B, PFNI_XEN, PFNI_XMIL, }; diff --git a/src/math/pfspec.rs b/src/tlusty/math/pfspec.rs similarity index 100% rename from src/math/pfspec.rs rename to src/tlusty/math/pfspec.rs diff --git a/src/math/pgset.rs b/src/tlusty/math/pgset.rs similarity index 99% rename from src/math/pgset.rs rename to src/tlusty/math/pgset.rs index 81ac3b6..f54c96c 100644 --- a/src/math/pgset.rs +++ b/src/tlusty/math/pgset.rs @@ -4,7 +4,7 @@ //! //! 功能:迭代计算气体压力分布,使用三对角矩阵求解器。 -use crate::math::tridag::tridag; +use crate::tlusty::math::tridag::tridag; /// 最大深度数(与 Fortran MDEPTH 一致) pub const MDEPTH: usize = 100; diff --git a/src/math/prchan.rs b/src/tlusty/math/prchan.rs similarity index 100% rename from src/math/prchan.rs rename to src/tlusty/math/prchan.rs diff --git a/src/math/prd.rs b/src/tlusty/math/prd.rs similarity index 99% rename from src/math/prd.rs rename to src/tlusty/math/prd.rs index ac453a9..94b4c86 100644 --- a/src/math/prd.rs +++ b/src/tlusty/math/prd.rs @@ -5,7 +5,7 @@ //! 在 PRD 情况下修改线发射系数和散射系数。 use super::gami::gami; -use crate::state::constants::{TWO, UN}; +use crate::tlusty::state::constants::{TWO, UN}; // 物理常量 /// Einstein A21 系数 diff --git a/src/math/prdini.rs b/src/tlusty/math/prdini.rs similarity index 99% rename from src/math/prdini.rs rename to src/tlusty/math/prdini.rs index 49fe5e2..e2b4b82 100644 --- a/src/math/prdini.rs +++ b/src/tlusty/math/prdini.rs @@ -4,7 +4,7 @@ //! //! 选择需要进行 PRD 处理的跃迁,并初始化相关数组。 -use crate::state::constants::{MDEPTH, MTRANS}; +use crate::tlusty::state::constants::{MDEPTH, MTRANS}; /// PRD 初始化。 /// diff --git a/src/math/princ.rs b/src/tlusty/math/princ.rs similarity index 97% rename from src/math/princ.rs rename to src/tlusty/math/princ.rs index 778d94c..872dcf2 100644 --- a/src/math/princ.rs +++ b/src/tlusty/math/princ.rs @@ -15,17 +15,17 @@ //! - 净源函数 //! - 净加热率 -use crate::state::constants::{UN, HALF, HK, BOLK, BN, MDEPTH, MFREQ, MLEVEL}; +use crate::tlusty::state::constants::{UN, HALF, HK, BOLK, BN, MDEPTH, MFREQ, MLEVEL}; /// 最大跃迁数(用于 PRINC 输出) const NPTR: usize = 30; -use crate::state::atomic::AtomicData; -use crate::state::model::ModelState; -use crate::math::sabolf::{sabolf_pure, SabolfParams, SabolfOutput}; -use crate::math::linpro::{linpro, LinproParams, LinproOutput}; -use crate::math::dwnfr::dwnfr; -use crate::math::cross::cross; -use crate::state::config::InpPar; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::math::sabolf::{sabolf_pure, SabolfParams, SabolfOutput}; +use crate::tlusty::math::linpro::{linpro, LinproParams, LinproOutput}; +use crate::tlusty::math::dwnfr::dwnfr; +use crate::tlusty::math::cross::cross; +use crate::tlusty::state::config::InpPar; // ============================================================================ // 常量 diff --git a/src/math/prnt.rs b/src/tlusty/math/prnt.rs similarity index 97% rename from src/math/prnt.rs rename to src/tlusty/math/prnt.rs index a077fa4..19b4e0a 100644 --- a/src/math/prnt.rs +++ b/src/tlusty/math/prnt.rs @@ -7,10 +7,10 @@ //! - 计算指定能级的辐射率和碰撞率流入/流出 //! - 用于调试和分析能级占据数的速率平衡 -use crate::state::atomic::AtomicData; -use crate::state::config::InpPar; -use crate::state::constants::HK; -use crate::state::model::{CraTes, LevPop, ModPar, RrRates, WmComp}; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::InpPar; +use crate::tlusty::state::constants::HK; +use crate::tlusty::state::model::{CraTes, LevPop, ModPar, RrRates, WmComp}; use super::sabolf::{sabolf_pure, SabolfParams}; @@ -432,10 +432,10 @@ pub fn prnt_pure(params: &PrntParams) -> PrntOutput { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::{AtoPar, IonPar, LevPar, TraPar}; - use crate::state::config::InpPar; - use crate::state::constants::{MDEPTH, MION, MLEVEL, MTRANS}; - use crate::state::model::{CraTes, LevPop, ModPar, RrRates, WmComp}; + use crate::tlusty::state::atomic::{AtoPar, IonPar, LevPar, TraPar}; + use crate::tlusty::state::config::InpPar; + use crate::tlusty::state::constants::{MDEPTH, MION, MLEVEL, MTRANS}; + use crate::tlusty::state::model::{CraTes, LevPop, ModPar, RrRates, WmComp}; fn create_test_modpar() -> ModPar { let mut modpar = ModPar::default(); diff --git a/src/math/profil.rs b/src/tlusty/math/profil.rs similarity index 99% rename from src/math/profil.rs rename to src/tlusty/math/profil.rs index e7f7f7c..6f8754a 100644 --- a/src/math/profil.rs +++ b/src/tlusty/math/profil.rs @@ -4,7 +4,7 @@ //! //! 计算归一化到 1 的标准吸收轮廓。 -use crate::state::constants::{TWO, UN}; +use crate::tlusty::state::constants::{TWO, UN}; // ============================================================================ // 常量 diff --git a/src/math/profsp.rs b/src/tlusty/math/profsp.rs similarity index 98% rename from src/math/profsp.rs rename to src/tlusty/math/profsp.rs index a0001eb..afd6bed 100644 --- a/src/math/profsp.rs +++ b/src/tlusty/math/profsp.rs @@ -11,8 +11,8 @@ use super::sabolf::{sabolf_pure, SabolfParams, SabolfOutput}; use super::ubeta::ubeta; use super::voigt::voigt; -use crate::state::atomic::AtomicData; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::model::ModelState; // ============================================================================ // 常量 @@ -302,9 +302,9 @@ fn compute_zmikro(params: &ProfspParams, id: usize) -> f64 { #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::AtomicData; - use crate::state::model::ModelState; - use crate::state::constants::*; + use crate::tlusty::state::atomic::AtomicData; + use crate::tlusty::state::model::ModelState; + use crate::tlusty::state::constants::*; fn create_test_atomic() -> AtomicData { let mut atomic = AtomicData::default(); diff --git a/src/math/prsent.rs b/src/tlusty/math/prsent.rs similarity index 100% rename from src/math/prsent.rs rename to src/tlusty/math/prsent.rs diff --git a/src/math/psolve.rs b/src/tlusty/math/psolve.rs similarity index 96% rename from src/math/psolve.rs rename to src/tlusty/math/psolve.rs index a3016f7..6a7d5c4 100644 --- a/src/math/psolve.rs +++ b/src/tlusty/math/psolve.rs @@ -4,8 +4,8 @@ //! //! 求解 d²P/dm² = Q/DENS 的三对角系统,已知密度。 -use crate::state::constants::{HALF, TWO, UN}; -use crate::state::model::{ModPar, PressR}; +use crate::tlusty::state::constants::{HALF, TWO, UN}; +use crate::tlusty::state::model::{ModPar, PressR}; // ============================================================================ // PSOLVE - 压力求解器 @@ -99,7 +99,7 @@ pub fn psolve(nd: usize, qgrav: f64, modpar: &mut ModPar, pressr: &mut PressR) { #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MDEPTH; + use crate::tlusty::state::constants::MDEPTH; fn create_test_model() -> (ModPar, PressR) { let mut modpar = ModPar::default(); diff --git a/src/math/pzert.rs b/src/tlusty/math/pzert.rs similarity index 95% rename from src/math/pzert.rs rename to src/tlusty/math/pzert.rs index f5ee4ae..66b30ad 100644 --- a/src/math/pzert.rs +++ b/src/tlusty/math/pzert.rs @@ -4,10 +4,10 @@ //! //! 确定占据数在全层深度都很小的能级,并将其从线性化方程组中完全移除(超级归零)。 -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{MDEPTH, MLEVEL}; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{MDEPTH, MLEVEL}; +use crate::tlusty::state::model::ModelState; /// 执行能级超级归零处理。 pub fn pzert(config: &mut TlustyConfig, atomic: &mut AtomicData, model: &mut ModelState) { @@ -118,7 +118,7 @@ pub fn pzert(config: &mut TlustyConfig, atomic: &mut AtomicData, model: &mut Mod #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MATOM; + use crate::tlusty::state::constants::MATOM; #[test] fn test_pzert_basic() { diff --git a/src/math/pzeval.rs b/src/tlusty/math/pzeval.rs similarity index 99% rename from src/math/pzeval.rs rename to src/tlusty/math/pzeval.rs index 3b13506..11d9bbb 100644 --- a/src/math/pzeval.rs +++ b/src/tlusty/math/pzeval.rs @@ -6,7 +6,7 @@ //! //! RESOLV 的辅助过程。计算总压力和气压和对数压力梯度 DELTA。 -use crate::state::constants::{BOLK, HALF, TWO, UN}; +use crate::tlusty::state::constants::{BOLK, HALF, TWO, UN}; // ============================================================================ // 常量 diff --git a/src/math/pzevld.rs b/src/tlusty/math/pzevld.rs similarity index 96% rename from src/math/pzevld.rs rename to src/tlusty/math/pzevld.rs index 07dd426..d4e04af 100644 --- a/src/math/pzevld.rs +++ b/src/tlusty/math/pzevld.rs @@ -4,12 +4,12 @@ //! //! 确定总压、气体压以及压力对数梯度;计算从中心平面开始的几何距离 Z。 -use crate::math::dmder::DepthDeriv; -use crate::state::arrays::ComputeArrays; -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{BOLK, MDEPTH, HALF, UN}; -use crate::state::model::ModelState; +use crate::tlusty::math::dmder::DepthDeriv; +use crate::tlusty::state::arrays::ComputeArrays; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{BOLK, MDEPTH, HALF, UN}; +use crate::tlusty::state::model::ModelState; /// 执行压力与几何距离评价。 pub fn pzevld( @@ -208,7 +208,7 @@ pub fn pzevld( #[cfg(test)] mod tests { use super::*; - use crate::math::dmder::dmder; + use crate::tlusty::math::dmder::dmder; #[test] fn test_pzevld_basic() { diff --git a/src/math/quartc.rs b/src/tlusty/math/quartc.rs similarity index 100% rename from src/math/quartc.rs rename to src/tlusty/math/quartc.rs diff --git a/src/math/quasim.rs b/src/tlusty/math/quasim.rs similarity index 96% rename from src/math/quasim.rs rename to src/tlusty/math/quasim.rs index 82cf4cc..9a487d8 100644 --- a/src/math/quasim.rs +++ b/src/tlusty/math/quasim.rs @@ -4,10 +4,10 @@ //! //! 计算氢线的准分子不透明度轮廓,基于 ALLARD 等人的数据表。 -use crate::math::allard::allard; -use crate::state::atomic::AtomicData; -use crate::state::config::BasNum; -use crate::state::model::ModelState; +use crate::tlusty::math::allard::allard; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::model::ModelState; /// 准分子不透明度计算参数 pub struct QuasimParams<'a> { diff --git a/src/math/quit.rs b/src/tlusty/math/quit.rs similarity index 100% rename from src/math/quit.rs rename to src/tlusty/math/quit.rs diff --git a/src/math/radpre.rs b/src/tlusty/math/radpre.rs similarity index 99% rename from src/math/radpre.rs rename to src/tlusty/math/radpre.rs index 02aefa7..f11112c 100644 --- a/src/math/radpre.rs +++ b/src/tlusty/math/radpre.rs @@ -5,7 +5,7 @@ //! 计算辐射加速度,自动排除对总辐射压力贡献最强的线。 //! 使用深度相关准则进行频率筛选。 -use crate::state::constants::{BOLK, HALF, MDEPTH, MFREQ, MLEVEL, MTRANS}; +use crate::tlusty::state::constants::{BOLK, HALF, MDEPTH, MFREQ, MLEVEL, MTRANS}; use super::indexx::indexx; use super::quit::quit; diff --git a/src/math/radtot.rs b/src/tlusty/math/radtot.rs similarity index 99% rename from src/math/radtot.rs rename to src/tlusty/math/radtot.rs index 730a117..ef459e4 100644 --- a/src/math/radtot.rs +++ b/src/tlusty/math/radtot.rs @@ -5,7 +5,7 @@ //! 计算频率积分的辐射强度和矩(J, H, K), //! 以及 Rosseland 和 Planck 平均不透明度。 -use crate::state::constants::{HALF, MDEPTH, MFREQ}; +use crate::tlusty::state::constants::{HALF, MDEPTH, MFREQ}; // ============================================================================ // 参数结构体 diff --git a/src/math/raph.rs b/src/tlusty/math/raph.rs similarity index 100% rename from src/math/raph.rs rename to src/tlusty/math/raph.rs diff --git a/src/math/rates1.rs b/src/tlusty/math/rates1.rs similarity index 99% rename from src/math/rates1.rs rename to src/tlusty/math/rates1.rs index 2140852..ee8c18c 100644 --- a/src/math/rates1.rs +++ b/src/tlusty/math/rates1.rs @@ -13,7 +13,7 @@ //! - FLRD: 辐射通量红翼 //! - PJBAR: PRD 积分 -use crate::state::constants::{HALF, HK, MDEPTH, MFREQ, MFREQP, MLEVEL, MTRANS, UN}; +use crate::tlusty::state::constants::{HALF, HK, MDEPTH, MFREQ, MFREQP, MLEVEL, MTRANS, UN}; /// MTRPRD 常量:PRD 跃迁最大数 const MTRPRD: usize = 5; diff --git a/src/math/ratmal.rs b/src/tlusty/math/ratmal.rs similarity index 97% rename from src/math/ratmal.rs rename to src/tlusty/math/ratmal.rs index 313a496..9df3acd 100644 --- a/src/math/ratmal.rs +++ b/src/tlusty/math/ratmal.rs @@ -2,10 +2,10 @@ //! //! 重构自 TLUSTY `ratmal.f` -use crate::state::atomic::{AtoPar, IonPar, LevPar}; -use crate::state::config::{BasNum, InpPar}; -use crate::state::constants::{MLEVEL, UN}; -use crate::state::model::{LevPop, ModPar, WmComp}; +use crate::tlusty::state::atomic::{AtoPar, IonPar, LevPar}; +use crate::tlusty::state::config::{BasNum, InpPar}; +use crate::tlusty::state::constants::{MLEVEL, UN}; +use crate::tlusty::state::model::{LevPop, ModPar, WmComp}; // ============================================================================ // RATMAL - LTE 速率矩阵 diff --git a/src/math/ratmat.rs b/src/tlusty/math/ratmat.rs similarity index 97% rename from src/math/ratmat.rs rename to src/tlusty/math/ratmat.rs index 252cad9..da5f925 100644 --- a/src/math/ratmat.rs +++ b/src/tlusty/math/ratmat.rs @@ -8,12 +8,12 @@ //! //! 参考:Mihalas, 1978, pp.138-139 -use crate::math::reflev::reflev; -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{HK, MLEVEL, UN}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::math::reflev::reflev; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{HK, MLEVEL, UN}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; /// RATMAT 输入参数 pub struct RatmatParams<'a> { diff --git a/src/math/ratsp1.rs b/src/tlusty/math/ratsp1.rs similarity index 99% rename from src/math/ratsp1.rs rename to src/tlusty/math/ratsp1.rs index 3c6f086..bb939f2 100644 --- a/src/math/ratsp1.rs +++ b/src/tlusty/math/ratsp1.rs @@ -5,7 +5,7 @@ //! 计算辐射跃迁的上下行速率,包括连续谱和谱线跃迁。 //! 支持标准模式和 ODF 采样模式。 -use crate::state::constants::{UN, PCK, MDEPTH, MTRANS}; +use crate::tlusty::state::constants::{UN, PCK, MDEPTH, MTRANS}; // 物理常数 /// 4π/c diff --git a/src/math/rayleigh.rs b/src/tlusty/math/rayleigh.rs similarity index 98% rename from src/math/rayleigh.rs rename to src/tlusty/math/rayleigh.rs index e08d84d..11f229a 100644 --- a/src/math/rayleigh.rs +++ b/src/tlusty/math/rayleigh.rs @@ -4,8 +4,8 @@ //! //! 计算氢、氦、氢分子的 Rayleigh 散射截面和散射系数。 -use crate::state::constants::*; -use crate::state::model::{EosPar, RaySct}; +use crate::tlusty::state::constants::*; +use crate::tlusty::state::model::{EosPar, RaySct}; /// Rayleigh 散射频率阈值常量 const FRRAY: f64 = 2.463e15; // 氢 Rayleigh 散射频率阈值 diff --git a/src/math/rayset.rs b/src/tlusty/math/rayset.rs similarity index 99% rename from src/math/rayset.rs rename to src/tlusty/math/rayset.rs index 0637ac1..ca225f7 100644 --- a/src/math/rayset.rs +++ b/src/tlusty/math/rayset.rs @@ -4,7 +4,7 @@ //! //! 对 Rayleigh 散射不透明度表进行二维对数插值。 -use crate::state::constants::MDEPTH; +use crate::tlusty::state::constants::MDEPTH; /// Rayleigh 散射不透明度计算。 /// diff --git a/src/math/rdata.rs b/src/tlusty/math/rdata.rs similarity index 97% rename from src/math/rdata.rs rename to src/tlusty/math/rdata.rs index c158fb5..8bde3f4 100644 --- a/src/math/rdata.rs +++ b/src/tlusty/math/rdata.rs @@ -8,13 +8,13 @@ //! - 读取谱线跃迁(束缚-束缚)数据 //! - 处理各种特殊情况(ODF、ALI、碰撞数据等) -use crate::data::_UNNAMED_OSH; -use crate::state::atomic::{AtoPar, IonDat, IonFil, IonPar, LevPar, PhoSet, TabCol, TopCs, TraPar, VoiPar}; -use crate::state::config::{BasNum, InpPar}; -use crate::state::constants::{EH, H, MCORAT, MCROSS, MFIT, MLEVEL, MTRANS, MVOIGT, MXTCOL}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; -use crate::state::odfpar::OdfData; +use crate::tlusty::data::_UNNAMED_OSH; +use crate::tlusty::state::atomic::{AtoPar, IonDat, IonFil, IonPar, LevPar, PhoSet, TabCol, TopCs, TraPar, VoiPar}; +use crate::tlusty::state::config::{BasNum, InpPar}; +use crate::tlusty::state::constants::{EH, H, MCORAT, MCROSS, MFIT, MLEVEL, MTRANS, MVOIGT, MXTCOL}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; +use crate::tlusty::state::odfpar::OdfData; /// 光速 (cm/s) pub const C_LIGHT: f64 = 2.997925e18; diff --git a/src/math/rdatax.rs b/src/tlusty/math/rdatax.rs similarity index 99% rename from src/math/rdatax.rs rename to src/tlusty/math/rdatax.rs index cd4505c..c6ea4ee 100644 --- a/src/math/rdatax.rs +++ b/src/tlusty/math/rdatax.rs @@ -7,7 +7,7 @@ //! - 设置 BFCS 数组(束缚-自由截面) //! - 计算所有频率的截面 -use crate::math::bkhsgo::bkhsgo; +use crate::tlusty::math::bkhsgo::bkhsgo; /// 最大跃迁数 pub const MTRX: usize = 1000; diff --git a/src/math/readbf.rs b/src/tlusty/math/readbf.rs similarity index 96% rename from src/math/readbf.rs rename to src/tlusty/math/readbf.rs index 5ab43b9..1e6b951 100644 --- a/src/math/readbf.rs +++ b/src/tlusty/math/readbf.rs @@ -3,7 +3,7 @@ //! 重构自 TLUSTY `readbf.f` //! 辅助子程序,过滤掉以 ! 或 * 开头的注释行。 -use crate::io::Result; +use crate::tlusty::io::Result; use std::io::{BufRead, BufReader, Cursor, Read}; /// READBF 输出 @@ -36,7 +36,7 @@ pub fn readbf(reader: &mut R) -> Result { } buffer.push_str(&line); } - Err(e) => return Err(crate::io::IoError::Io(e)), + Err(e) => return Err(crate::tlusty::io::IoError::Io(e)), } } diff --git a/src/math/rechck.rs b/src/tlusty/math/rechck.rs similarity index 99% rename from src/math/rechck.rs rename to src/tlusty/math/rechck.rs index 35fc59d..cdd07a8 100644 --- a/src/math/rechck.rs +++ b/src/tlusty/math/rechck.rs @@ -14,7 +14,7 @@ //! 原始 Fortran 写入 fort.17: //! - 各深度点的 dm, T, int(kappa*J), int(emis), 相对误差 -use crate::state::constants::MDEPTH; +use crate::tlusty::state::constants::MDEPTH; // ============================================================================ // 输入/输出结构体 diff --git a/src/math/reflev.rs b/src/tlusty/math/reflev.rs similarity index 98% rename from src/math/reflev.rs rename to src/tlusty/math/reflev.rs index 9cbaeeb..7ca69d8 100644 --- a/src/math/reflev.rs +++ b/src/tlusty/math/reflev.rs @@ -6,11 +6,11 @@ //! 2. 确定 LTE 参考能级 (ILTREF) 及其相关物理量 (SBPSI, DSBPST, DSBPSN)。 //! 3. 处理能级清零逻辑 (IPZERO)。 -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::UN; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::UN; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; /// 执行参考能级确定与相关物理量计算。 pub fn reflev( @@ -355,7 +355,7 @@ pub fn reflev( #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MDEPTH; + use crate::tlusty::state::constants::MDEPTH; #[test] fn test_reflev_basic() { diff --git a/src/math/reiman.rs b/src/tlusty/math/reiman.rs similarity index 100% rename from src/math/reiman.rs rename to src/tlusty/math/reiman.rs diff --git a/src/math/rhoeos.rs b/src/tlusty/math/rhoeos.rs similarity index 99% rename from src/math/rhoeos.rs rename to src/tlusty/math/rhoeos.rs index e166cf9..695daf2 100644 --- a/src/math/rhoeos.rs +++ b/src/tlusty/math/rhoeos.rs @@ -14,7 +14,7 @@ //! 3. 收敛条件:相对误差 < 1e-5 或达到最大迭代次数 use super::{prsent, PrsentParams, ThermTables}; -use crate::state::constants::BOLK; +use crate::tlusty::state::constants::BOLK; /// 平均分子量相关常数(氢原子质量 / 2.3) /// 对应 Fortran: wmol0 = 1.67333E-24/2.3 diff --git a/src/math/rhonen.rs b/src/tlusty/math/rhonen.rs similarity index 98% rename from src/math/rhonen.rs rename to src/tlusty/math/rhonen.rs index 55f80b1..5ca9e29 100644 --- a/src/math/rhonen.rs +++ b/src/tlusty/math/rhonen.rs @@ -6,8 +6,8 @@ //! - 从给定的温度和质量密度迭代求解总粒子密度和电子密度 //! - 使用 eldens 计算电子密度 -use crate::math::eldens::{eldens_pure, EldensConfig, EldensOutput, EldensParams}; -use crate::state::constants::{HMASS, UN}; +use crate::tlusty::math::eldens::{eldens_pure, EldensConfig, EldensOutput, EldensParams}; +use crate::tlusty::state::constants::{HMASS, UN}; /// RHONEN 输入参数 pub struct RhonenParams<'a> { diff --git a/src/math/rhsgen.rs b/src/tlusty/math/rhsgen.rs similarity index 99% rename from src/math/rhsgen.rs rename to src/tlusty/math/rhsgen.rs index 4efb10f..2707657 100644 --- a/src/math/rhsgen.rs +++ b/src/tlusty/math/rhsgen.rs @@ -9,8 +9,8 @@ //! - 电荷守恒 //! - 对流贡献 -use crate::math::convec::{convec, ConvecConfig, ConvecParams}; -use crate::state::constants::{BOLK, HALF, UN}; +use crate::tlusty::math::convec::{convec, ConvecConfig, ConvecParams}; +use crate::tlusty::state::constants::{BOLK, HALF, UN}; /// 常量 const XCON: f64 = 8.0935e-21; diff --git a/src/math/rossop.rs b/src/tlusty/math/rossop.rs similarity index 99% rename from src/math/rossop.rs rename to src/tlusty/math/rossop.rs index ccd0766..4fbccff 100644 --- a/src/math/rossop.rs +++ b/src/tlusty/math/rossop.rs @@ -15,7 +15,7 @@ //! - 否则: 使用 RHOEOS 和 MEANOPT use super::eint; -use crate::state::constants::BOLK; +use crate::tlusty::state::constants::BOLK; /// Hopf 函数多项式系数 (DATA A/.../) const HOPF_A: [f64; 5] = [ diff --git a/src/math/rosstd.rs b/src/tlusty/math/rosstd.rs similarity index 99% rename from src/math/rosstd.rs rename to src/tlusty/math/rosstd.rs index 1bee94a..0498347 100644 --- a/src/math/rosstd.rs +++ b/src/tlusty/math/rosstd.rs @@ -8,7 +8,7 @@ //! - 评估 Rosseland 光学深度 //! - 确定辐射平衡分区点 -use crate::state::constants::{HALF, SIG4P, UN}; +use crate::tlusty::state::constants::{HALF, SIG4P, UN}; // ============================================================================ // 输入/输出结构体 diff --git a/src/math/rte_sc.rs b/src/tlusty/math/rte_sc.rs similarity index 100% rename from src/math/rte_sc.rs rename to src/tlusty/math/rte_sc.rs diff --git a/src/math/rteang.rs b/src/tlusty/math/rteang.rs similarity index 100% rename from src/math/rteang.rs rename to src/tlusty/math/rteang.rs diff --git a/src/math/rtecf0.rs b/src/tlusty/math/rtecf0.rs similarity index 97% rename from src/math/rtecf0.rs rename to src/tlusty/math/rtecf0.rs index 9a4b3c6..8d83b89 100644 --- a/src/math/rtecf0.rs +++ b/src/tlusty/math/rtecf0.rs @@ -4,11 +4,11 @@ //! //! 该子程序为特定频率点 IJ 计算矩阵 A, B, C, E, U, V 和 alpha, beta, gamma。 -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{HALF, HK, SIGE, TWO, UN, XCON, YCON}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{HALF, HK, SIGE, TWO, UN, XCON, YCON}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; /// 为频率点 ij 计算 RTE 矩阵元素。 pub fn rtecf0( @@ -200,7 +200,7 @@ pub fn rtecf0( #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MDEPTH; + use crate::tlusty::state::constants::MDEPTH; #[test] fn test_rtecf0_basic() { diff --git a/src/math/rtecf1.rs b/src/tlusty/math/rtecf1.rs similarity index 98% rename from src/math/rtecf1.rs rename to src/tlusty/math/rtecf1.rs index d66f084..476689c 100644 --- a/src/math/rtecf1.rs +++ b/src/tlusty/math/rtecf1.rs @@ -6,11 +6,11 @@ //! 假设其他频率点的辐射强度已知。对各个角度分别求解, //! 并确定新的 Eddington 因子。 -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{HALF, HK, UN, TWO}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{HALF, HK, UN, TWO}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; use super::rtecf0::rtecf0; use super::rtefe2::rtefe2; @@ -537,7 +537,7 @@ pub fn rtecf1( #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MDEPTH; + use crate::tlusty::state::constants::MDEPTH; fn create_test_config() -> TlustyConfig { let mut config = TlustyConfig::default(); diff --git a/src/math/rtecmc.rs b/src/tlusty/math/rtecmc.rs similarity index 97% rename from src/math/rtecmc.rs rename to src/tlusty/math/rtecmc.rs index 557a4cb..f2be528 100644 --- a/src/math/rtecmc.rs +++ b/src/tlusty/math/rtecmc.rs @@ -5,9 +5,9 @@ //! 该子程序使用矩阵求逆法求解辐射转移方程, //! 包含康普顿散射效应的处理。 -use crate::state::config::TlustyConfig; -use crate::state::constants::{MDEPTH, MFREQ, UN}; -use crate::state::model::ModelState; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, UN}; +use crate::tlusty::state::model::ModelState; use super::matinv::matinv; @@ -273,10 +273,10 @@ pub fn rtecmc( #[cfg(test)] mod tests { use super::*; - use crate::state::atomic::AtomicData; - use crate::state::iterat::IterControl; - use crate::state::model::ModelState; - use crate::state::config::TlustyConfig; + use crate::tlusty::state::atomic::AtomicData; + use crate::tlusty::state::iterat::IterControl; + use crate::tlusty::state::model::ModelState; + use crate::tlusty::state::config::TlustyConfig; fn dummy_opacf1(_ij: usize, _config: &TlustyConfig, _model: &mut ModelState) { // 空实现用于测试 diff --git a/src/math/rtecmu.rs b/src/tlusty/math/rtecmu.rs similarity index 99% rename from src/math/rtecmu.rs rename to src/tlusty/math/rtecmu.rs index ac79c08..9ecc112 100644 --- a/src/math/rtecmu.rs +++ b/src/tlusty/math/rtecmu.rs @@ -5,7 +5,7 @@ //! 对每个频率点求解带康普顿散射的辐射转移方程, //! 假设其他频率的辐射强度已知,使用高斯积分对角度进行积分。 -use crate::state::constants::{HALF, HK, SIGE, SIG4P, TWO, UN, XCON, YCON, BN, MDEPTH, MFREQ, MMU}; +use crate::tlusty::state::constants::{HALF, HK, SIGE, SIG4P, TWO, UN, XCON, YCON, BN, MDEPTH, MFREQ, MMU}; use super::gauleg; use super::rtesol; diff --git a/src/math/rtecom.rs b/src/tlusty/math/rtecom.rs similarity index 97% rename from src/math/rtecom.rs rename to src/tlusty/math/rtecom.rs index a5dc4dd..3e2f96a 100644 --- a/src/math/rtecom.rs +++ b/src/tlusty/math/rtecom.rs @@ -5,11 +5,11 @@ //! 该子程序求解带康普顿散射的辐射转移方程, //! 包括形式解和耦合迭代求解。 -use crate::state::atomic::AtomicData; -use crate::state::config::TlustyConfig; -use crate::state::constants::{MDEPTH, MFREQ, UN}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::state::atomic::AtomicData; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, UN}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; use super::opacf1::opacf1; use super::rtecf0::rtecf0; @@ -238,7 +238,7 @@ pub fn rtecom( #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MDEPTH; + use crate::tlusty::state::constants::MDEPTH; fn create_test_config() -> TlustyConfig { let mut config = TlustyConfig::default(); diff --git a/src/math/rtedf1.rs b/src/tlusty/math/rtedf1.rs similarity index 99% rename from src/math/rtedf1.rs rename to src/tlusty/math/rtedf1.rs index d5f8409..8480952 100644 --- a/src/math/rtedf1.rs +++ b/src/tlusty/math/rtedf1.rs @@ -5,7 +5,7 @@ //! 使用不连续有限元 (DFE) 方法求解单频率辐射转移方程。 //! 计算辐射场、可变 Eddington 因子以及近似 Lambda 算子。 -use crate::state::constants::{BN, HALF, HK, MDEPTH, TWO, UN}; +use crate::tlusty::state::constants::{BN, HALF, HK, MDEPTH, TWO, UN}; /// RTEDF1 输入参数 pub struct Rtedf1Params { diff --git a/src/math/rtedf2.rs b/src/tlusty/math/rtedf2.rs similarity index 97% rename from src/math/rtedf2.rs rename to src/tlusty/math/rtedf2.rs index 3cd8d1d..fd386c2 100644 --- a/src/math/rtedf2.rs +++ b/src/tlusty/math/rtedf2.rs @@ -9,10 +9,10 @@ //! 采用 Castor, Dykema, Klein (1992, ApJ 387, 561) 的 //! Discontinuous Finite Element (DFE) 方法。 -use crate::state::config::TlustyConfig; -use crate::state::constants::{BN, HALF, HK, TWO, UN}; -use crate::state::iterat::IterControl; -use crate::state::model::ModelState; +use crate::tlusty::state::config::TlustyConfig; +use crate::tlusty::state::constants::{BN, HALF, HK, TWO, UN}; +use crate::tlusty::state::iterat::IterControl; +use crate::tlusty::state::model::ModelState; const SIXTH: f64 = 1.0 / 6.0; const THIRD: f64 = 1.0 / 3.0; @@ -288,7 +288,7 @@ pub fn rtedf2( #[cfg(test)] mod tests { use super::*; - use crate::state::constants::MDEPTH; + use crate::tlusty::state::constants::MDEPTH; #[test] fn test_rtedf2_basic() { @@ -315,7 +315,7 @@ mod tests { model.modpar.temp[i] = 10000.0; } // extint[ij] 按角度索引,长度为 MMU - use crate::state::constants::MMU; + use crate::tlusty::state::constants::MMU; for i in 0..MMU { model.totrad.extint[0][i] = 0.0; } diff --git a/src/math/rtefe2.rs b/src/tlusty/math/rtefe2.rs similarity index 100% rename from src/math/rtefe2.rs rename to src/tlusty/math/rtefe2.rs diff --git a/src/math/rtefr1.rs b/src/tlusty/math/rtefr1.rs similarity index 99% rename from src/math/rtefr1.rs rename to src/tlusty/math/rtefr1.rs index 6be0fe7..602a64b 100644 --- a/src/math/rtefr1.rs +++ b/src/tlusty/math/rtefr1.rs @@ -11,7 +11,7 @@ //! - ISPLIN = 2: Hermite 四阶方法 //! - ISPLIN = 3: 改进的 Feautrier 方案 (Rybicki & Hummer 1991) -use crate::state::constants::{BN, HALF, HK, MDEPTH, TWO, UN}; +use crate::tlusty::state::constants::{BN, HALF, HK, MDEPTH, TWO, UN}; use super::matinv::matinv; use super::minv3::minv3; use super::rtesol::rtesol; diff --git a/src/math/rteint.rs b/src/tlusty/math/rteint.rs similarity index 99% rename from src/math/rteint.rs rename to src/tlusty/math/rteint.rs index b012a9d..a3c4059 100644 --- a/src/math/rteint.rs +++ b/src/tlusty/math/rteint.rs @@ -10,7 +10,7 @@ //! //! 所有方法使用标准高斯消元求解矩阵系统。 -use crate::state::constants::{MDEPTH, MFREQ, UN, HALF, TWO}; +use crate::tlusty::state::constants::{MDEPTH, MFREQ, UN, HALF, TWO}; // ============================================================================ // 常量 @@ -197,7 +197,7 @@ fn init_angles(nmu: usize) -> RteIntAngles { fn matinv(a: &mut [f64], n: usize, _mmax: usize) { // 调用已实现的 matinv 模块 // 将 1D slice 转换为 2D 矩阵表示 - crate::math::matinv::matinv(a, n); + crate::tlusty::math::matinv::matinv(a, n); } // ============================================================================ diff --git a/src/math/rtesol.rs b/src/tlusty/math/rtesol.rs similarity index 100% rename from src/math/rtesol.rs rename to src/tlusty/math/rtesol.rs diff --git a/src/math/russel.rs b/src/tlusty/math/russel.rs similarity index 99% rename from src/math/russel.rs rename to src/tlusty/math/russel.rs index 0fcf42c..178f430 100644 --- a/src/math/russel.rs +++ b/src/tlusty/math/russel.rs @@ -7,7 +7,7 @@ //! - 使用 Newton-Raphson 方法求解 Russell 方程 //! - 计算电离平衡分布 -use crate::math::mpartf::mpartf; +use crate::tlusty::math::mpartf::mpartf; /// 常量 const ECONST: f64 = 4.3426e-1; diff --git a/src/math/rybchn.rs b/src/tlusty/math/rybchn.rs similarity index 98% rename from src/math/rybchn.rs rename to src/tlusty/math/rybchn.rs index 37b2f45..2f076ce 100644 --- a/src/math/rybchn.rs +++ b/src/tlusty/math/rybchn.rs @@ -8,9 +8,9 @@ //! - 使用 ELDENS 计算电子密度 //! - 使用 PGSET 迭代计算气体压力 -use crate::math::eldens::{eldens_pure, EldensConfig, EldensOutput, EldensParams}; -use crate::math::pgset::{pgset, PgsetParams, PgsetOutput}; -use crate::state::constants::{BOLK, HALF, TWO, UN}; +use crate::tlusty::math::eldens::{eldens_pure, EldensConfig, EldensOutput, EldensParams}; +use crate::tlusty::math::pgset::{pgset, PgsetParams, PgsetOutput}; +use crate::tlusty::state::constants::{BOLK, HALF, TWO, UN}; /// 最大深度点数(从 pgset 导入) use super::pgset::MDEPTH; diff --git a/src/math/rybene.rs b/src/tlusty/math/rybene.rs similarity index 99% rename from src/math/rybene.rs rename to src/tlusty/math/rybene.rs index 4adb750..715e28f 100644 --- a/src/math/rybene.rs +++ b/src/tlusty/math/rybene.rs @@ -7,8 +7,8 @@ //! - 补充对流对能量方程的贡献 //! - 使用 Rybicki 形式的矩阵结构 -use crate::math::convec::{convec, ConvecConfig, ConvecParams}; -use crate::state::constants::{HALF, UN}; +use crate::tlusty::math::convec::{convec, ConvecConfig, ConvecParams}; +use crate::tlusty::state::constants::{HALF, UN}; /// RYBENE 配置参数 #[derive(Debug, Clone)] diff --git a/src/math/rybheq.rs b/src/tlusty/math/rybheq.rs similarity index 99% rename from src/math/rybheq.rs rename to src/tlusty/math/rybheq.rs index 63f4312..adf952c 100644 --- a/src/math/rybheq.rs +++ b/src/tlusty/math/rybheq.rs @@ -7,8 +7,8 @@ //! - 更新密度和电子密度分布 //! - 支持恒星大气和盘两种模式 -use crate::math::erfcx::erfcx; -use crate::state::constants::{HALF, PCK, TWO, UN}; +use crate::tlusty::math::erfcx::erfcx; +use crate::tlusty::state::constants::{HALF, PCK, TWO, UN}; // ============================================================================ // 配置结构体 diff --git a/src/math/rybmat.rs b/src/tlusty/math/rybmat.rs similarity index 99% rename from src/math/rybmat.rs rename to src/tlusty/math/rybmat.rs index 1b18f11..2555515 100644 --- a/src/math/rybmat.rs +++ b/src/tlusty/math/rybmat.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `rybmat.f` -use crate::state::constants::{HALF, MDEPTH, TWO, UN}; +use crate::tlusty::state::constants::{HALF, MDEPTH, TWO, UN}; /// 物理常数 const BN: f64 = 1.4743e-2; // Planck 常数前因子 diff --git a/src/math/rybsol.rs b/src/tlusty/math/rybsol.rs similarity index 99% rename from src/math/rybsol.rs rename to src/tlusty/math/rybsol.rs index 1c469c5..3bf4bf0 100644 --- a/src/math/rybsol.rs +++ b/src/tlusty/math/rybsol.rs @@ -10,7 +10,7 @@ use super::lineqs::lineqs; use super::tridag::tridag; -use crate::state::constants::{MDEPTH, MLEVEL, UN}; +use crate::tlusty::state::constants::{MDEPTH, MLEVEL, UN}; // ============================================================================ // RYBMTX - Rybicki 矩阵工作数组 diff --git a/src/math/sabolf.rs b/src/tlusty/math/sabolf.rs similarity index 99% rename from src/math/sabolf.rs rename to src/tlusty/math/sabolf.rs index c5e14b6..d749a36 100644 --- a/src/math/sabolf.rs +++ b/src/tlusty/math/sabolf.rs @@ -8,8 +8,8 @@ //! - 计算上能级求和 (USUM) - LTE 上能级的 Saha-Boltzmann 因子之和 //! - 计算对温度和电子密度的导数 -use crate::state::constants::*; -use crate::state::atomic::AtomicData; +use crate::tlusty::state::constants::*; +use crate::tlusty::state::atomic::AtomicData; // ============================================================================ // 常量 diff --git a/src/math/sbfch.rs b/src/tlusty/math/sbfch.rs similarity index 99% rename from src/math/sbfch.rs rename to src/tlusty/math/sbfch.rs index 0ae826f..c554cea 100644 --- a/src/math/sbfch.rs +++ b/src/tlusty/math/sbfch.rs @@ -5,7 +5,7 @@ //! //! 计算CH分子的光电离截面与配分函数的乘积。 -use crate::data::{ +use crate::tlusty::data::{ SBFCH_C1, SBFCH_C10, SBFCH_C11, SBFCH_C2, SBFCH_C3, SBFCH_C4, SBFCH_C5, SBFCH_C6, SBFCH_C7, SBFCH_C8, SBFCH_C9, SBFCH_PARTCH as PARTCH, }; diff --git a/src/math/sbfhe1.rs b/src/tlusty/math/sbfhe1.rs similarity index 100% rename from src/math/sbfhe1.rs rename to src/tlusty/math/sbfhe1.rs diff --git a/src/math/sbfhmi.rs b/src/tlusty/math/sbfhmi.rs similarity index 98% rename from src/math/sbfhmi.rs rename to src/tlusty/math/sbfhmi.rs index d7db5f5..88e4d92 100644 --- a/src/math/sbfhmi.rs +++ b/src/tlusty/math/sbfhmi.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `sbfhmi.f` -use crate::math::ylintp; +use crate::tlusty::math::ylintp; /// H⁻ 束缚-自由截面。 /// diff --git a/src/math/sbfhmi_old.rs b/src/tlusty/math/sbfhmi_old.rs similarity index 100% rename from src/math/sbfhmi_old.rs rename to src/tlusty/math/sbfhmi_old.rs diff --git a/src/math/sbfoh.rs b/src/tlusty/math/sbfoh.rs similarity index 99% rename from src/math/sbfoh.rs rename to src/tlusty/math/sbfoh.rs index e14b4bc..3a4823d 100644 --- a/src/math/sbfoh.rs +++ b/src/tlusty/math/sbfoh.rs @@ -3,7 +3,7 @@ //! 重构自 TLUSTY `sbfoh.f` //! 参考: Kurucz ATLAS9 -use crate::data::{ +use crate::tlusty::data::{ SBFOH_C1, SBFOH_C10, SBFOH_C11, SBFOH_C12, SBFOH_C13, SBFOH_C2, SBFOH_C3, SBFOH_C4, SBFOH_C5, SBFOH_C6, SBFOH_C7, SBFOH_C8, SBFOH_C9, SBFOH_PARTOH as PARTOH, }; diff --git a/src/math/setdrt.rs b/src/tlusty/math/setdrt.rs similarity index 97% rename from src/math/setdrt.rs rename to src/tlusty/math/setdrt.rs index dd8b1ac..2bfe67a 100644 --- a/src/math/setdrt.rs +++ b/src/tlusty/math/setdrt.rs @@ -2,8 +2,8 @@ //! //! 重构自 TLUSTY `setdrt.f` -use crate::state::constants::MDEPTH; -use crate::state::model::{ModPar, PressR, Rhoder}; +use crate::tlusty::state::constants::MDEPTH; +use crate::tlusty::state::model::{ModPar, PressR, Rhoder}; /// 计算密度对温度的导数。 /// diff --git a/src/math/sffhmi.rs b/src/tlusty/math/sffhmi.rs similarity index 99% rename from src/math/sffhmi.rs rename to src/tlusty/math/sffhmi.rs index 4dc28a0..62e3f05 100644 --- a/src/math/sffhmi.rs +++ b/src/tlusty/math/sffhmi.rs @@ -5,7 +5,7 @@ //! 来自 Bell and Berrington J.Phys.B, vol. 20, 801-806, 1987。 //! 取自 Kurucz ATLAS9。 -use crate::math::ylintp; +use crate::tlusty::math::ylintp; use std::sync::OnceLock; diff --git a/src/math/sffhmi_add.rs b/src/tlusty/math/sffhmi_add.rs similarity index 99% rename from src/math/sffhmi_add.rs rename to src/tlusty/math/sffhmi_add.rs index 77c2ccc..212a0b7 100644 --- a/src/math/sffhmi_add.rs +++ b/src/tlusty/math/sffhmi_add.rs @@ -5,7 +5,7 @@ //! 来自 Bell and Berrington J.Phys.B, vol. 20, 801-806, 1987. //! 数据取自 Kurucz ATLAS9。 -use crate::math::ylintp; +use crate::tlusty::math::ylintp; // 物理常数 const CONFF: f64 = 5040.0 * 1.380658E-16; diff --git a/src/math/sghe12.rs b/src/tlusty/math/sghe12.rs similarity index 100% rename from src/math/sghe12.rs rename to src/tlusty/math/sghe12.rs diff --git a/src/math/sgmer.rs b/src/tlusty/math/sgmer.rs similarity index 99% rename from src/math/sgmer.rs rename to src/tlusty/math/sgmer.rs index f09771f..a067157 100644 --- a/src/math/sgmer.rs +++ b/src/tlusty/math/sgmer.rs @@ -5,7 +5,7 @@ //! 对于高激发态氢能级,使用合并能级近似计算光电离截面。 //! 这是 Stark 展宽处理的一部分。 -use crate::state::{ +use crate::tlusty::state::{ AtomicData, InvInt, MrgPar, ModelState, WmComp, MDEPTH, MLEVEL, MMER, NLMX, }; diff --git a/src/math/sgmer1.rs b/src/tlusty/math/sgmer1.rs similarity index 100% rename from src/math/sgmer1.rs rename to src/tlusty/math/sgmer1.rs diff --git a/src/math/sigave.rs b/src/tlusty/math/sigave.rs similarity index 99% rename from src/math/sigave.rs rename to src/tlusty/math/sigave.rs index 20d652d..fe666dc 100644 --- a/src/math/sigave.rs +++ b/src/tlusty/math/sigave.rs @@ -7,7 +7,7 @@ //! 从文件读取平均能级的束缚-自由(bound-free)截面数据, //! 并使用对数插值计算指定频率点的截面值。 -use crate::io::{FortranReader, Result}; +use crate::tlusty::io::{FortranReader, Result}; use std::io::{BufRead, BufReader, Cursor, Read}; /// 常量定义 diff --git a/src/math/sigk.rs b/src/tlusty/math/sigk.rs similarity index 99% rename from src/math/sigk.rs rename to src/tlusty/math/sigk.rs index 9ffa4f0..e5f984b 100644 --- a/src/math/sigk.rs +++ b/src/tlusty/math/sigk.rs @@ -30,7 +30,7 @@ use super::spsigk; use super::topbas::{self, TopbasParams, OpData}; use super::verner; use super::ylintp; -use crate::state::atomic::AtomicData; +use crate::tlusty::state::atomic::AtomicData; // ============================================================================ // 常量 diff --git a/src/math/sigmar.rs b/src/tlusty/math/sigmar.rs similarity index 100% rename from src/math/sigmar.rs rename to src/tlusty/math/sigmar.rs diff --git a/src/math/solve.rs b/src/tlusty/math/solve.rs similarity index 99% rename from src/math/solve.rs rename to src/tlusty/math/solve.rs index 237dab3..9fbcf73 100644 --- a/src/math/solve.rs +++ b/src/tlusty/math/solve.rs @@ -26,7 +26,7 @@ //! del(PSI{ID}) = BET{ID} - ALF{ID} * del{PSI{ID+1}) //! ``` -use crate::state::constants::{MDEPTH, MTOT, UN}; +use crate::tlusty::state::constants::{MDEPTH, MTOT, UN}; // ============================================================================ // 迭代限制常量 (来自 COMMON/PSILIM/) diff --git a/src/math/solves.rs b/src/tlusty/math/solves.rs similarity index 98% rename from src/math/solves.rs rename to src/tlusty/math/solves.rs index 537786e..85006a2 100644 --- a/src/math/solves.rs +++ b/src/tlusty/math/solves.rs @@ -9,11 +9,11 @@ //! - 使用高斯消元法(前向消元 + 后向求解) //! - 支持过松弛和 Kantorovich 加速 -use crate::state::arrays::MainArrays; -use crate::state::config::{BasNum, Centrl, InpPar}; -use crate::state::constants::{MDEPTH, MTOT, UN}; -use crate::state::iterat::{Accel, IterControl}; -use crate::state::model::ModelState; +use crate::tlusty::state::arrays::MainArrays; +use crate::tlusty::state::config::{BasNum, Centrl, InpPar}; +use crate::tlusty::state::constants::{MDEPTH, MTOT, UN}; +use crate::tlusty::state::iterat::{Accel, IterControl}; +use crate::tlusty::state::model::ModelState; /// 最大小矩阵维度 pub const MSMX: usize = 200; diff --git a/src/math/spsigk.rs b/src/tlusty/math/spsigk.rs similarity index 97% rename from src/math/spsigk.rs rename to src/tlusty/math/spsigk.rs index e3a020c..25f7ac0 100644 --- a/src/math/spsigk.rs +++ b/src/tlusty/math/spsigk.rs @@ -4,7 +4,7 @@ //! //! 非标准光电离截面评估,用户自定义过程。 -use crate::math::{carbon, hidalg, reiman, sghe12}; +use crate::tlusty::math::{carbon, hidalg, reiman, sghe12}; /// 特殊光电离截面。 /// diff --git a/src/math/stark0.rs b/src/tlusty/math/stark0.rs similarity index 100% rename from src/math/stark0.rs rename to src/tlusty/math/stark0.rs diff --git a/src/math/starka.rs b/src/tlusty/math/starka.rs similarity index 100% rename from src/math/starka.rs rename to src/tlusty/math/starka.rs diff --git a/src/math/state.rs b/src/tlusty/math/state.rs similarity index 99% rename from src/math/state.rs rename to src/tlusty/math/state.rs index 0c280de..c0e183c 100644 --- a/src/math/state.rs +++ b/src/tlusty/math/state.rs @@ -9,8 +9,8 @@ //! - MODE=2: 求解 LTE Saha 方程(非显式化学物种) //! - MODE=3: 类似 MODE=2,但计算导数 -use crate::state::constants::*; -use crate::math::partf::{partf_pure, PartfParams, PartfMode}; +use crate::tlusty::state::constants::*; +use crate::tlusty::math::partf::{partf_pure, PartfParams, PartfMode}; // ============================================================================ // 常量 diff --git a/src/math/steqeq.rs b/src/tlusty/math/steqeq.rs similarity index 99% rename from src/math/steqeq.rs rename to src/tlusty/math/steqeq.rs index 6414c12..c1e731c 100644 --- a/src/math/steqeq.rs +++ b/src/tlusty/math/steqeq.rs @@ -7,7 +7,7 @@ //! - 求解新的能级粒子数 //! - 计算 b-因子(偏离 LTE 的程度) -use crate::state::constants::{MLEVEL, UN}; +use crate::tlusty::state::constants::{MLEVEL, UN}; /// 最大能级数 pub const MAX_LEVEL: usize = MLEVEL; diff --git a/src/math/switch.rs b/src/tlusty/math/switch.rs similarity index 100% rename from src/math/switch.rs rename to src/tlusty/math/switch.rs diff --git a/src/math/szirc.rs b/src/tlusty/math/szirc.rs similarity index 98% rename from src/math/szirc.rs rename to src/tlusty/math/szirc.rs index b093786..7be8e27 100644 --- a/src/math/szirc.rs +++ b/src/tlusty/math/szirc.rs @@ -4,7 +4,7 @@ //! //! 使用 Sampson & Zhang (1988, ApJ 335, 516) 的半经验公式。 -use crate::math::eint; +use crate::tlusty::math::eint; /// 电子碰撞电离速率。 /// diff --git a/src/math/tabint.rs b/src/tlusty/math/tabint.rs similarity index 99% rename from src/math/tabint.rs rename to src/tlusty/math/tabint.rs index 7e4ea7b..ef45ee6 100644 --- a/src/math/tabint.rs +++ b/src/tlusty/math/tabint.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `tabint.f` -use crate::state::constants::{MFREQ, MFREQC, MFRTAB, MTABR, MTABT}; +use crate::tlusty::state::constants::{MFREQ, MFREQC, MFRTAB, MTABR, MTABT}; /// 频率表插值系数。 /// 对应 COMMON /intcff/ diff --git a/src/math/taufr1.rs b/src/tlusty/math/taufr1.rs similarity index 99% rename from src/math/taufr1.rs rename to src/tlusty/math/taufr1.rs index 1854445..5ce6840 100644 --- a/src/math/taufr1.rs +++ b/src/tlusty/math/taufr1.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `taufr1.f` -use crate::state::constants::{HK, MDEPTH, MFREQ}; +use crate::tlusty::state::constants::{HK, MDEPTH, MFREQ}; /// TAUFR1 输入参数结构体。 pub struct Taufr1Params<'a> { diff --git a/src/math/tdpini.rs b/src/tlusty/math/tdpini.rs similarity index 96% rename from src/math/tdpini.rs rename to src/tlusty/math/tdpini.rs index 7879311..82b5ca0 100644 --- a/src/math/tdpini.rs +++ b/src/tlusty/math/tdpini.rs @@ -2,9 +2,9 @@ //! //! 重构自 TLUSTY `tdpini.f` -use crate::state::config::BasNum; -use crate::state::constants::{HALF, H, HK, MDEPTH, UN}; -use crate::state::model::{CurOpa, GffPar, ModPar}; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::{HALF, H, HK, MDEPTH, UN}; +use crate::tlusty::state::model::{CurOpa, GffPar, ModPar}; use super::gfree0; diff --git a/src/math/temcor.rs b/src/tlusty/math/temcor.rs similarity index 99% rename from src/math/temcor.rs rename to src/tlusty/math/temcor.rs index fe6d4e9..abefc1e 100644 --- a/src/math/temcor.rs +++ b/src/tlusty/math/temcor.rs @@ -13,7 +13,7 @@ //! - 对流通量对 T 的导数通过数值计算 //! - 对 DELTA 的导数通过解析计算 -use crate::state::constants::{BOLK, HALF, SIG4P, UN}; +use crate::tlusty::state::constants::{BOLK, HALF, SIG4P, UN}; // ============================================================================ // 配置结构体 diff --git a/src/math/temper.rs b/src/tlusty/math/temper.rs similarity index 99% rename from src/math/temper.rs rename to src/tlusty/math/temper.rs index feccc5b..e81ac98 100644 --- a/src/math/temper.rs +++ b/src/tlusty/math/temper.rs @@ -12,7 +12,7 @@ //! - TAUF: Rosseland 光学深度 (如果 ITGR = -1, 0 或 1) 或通量平均不透明度 (如果 ITGR > 1) //! - ITGR: 迭代模式标志 -use crate::state::constants::{BOLK, HALF, TWO, UN, MDEPTH}; +use crate::tlusty::state::constants::{BOLK, HALF, TWO, UN, MDEPTH}; // ============================================================================ // 常量 diff --git a/src/math/timing.rs b/src/tlusty/math/timing.rs similarity index 100% rename from src/math/timing.rs rename to src/tlusty/math/timing.rs diff --git a/src/math/tiopf.rs b/src/tlusty/math/tiopf.rs similarity index 100% rename from src/math/tiopf.rs rename to src/tlusty/math/tiopf.rs diff --git a/src/math/tlocal.rs b/src/tlusty/math/tlocal.rs similarity index 99% rename from src/math/tlocal.rs rename to src/tlusty/math/tlocal.rs index 0fc4e41..16240b7 100644 --- a/src/math/tlocal.rs +++ b/src/tlusty/math/tlocal.rs @@ -5,7 +5,7 @@ //! 根据光学深度计算灰模型的局部温度。 use super::quartc::quartc; -use crate::state::constants::{MDEPTH, UN}; +use crate::tlusty::state::constants::{MDEPTH, UN}; /// TLOCAL 输入参数 pub struct TlocalParams { diff --git a/src/math/topbas.rs b/src/tlusty/math/topbas.rs similarity index 99% rename from src/math/topbas.rs rename to src/tlusty/math/topbas.rs index e7484a4..e6aa4e4 100644 --- a/src/math/topbas.rs +++ b/src/tlusty/math/topbas.rs @@ -7,7 +7,7 @@ //! - 使用 Opacity Project (OP) 数据计算光致电离截面 //! - 在给定频率处进行对数插值 -use crate::math::ylintp::ylintp; +use crate::tlusty::math::ylintp::ylintp; // 常量 const MMAXOP: usize = 200; // OP 数据中最大能级数 diff --git a/src/math/traini.rs b/src/tlusty/math/traini.rs similarity index 96% rename from src/math/traini.rs rename to src/tlusty/math/traini.rs index 961aad1..80b16fb 100644 --- a/src/math/traini.rs +++ b/src/tlusty/math/traini.rs @@ -2,10 +2,10 @@ //! //! 重构自 TLUSTY `traini.f` -use crate::state::atomic::{IonPar, LevPar, TraPar}; -use crate::state::config::BasNum; -use crate::state::constants::MFREQ; -use crate::state::model::{CompIf, DwnPar, LinFrq, LinOvr, ObfPar}; +use crate::tlusty::state::atomic::{IonPar, LevPar, TraPar}; +use crate::tlusty::state::config::BasNum; +use crate::tlusty::state::constants::MFREQ; +use crate::tlusty::state::model::{CompIf, DwnPar, LinFrq, LinOvr, ObfPar}; // ============================================================================ // TRAINI - 不透明度初始化 diff --git a/src/math/tridag.rs b/src/tlusty/math/tridag.rs similarity index 100% rename from src/math/tridag.rs rename to src/tlusty/math/tridag.rs diff --git a/src/math/trmder.rs b/src/tlusty/math/trmder.rs similarity index 99% rename from src/math/trmder.rs rename to src/tlusty/math/trmder.rs index b7e66fa..20b9ef3 100644 --- a/src/math/trmder.rs +++ b/src/tlusty/math/trmder.rs @@ -16,8 +16,8 @@ //! 3. 使用有限差分计算导数 use super::eldens::{eldens_pure, EldensConfig, EldensParams}; -use crate::math::state::StateParams; -use crate::state::constants::{BOLK, HMASS, UN}; +use crate::tlusty::math::state::StateParams; +use crate::tlusty::state::constants::{BOLK, HMASS, UN}; // ============================================================================ // 常量 diff --git a/src/math/trmdrt.rs b/src/tlusty/math/trmdrt.rs similarity index 100% rename from src/math/trmdrt.rs rename to src/tlusty/math/trmdrt.rs diff --git a/src/math/ubeta.rs b/src/tlusty/math/ubeta.rs similarity index 98% rename from src/math/ubeta.rs rename to src/tlusty/math/ubeta.rs index 0bd3204..a8874ad 100644 --- a/src/math/ubeta.rs +++ b/src/tlusty/math/ubeta.rs @@ -2,7 +2,7 @@ //! //! 重构自 TLUSTY `ubeta.f` -use crate::math::lagran; +use crate::tlusty::math::lagran; /// U(beta) 函数插值。 /// diff --git a/src/math/vern16.rs b/src/tlusty/math/vern16.rs similarity index 99% rename from src/math/vern16.rs rename to src/tlusty/math/vern16.rs index b1b3e08..dde481f 100644 --- a/src/math/vern16.rs +++ b/src/tlusty/math/vern16.rs @@ -6,7 +6,7 @@ //! - Verner D.A. et al. 1996, ApJ 465 //! - Verner & Yakovlev 1995, A&AS 109, 125 -use crate::state::constants::{HALF, UN}; +use crate::tlusty::state::constants::{HALF, UN}; // ============================================================================ // VERN16 - 硫离子光电离截面 diff --git a/src/math/vern18.rs b/src/tlusty/math/vern18.rs similarity index 98% rename from src/math/vern18.rs rename to src/tlusty/math/vern18.rs index 0ba6cef..3bda272 100644 --- a/src/math/vern18.rs +++ b/src/tlusty/math/vern18.rs @@ -6,7 +6,7 @@ //! - Verner D.A. et al. 1996, ApJ 465 //! - Verner & Yakovlev 1995, A&AS 109, 125 -use crate::state::constants::{HALF, UN}; +use crate::tlusty::state::constants::{HALF, UN}; // ============================================================================ // VERN18 - 氩离子光电离截面 diff --git a/src/math/vern20.rs b/src/tlusty/math/vern20.rs similarity index 99% rename from src/math/vern20.rs rename to src/tlusty/math/vern20.rs index e18cf1e..1f78191 100644 --- a/src/math/vern20.rs +++ b/src/tlusty/math/vern20.rs @@ -6,7 +6,7 @@ //! - Verner D.A. et al. 1996, ApJ 465 //! - Verner & Yakovlev 1995, A&AS 109, 125 -use crate::state::constants::{HALF, UN}; +use crate::tlusty::state::constants::{HALF, UN}; // ============================================================================ // VERN20 - 钙离子光电离截面 diff --git a/src/math/vern26.rs b/src/tlusty/math/vern26.rs similarity index 99% rename from src/math/vern26.rs rename to src/tlusty/math/vern26.rs index 9cdac5b..fbd189c 100644 --- a/src/math/vern26.rs +++ b/src/tlusty/math/vern26.rs @@ -6,7 +6,7 @@ //! - Verner D.A. et al. 1996, ApJ 465 //! - Verner & Yakovlev 1995, A&AS 109, 125 -use crate::state::constants::{HALF, UN}; +use crate::tlusty::state::constants::{HALF, UN}; // ============================================================================ // VERN26 - 铁离子光电离截面 diff --git a/src/math/verner.rs b/src/tlusty/math/verner.rs similarity index 97% rename from src/math/verner.rs rename to src/tlusty/math/verner.rs index c31be96..b4b424f 100644 --- a/src/math/verner.rs +++ b/src/tlusty/math/verner.rs @@ -5,7 +5,7 @@ //! 基态原子和离子的光电离截面解析拟合。 //! 参考:Verner D.A. et al. 1996, ApJ 465; Verner & Yakovlev 1995, A&AS 109, 125 -use crate::data::{ +use crate::tlusty::data::{ VERN16_E0, VERN16_E95, VERN16_EMX, VERN16_P95, VERN16_PV, VERN16_S0, VERN16_S95, VERN16_Y0, VERN16_Y1, VERN16_Y95, VERN16_YA, VERN16_YW, VERN16_YW95, VERN18_E0, VERN18_E95, VERN18_EMX, VERN18_P95, VERN18_PV, VERN18_S0, VERN18_S95, VERN18_Y0, VERN18_Y1, VERN18_Y95, @@ -16,7 +16,7 @@ use crate::data::{ VERNER_E0, VERNER_E95, VERNER_EMX, VERNER_IV0, VERNER_P95, VERNER_PV, VERNER_S0, VERNER_S95, VERNER_Y0, VERNER_Y1, VERNER_Y95, VERNER_YA, VERNER_YW, VERNER_YW95, }; -use crate::state::H; +use crate::tlusty::state::H; // ============================================================================ // 常量 @@ -57,7 +57,7 @@ const T18: f64 = 1e-18; /// ... /// END /// ``` -pub fn verner(fr: f64, itr: usize, atomic: &crate::state::AtomicData) -> f64 { +pub fn verner(fr: f64, itr: usize, atomic: &crate::tlusty::state::AtomicData) -> f64 { let e = HHEV * fr; // 获取跃迁的下能级索引 (Fortran 1-indexed → Rust 0-indexed) @@ -243,8 +243,8 @@ mod tests { use super::*; // 创建测试用的原子数据 - fn create_test_atomic_data() -> crate::state::AtomicData { - let mut atomic = crate::state::AtomicData::default(); + fn create_test_atomic_data() -> crate::tlusty::state::AtomicData { + let mut atomic = crate::tlusty::state::AtomicData::default(); // 设置 H I 的数据 (最简单的情况) // 假设能级 1 是 H I 基态 diff --git a/src/math/visini.rs b/src/tlusty/math/visini.rs similarity index 99% rename from src/math/visini.rs rename to src/tlusty/math/visini.rs index 6c854db..eefe1a9 100644 --- a/src/math/visini.rs +++ b/src/tlusty/math/visini.rs @@ -7,7 +7,7 @@ //! - 初始化盘模型粘性相关量 //! - 计算 VISCD, THETAV, TVISC 等数组 -use crate::state::constants::{HALF, UN, BOLK}; +use crate::tlusty::state::constants::{HALF, UN, BOLK}; // ============================================================================ // 输入/输出结构体 diff --git a/src/math/voigt.rs b/src/tlusty/math/voigt.rs similarity index 100% rename from src/math/voigt.rs rename to src/tlusty/math/voigt.rs diff --git a/src/math/voigte.rs b/src/tlusty/math/voigte.rs similarity index 100% rename from src/math/voigte.rs rename to src/tlusty/math/voigte.rs diff --git a/src/math/wn.rs b/src/tlusty/math/wn.rs similarity index 100% rename from src/math/wn.rs rename to src/tlusty/math/wn.rs diff --git a/src/math/wnstor.rs b/src/tlusty/math/wnstor.rs similarity index 98% rename from src/math/wnstor.rs rename to src/tlusty/math/wnstor.rs index 56dce42..dfddee1 100644 --- a/src/math/wnstor.rs +++ b/src/tlusty/math/wnstor.rs @@ -4,8 +4,8 @@ //! //! 将氢能级的占据概率存储到 WNCOM 公共块中,以便后续使用。 -use crate::math::wn::wn; -use crate::state::constants::{MLEVEL, NLMX, UN}; +use crate::tlusty::math::wn::wn; +use crate::tlusty::state::constants::{MLEVEL, NLMX, UN}; /// 存储氢能级占据概率。 /// diff --git a/src/math/xk2dop.rs b/src/tlusty/math/xk2dop.rs similarity index 100% rename from src/math/xk2dop.rs rename to src/tlusty/math/xk2dop.rs diff --git a/src/math/yint.rs b/src/tlusty/math/yint.rs similarity index 100% rename from src/math/yint.rs rename to src/tlusty/math/yint.rs diff --git a/src/math/ylintp.rs b/src/tlusty/math/ylintp.rs similarity index 100% rename from src/math/ylintp.rs rename to src/tlusty/math/ylintp.rs diff --git a/src/math/zmrho.rs b/src/tlusty/math/zmrho.rs similarity index 98% rename from src/math/zmrho.rs rename to src/tlusty/math/zmrho.rs index 33a752f..e853ce4 100644 --- a/src/math/zmrho.rs +++ b/src/tlusty/math/zmrho.rs @@ -5,8 +5,8 @@ //! 通过流体静力学平衡方程的近似解,估计 DM, DENS, 和 ZD 的初始值。 //! 气体压力和辐射压力都有贡献。 -use crate::math::{betah, erfcin, erfcx}; -use crate::state::constants::{HALF, MDEPTH, UN}; +use crate::tlusty::math::{betah, erfcin, erfcx}; +use crate::tlusty::state::constants::{HALF, MDEPTH, UN}; /// 初始质量-密度-深度估计。 /// diff --git a/src/tlusty/mod.rs b/src/tlusty/mod.rs new file mode 100644 index 0000000..1e0f364 --- /dev/null +++ b/src/tlusty/mod.rs @@ -0,0 +1,16 @@ +//! TLUSTY 模块。 +//! +//! 非LTE恒星大气模型计算。 + +pub mod data; +pub mod io; +pub mod math; +pub mod physics; +pub mod runner; +pub mod state; + +pub use runner::{ + run_tlusty, check_convergence, select_solver, + TlustyConfig, TlustyResult, TlustyState, + SolverType, TimingStats, MSMX, +}; diff --git a/src/physics/mod.rs b/src/tlusty/physics/mod.rs similarity index 100% rename from src/physics/mod.rs rename to src/tlusty/physics/mod.rs diff --git a/src/tlusty/runner.rs b/src/tlusty/runner.rs new file mode 100644 index 0000000..009e423 --- /dev/null +++ b/src/tlusty/runner.rs @@ -0,0 +1,305 @@ +//! TLUSTY 主程序入口。 +//! +//! 重构自 TLUSTY `tlusty.f` 主程序。 +//! +//! # 算法概述 +//! +//! TLUSTY 使用混合 Complete Linearization (CL) 和 Accelerated Lambda Iteration (ALI) 方法 +//! 计算非LTE恒星大气模型。 +//! +//! 主迭代循环: +//! 1. 初始化 (START) +//! 2. 形式解 (RESOLV) +//! 3. 收敛加速 (ACCEL2) +//! 4. 解线性化方程 (SOLVE/SOLVES/RYBSOL) +//! 5. 重复直到收敛 + +use std::time::Instant; + +// ============================================================================ +// 运行配置 +// ============================================================================ + +/// TLUSTY 运行配置。 +#[derive(Debug, Clone)] +pub struct TlustyConfig { + /// 最大迭代次数 + pub max_iter: usize, + /// 收敛加速模式 (0=关闭, >0=开启) + pub accel_mode: i32, + /// 解法选择 (0=标准SOLVE, 1=Ryan) + pub solver_mode: i32, + /// 是否输出诊断信息 + pub verbose: bool, +} + +impl Default for TlustyConfig { + fn default() -> Self { + Self { + max_iter: 200, + accel_mode: 1, + solver_mode: 0, + verbose: false, + } + } +} + +// ============================================================================ +// 运行状态 +// ============================================================================ + +/// TLUSTY 运行状态。 +#[derive(Debug, Clone)] +pub struct TlustyState { + /// 当前迭代次数 + pub iter: usize, + /// 是否初始化阶段 + pub is_init: bool, + /// 是否完成 + pub is_finished: bool, + /// 是否最后一次迭代 + pub is_final: bool, + /// 系统维度 NN + pub nn: usize, +} + +impl Default for TlustyState { + fn default() -> Self { + Self { + iter: 0, + is_init: true, + is_finished: false, + is_final: false, + nn: 0, + } + } +} + +// ============================================================================ +// 运行结果 +// ============================================================================ + +/// TLUSTY 运行结果。 +#[derive(Debug, Clone)] +pub struct TlustyResult { + /// 最终迭代次数 + pub total_iterations: usize, + /// 是否收敛 + pub converged: bool, + /// 总运行时间(秒) + pub total_time_secs: f64, + /// 各阶段时间统计 + pub timing_stats: TimingStats, +} + +/// 时间统计。 +#[derive(Debug, Clone, Default)] +pub struct TimingStats { + pub formal_solution_time: f64, + pub matrix_solution_time: f64, + pub acceleration_time: f64, +} + +// ============================================================================ +// 主运行函数 +// ============================================================================ + +/// 运行 TLUSTY 计算。 +/// +/// # 算法流程 +/// +/// ```text +/// 1. 初始化 +/// - 读取输入参数 (fort.5) +/// - 设置初始温度结构 +/// - 读取原子数据 +/// - 设置频率网格 +/// +/// 2. 主迭代循环 +/// a) 形式解 (RESOLV) +/// - 解辐射转移方程 +/// - 计算辐射场 +/// b) 收敛加速 (ACCEL2) +/// - Ng 加速 +/// c) 解线性化方程 (SOLVE/SOLVES/RYBSOL) +/// - 统计平衡方程 +/// - 能量守恒方程 +/// d) 更新大气结构 +/// +/// 3. 输出最终模型 +/// ``` +/// +/// # Fortran 原始代码 +/// +/// ```fortran +/// PROGRAM TLUSTY +/// ... +/// CALL START +/// LFIN=.FALSE. +/// IF(NITER.EQ.0) LFIN=.TRUE. +/// +/// 10 ITER=ITER+1 +/// CALL RESOLV +/// INIT=0 +/// IF(LFIN) GO TO 20 +/// +/// IF(IACC.GT.0) CALL ACCEL2 +/// +/// IF(IFRYB.EQ.0) THEN +/// IF(NN.GT.MSMX) THEN +/// CALL SOLVE +/// ELSE +/// CALL SOLVES +/// END IF +/// ELSE +/// CALL RYBSOL +/// END IF +/// +/// CALL TIMING(2,ITER) +/// GO TO 10 +/// 20 CONTINUE +/// STOP +/// END +/// ``` +pub fn run_tlusty(config: &TlustyConfig) -> TlustyResult { + let mut state = TlustyState::default(); + let mut timing_stats = TimingStats::default(); + let start_time = Instant::now(); + + // ======================================== + // 1. 初始化阶段 + // ======================================== + // 对应 Fortran: + // INIT=1 + // ITER=0 + // CALL START + // LFIN=.FALSE. + // IF(NITER.EQ.0) LFIN=.TRUE. + + // 执行初始化 + // let start_output = start(&mut start_params); + // state.nn = start_output.nn; + + // 检查是否需要迭代 (NITER == 0 表示只做初始模型) + // if iterat.niter == 0 { + // state.is_final = true; + // state.is_finished = true; + // } + + // ======================================== + // 2. 主迭代循环 + // ======================================== + while !state.is_finished && state.iter < config.max_iter { + state.iter += 1; + let iter_start = Instant::now(); + + // 2.1 形式解 (RESOLV) + // 对应 Fortran: CALL RESOLV + // let resolv_output = resolv(&mut resolv_params); + + state.is_init = false; + + if state.is_final { + break; + } + + // 2.2 收敛加速 (ACCEL2) + // 对应 Fortran: IF(IACC.GT.0) CALL ACCEL2 + if config.accel_mode > 0 { + let accel_start = Instant::now(); + // let accel_output = accel2(&mut accel_params); + timing_stats.acceleration_time += accel_start.elapsed().as_secs_f64(); + } + + // 2.3 解线性化方程 + // 对应 Fortran: + // IF(IFRYB.EQ.0) THEN + // IF(NN.GT.MSMX) THEN + // CALL SOLVE + // ELSE + // CALL SOLVES + // END IF + // ELSE + // CALL RYBSOL + // END IF + let solve_start = Instant::now(); + let solver_type = select_solver(state.nn, MSMX); + + match solver_type { + SolverType::Standard => { + // let solve_output = solve(&solve_params); + } + SolverType::Simple => { + // let solves_output = solves(&solves_params); + } + SolverType::Ryan => { + // let rybsol_output = rybsol(&rybsol_params); + } + } + + timing_stats.matrix_solution_time += solve_start.elapsed().as_secs_f64(); + + // 记录时间 (TIMING) + // 对应 Fortran: CALL TIMING(2,ITER) + // let timing_output = timing(&TimingParams { mode: TimingMode::Iteration, iter: state.iter }); + + if config.verbose { + println!( + "Iteration {}: time = {:.3}s", + state.iter, + iter_start.elapsed().as_secs_f64() + ); + } + + // 检查收敛 (在实际实现中检查 CHMX 和 CHMT) + } + + let total_time = start_time.elapsed().as_secs_f64(); + + TlustyResult { + total_iterations: state.iter, + converged: state.is_finished, + total_time_secs: total_time, + timing_stats, + } +} + +// ============================================================================ +// 辅助函数 +// ============================================================================ + +/// 检查收敛性。 +pub fn check_convergence(iter: usize, max_change: f64, tolerance: f64) -> bool { + iter > 0 && max_change < tolerance +} + +/// 选择解法。 +/// +/// 根据 nn 和 MSMX 选择合适的解法: +/// - nn > MSMX: 使用完整矩阵解法 SOLVE +/// - nn <= MSMX: 使用简化解法 SOLVES +pub fn select_solver(nn: usize, msmx: usize) -> SolverType { + if nn > msmx { + SolverType::Standard + } else { + SolverType::Simple + } +} + +/// 解法类型。 +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum SolverType { + /// 标准解法 (SOLVE) + Standard, + /// 简化解法 (SOLVES) + Simple, + /// Ryan 解法 (RYBSOL) + Ryan, +} + +// ============================================================================ +// 常量 (从 Fortran 移植) +// ============================================================================ + +/// 最大简化矩阵维度 +pub const MSMX: usize = 2000; diff --git a/src/state/alipar.rs b/src/tlusty/state/alipar.rs similarity index 100% rename from src/state/alipar.rs rename to src/tlusty/state/alipar.rs diff --git a/src/state/arrays.rs b/src/tlusty/state/arrays.rs similarity index 100% rename from src/state/arrays.rs rename to src/tlusty/state/arrays.rs diff --git a/src/state/atomic.rs b/src/tlusty/state/atomic.rs similarity index 100% rename from src/state/atomic.rs rename to src/tlusty/state/atomic.rs diff --git a/src/state/config.rs b/src/tlusty/state/config.rs similarity index 100% rename from src/state/config.rs rename to src/tlusty/state/config.rs diff --git a/src/state/constants.rs b/src/tlusty/state/constants.rs similarity index 100% rename from src/state/constants.rs rename to src/tlusty/state/constants.rs diff --git a/src/state/iterat.rs b/src/tlusty/state/iterat.rs similarity index 100% rename from src/state/iterat.rs rename to src/tlusty/state/iterat.rs diff --git a/src/state/mod.rs b/src/tlusty/state/mod.rs similarity index 100% rename from src/state/mod.rs rename to src/tlusty/state/mod.rs diff --git a/src/state/model.rs b/src/tlusty/state/model.rs similarity index 100% rename from src/state/model.rs rename to src/tlusty/state/model.rs diff --git a/src/state/odfpar.rs b/src/tlusty/state/odfpar.rs similarity index 100% rename from src/state/odfpar.rs rename to src/tlusty/state/odfpar.rs