| Crates.io | rfluids |
| lib.rs | rfluids |
| version | 0.2.0 |
| created_at | 2025-05-04 17:23:07.529192+00 |
| updated_at | 2025-06-06 17:21:19.575219+00 |
| description | 🦀 Rusty CoolProp wrapper |
| homepage | https://github.com/portyanikhin/rfluids |
| repository | https://github.com/portyanikhin/rfluids |
| max_upload_size | |
| id | 1659818 |
| size | 322,060 |
🦀 Rusty CoolProp wrapper.
Linux x86-64macOS AArch64macOS x86-64Windows AArch64Windows x86-64rfluids requires rustc 1.85.0 or later.
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.
| ℹ️ 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);