#!/!/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!"