Expand description
🦀 Rusty CoolProp wrapper.
§Supported platforms
Linux x86-64
macOS AArch64
macOS x86-64
Windows AArch64
Windows x86-64
§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.Modules§
- fluid
- Thermophysical and transport properties of substances.
- humid_
air - Thermophysical and transport properties of humid air.
- io
CoolProp
inputs/outputs.- native
- Implementation of the
CoolProp
native API. - prelude
- Prelude imports.
- substance
CoolProp
substances.
Structs§
- Defined
- A marker that determines the presence of a defined thermodynamic state.
- Undefined
- A marker that determines the absence of a defined thermodynamic state.
Enums§
- Error
- Superset of all possible errors that can occur in the library.
Traits§
- State
Variant - Thermodynamic state variant.