HA_PROPS_SI
This function evaluates a humid-air property using CoolProp’s psychrometric solver from three independent state inputs. It supports common variables such as dry-bulb temperature, pressure, relative humidity, humidity ratio, enthalpy, and dew-point temperature.
Humid air state evaluation is represented as a multivariable mapping:
y = f\left(o,\; n_1, v_1,\; n_2, v_2,\; n_3, v_3\right)
where o is the requested output property code, each n_i is an input property code, and each v_i is its SI value.
Excel Usage
=HA_PROPS_SI(ha_psi_out, ha_psi_name_one, value_one, ha_psi_name_two, value_two, ha_psi_name_three, value_three)
ha_psi_out(str, required): Desired property code (e.g., ‘H’, ‘W’, ‘Vda’).ha_psi_name_one(str, required): Name of first input (e.g., ‘T’).value_one(float, required): Value of first input.ha_psi_name_two(str, required): Name of second input (e.g., ‘P’).value_two(float, required): Value of second input.ha_psi_name_three(str, required): Name of third input (e.g., ‘R’, ‘W’).value_three(float, required): Value of third input.
Returns (float): Calculated property value in SI units.
Example 1: Enthalpy of standard air (25C, 1atm, 50% RH)
Inputs:
| ha_psi_out | ha_psi_name_one | value_one | ha_psi_name_two | value_two | ha_psi_name_three | value_three |
|---|---|---|---|---|---|---|
| H | T | 298.15 | P | 101325 | R | 0.5 |
Excel formula:
=HA_PROPS_SI("H", "T", 298.15, "P", 101325, "R", 0.5)
Expected output:
50423.5
Example 2: Humidity Ratio (W)
Inputs:
| ha_psi_out | ha_psi_name_one | value_one | ha_psi_name_two | value_two | ha_psi_name_three | value_three |
|---|---|---|---|---|---|---|
| W | T | 298.15 | P | 101325 | R | 0.5 |
Excel formula:
=HA_PROPS_SI("W", "T", 298.15, "P", 101325, "R", 0.5)
Expected output:
0.00992574
Example 3: Dew Point Temperature
Inputs:
| ha_psi_out | ha_psi_name_one | value_one | ha_psi_name_two | value_two | ha_psi_name_three | value_three |
|---|---|---|---|---|---|---|
| Tdp | T | 298.15 | P | 101325 | R | 0.5 |
Excel formula:
=HA_PROPS_SI("Tdp", "T", 298.15, "P", 101325, "R", 0.5)
Expected output:
287.017
Example 4: Volume per unit dry air
Inputs:
| ha_psi_out | ha_psi_name_one | value_one | ha_psi_name_two | value_two | ha_psi_name_three | value_three |
|---|---|---|---|---|---|---|
| Vda | T | 303.15 | P | 101325 | R | 0.8 |
Excel formula:
=HA_PROPS_SI("Vda", "T", 303.15, "P", 101325, "R", 0.8)
Expected output:
0.88837
Python Code
Show Code
import CoolProp.CoolProp as CP
def ha_props_si(ha_psi_out, ha_psi_name_one, value_one, ha_psi_name_two, value_two, ha_psi_name_three, value_three):
"""
Calculate humid air properties using CoolProp psychrometrics.
See: https://coolprop.org/coolprop/HighLevelAPI.html#hapropssi-function
This example function is provided as-is without any representation of accuracy.
Args:
ha_psi_out (str): Desired property code (e.g., 'H', 'W', 'Vda'). Valid options: Temperature (T), Pressure (P), Humidity Ratio (W), Relative Humidity (R), Dew Point (Tdp), Wet Bulb (Twb), Enthalpy (H), Entropy (S), Mixture Volume (V), Dry Air Volume (Vda), Viscosity (M), Conductivity (K).
ha_psi_name_one (str): Name of first input (e.g., 'T'). Valid options: Temperature (T), Pressure (P), Humidity Ratio (W), Relative Humidity (R), Dew Point (Tdp), Wet Bulb (Twb), Enthalpy (H).
value_one (float): Value of first input.
ha_psi_name_two (str): Name of second input (e.g., 'P'). Valid options: Temperature (T), Pressure (P), Humidity Ratio (W), Relative Humidity (R), Dew Point (Tdp), Wet Bulb (Twb).
value_two (float): Value of second input.
ha_psi_name_three (str): Name of third input (e.g., 'R', 'W'). Valid options: Temperature (T), Pressure (P), Humidity Ratio (W), Relative Humidity (R), Dew Point (Tdp), Wet Bulb (Twb).
value_three (float): Value of third input.
Returns:
float: Calculated property value in SI units.
"""
try:
# CoolProp.HAPropsSI(Output, Name1, Prop1, Name2, Prop2, Name3, Prop3)
result = CP.HAPropsSI(ha_psi_out, ha_psi_name_one, value_one, ha_psi_name_two, value_two, ha_psi_name_three, value_three)
return float(result)
except Exception as e:
return f"Error: {str(e)}"