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")); } }