Expand description
Crate providing formulae for air thermodynamic calculations.
§How to use
To use this crate simply import it with use
statement and then use desired function from chosen module.
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).unwrap();
println!("{}", vapour_pressure); // 3550.662 (f32) or 3550.6603579471303 (f64)
§Naming of modules and functions
Because some thermodynamic formulae are empirical there are several ways to compute a value of given quantity. Therefore there are multiple functions available to compute the same parameter, which are grouped into modules.
The naming of modules and functions follows this convention:
vapour_pressure::buck1(temperature, pressure)
Where the module name (vapour_pressure
) indicates the computed quantity, function name (buck1
) indicates the author of formula
and the function arguments (temperature, pressure
) are variables used to compute the quantity.
§Double precision
By default floccus uses single-precision (32-bit) floating-point variables.
If increased accuracy is needed (at the cost of performance) double_precision
feature can be enabled
to use double-precision (64-bit) floating point.
§Input checking
To prevent any unexpected behaviour, all functions check whether provided inputs are within a reasonable range.
Exact limits are specified in the documentation of each function.
If the input is out of range the function will return an InputError::OutOfRange
with erronous input specified.
§Units
This crate uses basic SI units in the interface.
Units for each quantity are:
- Pressure: Pascals (Pa)
- Temperature: Kelvins (K)
- Mass: kilograms (kg)
- Length: meters (m)
- Relative humidity: ratio (%/100)
- Volume: meters cubed (m^3)
- Density: kilograms per meter cubed (kg*m^3)
- Mixing ratio: kilograms per kilogram (kg*kg^-1)
- Specific humidity: kilograms per kilogram (kg*kg^-1)
If the formula uses numbers of very different scales there can be an exception from that rule described in the function documentation.
§Debugging
If additional information is needed about which function returns the error and why, debug
feature can be enabled.
With that feature when returning the error function will also print the error message to log
with additional
information about the error. This feature potentially is not zero-cost so it is optional.
Modules§
- constants
- Module containing physical constants
- equivalent_
potential_ temperature - Functions to calculate equivalent potential temperature of air in K.
- errors
- Module containing all error enums used by the crate
- mixing_
ratio - Functions to calculate mixing ratio of air in kg*kg^-1.
- potential_
temperature - Functions to calculate potential temperature of dry air in K.
- relative_
humidity - Functions to calculate relative humidity in %/100
- specific_
humidity - Functions to calculate specific humidity of air in kg*kg^-1.
- vapour_
pressure - Functions to calculate partial vapour pressure of the unsaturated air in Pa.
- vapour_
pressure_ deficit - Functions to calculate vapour pressure deficit in Pa.
- virtual_
temperature - Functions to calculate virtual temperature of air in K.
- wet_
bulb_ potential_ temperature - Functions to calculate dry bulb potential temperature of unsaturated air in K.
- wet_
bulb_ temperature - Functions to calculate wet bulb temperature of unsaturated air in K.