Crate floccus

Source
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.