tlusty重构完成
This commit is contained in:
parent
b71930cf8e
commit
f08c328b70
29
src/lib.rs
29
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;
|
||||
|
||||
@ -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<Vec<f64>> {
|
||||
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<Vec<f64>> {
|
||||
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<Vec<f64>> {
|
||||
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<Vec<f64>> {
|
||||
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<Vec<f64>> {
|
||||
#[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();
|
||||
59
src/synspec/math/mod.rs
Normal file
59
src/synspec/math/mod.rs
Normal file
@ -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};
|
||||
@ -4,7 +4,7 @@
|
||||
//!
|
||||
//! 计算给定深度点的总分子谱线不透明度 (ABLIN) 和发射率 (EMLIN)。
|
||||
|
||||
use super::voigtk::{voigtk, MVOI};
|
||||
use crate::synspec::math::voigtk::{voigtk, MVOI};
|
||||
|
||||
/// 常量
|
||||
const UN: f64 = 1.0;
|
||||
@ -4,7 +4,7 @@
|
||||
//!
|
||||
//! 计算详细光致电离的吸收和发射系数(从 READPH 读取的表格数据)。
|
||||
|
||||
use crate::state::constants::{HK, BN};
|
||||
use crate::tlusty::state::constants::{HK, BN};
|
||||
|
||||
/// 光致电离截面数据(对应 COMMON/PHOTCS/)
|
||||
#[derive(Debug, Clone)]
|
||||
@ -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;
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
//!
|
||||
//! 重构自 SYNSPEC `starkir.f`
|
||||
|
||||
use crate::math::eint;
|
||||
use crate::tlusty::math::eint;
|
||||
|
||||
/// 物理常量
|
||||
const PI: f64 = 3.14159265;
|
||||
5
src/synspec/mod.rs
Normal file
5
src/synspec/mod.rs
Normal file
@ -0,0 +1,5 @@
|
||||
//! SYNSPEC 模块。
|
||||
//!
|
||||
//! 合成光谱计算。
|
||||
|
||||
pub mod math;
|
||||
@ -7,9 +7,9 @@
|
||||
//! 计算每个能级的总进出速率,用于检查统计平衡。
|
||||
//! 输出到 fort.16:每个能级的 <OUT> 和 <IN> 速率及相对差异。
|
||||
|
||||
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<f64> {
|
||||
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();
|
||||
@ -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<R: std::io::BufRead>(
|
||||
#[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;
|
||||
@ -17,7 +17,7 @@
|
||||
//! 本模块将纯计算部分提取为独立函数,便于测试。
|
||||
|
||||
use super::{Result, FortranReader, FortranWriter};
|
||||
use crate::state::constants::*;
|
||||
use crate::tlusty::state::constants::*;
|
||||
|
||||
// ============================================================================
|
||||
// 物理常数
|
||||
@ -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<R: std::io::BufRead>(
|
||||
#[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 {
|
||||
@ -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;
|
||||
|
||||
// ============================================================================
|
||||
@ -12,7 +12,7 @@
|
||||
//! - 提取温度、密度、电子密度等物理量
|
||||
|
||||
use super::{IoError, Result};
|
||||
use crate::state::constants::*;
|
||||
use crate::tlusty::state::constants::*;
|
||||
use std::io::BufRead;
|
||||
|
||||
// ============================================================================
|
||||
@ -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};
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 配置结构体
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 常量
|
||||
@ -6,7 +6,7 @@
|
||||
//! 共有 236 个可配置参数。
|
||||
|
||||
use super::{FortranReader, FortranWriter, Result};
|
||||
use crate::math::getwrd;
|
||||
use crate::tlusty::math::getwrd;
|
||||
|
||||
// ============================================================================
|
||||
// 参数常量
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 数据结构
|
||||
@ -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
|
||||
@ -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)]
|
||||
@ -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;
|
||||
|
||||
// ============================================================================
|
||||
// 配置结构体
|
||||
@ -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)
|
||||
@ -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)]
|
||||
@ -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;
|
||||
|
||||
// ============================================================================
|
||||
// 配置参数
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
// ============================================================================
|
||||
// 配置参数
|
||||
@ -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> {
|
||||
@ -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 {
|
||||
@ -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 {
|
||||
@ -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;
|
||||
@ -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 {
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 配置结构体
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 配置结构体
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 输入/输出结构体
|
||||
@ -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> {
|
||||
@ -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
|
||||
@ -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()
|
||||
@ -2,7 +2,7 @@
|
||||
//!
|
||||
//! 重构自 TLUSTY `betah.f`
|
||||
|
||||
use crate::math::erfcx;
|
||||
use crate::tlusty::math::erfcx;
|
||||
|
||||
/// 求解总压力标高 β。
|
||||
///
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 控制参数
|
||||
@ -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;
|
||||
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 输入参数结构体
|
||||
@ -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 {
|
||||
@ -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> {
|
||||
@ -9,7 +9,7 @@
|
||||
//! - 处理统计平衡方程对温度和密度的依赖性
|
||||
//! - 支持 LTE 和非 LTE 两种模式
|
||||
|
||||
use crate::state::constants::{HK, H, UN};
|
||||
use crate::tlusty::state::constants::{HK, H, UN};
|
||||
|
||||
// ============================================================================
|
||||
// 常量
|
||||
@ -5,7 +5,7 @@
|
||||
//! 计算辐射平衡方程对应的矩阵 A, B, C 部分(第 NFREQE+INRE 行)。
|
||||
//! 包含积分方程部分和微分方程部分。
|
||||
|
||||
use crate::state::constants::{HALF, SIG4P, UN};
|
||||
use crate::tlusty::state::constants::{HALF, SIG4P, UN};
|
||||
|
||||
// ============================================================================
|
||||
// 常量
|
||||
@ -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;
|
||||
@ -5,7 +5,7 @@
|
||||
//! 计算线性化辐射转移方程的矩阵 A, B, C 部分(前 NFREQE 行)。
|
||||
//! 处理三种深度情况:上边界、内部点、下边界。
|
||||
|
||||
use crate::state::constants::{HALF, UN};
|
||||
use crate::tlusty::state::constants::{HALF, UN};
|
||||
|
||||
// ============================================================================
|
||||
// 常量
|
||||
@ -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)]
|
||||
@ -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] = [
|
||||
@ -4,7 +4,7 @@
|
||||
//!
|
||||
//! 基于 Raymond 的方法,使用 Tim Kallman 的程序。
|
||||
|
||||
use crate::math::expo;
|
||||
use crate::tlusty::math::expo;
|
||||
|
||||
/// 碰撞电离速率系数数组。
|
||||
struct CionData {
|
||||
@ -4,7 +4,7 @@
|
||||
//!
|
||||
//! 参考:Koester (1985, AA 149, 423)
|
||||
|
||||
use crate::state::CAS;
|
||||
use crate::tlusty::state::CAS;
|
||||
|
||||
/// 基本光子截面常数
|
||||
const PHOT0: f64 = 2.815e29;
|
||||
@ -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;
|
||||
@ -8,7 +8,7 @@
|
||||
//! - 支持多种碰撞速率公式(ICOL = 0, 1, 2, 3)
|
||||
//! - 包含碰撞电离和碰撞激发
|
||||
|
||||
use crate::state::constants::{HK, H, UN};
|
||||
use crate::tlusty::state::constants::{HK, H, UN};
|
||||
|
||||
// ============================================================================
|
||||
// 常量和数据
|
||||
@ -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};
|
||||
|
||||
// ============================================================================
|
||||
// 常量
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user