16 个版本

0.4.0-alpha.8 2024 年 8 月 20 日
0.4.0-alpha.32024 年 4 月 5 日
0.4.0-alpha.22024 年 3 月 28 日
0.3.7 2022 年 12 月 30 日
0.3.5 2021 年 11 月 4 日

#116 in 数学

Download history 2/week @ 2024-05-17 420/week @ 2024-08-16

每月 420 次下载

Apache-2.0

180KB
4K SLoC

floccus

Github Repository Crates.io License dependency status

Rust crate 提供空气热力学计算公式。

该 crate 包含用于计算大气科学中常用热力学量的函数。目前由一个人开发,所以如果您想添加功能,请不要犹豫,在Github 仓库中提交问题或拉取请求。

该 crate 的目的是成为热力学公式的学术参考,以便研究人员在文献中查找特定公式时不需要搜索。因此,所有函数文档都提供了引用公式的论文。

同时,请查看该 crate 的贡献指南

如何使用

要使用此 crate,只需使用 use 语句导入它,然后从所选模块中使用所需的函数。

use floccus::vapour_pressure;

//Set temperature and pressure in SI units
let temperature = 300.0; //in K
let pressure = 101325.0; //in Pa

//Compute vapour pressure using Buck (1981) formula
let vapour_pressure = vapour_pressure::buck1(temperature, pressure);

//The result is 3550.662 (f32) or 3550.6603579471303 (f64)

模块和函数的命名

由于某些热力学公式是经验公式,因此有多种计算给定量值的方法。因此,存在多个用于计算相同参数的函数,它们被分组到模块中。

模块和函数的命名遵循以下约定

vapour_pressure::buck1(temperature, pressure);

其中模块名称(vapour_pressure)表示计算的量,函数名称(buck1)表示公式的作者,函数参数(temperature, pressure)是用于计算量的变量。

双精度

默认情况下,floccus 使用单精度(32位)浮点变量。如果需要更高的精度(以性能为代价),则可以启用 double_precision 功能以使用双精度(64位)浮点。

输入检查

为了防止任何意外行为,所有函数都会检查提供的输入是否在合理的范围内。每个函数的确切限制在各自的文档中指定。如果输入超出范围,函数将返回一个包含错误输入的 InputError::OutOfRange

每个函数还有 _unchecked_validate 版本。_validate 版本仅检查其“父”函数定义的边界。_unchecked 版本仅执行计算而不进行任何输入检查。所有“父”函数都简单地调用 _validate 然后调用 _unchecked

调试

如果需要关于哪个函数返回错误以及原因的附加信息,可以启用 debug 功能。使用该功能时,返回错误函数将同时将错误信息打印到 log,其中包含有关错误的附加信息。该功能可能不是零成本的,因此是可选的。

基准测试

此包中提供的函数旨在在数值模型中使用。为了向用户提供关于每个函数性能开销的信息,所有函数都可以使用 criterion.rs 进行基准测试。

依赖项

~1.4–2.7MB
~54K SLoC