15 个不稳定版本 (7 个破坏性)
0.8.0 | 2024 年 4 月 11 日 |
---|---|
0.7.0 | 2023 年 10 月 15 日 |
0.6.2 | 2023 年 8 月 6 日 |
0.6.0 | 2023 年 1 月 20 日 |
0.2.0 | 2021 年 7 月 26 日 |
在 科学 类别下排名 55
每月下载量 98
在 7 crates 中使用
115KB
2.5K SLoC
quantity
数量的表示,即单位值的标量和数组的表示。具有 Python 绑定的 Rust 库。
与其他实现相比,此crate不试图在编译时检查单位。它以灵活性为出发点,能够表示任意复杂的单位。除了简单的标量数量外,它还提供基于 ndarray crate 的矢量值数量工具,其中所有条目共享相同的单位。
安装和使用
Rust
将此添加到您的 Cargo.toml
[dependencies]
quantity = "0.8"
Python 包
SI 功能的 Python 绑定以 si-units 的名称在 PyPI 上发布。
示例
计算理想气体的压力。
let temperature = 25.0 * CELSIUS;
let volume = 1.5 * METER.powi(3);
let moles = 75.0 * MOL;
let pressure = moles * RGAS * temperature / volume;
println!("{:.5}", pressure); // 123.94785 kPa
计算月球对地球的引力。
let mass_earth = 5.9724e24 * KILOGRAM;
let mass_moon = 7.346e22 * KILOGRAM;
let distance = 383.398 * KILO * METER;
let force = G * mass_earth * mass_moon / distance.powi(2);
println!("{:.5e}", force); // 1.99208e26 N
使用气压公式计算大气中的压力分布。
let z = SIArray1::linspace(1.0 * METER, 70.0 * KILO * METER, 10)?;
let g = 9.81 * METER / SECOND.powi(2);
let m = 28.949 * GRAM / MOL;
let t = 10.0 * CELSIUS;
let p0 = BAR;
let pressure = p0 * (-&z * m * g).to_reduced(RGAS * t)?.mapv(f64::exp);
for i in 0..10 {
println!("z = {:8.5} p = {:9.5}", z.get(i), pressure.get(i));
}
// z = 1.00000 m p = 99.98794 kPa
// z = 7.77867 km p = 39.12796 kPa
// z = 15.55633 km p = 15.31182 kPa
// z = 23.33400 km p = 5.99192 kPa
// z = 31.11167 km p = 2.34480 kPa
// z = 38.88933 km p = 917.58301 Pa
// z = 46.66700 km p = 359.07479 Pa
// z = 54.44467 km p = 140.51557 Pa
// z = 62.22233 km p = 54.98750 Pa
// z = 70.00000 km p = 21.51808 Pa
文档
有关 rust 文档,请参阅 此处。
有关 python 文档,请参阅 此处。
开发
为了构建包括对 Python 的绑定在内的项目,我们使用 maturin。
在开发时使用
maturin develop --release -m si-units/Cargo.toml
要构建 Python 轮子,使用
maturin build --release -m si-units/Cargo.toml
要构建文档,您需要 sphinx
和一些其他包。从根目录中,键入
cd si-units/docs
make html
要运行 doctests,从根目录中键入
cd si-units/docs
make doctest
依赖关系
~4–12MB
~127K SLoC