|
|
|
|
@@ -177,7 +177,9 @@ extern "C" {
|
|
|
|
|
/// * `fluid` - Fluid name (e.g., "R134a")
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// The property value in SI units, or NaN if an error occurs
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is properly null-terminated if needed and valid.
|
|
|
|
|
pub unsafe fn props_si_pt(property: &str, p: f64, t: f64, fluid: &str) -> f64 {
|
|
|
|
|
let prop = property.as_bytes()[0] as c_char;
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
@@ -194,7 +196,9 @@ pub unsafe fn props_si_pt(property: &str, p: f64, t: f64, fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// The property value in SI units, or NaN if an error occurs
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn props_si_ph(property: &str, p: f64, h: f64, fluid: &str) -> f64 {
|
|
|
|
|
let prop = property.as_bytes()[0] as c_char;
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
@@ -211,7 +215,9 @@ pub unsafe fn props_si_ph(property: &str, p: f64, h: f64, fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// The property value in SI units, or NaN if an error occurs
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn props_si_tq(property: &str, t: f64, q: f64, fluid: &str) -> f64 {
|
|
|
|
|
let prop = property.as_bytes()[0] as c_char;
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
@@ -228,7 +234,9 @@ pub unsafe fn props_si_tq(property: &str, t: f64, q: f64, fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// The property value in SI units, or NaN if an error occurs
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn props_si_px(property: &str, p: f64, x: f64, fluid: &str) -> f64 {
|
|
|
|
|
let prop = property.as_bytes()[0] as c_char;
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
@@ -249,7 +257,9 @@ pub unsafe fn props_si_px(property: &str, p: f64, x: f64, fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// Critical temperature in K, or NaN if unavailable
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn critical_temperature(fluid: &str) -> f64 {
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
CoolProp_CriticalPoint(fluid_c.as_ptr(), b'T' as c_char)
|
|
|
|
|
@@ -261,7 +271,9 @@ pub unsafe fn critical_temperature(fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// Critical pressure in Pa, or NaN if unavailable
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn critical_pressure(fluid: &str) -> f64 {
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
CoolProp_CriticalPoint(fluid_c.as_ptr(), b'P' as c_char)
|
|
|
|
|
@@ -273,7 +285,9 @@ pub unsafe fn critical_pressure(fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// Critical density in kg/m³, or NaN if unavailable
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn critical_density(fluid: &str) -> f64 {
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
CoolProp_CriticalPoint(fluid_c.as_ptr(), b'D' as c_char)
|
|
|
|
|
@@ -285,7 +299,9 @@ pub unsafe fn critical_density(fluid: &str) -> f64 {
|
|
|
|
|
/// * `fluid` - Fluid name
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
/// `true` if the fluid is available
|
|
|
|
|
/// # Safety
|
|
|
|
|
/// This function calls the CoolProp C++ library and passes a CString pointer.
|
|
|
|
|
/// The caller must ensure the fluid string is valid.
|
|
|
|
|
pub unsafe fn is_fluid_available(fluid: &str) -> bool {
|
|
|
|
|
let fluid_c = CString::new(fluid).unwrap();
|
|
|
|
|
CoolProp_isfluid(fluid_c.as_ptr()) != 0
|
|
|
|
|
@@ -299,7 +315,7 @@ pub fn get_version() -> String {
|
|
|
|
|
unsafe {
|
|
|
|
|
let mut buffer = vec![0u8; 32];
|
|
|
|
|
let result = CoolProp_get_global_param_string(
|
|
|
|
|
b"version\0".as_ptr() as *const c_char,
|
|
|
|
|
c"version".as_ptr(),
|
|
|
|
|
buffer.as_mut_ptr() as *mut c_char,
|
|
|
|
|
buffer.len() as c_int,
|
|
|
|
|
);
|
|
|
|
|
|