1 unstable release
Uses new Rust 2024
new 0.1.0 | May 4, 2025 |
---|
#83 in Science
47 downloads per month
27MB
6K
SLoC
rfluids
🦀 Rusty CoolProp wrapper.
Supported platforms
Windows x86-64
Windows AArch64
Linux x86-64
macOS x86-64
macOS AArch64
MSRV
rfluids
requires rustc
1.85.0 or later.
How to install
Run the following command in your project directory:
cargo add rfluids
🎁 It comes with native CoolProp
dynamic libraries for supported platforms.
The library required for your platform will be automatically copied
to the target directory during build.
Examples
ℹ️ All calculations are performed in SI units |
---|
Specific heat [J/kg/K] of saturated water vapor at 1 atm:
use approx::assert_relative_eq;
use rfluids::prelude::*;
let mut water_vapor = Fluid::from(Pure::Water).in_state(
FluidInput::pressure(101_325.0),
FluidInput::quality(1.0),
)?;
assert_relative_eq!(
water_vapor.specific_heat()?,
2_079.937_085_633_241,
max_relative = 1e-6
);
Dynamic viscosity [Pa·s] of propylene glycol aqueous solution with 60 % mass fraction at 100 kPa and -20 °C:
use approx::assert_relative_eq;
use rfluids::prelude::*;
let mut propylene_glycol = Fluid::from(
BinaryMixKind::MPG.with_fraction(0.6)?,
).in_state(
FluidInput::pressure(100e3),
FluidInput::temperature(253.15),
)?;
assert_relative_eq!(
propylene_glycol.dynamic_viscosity()?,
0.139_073_910_539_388_78,
max_relative = 1e-6
);
Density [kg/m³] of ethanol aqueous solution (with ethanol 40 % mass fraction) at 200 kPa and 4 °C:
use approx::assert_relative_eq;
use rfluids::prelude::*;
use std::collections::HashMap;
let mut mix = Fluid::try_from(
CustomMix::mass_based(HashMap::from([
(Pure::Water, 0.6),
(Pure::Ethanol, 0.4),
]))?
)?.in_state(
FluidInput::pressure(200e3),
FluidInput::temperature(277.15),
)?;
assert_relative_eq!(
mix.density()?,
883.392_277_162_775_9,
max_relative = 1e-6
);
Wet-bulb temperature [K] of humid air at 300 m above sea level, 30 °C and 50 % relative humidity:
use approx::assert_relative_eq;
use rfluids::prelude::*;
let mut humid_air = HumidAir::new().in_state(
HumidAirInput::altitude(300.0)?,
HumidAirInput::temperature(303.15),
HumidAirInput::rel_humidity(0.5),
)?;
assert_relative_eq!(
humid_air.wet_bulb_temperature()?,
295.067_569_033_474_57,
max_relative = 1e-6
);
Fluid
and HumidAir
implement the PartialEq
trait.
Equality is checked by the thermodynamic state:
use rfluids::prelude::*;
let mut humid_air = HumidAir::new().in_state(
HumidAirInput::altitude(0.0)?,
HumidAirInput::temperature(293.15),
HumidAirInput::rel_humidity(0.5),
)?;
let mut another_humid_air = HumidAir::new().in_state(
HumidAirInput::pressure(101_325.0),
HumidAirInput::temperature(293.15),
HumidAirInput::rel_humidity(0.5),
)?;
assert_eq!(humid_air, another_humid_air);
another_humid_air.update(
HumidAirInput::pressure(101_325.0),
HumidAirInput::temperature(303.15),
HumidAirInput::rel_humidity(0.5),
)?;
assert_ne!(humid_air, another_humid_air);
License
This project is licensed under MIT License.
Dependencies
~0.4–7MB
~54K SLoC