重构3
This commit is contained in:
@@ -339,9 +339,263 @@ impl VoiPar {
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// ATOMAS - 原子质量额外存储
|
||||
// ============================================================================
|
||||
|
||||
/// 原子质量额外存储。
|
||||
/// 对应 COMMON /ATOMAS/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AtoMas {
|
||||
pub amas: Vec<f64>,
|
||||
}
|
||||
|
||||
impl Default for AtoMas {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
amas: vec![0.0; 100],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// TOPCS - 截面拟合参数
|
||||
// ============================================================================
|
||||
|
||||
/// 截面拟合参数。
|
||||
/// 对应 COMMON /TOPCS/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TopCs {
|
||||
pub ctop: Vec<Vec<f64>>,
|
||||
pub xtop: Vec<Vec<f64>>,
|
||||
}
|
||||
|
||||
impl Default for TopCs {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
ctop: vec![vec![0.0; MCROSS]; MFIT],
|
||||
xtop: vec![vec![0.0; MCROSS]; MFIT],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// TABCOL - 碰撞率表
|
||||
// ============================================================================
|
||||
|
||||
/// 碰撞率表。
|
||||
/// 对应 COMMON /TABCOL/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TabCol {
|
||||
pub ctemp: Vec<Vec<Vec<f64>>>,
|
||||
pub crate_data: Vec<Vec<Vec<f64>>>,
|
||||
}
|
||||
|
||||
impl Default for TabCol {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
ctemp: vec![vec![vec![0.0; MCORAT]; MCFIT]; MXTCOL],
|
||||
crate_data: vec![vec![vec![0.0; MCORAT]; MCFIT]; MXTCOL],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// TRACOR - 跃迁修正
|
||||
// ============================================================================
|
||||
|
||||
/// 跃迁修正标志。
|
||||
/// 对应 COMMON /TRACOR/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TraCor {
|
||||
pub lexp: Vec<i32>,
|
||||
pub lali: Vec<i32>,
|
||||
}
|
||||
|
||||
impl Default for TraCor {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
lexp: vec![0; MTRANS],
|
||||
lali: vec![0; MTRANS],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// TRAALI - ALI 跃迁标志
|
||||
// ============================================================================
|
||||
|
||||
/// ALI 跃迁标志。
|
||||
/// 对应 COMMON /TRAALI/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct TraAli {
|
||||
pub nffix: i32,
|
||||
pub ifsub: i32,
|
||||
pub iflev: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// AUXIND - 辅助索引
|
||||
// ============================================================================
|
||||
|
||||
/// 辅助索引。
|
||||
/// 对应 COMMON /AUXIND/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct AuxInd {
|
||||
pub iath: i32,
|
||||
pub iathe: i32,
|
||||
pub ielh: i32,
|
||||
pub ielhm: i32,
|
||||
pub ielhe1: i32,
|
||||
pub ielhe2: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// IONFIL - 离子文件映射
|
||||
// ============================================================================
|
||||
|
||||
/// 离子文件映射。
|
||||
/// 对应 COMMON /IONFIL/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct IonFil {
|
||||
pub fidata: Vec<String>,
|
||||
pub fiodf1: Vec<String>,
|
||||
pub fiodf2: Vec<String>,
|
||||
pub fibfcs: Vec<String>,
|
||||
}
|
||||
|
||||
impl Default for IonFil {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
fidata: vec![String::new(); MION],
|
||||
fiodf1: vec![String::new(); MION],
|
||||
fiodf2: vec![String::new(); MION],
|
||||
fibfcs: vec![String::new(); MION],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// IONDAT - 离子数据索引
|
||||
// ============================================================================
|
||||
|
||||
/// 离子数据索引。
|
||||
/// 对应 COMMON /IONDAT/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct IonDat {
|
||||
pub iati: Vec<i32>,
|
||||
pub izi: Vec<i32>,
|
||||
pub nlevs: Vec<i32>,
|
||||
pub nllim: Vec<i32>,
|
||||
}
|
||||
|
||||
impl Default for IonDat {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
iati: vec![0; MION],
|
||||
izi: vec![0; MION],
|
||||
nlevs: vec![0; MION],
|
||||
nllim: vec![0; MION],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// OSCHYD - 氢振子强度额外存储
|
||||
// ============================================================================
|
||||
|
||||
/// 氢振子强度额外存储。
|
||||
/// 对应 COMMON /OSCHYD/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct OscHyd {
|
||||
pub osh: [[f64; 20]; 20],
|
||||
}
|
||||
|
||||
impl Default for OscHyd {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
osh: [[0.0; 20]; 20],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// PRINTP - 能级打印控制
|
||||
// ============================================================================
|
||||
|
||||
/// 能级打印控制。
|
||||
/// 对应 COMMON /PRINTP/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PrintP {
|
||||
pub npgpop: i32,
|
||||
pub iipr: Vec<Vec<i32>>,
|
||||
pub typlev: Vec<String>,
|
||||
pub typion: Vec<String>,
|
||||
}
|
||||
|
||||
impl Default for PrintP {
|
||||
fn default() -> Self {
|
||||
let mpag = MLEVEL / 6 + 1;
|
||||
Self {
|
||||
npgpop: 0,
|
||||
iipr: vec![vec![0; mpag]; 6],
|
||||
typlev: vec![String::new(); MLEVEL],
|
||||
typion: vec![String::new(); MION],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// TABMAX - 最大频率
|
||||
// ============================================================================
|
||||
|
||||
/// 最大频率。
|
||||
/// 对应 COMMON /TABMAX/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct TabMax {
|
||||
pub frtabm: f64,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// PRDPAR - PRD 参数
|
||||
// ============================================================================
|
||||
|
||||
/// PRD (部分频率重分布) 参数。
|
||||
/// 对应 COMMON /PRDPAR/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PrdPar {
|
||||
pub doptr: Vec<Vec<f64>>,
|
||||
pub coher: Vec<Vec<f64>>,
|
||||
pub pjbar: Vec<Vec<f64>>,
|
||||
pub rjbar: Vec<Vec<f64>>,
|
||||
pub xpdiv: f64,
|
||||
pub iprd: Vec<i32>,
|
||||
pub itrtot: Vec<i32>,
|
||||
pub ntrprd: i32,
|
||||
pub ifprd: i32,
|
||||
}
|
||||
|
||||
impl Default for PrdPar {
|
||||
fn default() -> Self {
|
||||
const MTRPRD: usize = 5;
|
||||
Self {
|
||||
doptr: vec![vec![0.0; MDEPTH]; MTRPRD],
|
||||
coher: vec![vec![0.0; MDEPTH]; MTRPRD],
|
||||
pjbar: vec![vec![0.0; MDEPTH]; MTRPRD],
|
||||
rjbar: vec![vec![0.0; MDEPTH]; MTRPRD],
|
||||
xpdiv: 0.0,
|
||||
iprd: vec![0; MTRANS],
|
||||
itrtot: vec![0; MTRPRD],
|
||||
ntrprd: 0,
|
||||
ifprd: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// HECRAT - 氦碰撞速率
|
||||
// ============================================================================
|
||||
// ============================================================================
|
||||
|
||||
/// 氦碰撞速率系数。
|
||||
/// 对应 COMMON /HECRAT/
|
||||
@@ -366,6 +620,18 @@ pub struct AtomicData {
|
||||
pub phoset: PhoSet,
|
||||
pub voipar: VoiPar,
|
||||
pub hecrat: HeCrat,
|
||||
pub atopas: AtoMas,
|
||||
pub topcs: TopCs,
|
||||
pub tabcol: TabCol,
|
||||
pub tracor: TraCor,
|
||||
pub traali: TraAli,
|
||||
pub auxind: AuxInd,
|
||||
pub ionfil: IonFil,
|
||||
pub iondat: IonDat,
|
||||
pub oschyd: OscHyd,
|
||||
pub printp: PrintP,
|
||||
pub tabmax: TabMax,
|
||||
pub prdpar: PrdPar,
|
||||
}
|
||||
|
||||
impl AtomicData {
|
||||
|
||||
@@ -94,6 +94,20 @@ impl Default for BasNum {
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// CENTRL - 中心点参数
|
||||
// ============================================================================
|
||||
|
||||
/// 中心点参数。
|
||||
/// 对应 COMMON /CENTRL/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct Centrl {
|
||||
/// 中心平面几何距离
|
||||
pub znd: f64,
|
||||
/// Z 修正迭代控制
|
||||
pub ifz0: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// INPPAR - 输入参数
|
||||
// ============================================================================
|
||||
@@ -246,6 +260,128 @@ pub struct ConKey {
|
||||
pub idconz: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// FIXDEN - 固定密度标志
|
||||
// ============================================================================
|
||||
|
||||
/// 固定密度标志。
|
||||
/// 对应 COMMON /FIXDEN/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct FixDen {
|
||||
pub ifixde: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// INVINT - 逆积分参数
|
||||
// ============================================================================
|
||||
|
||||
/// 逆积分参数。
|
||||
/// 对应 COMMON /INVINT/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct InvInt {
|
||||
pub xi2: Vec<f64>,
|
||||
pub xi3: Vec<f64>,
|
||||
}
|
||||
|
||||
impl Default for InvInt {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
xi2: vec![0.0; NLMX],
|
||||
xi3: vec![0.0; NLMX],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// OPCKEY - 不透明度控制键
|
||||
// ============================================================================
|
||||
|
||||
/// 不透明度控制键。
|
||||
/// 对应 COMMON /OPCKEY/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct OpcKey {
|
||||
pub ncon: i32,
|
||||
pub iophl1: i32,
|
||||
pub iophl2: i32,
|
||||
pub iphe2c: i32,
|
||||
pub ifmoff: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// PSILIM - Ψ 限制参数
|
||||
// ============================================================================
|
||||
|
||||
/// Ψ 限制参数。
|
||||
/// 对应 COMMON /PSILIM/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct PsiLim {
|
||||
pub dpsilg: f64,
|
||||
pub dpsilt: f64,
|
||||
pub dpsiln: f64,
|
||||
pub dpsild: f64,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// COMITE - 迭代控制键
|
||||
// ============================================================================
|
||||
|
||||
/// 迭代控制参数。
|
||||
/// 对应 COMMON /COMITE/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct Comite {
|
||||
pub ncfor1: i32,
|
||||
pub ncfor2: i32,
|
||||
pub nccoup: i32,
|
||||
pub ncitot: i32,
|
||||
pub ncfull: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// MLCONS - 混合长度常数
|
||||
// ============================================================================
|
||||
|
||||
/// 混合长度常数。
|
||||
/// 对应 COMMON /MLCONS/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct MlCons {
|
||||
pub aconml: f64,
|
||||
pub bconml: f64,
|
||||
pub cconml: f64,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// TAURSL - 光学深度表
|
||||
// ============================================================================
|
||||
|
||||
/// 光学深度表。
|
||||
/// 对应 COMMON /TAURSL/
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TaurSl {
|
||||
pub taurs: Vec<f64>,
|
||||
}
|
||||
|
||||
impl Default for TaurSl {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
taurs: vec![0.0; MDEPTH],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// IPRKEY - 打印键
|
||||
// ============================================================================
|
||||
|
||||
/// 打印键。
|
||||
/// 对应 COMMON /IPRKEY/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct IprKey {
|
||||
pub iprybh: i32,
|
||||
pub ipelch: i32,
|
||||
pub ipeldo: i32,
|
||||
pub ipconf: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// OPCPAR - 额外不透明度控制
|
||||
// ============================================================================
|
||||
@@ -254,6 +390,7 @@ pub struct ConKey {
|
||||
/// 对应 COMMON /OPCPAR/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct OpcPar {
|
||||
pub iopadd: i32,
|
||||
pub iophmi: i32, // H⁻
|
||||
pub ioph2p: i32, // H₂⁺
|
||||
pub iophem: i32, // He⁻
|
||||
@@ -384,6 +521,31 @@ impl Default for Comptn {
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// COMPTI - Compton 散射控制参数
|
||||
// ============================================================================
|
||||
|
||||
/// Compton 散射控制参数。
|
||||
/// 对应 COMMON /COMPTI/
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct Compti {
|
||||
pub nedd: i32,
|
||||
pub nsti: i32,
|
||||
pub islab: i32,
|
||||
pub ilbc: i32,
|
||||
pub icompt: i32,
|
||||
pub icomst: i32,
|
||||
pub icomde: i32,
|
||||
pub icombc: i32,
|
||||
pub icmdra: i32,
|
||||
pub knish: i32,
|
||||
pub itcomp: i32,
|
||||
pub icomve: i32,
|
||||
pub icomrt: i32,
|
||||
pub ichcoo: i32,
|
||||
pub icomgr: i32,
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// 综合配置结构
|
||||
// ============================================================================
|
||||
@@ -401,6 +563,16 @@ pub struct TlustyConfig {
|
||||
pub prints: Prints,
|
||||
pub angles: Angles,
|
||||
pub comptn: Comptn,
|
||||
pub centrl: Centrl,
|
||||
pub compti: Compti,
|
||||
pub opckey: OpcKey,
|
||||
pub invint: InvInt,
|
||||
pub fixden: FixDen,
|
||||
pub psilim: PsiLim,
|
||||
pub comite: Comite,
|
||||
pub mlcons: MlCons,
|
||||
pub taursl: TaurSl,
|
||||
pub iprkey: IprKey,
|
||||
}
|
||||
|
||||
impl TlustyConfig {
|
||||
|
||||
@@ -20,6 +20,8 @@ pub const MTRANS: usize = 21000;
|
||||
pub const MDEPTH: usize = 100;
|
||||
/// 最大频率点数
|
||||
pub const MFREQ: usize = 135000;
|
||||
/// 最大频率点数 + 1
|
||||
pub const MFREQ1: usize = MFREQ; // 根据 BASICS.FOR: MFREQ1 = MFREQ
|
||||
/// 工作频率数组大小
|
||||
pub const MFREQP: usize = 220000;
|
||||
/// 连续谱频率点数
|
||||
@@ -66,6 +68,40 @@ pub const MTRAN3: usize = 1;
|
||||
pub const MCROSS: usize = MLEVEL + 5;
|
||||
/// 束缚-自由跃迁数
|
||||
pub const MBF: usize = MLEVEL;
|
||||
/// Gomez 氢不透明度表频率大小
|
||||
pub const MFHTAB: usize = 1000;
|
||||
/// Gomez 氢不透明度表温度大小
|
||||
pub const MTABTH: usize = 10;
|
||||
/// Gomez 氢不透明度表电子密度大小
|
||||
pub const MTABEH: usize = 10;
|
||||
/// 碰撞率表温度点数
|
||||
pub const MXTCOL: usize = 3;
|
||||
/// 碰撞率表拟合点数
|
||||
pub const MCFIT: usize = 10;
|
||||
/// 碰撞率表跃迁点数
|
||||
pub const MCORAT: usize = MTRANS;
|
||||
/// 不透明度表温度大小
|
||||
pub const MTABT: usize = 21;
|
||||
/// 不透明度表密度大小
|
||||
pub const MTABR: usize = 19;
|
||||
/// 不透明度表频率大小
|
||||
pub const MFRTAB: usize = 125000;
|
||||
|
||||
// ODF 相关
|
||||
/// ODF 频率点数
|
||||
pub const MFODF: usize = 180;
|
||||
/// ODF 热点数
|
||||
pub const MHOD: usize = 3;
|
||||
/// ODF 深度维度
|
||||
pub const MDODF: usize = 3;
|
||||
/// ODF 库能级数
|
||||
pub const MKULEV: usize = 7000;
|
||||
/// ODF 谱线数
|
||||
pub const MLINE: usize = 1140000;
|
||||
/// ODF 截面点数
|
||||
pub const MCFE: usize = 7824000;
|
||||
/// ODF 频率范围
|
||||
pub const MFRO: usize = MFREQL;
|
||||
|
||||
// ============================================================================
|
||||
// 物理常数 (CGS 单位)
|
||||
@@ -93,6 +129,10 @@ pub const PI4H: f64 = 1.8966e27;
|
||||
pub const PCK: f64 = 4.19168946e-10;
|
||||
/// 氢原子质量 (g)
|
||||
pub const HMASS: f64 = 1.67333e-24;
|
||||
/// 康普顿散射常数 XCON
|
||||
pub const XCON: f64 = 8.0935e-21;
|
||||
/// 康普顿散射常数 YCON
|
||||
pub const YCON: f64 = 1.68638e-10;
|
||||
|
||||
// ============================================================================
|
||||
// 数学常数
|
||||
|
||||
+1
-1
@@ -188,7 +188,7 @@ pub struct ChnAd {
|
||||
/// Lambda 计数
|
||||
pub nlamt: i32,
|
||||
/// 导数标志
|
||||
pubilder: i32,
|
||||
pub ilder: i32,
|
||||
/// BPOP 标志
|
||||
pub ibpope: i32,
|
||||
}
|
||||
|
||||
+1369
-27
File diff suppressed because it is too large
Load Diff
+2
-19
@@ -4,25 +4,6 @@
|
||||
|
||||
use super::constants::*;
|
||||
|
||||
// ============================================================================
|
||||
// ODF 维度参数
|
||||
// ============================================================================
|
||||
|
||||
/// ODF 频率点数
|
||||
pub const MFODF: usize = 180;
|
||||
/// ODF 热点数
|
||||
pub const MHOD: usize = 3;
|
||||
/// ODF 频率范围
|
||||
pub const MFRO: usize = MFREQL;
|
||||
/// ODF 深度维度
|
||||
pub const MDODF: usize = 3;
|
||||
/// Kurucz 能级数
|
||||
pub const MKULEV: usize = 7000;
|
||||
/// 谱线数
|
||||
pub const MLINE: usize = 1140000;
|
||||
/// Fe 系数数
|
||||
pub const MCFE: usize = 7824000;
|
||||
|
||||
// ============================================================================
|
||||
// ODFION - ODF 离子控制
|
||||
// ============================================================================
|
||||
@@ -411,6 +392,7 @@ pub struct OdfData {
|
||||
pub odfctr: OdfCtr,
|
||||
pub odffrq: OdfFrq,
|
||||
pub odfmod: OdfMod,
|
||||
pub odfstk: OdfStk,
|
||||
pub splcom: SplCom,
|
||||
pub opalim: OpaLim,
|
||||
pub oplimt: OpLimT,
|
||||
@@ -424,6 +406,7 @@ impl OdfData {
|
||||
odfctr: OdfCtr::new(),
|
||||
odffrq: OdfFrq::new(),
|
||||
odfmod: OdfMod::new(),
|
||||
odfstk: OdfStk::new(NLMX),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user