- server/db: 拆 4929 行 db.rs 单体为 db/ 目录,migrations.rs 引入 PRAGMA user_version
版本化迁移运行器(M1~M13)
- 任务引擎 Phase 6/7b/7c 改名收敛:EngineStageConfig→PhaseConfig、StagePolicy→ResumePolicy、
Converged→Completed、删除 task_type 列、success_method 拆 tlusty_/synspec_ 双列、
新增 tlusty_status/synspec_status 半失败阶段守卫
- 科学正确性加固:conv_check 任意行 NaN/Inf/溢出判无效(0 行容忍)、新增 spec_is_valid
校验 SYNSPEC 脏谱、itek_history 逐次迭代全量保真、fmt_abn powf 溢出饱和
- 用户配置真正接通:tlusty_chain/tlusty_input 由死字段经 调度器→TaskSpec→executor→runner
透传生效;config 加载期 validate + deny_unknown_fields + 解析失败记 warn
- 调度修复:H1 活锁(pending_strategies 跳过已失败策略)、种子查找错误不再静默降级冷启动
- dashboard: 阶段配置面板 tlusty_stage/synspec_stage、"已完成"标签、迭代诊断展示
- docs: 新增 database_refactor_design.md,同步 database/api/PIPELINE/workflow_detail
42 lines
1.2 KiB
Rust
42 lines
1.2 KiB
Rust
use crate::config::SynspecInput;
|
|
|
|
/// Dynamic generator for SYNSPEC fort.55 parameter control file
|
|
pub fn generate_fort55_content(cfg: &SynspecInput) -> String {
|
|
let line1 = format!(" {} {} {}", cfg.imode, cfg.idrv, cfg.ifreq);
|
|
let line2 = " 1 0 0 0";
|
|
let line3 = " 0 0 0 0 0";
|
|
let line4 = " 1 1 0 0 0";
|
|
let line5 = " 0 0 0";
|
|
let line6 = format!(
|
|
" {:.1} {:.1} 10 0 {} {}",
|
|
cfg.wstart, cfg.wend, cfg.rel_cutoff, cfg.abs_cutoff
|
|
);
|
|
let line7 = " 0 0";
|
|
|
|
format!(
|
|
"{}\n{}\n{}\n{}\n{}\n{}\n{}\n",
|
|
line1, line2, line3, line4, line5, line6, line7
|
|
)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_fort55_generation() {
|
|
let cfg = SynspecInput {
|
|
wstart: 3000.0,
|
|
wend: 7000.0,
|
|
imode: 0,
|
|
idrv: 50,
|
|
ifreq: 1,
|
|
rel_cutoff: 0.0001,
|
|
abs_cutoff: 0.01,
|
|
};
|
|
let content = generate_fort55_content(&cfg);
|
|
assert!(content.contains("3000.0"));
|
|
assert!(content.contains("7000.0"));
|
|
}
|
|
}
|