///|
pub(all) enum EnergyUnit {
JoulePerMol
KilojoulePerMol
} derive(Debug, Eq)
///|
pub(all) enum HeatCapacityUnit {
JoulePerMolKelvin
KilojoulePerMolKelvin
} derive(Debug, Eq)
///|
pub(all) enum TemperatureUnit {
Kelvin
Celsius
} derive(Debug, Eq)
///|
pub fn j_per_mol_to_kj_per_mol(value : Double) -> Double {
value / 1000.0
}
///|
pub fn kj_per_mol_to_j_per_mol(value : Double) -> Double {
value * 1000.0
}
///|
pub fn j_per_mol_k_to_kj_per_mol_k(value : Double) -> Double {
value / 1000.0
}
///|
pub fn kj_per_mol_k_to_j_per_mol_k(value : Double) -> Double {
value * 1000.0
}
///|
pub fn kelvin_to_celsius(value : Double) -> Double {
value - 273.15
}
///|
pub fn celsius_to_kelvin(value : Double) -> Double {
value + 273.15
}
///|
pub fn convert_molar_energy(
value : Double,
from~ : EnergyUnit,
to~ : EnergyUnit,
) -> Double {
match (from, to) {
(JoulePerMol, JoulePerMol) => value
(KilojoulePerMol, KilojoulePerMol) => value
(JoulePerMol, KilojoulePerMol) => j_per_mol_to_kj_per_mol(value)
(KilojoulePerMol, JoulePerMol) => kj_per_mol_to_j_per_mol(value)
}
}
///|
pub fn convert_molar_heat_capacity(
value : Double,
from~ : HeatCapacityUnit,
to~ : HeatCapacityUnit,
) -> Double {
match (from, to) {
(JoulePerMolKelvin, JoulePerMolKelvin) => value
(KilojoulePerMolKelvin, KilojoulePerMolKelvin) => value
(JoulePerMolKelvin, KilojoulePerMolKelvin) =>
j_per_mol_k_to_kj_per_mol_k(value)
(KilojoulePerMolKelvin, JoulePerMolKelvin) =>
kj_per_mol_k_to_j_per_mol_k(value)
}
}
///|
pub fn convert_temperature(
value : Double,
from~ : TemperatureUnit,
to~ : TemperatureUnit,
) -> Double {
match (from, to) {
(Kelvin, Kelvin) => value
(Celsius, Celsius) => value
(Kelvin, Celsius) => kelvin_to_celsius(value)
(Celsius, Kelvin) => celsius_to_kelvin(value)
}
}