SpectraRust/scripts/refactor_modules.sh
2026-03-25 18:34:41 +08:00

439 lines
20 KiB
Bash

#!/!/bin/bash
# TLUSTY 模块重构脚本
# 将 src/tlusty/math 中的模块按功能重新组织到新的目录结构
set -e
# 项目根目录
PROJECT_ROOT="C:/Users/fmq/Documents/astro/SpectraRust"
SRC_DIR="$PROJECT_ROOT/src/tlusty"
math_DIR="$PROJECT_ROOT/src/tlusty/math"
new_dir="$PROJECT_ROOT/src/tlusty"
/math"
mkdir -p "$math_dir/math"
mkdir -p "$math_dir/math/special"
mkdir -p "$math_dir/math/solvers"
mkdir -p "$math_dir/math/interpolate"
mkdir -p "$math_dir/math/utils"
mkdir -p "$math_dir/physics/opacity"
mkdir -p "$math_dir/physics/cross_section"
mkdir -p "$math_dir/physics/collision"
mkdir -p "$math_dir/physics/line_profile"
mkdir -p "$math_dir/physics/radiative"
mkdir -p "$math_dir/physics/thermodynamics"
mkdir -p "$math_dir/physics/hydrogen"
mkdir -p "$math_dir/equilibrium"
mkdir -p "$math_dir/linearization"
mkdir -p "$math_dir/acceleration"
mkdir -p "$math_dir/atmosphere"
mkdir -p "$math_dir/spectral"
mkdir -p "$math_dir/model_init"
mkdir -p "$math_dir/io"
mkdir -p "$math_dir/utils"
# ============================================================
# 1. math/special/ - 特殊函数 (expint, expo, erfcx, gauleg, expinx)
# ============================================================
move_module "expo" "$math_dir/math/special"
move_module "expint" "$math_dir/math/special"
move_module "expinx" "$math_dir/math/special"
move_module "erfcx" "$math_dir/math/special"
move_module "gauleg" "$math_dir/math/special"
# ============================================================
# 2. math/solvers/ - 方程求解器 (tridag, lineqs, minv3, cubic, quartc, solve, solves, laguer, ubeta, psolve, levsol)
# ============================================================
move_module "tridag" "$math_dir/math/solvers"
move_module "lineqs" "$math_dir/math/solvers"
move_module "minv3" "$math_dir/math/solvers"
move_module "cubic" "$math_dir/math/solvers"
move_module "quartc" "$math_dir/math/solvers"
move_module "solve" "$math_dir/math/solvers"
move_module "solves" "$math_dir/math/solvers"
move_module "laguer" "$math_dir/math/solvers"
move_module "ubeta" "$math_dir/math/solvers"
move_module "psolve" "$math_dir/math/solvers"
move_module "levsol" "$math_dir/math/solvers"
# ============================================================
# 3. math/interpolate/ - 插值函数 (lagran, yint, ylintp, interpolate, tabint, locate, indexx)
# ============================================================
move_module "lagran" "$math_dir/math/interpolate"
move_module "yint" "$math_dir/math/interpolate"
move_module "ylintp" "$math_dir/math/interpolate"
move_module "interpolate" "$math_dir/math/interpolate"
move_module "tabint" "$math_dir/math/interpolate"
move_module "locate" "$math_dir/math/interpolate"
move_module "indexx" "$math_dir/math/interpolate"
# ============================================================
# 4. math/utils/ - 其他工具 (ubeta)
ubeta, indexx)
# ============================================================
move_module "ubeta" "$math_dir/math/utils"
move_module "indexx" "$math_dir/math/utils"
# ============================================================
# 5. physics/opacity/ - 不透明度计算
move_module "opacf0" "$math_dir/physics/opacity"
move_module "opacf1" "$math_dir/physics/opacity"
move_module "opacfa" "$math_dir/physics/opacity"
move_module "opacfd" "$math_dir/physics/opacity"
move_module "opacfl" "$math_dir/physics/opacity"
move_module "opadd" "$math_dir/physics/opacity"
move_module "opadd0" "$math_dir/physics/opacity"
move_module "opahst" "$math_dir/physics/opacity"
move_module "opaini" "$math_dir/physics/opacity"
move_module "opctab" "$math_dir/physics/opacity"
move_module "opdata" "$math_dir/physics/opacity"
move_module "opfrac" "$math_dir/physics/opacity"
move_module "traini" "$math_dir/physics/opacity"
move_module "meanop" "$math_dir/physics/opacity"
move_module "meanopt" "$math_dir/physics/opacity"
move_module "opact1" "$math_dir/physics/opacity"
move_module "opactd" "$math_dir/physics/opacity"
move_module "opactr" "$math_dir/physics/opacity"
# ============================================================
# 6. physics/cross_section/ - 截面计算
mkdir -p "$math_dir/physics/cross_section/photoion"
mkdir -p "$math_dir/physics/cross_section/bound_free"
mkdir -p "$math_dir/physics/cross_section/free_free"
mkdir -p "$math_dir/physics/cross_section/cia"
mkdir -p "$math_dir/physics/cross_section/rayleigh"
mkdir -p "$math_dir/physics/cross_section/gaunt"
mkdir -p "$math_dir/physics/cross_section/hydrogen"
mkdir -p "$math_dir/physics/cross_section/stark"
mkdir -p "$math_dir/physics/cross_section/broadening"
mkdir -p "$math_dir/physics/cross_section/spectral"
mkdir -p "$math_dir/physics/cross_section/radiative"
mkdir -p "$math_dir/physics/cross_section/equilibrium"
# ============================================================
move_module "cross" "$math_dir/physics/cross_section/photoion"
move_module "verner" "$math_dir/physics/cross_section/photoion"
move_module "vern16" "$math_dir/physics/cross_section/photoion"
move_module "vern18" "$math_dir/physics/cross_section/photoion"
move_module "vern20" "$math_dir/physics/cross_section/photoion"
move_module "vern26" "$math_dir/physics/cross_section/photoion"
move_module "topbas" "$math_dir/physics/cross_section/photoion"
move_module "sigk" "$math_dir/physics/cross_section/photoion"
move_module "sigave" "$math_dir/physics/cross_section/photoion"
move_module "bkhsgo" "$math_dir/physics/cross_section/photoion"
move_module "hidalg" "$math_dir/physics/cross_section/photoion"
move_module "reiman" "$math_dir/physics/cross_section/photoion"
move_module "hephot" "$math_dir/physics/cross_section/photoion"
move_module "carbon" "$math_dir/physics/cross_section/photoion"
move_module "ckoest" "$math_dir/physics/cross_section/photoion"
move_module "sbfch" "$math_dir/physics/cross_section/bound_free"
move_module "sbfhe1" "$math_dir/physics/cross_section/bound_free"
move_module "sbfhmi" "$math_dir/physics/cross_section/bound_free"
move_module "sbfhmi_old" "$math_dir/physics/cross_section/bound_free"
move_module "sbfoh" "$math_dir/physics/cross_section/bound_free"
move_module "ffcros" "$math_dir/physics/cross_section/free_free"
move_module "sffhmi" "$math_dir/physics/cross_section/free_free"
move_module "sffhmi_add" "$math_dir/physics/cross_section/free_free"
move_module "h2minus" "$math_dir/physics/cross_section/free_free"
move_module "cia_h2h" "$math_dir/physics/cross_section/cia"
move_module "cia_h2h2" "$math_dir/physics/cross_section/cia"
move_module "cia_hhe" "$math_dir/physics/cross_section/cia"
move_module "rayleigh" "$math_dir/physics/cross_section/rayleigh"
move_module "rayset" "$math_dir/physics/cross_section/rayleigh"
move_module "gaunt" "$math_dir/physics/cross_section/gaunt"
move_module "gfree" "$math_dir/physics/cross_section/gaunt"
move_module "gntk" "$math_dir/physics/cross_section/gaunt"
move_module "ghydop" "$math_dir/physics/cross_section/hydrogen"
move_module "xk2dop" "$math_dir/physics/cross_section/hydrogen"
move_module "intxen" "$math_dir/physics/cross_section/hydrogen"
move_module "intlem" "$math_dir/physics/cross_section/hydrogen"
move_module "lemini" "$math_dir/physics/cross_section/hydrogen"
move_module "inthyd" "$math_dir/physics/cross_section/stark"
move_module "starka" "$math_dir/physics/cross_section/stark"
move_module "divstr" "$math_dir/physics/cross_section/stark"
move_module "dopgam" "$math_dir/physics/cross_section/broadening"
move_module "gami" "$math_dir/physics/cross_section/broadening"
move_module "gamsp" "$math_dir/physics/cross_section/broadening"
move_module "gvdw" "$math_dir/physics/cross_section/broadening"
move_module "lymlin" "$math_dir/physics/cross_section/hydrogen"
move_module "sghe12" "$math_dir/physics/cross_section/hydrogen"
move_module "sgmer" "$math_dir/physics/cross_section/hydrogen"
move_module "sgmer1" "$math_dir/physics/cross_section/hydrogen"
move_module "sigmar" "$math_dir/physics/cross_section/spectral"
move_module "sigave" "$math_dir/physics/cross_section/spectral"
move_module "rossop" "$math_dir/physics/cross_section/spectral"
move_module "rosstd" "$math_dir/physics/cross_section/spectral"
move_module "radpre" "$math_dir/physics/cross_section/radiative"
move_module "radtot" "$math_dir/physics/cross_section/radiative"
move_module "rechck" "$math_dir/physics/cross_section/radiative"
move_module "russel" "$math_dir/physics/cross_section/equilibrium"
move_module "moleq" "$math_dir/physics/cross_section/equilibrium"
move_module "rhonen" "$math_dir/physics/cross_section/equilibrium"
move_module "rhoeos" "$math_dir/physics/cross_section/equilibrium"
move_module "state" "$math_dir/physics/cross_section/equilibrium"
# ============================================================
# 7. physics/collision/ - 碰撞过程
mkdir -p "$math_dir/physics/collision"
move_module "colh" "$math_dir/physics/collision"
move_module "colhe" "$math_dir/physics/collision"
move_module "colis" "$math_dir/physics/collision"
move_module "collhe" "$math_dir/physics/collision"
move_module "butler" "$math_dir/physics/collision"
move_module "ceh12" "$math_dir/physics/collision"
move_module "cheav" "$math_dir/physics/collision"
move_module "cheavj" "$math_dir/physics/collision"
move_module "cspec" "$math_dir/physics/collision"
move_module "cion" "$math_dir/physics/collision"
move_module "irc" "$math_dir/physics/collision"
move_module "szirc" "$math_dir/physics/collision"
move_module "dielrc" "$math_dir/physics/collision"
move_module "dietot" "$math_dir/physics/collision"
move_module "ctdata" "$math_dir/physics/collision"
# ============================================================
# 8. physics/line_profile/ - 谱线轮廓
mkdir -p "$math_dir/physics/line_profile"
move_module "voigt" "$math_dir/physics/line_profile"
move_module "voigte" "$math_dir/physics/line_profile"
move_module "profil" "$math_dir/physics/line_profile"
move_module "profsp" "$math_dir/physics/line_profile"
move_module "xk2dop" "$math_dir/physics/line_profile"
move_module "stark0" "$math_dir/physics/line_profile"
move_module "starka" "$math_dir/physics/line_profile"
move_module "divstr" "$math_dir/physics/line_profile"
move_module "inthyd" "$math_dir/physics/line_profile"
move_module "intlem" "$math_dir/physics/line_profile"
move_module "intxen" "$math_dir/physics/line_profile"
move_module "lemini" "$math_dir/physics/line_profile"
move_module "gomini" "$math_dir/physics/line_profile"
move_module "allard" "$math_dir/physics/line_profile"
move_module "allardt" "$math_dir/physics/line_profile"
move_module "quasim" "$math_dir/physics/line_profile"
move_module "dopgam" "$math_dir/physics/line_profile"
move_module "gami" "$math_dir/physics/line_profile"
move_module "gamsp" "$math_dir/physics/line_profile"
move_module "gvdw" "$math_dir/physics/line_profile"
# ============================================================
# 9. physics/radiative/ - 辐射转移方程
mkdir -p "$math_dir/physics/radiative"
move_module "rteang" "$math_dir/physics/radiative"
move_module "rtecf0" "$math_dir/physics/radiative"
move_module "rtecf1" "$math_dir/physics/radiative"
move_module "rtedf1" "$math_dir/physics/radiative"
move_module "rtedf2" "$math_dir/physics/radiative"
move_module "rtefe2 "$math_dir/physics/radiative"
move_module "rtefr1" "$math_dir/physics/radiative"
move_module "rteint" "$math_dir/physics/radiative"
move_module "rtesol" "$math_dir/physics/radiative"
move_module "rte_sc" "$math_dir/physics/radiative"
move_module "compt0" "$math_dir/physics/radiative"
move_module "comset" "$math_dir/physics/radiative"
move_module "angset" "$math_dir/physics/radiative"
move_module "inicom" "$math_dir/physics/radiative"
move_module "rtecmc" "$math_dir/physics/radiative"
move_module "rtecmu" "$math_dir/physics/radiative"
move_module "rtecom" "$math_dir/physics/radiative"
move_module "prd" "$math_dir/physics/radiative"
move_module "prdin" "$math_dir/physics/radiative"
move_module "prdini" "$math_dir/physics/radiative"
move_module "radtot" "$math_dir/physics/radiative"
move_module "radpre" "$math_dir/physics/radiative"
# ============================================================
# 10. physics/thermodynamics/ - 热力学
mkdir -p "$math_dir/physics/thermodynamics"
move_module "state" "$math_dir/physics/thermodynamics"
move_module "rhoeos" "$math_dir/physics/thermodynamics"
move_module "rhonen" "$math_dir/physics/thermodynamics"
move_module "eldens" "$math_dir/physics/thermodynamics"
move_module "elcor" "$math_dir/physics/thermodynamics"
move_module "eldenc" "$math_dir/physics/thermodynamics"
move_module "entene" "$math_dir/physics/thermodynamics"
move_module "trmder" "$math_dir/physics/thermodynamics"
move_module "trmdrt" "$math_dir/physics/thermodynamics"
move module "setdrt" "$math_dir/physics/thermodynamics"
move_module "prsent" "$math_dir/physics/thermodynamics"
move_module "pgset" "$math_dir/physics/thermodynamics"
move_module "betah" "$math_dir/physics/thermodynamics"
# ============================================================
# 11. physics/hydrogen/ - 氢原子特殊处理
mkdir -p "$math_dir/physics/hydrogen"
move_module "wn" "$math_dir/physics/hydrogen"
move_module "wnstor" "$math_dir/physics/hydrogen"
move_module "lymlin" "$math_dir/physics/hydrogen"
move_module "ghydop" "$math_dir/physics/hydrogen"
# ============================================================
# 12. equilibrium/ - 平衡计算
mkdir -p "$math_dir/equilibrium"
move_module "rates1" "$math_dir/equilibrium"
move_module "ratmat" "$math_dir/equilibrium"
move_module "ratmal" "$math_dir/equilibrium"
move_module "ratsp1" "$math_dir/equilibrium"
move_module "steqeq" "$math_dir/equilibrium"
move_module "reflev" "$math_dir/equilibrium"
move_module "sabolf" "$math_dir/equilibrium"
move_module "newpop" "$math_dir/equilibrium"
move_module "russel" "$math_dir/equilibrium"
move_module "moleq" "$math_dir/equilibrium"
move_module "partf" "$math_dir/equilibrium"
move_module "mpartf" "$math_dir/equilibrium"
move_module "pfcno" "$math_dir/equilibrium"
move_module "pffe" "$math_dir/equilibrium"
move_module "pfheav" "$math_dir/equilibrium"
move module "pfni" "$math_dir/equilibrium"
move_module "pfspec" "$math_dir/equilibrium"
move_module "tiopf" "$math_dir/equilibrium"
move_module "levset" "$math_dir/equilibrium"
move_module "levgrp" "$math_dir/equilibrium"
# ============================================================
# 13. linearization/ - 完全线性化方法
mkdir -p "$math_dir/linearization"
move_module "bhe" "$math_dir/linearization"
move_module "bre" "$math_dir/linearization"
move module "brez" "$math_dir/linearization"
move module "brte" "$math_dir/linearization"
move module "brtez" "$math_dir/linearization"
move_module "bpop" "$math_dir/linearization"
move_module "bpopc" "$math_dir/linearization"
move module "bpope" "$math_dir/linearization"
move_module "bpopf" "$math_dir/linearization"
move_module "bpopt" "$math_dir/linearization"
move module "emat" "$math_dir/linearization"
move_module "matcon" "$math_dir/linearization"
move_module "matgen" "$math_dir/linearization"
move module "matinv" "$math_dir/linearization"
move module "rhsgen" "$math_dir/linearization"
move module "solve" "$math_dir/linearization"
move module "solves" "$math_dir/linearization"
move module "levsol" "$math_dir/linearization"
move_module "rybmat" "$math_dir/linearization"
move_module "rybheq" "$math_dir/linearization"
move module "rybene" "$math_dir/linearization"
move module "rybchn" "$math_dir/linearization"
move module "rybsol" "$math_dir/linearization"
# ============================================================
# 14. acceleration/ - 加速算法
mkdir -p "$math_dir/acceleration"
move_module "alifr1" "$math_dir/acceleration"
move_module "alifr3" "$math_dir/acceleration"
move module "alifr6" "$math_dir/acceleration"
move module "alifrk" "$math_dir/acceleration"
move module "alisk1" "$math_dir/acceleration"
move module "alisk2" "$math_dir/acceleration"
move module "alist1" "$math_dir/acceleration"
move module "alist2" "$math_dir/acceleration"
move_module "ijali2" "$math_dir/acceleration"
move_module "ijalis" "$math_dir/acceleration"
move_module "getlal" "$math_dir/acceleration"
move_module "accel2" "$math_dir/acceleration"
move_module "accelp" "$math_dir/acceleration"
move_module "osccor" "$math_dir/acceleration"
move_module "taufr1" "$math_dir/acceleration"
# ============================================================
# 15. atmosphere/ - 大气模型
mkdir -p "$math_dir/atmosphere"
move_module "convec" "$math_dir/atmosphere"
move_module "concor" "$math_dir/atmosphere"
move module "conout" "$math_dir/atmosphere"
move_module "conref" "$math_dir/atmosphere"
move module "contmd" "$math_dir/atmosphere"
move_module "contmp" "$math_dir/atmosphere"
move module "temper" "$math_dir/atmosphere"
move_module "temcor" "$math_dir/atmosphere"
move module "tlocal" "$math_dir/atmosphere"
move module "lucy" "$math_dir/atmosphere"
move_module "tdpini" "$math_dir/atmosphere"
move_module "newdm" "$math_dir/atmosphere"
move module "newdmt" "$math_dir/atmosphere"
move module "dmder" "$math_dir/atmosphere"
move_module "dmeval" "$math_dir/atmosphere"
move module "zmrho" "$math_dir/atmosphere"
move module "column" "$math_dir/atmosphere"
move module "gridp" "$math_dir/atmosphere"
move module "hesolv" "$math_dir/atmosphere"
move_module "hesol6" "$math_dir/atmosphere"
move module "greyd" "$math_dir/atmosphere"
move_module "odf1" "$math_dir/atmosphere"
move_module "odffr" "$math_dir/atmosphere"
move_module "odfhst" "$math_dir/atmosphere"
move_module "odfhyd" "$math_dir/atmosphere"
move_module "odfhys" "$math_dir/atmosphere"
move module "odfmer" "$math_dir/atmosphere"
# ============================================================
# 16. spectral/ - 谱线处理
mkdir -p "$math_dir/spectral"
move_module "linpro" "$math_dir/spectral"
move_module "linsel" "$math_dir/spectral"
move_module "linspl" "$math_dir/spectral"
move_module "linfrq" "$math_dir/spectral"
move_module "linovr" "$math_dir/spectral"
move module "linfxd" "$math_dir/spectral"
move_module "sigmar" "$math_dir/spectral"
move module "sigave" "$math_dir/spectral"
move module "sigk" "$math_dir/spectral"
move_module "rossop" "$math_dir/spectral"
move module "rosstd" "$math_dir/spectral"
move module "radpre" "$math_dir/spectral"
move module "radtot" "$math_dir/spectral"
move module "meanop" "$math_dir/spectral"
move module "meanopt" "$math_dir/spectral"
# ============================================================
# 17. model_init/ - 模型初始化
mkdir -p "$math_dir/model_init"
move_module "inilam" "$math_dir/model_init"
move_module "inifrc" "$math_dir/model_init"
move_module "inifrs" "$math_dir/model_init"
move_module "inifrt" "$math_dir/model_init"
move_module "inpdis" "$math_dir/model_init"
move_module "change" "$math_dir/model_init"
move_module "hedif" "$math_dir/model_init"
move_module "chctab" "$math_dir/model_init"
move_module "inifrs" "$math_dir/model_init"
move_module "inifrt" "$math_dir/model_init"
move module "dwnfr" "$math_dir/model_init"
move_module "dwnfr0" "$math_dir/model_init"
move_module "dwnfr1" "$math_dir/model_init"
move_module "levset" "$math_dir/model_init"
move module "levgrp" "$math_dir/model_init"
move module "visini" "$math_dir/model_init"
move_module "grcor" "$math_dir/model_init"
move_module "rap" "$math_dir/model_init"
# ============================================================
# 18. io/ - 输入输出
mkdir -p "$math_dir/io"
move_module "output" "$math_dir/io"
move_module "rdata" "$math_dir/io"
move_module "rdatax" "$math_dir/io"
move_module "readbf" "$math_dir/io"
move_module "inkul" "$math_dir/io"
move_module "timing" "$math_dir/io"
move_module "getwrd" "$math_dir/io"
move_module "quit" "$math_dir/io"
move_module "prchan" "$math_dir/io"
move_module "princ" "$math_dir/io"
move module "prnt" "$math_dir/io"
# ============================================================
# 19. utils - 杂项工具
mkdir -p "$math_dir/utils"
move_module "pzert" "$math_dir/utils"
move_module "pzevld" "$math_dir/utils"
move module "corrwm" "$math_dir/utils"
move_module "dwnfr" "$math_dir/utils"
move_module "dwnfr0" "$math_dir/utils"
move_module "dwnfr1" "$math_dir/utils"
# ============================================================
# 20. Other modules - 杂项
mkdir -p "$math_dir/utils"
move_module "grcor" "$math_dir/utils"
move_module "betah" "$math_dir/utils"
move_module "coolrt" "$math_dir/utils"
move module "rechck" "$math_dir/utils"
move_module "russel" "$math_dir/utils"
move_module "moleq" "$math_dir/utils"
move_module "rhonen" "$math_dir/utils"
move_module "rhoeos" "$math_dir/utils"
move_module "radpre" "$math_dir/utils"
move module "radtot" "$math_dir/utils"
move module "raph" "$math_dir/utils"
move_module "brte" "$math_dir/utils"
move_module "brtez" "$math_dir/utils"
move_module "pzeval" "$math_dir/utils"
move module "pzevld" "$math_dir/utils"
echo "模块 organized by function!"