#热力学 #化学 #CFD #化学动力学

KiThe

一个用于化学动力学、化学热力学、燃烧、传热传质、激波管等方面的结构和函数集合。正在进行中。欢迎建议和贡献。

1个不稳定版本

0.1.3 2024年8月19日
0.1.2 2024年8月16日
0.1.1 2024年8月13日
0.1.0 2024年8月13日

#85 in 科学

Download history 264/week @ 2024-08-11

每月 131次下载

MIT许可证

500KB
1.5K SLoC

[目录]

KiThe

这是一个包含结构、函数和数据库的包,可用于化学热力学、化学动力学以及化学反应器、燃烧、激波管和火箭发动机中的建模等领域。

内容

用法

  • 将反应方程式解析为物质列表
use KiThe::reaction_analyzer::ReactionAnalyzer;
let mut ReactionAnalyzer_instance = ReactionAnalyzer::new();
let reactions_: Vec<&str> = vec!["A=B", "B->A + 3C", "2B+A=D"];
let reaction = reactions_.iter().map(|s| s.to_string()).collect();
ReactionAnalyzer_instance.reactions = reaction;
ReactionAnalyzer_instance.search_substances();
println!("substances: {:?}", ReactionAnalyzer_instance.substances);
  • 将反应方程式解析为化学计量矩阵、直接反应系数矩阵、逆反应系数矩阵、动力学函数浓度度矩阵
use KiThe::reaction_analyzer::ReactionAnalyzer;
let mut ReactionAnalyzer_instance = ReactionAnalyzer::new();
let reactions_: Vec<&str> = vec!["A=B", "B->A + 3C", "2B+A=D"];
let reaction = reactions_.iter().map(|s| s.to_string()).collect();
ReactionAnalyzer_instance.reactions = reaction;
ReactionAnalyzer_instance.search_substances();
ReactionAnalyzer_instance.analyse_reactions();
println!("substances: {:?}", ReactionAnalyzer_instance.substances);
println!("{:?}", ReactionAnalyzer_instance);
  • 该crate配备了解析公开数据库得到的化学反应动力学参数库,因此您可以查看每个动力学数据库中的所有库和所有反应,通过物质搜索反应等。以下是最重要的方法:
let mut kin_instance = KineticData::new();
// collecting reaction data for library name lib
kin_instance.open_json_files(lib);
// veiew all reactions in library
kin_instance.print_all_reactions();
// returns reaction ID and reaction data (parsed from json) for given reaction equation
kin_instance.search_reaction_by_equation(equation)
// search reactions by substances 
kin_instance.search_reaction_by_reagents_and_products(reagents)
  • 该模块是自动化学机理构造器,以库的名称和物质的向量作为输入,然后生成以下数据:
  1. 起始物质之间的所有反应,以及所有可能产物之间的所有反应和原始物质之间的所有反应。
  2. 包含所有找到的反应的动力学数据的HashMap
    let mut mech_search = Mechanism_search::new(
            vec!["O".to_string(), "NH3".to_string(), "NO".to_string()],
            "NUIG".to_string(),
            Vec::new(),
            Vec::new(),
            Vec::new(),
        );

        let (mechanism, reactants, vec_of_reactions) = mech_search.mechfinder_api();
  • 原子组成和摩尔质量的计算
use KiThe::molmass::calculate_molar_mass;
let formula = "C6H8O6";
let (molar_mass, element_composition) = calculate_molar_mass(formula.to_string()); 
println!("Element counts: {:?}", element_composition);
println!("Molar mass: {:?} g/mol", molar_mass);
use KiThe::molmass::parse_formula;
let formula = "Na(NO3)2".to_string();
let atomic_composition = parse_formula(formula);
println!("{:?}", atomic_composition);

测试

我们的项目有测试覆盖,您可以通过标准命令运行它们

cargo test

贡献

如果您有任何问题、评论或想要贡献,请随时通过https://github.com/联系我们

待办事项

  • 添加具有适当处理、搜索和检索数据方法的化学反应库
  • 添加化学物质库...
  • 添加数值方法(可能是cpp开源...)

依赖项

~2.8–4.5MB
~88K SLoC