Psychrometric Chart Calculator: Air States and HVAC Processes
Solve moist-air states from two independent properties and plot HVAC processes. Calculate coil duty, air mixing, humidification and condensate at your site pressure.
This psychrometric chart calculator finds moist-air properties and shows how common HVAC processes move an air state. It is intended for engineers checking an air-handling calculation, students learning psychrometry, and anyone comparing heating, cooling, mixing or humidification options. The chart is drawn directly from equations at the selected pressure.
Start with the site altitude or enter measured absolute station pressure. Weather-service pressure corrected to sea level is not the local pressure needed here. Choose two known properties for inlet A: dry bulb, wet bulb, dew point, relative humidity, humidity ratio or enthalpy. The psychrometric calculator online then reports the remaining state properties, including specific volume on a dry-air basis. Dew point below freezing means frost point, following the saturation-over-ice convention.
Two properties must be independent. Dew point and humidity ratio both describe the same vapor pressure and cannot determine temperature together. Wet bulb plus enthalpy is poorly conditioned near freezing, so that pairing is restricted there. Near freezing, ice- and water-wick wet-bulb inversions can both fit a state. A known wet bulb retains its phase; automatic inversions flag two roots and show both candidates. Rounded measurements can also describe an impossible state; an input message explains what to change.
Enter actual inlet volume flow or dry-air mass flow; this control is also visible in Air state only mode because an air state cannot determine airflow. Select a process to calculate conditioning duty. Sensible heating and cooling hold moisture constant; cooling below the dew point requires a cooling-coil process instead. The coil uses apparatus dew point and bypass factor, with a dry-coil branch when condensation cannot occur. As a cooling coil condensate calculator, it reports drainage and separates sensible from latent air-side duty.
The air mixing calculator accepts a second independently specified state. Each actual volume flow is converted to dry-air mass flow before moisture and enthalpy are mixed. The displayed A-to-outlet rates describe the change relative to stream A; an adiabatic mixer itself has zero external heat input. Mixtures that would form fog are rejected.
Evaporative cooling follows a constant-enthalpy approximation toward saturation. Steam humidification adds the entered steam mass and specific enthalpy. Neither mode predicts equipment electricity or fuel use. SHR is undefined when the net enthalpy duty is zero, as in ideal evaporative cooling.
Use the adjustable temperature and RH band to mark your own comfort target. It is not a comfort-standard compliance test. Use the metric/US switch for temperature, pressure and power. Compound units retain their labels; companion tables provide BTU/h, BTU/lb, cfm and lb/h. Inputs also accept compatible units typed with the value. US enthalpy retains the SI 0 °C datum. The schematic and chart keep their labeled SI coordinates. This dew point enthalpy calculator covers ideal-gas moist air from about −40 to 60 °C and excludes frost accumulation, refrigerant circuits, pressure drop and detailed coil selection.
How it is calculated
Moist-air properties follow the ASHRAE Fundamentals 2017 equations openly implemented in PsychroLib 2.5.0: attached source s3, pp. 5 (wet bulb), 8 (Hyland–Wexler saturation pressure and enthalpy), and 9 (specific volume and standard atmosphere). The ice/water saturation-pressure transition is at 0.01 °C; the wet-bulb energy balance changes branch at 0 °C.
With pressure in Pa, and . Enthalpy in kJ per kg dry air is . Specific volume is , with J/(kg·K). Inverse saturation uses bounded bisection. Wet-bulb inversions bracket the ice (below 0 °C) and liquid-water (at or above 0 °C) branches separately; a known wet bulb selects its phase and an unchanged outlet retains it. Without a known phase, two-root states show both candidates and a warning; the numeric inverse follows the liquid-water branch. No bisection crosses the branch discontinuity. The independent property pairs use algebra or a one-dimensional root.
Dry-air flow is . A wet-coil outlet conserves humidity ratio and enthalpy in a bypass/contact mixture: and . A dry coil retains and uses . Mixing conserves dry-air mass, vapor mass and enthalpy. Its temperature is recovered from mixed , rather than temperature-averaged. These balances are derived here; the ADP/BF approach is described in the EnergyPlus coil reference.
Evaporative effectiveness measures approach to the saturated point at inlet enthalpy. Feed-water enthalpy is neglected. Steam adds and (EnergyPlus humidifier balances).
Signed air-side rates are , and . Positive means energy added to air. This defines the split using the outlet humidity ratio; other conventions differ slightly. SHR is and is displayed as undefined at zero net duty. Drainage is for a conditioning process and zero for fog-free mixing. The chart is an original drawing from these equations; no published chart is reproduced.
Assumptions
- Ideal-gas dry air and water vapor at a common, constant total pressure. Humidity ratios, enthalpy and specific volume are per kg dry air, not per kg moist air.
- Standard-atmosphere altitude pressure is an estimate. The measured-pressure option accepts local absolute station pressure.
- Negligible pressure drop, fan heat, kinetic and potential energy changes. Reported coil duty is the air-side enthalpy change; drain-liquid enthalpy and refrigeration performance are excluded.
- Coil bypass factor is a dry-air fraction. The wet branch mixes saturated contact air at ADP with bypass air; this exactly conserves enthalpy and moisture and is slightly curved in dry bulb versus W coordinates.
- Steam specific enthalpy uses the same reference near liquid water at 0 °C. Its default 2676 kJ/kg is an illustrative rounded supply value; enter actual steam data.
- For mixing, total/sensible/latent rates compare stream A with the mixed state at A's dry-air flow. External mixer duty and added-water/condensate rates are zero.
- The green comfort band is an input visualization, not an ASHRAE 55 assessment. Scene labels stay in SI. The metric/US switch converts supported simple units and temperature offsets. Compound HVAC quantities retain their declared units; companion US tables provide BTU/h, BTU/lb, cfm and lb/h. Numeric fields accept compatible units typed with the value.
- US enthalpy is a unit conversion of SI enthalpy and retains its 0 °C datum. It differs from an IP chart using a 0 °F dry-air enthalpy datum; energy differences and process duties are unaffected by a constant datum shift.
- Flow is separately entered in every mode. Air state only exposes the same volume-flow / dry-air-mass-flow inputs; reported flows are based on that specified flow, not inferred from thermodynamic properties.
Where it applies
Dry bulb −40 to +60 °C; pressure 50–110 kPa (altitude −500 to 5000 m when estimated). Dew/frost-point inversion extends to −100 °C. Relative humidity must be positive and at most 100%; exactly dry air has no finite dew point and is excluded. Negative-moisture and supersaturated input states are rejected instead of silently clamping humidity to PsychroLib's numerical floor.
The two-property solver supports all 14 independent pairs. Dew point plus humidity ratio is dependent. Wet bulb plus enthalpy is rejected within 0.1 K of 0 °C because the inverse problem is singular/ill-conditioned there. Rounded inputs in that pairing may be sensitive even farther from freezing. The ice and liquid-water wet-bulb energy balances overlap near freezing, so a unique inverse wet bulb is not always determined by the air state alone. Entered negative wet bulbs use the ice-wick branch; entered nonnegative values use the liquid-water branch. Automatic inversions with two roots show a warning and both SI candidate temperatures; the numeric result uses water. Supercooled liquid-water wet bulbs below 0 °C are outside this implementation.
Cooling-coil effective surface temperature is restricted to 0–40 °C. Frost, freezing condensate, detailed part-wet coil behavior, fog-producing mixing, liquid carryover and nonideal high-pressure air are excluded. Liquid-water evaporative cooling requires a saturation endpoint at or above 0 °C. Constant-enthalpy evaporation neglects water and pump heat. Loads are not an equipment electrical rating or a substitute for manufacturer selection data.
References
- Meyer, D. and Thevenard, D. (2019). PsychroLib: a library of psychrometric functions to calculate thermodynamic properties of air. JOSS 4(33), 1137. https://doi.org/10.21105/joss.01137
- PsychroLib 2.5.0 Python source (MIT), ASHRAE Fundamentals 2017 correlations. https://github.com/psychrometrics/psychrolib/blob/master/src/python/psychrolib/__init__.py
- PsychroLib SI published tests: Excel reference calculations and Handbook worked-example cross-checks; attached s2 pp. 1–3. https://github.com/psychrometrics/psychrolib/blob/master/tests/test_psychrolib_si.py
- EnergyPlus Engineering Reference: Coils, ADP and bypass-factor model. https://bigladdersoftware.com/epx/docs/26-1/engineering-reference/coils.html
- EnergyPlus Engineering Reference: Air System Humidifiers, moisture and enthalpy balances. https://bigladdersoftware.com/epx/docs/26-1/engineering-reference/air-system-humidifiers.html
- Dwyer, T. (2009). CIBSE Journal, Module 9: The basic psychrometric processes. https://www.cibsejournal.com/cpd/modules/2009-10/
Inputs
| Input | Symbol | Unit | Default |
|---|---|---|---|
| HVAC process The cooling-coil model uses apparatus dew point (ADP) and bypass factor. Air state only leaves the specified state unchanged. | process | Coil: ADP + bypass factor | |
| Airflow basis An air state does not determine airflow. Enter the flow used for all mass- and volume-flow results, including in Air state only mode. | flow_basis | Actual inlet volume flow | |
| Barometric pressure Estimate standard-atmosphere pressure from site altitude, or enter measured absolute station pressure. | pressure_mode | From altitude | |
| Site altitude Standard atmosphere estimate; use measured local absolute pressure when available. | altitude | m | 0 |
| Station pressure (absolute) Use local station pressure, not weather-report pressure corrected to sea level. | p_input | kPa | 101.325 |
| Known properties for A | pair_A | Dry bulb + relative humidity | |
| A: Dry-bulb temperature | T_db_A | °C | 30 |
| A: Wet-bulb temperature Below 0 °C, this input specifies an ice wick; at or above 0 °C, it specifies liquid water. The entered branch is retained in its inverse calculation. | T_wb_A | °C | 22 |
| A: Dew / frost-point temperature | T_dp_A | °C | 18 |
| A: Relative humidity (%) Enter 50 for 50% relative humidity. | RH_A | 50 | |
| A: Humidity ratio (per kg dry air) Per kg dry air. A value may include a compatible unit, for example 0.01 lb/lb. | W_input_A | g/kg | 13.31 |
| A: Enthalpy (per kg dry air) SI enthalpy datum near 0 °C. A value may include a unit, for example 30 BTU/lb using this same datum. | h_input_A | kJ/kg | 64.2 |
| A: Actual volume flow at inlet Actual inlet flow, not standard/normal volume. You may type a compatible unit, for example 2000 ft³/min. | V_A | m^3/s | 1 |
| A: Dry-air mass flow Mass of dry air, not total moist air. You may type a compatible unit, for example 9000 lb/h. | m_A_set | kg/s | 1.2 |
| Known properties for B | pair_B | Dry bulb + relative humidity | |
| B: Dry-bulb temperature | T_db_B | °C | 20 |
| B: Wet-bulb temperature Below 0 °C, this input specifies an ice wick; at or above 0 °C, it specifies liquid water. The entered branch is retained in its inverse calculation. | T_wb_B | °C | 14 |
| B: Dew / frost-point temperature | T_dp_B | °C | 9 |
| B: Relative humidity (%) Enter 50 for 50% relative humidity. | RH_B | 50 | |
| B: Humidity ratio (per kg dry air) Per kg dry air. A value may include a compatible unit, for example 0.01 lb/lb. | W_input_B | g/kg | 7.3 |
| B: Enthalpy (per kg dry air) SI enthalpy datum near 0 °C. A value may include a unit, for example 30 BTU/lb using this same datum. | h_input_B | kJ/kg | 38.5 |
| B: Actual volume flow at inlet Actual inlet flow, not standard/normal volume. You may type a compatible unit, for example 2000 ft³/min. | V_B | m^3/s | 0.5 |
| B: Dry-air mass flow Mass of dry air, not total moist air. You may type a compatible unit, for example 9000 lb/h. | m_B_set | kg/s | 0.6 |
| Leaving dry-bulb temperature Sensible cooling must stop at or above the inlet dew / frost point. | T_target | °C | 40 |
| Apparatus dew point / effective surface temperature A wet coil approaches saturated air at ADP. Above the inlet dew point the coil is treated as dry. | T_adp | °C | 10 |
| Coil bypass factor Dry-air fraction bypassing the effective surface: 0 = full contact; 1 = no change. | BF | 0.15 | |
| Evaporative saturation effectiveness Fraction of the temperature approach to saturation on a constant-enthalpy path; feed-water enthalpy is neglected. | eta_evap | 0.8 | |
| Injected dry steam mass flow Dry injected steam; you may type a compatible unit such as 10 lb/h. | m_steam_input | kg/h | 5 |
| Injected steam specific enthalpy Relative to liquid water near 0 °C; 2676 kJ/kg is a typical rounded value for steam near 100 °C. Use supply data. | h_steam | kJ/kg | 2676 |
| Comfort band: lower dry bulb | comfort_T_low | °C | 20 |
| Comfort band: upper dry bulb | comfort_T_high | °C | 26 |
| Comfort band: lower RH (%) | comfort_RH_low | 30 | |
| Comfort band: upper RH (%) A user-defined visualization band; it is not an ASHRAE 55 comfort-compliance assessment. | comfort_RH_high | 60 |
Results
With the default inputs above, the calc gives:
| Result | Value |
|---|---|
| Outlet dry bulb | 13.03 °C |
| Outlet relative humidity (%) | 90.86 |
| Outlet humidity ratio (per kg dry air) | 8.482 g/kg |
| Outlet enthalpy (per kg dry air) | 34.52 kJ/kg |
| Outlet wet bulb | 12.18 °C |
| Outlet dew / frost point | 11.57 °C |
| A-to-outlet enthalpy rate (+ to air) | -33.85 kW |
| Sensible rate (+ heating) | -19.77 kW |
| Latent rate (+ humidification) | -14.07 kW |
| Signed sensible heat ratio | 0.5842 |
| Condensate drainage | 19.82 kg/h |
| Water / steam evaporated | 0 kg/h |
| External air-side duty (+ input) | -33.85 kW |
| Inlet A dry-air mass flow | 1.14 kg/s |
| Outlet actual volume flow | 0.937 m³/s |
| Local barometric pressure | 101.325 kPa |
| User comfort band | Outside user band |
| How to read the process rates | Wet coil: enthalpy and moisture bypass balance |
| Wet-bulb wick phases | A: Liquid-water wick branch | O: Liquid-water wick branch |
Checked against sources
Each case below was calculated by this calc and agrees with the value from its source (within the tolerance where one is shown).
PsychroLib: 30 °C DB / 25 °C WB, 95.461 kPa
Source: PsychroLib SI test_HumRatio_TWetBulb, warm case, independent Excel reference. The published humidity ratio is an approximate target (relative tolerance 0.0003), not an exact inverse constraint.
Inputs: HVAC process = Air state only; Barometric pressure = Measured pressure; Station pressure (absolute) = 95.461 kPa; Known properties for A = Dry bulb + wet bulb; A: Wet-bulb temperature = 25 °C; the others as above.
| Result | Source | This calc |
|---|---|---|
| A humidity ratio | 0.01923 | 0.01922 |
| A wet-bulb temperature (see wick phase) | 25 °C | 25 °C |
PsychroLib: −1 °C DB / −5 °C WB, 95.461 kPa
Source: PsychroLib SI test_HumRatio_TWetBulb, ice-branch case, independent Excel reference and its published 0.03% tolerance.
Inputs: HVAC process = Air state only; Barometric pressure = Measured pressure; Station pressure (absolute) = 95.461 kPa; Known properties for A = Dry bulb + wet bulb; A: Dry-bulb temperature = -1 °C; A: Wet-bulb temperature = -5 °C; the others as above.
| Result | Source | This calc |
|---|---|---|
| A humidity ratio | 0.001204 | 0.001204 |
| A wet-bulb temperature (see wick phase) | -5 °C | -5 °C |
PsychroLib: 30 °C, W = 0.02, 95.461 kPa
Source: PsychroLib SI test_MoistAir: independent Excel enthalpy, specific volume and moist density; values transcribed with SI energy conversion J/kg to kJ/kg.
Inputs: HVAC process = Air state only; Barometric pressure = Measured pressure; Station pressure (absolute) = 95.461 kPa; Known properties for A = Dry bulb + humidity ratio; A: Humidity ratio (per kg dry air) = 20 g/kg; the others as above.
| Result | Source | This calc |
|---|---|---|
| A enthalpy per kg dry air | 81.316 kJ/kg | 81.316 kJ/kg |
| A specific volume per kg dry air | 0.9409 m³/kg | 0.9409 m³/kg |
| A moist-air density | 1.084 kg/m³ | 1.084 kg/m³ |
PsychroLib complete worked state: 40 °C DB / 20 °C WB
Source: PsychroLib SI test_AllPsychrometrics, published check against the 2017 Handbook worked example. Handbook chart values are rounded; retain upstream tolerances (especially dew point) rather than altering the equations.
Inputs: HVAC process = Air state only; Barometric pressure = Measured pressure; Known properties for A = Dry bulb + wet bulb; A: Dry-bulb temperature = 40 °C; A: Wet-bulb temperature = 20 °C; the others as above.
| Result | Source | This calc |
|---|---|---|
| A humidity ratio | 0.0065 ± 1 × 10⁻⁴ | 0.006401 |
| A dew / frost point | 7 ± 0.5 °C | 7.434 °C |
| A relative humidity (%) | 14 ± 1 | 13.979 |
| A enthalpy per kg dry air | 56.7 ± 0.1 kJ/kg | 56.725 kJ/kg |
| A specific volume per kg dry air | 0.896 ± 0.009 m³/kg | 0.8962 m³/kg |
PsychroLib standard-atmosphere pressure at 500 m
Source: PsychroLib SI test_GetStandardAtmPressure: independently published 500 m pressure test.
Inputs: HVAC process = Air state only; Site altitude = 500 m; the others as above.
| Result | Source | This calc |
|---|---|---|
| Barometric pressure | 95,461 Pa | 95,461 Pa |
PsychroLib saturation pressure at 25 °C
Source: PsychroLib SI test_GetSatVapPres at 25 °C; 300 ppm tolerance of the rounded published target.
Inputs: HVAC process = Air state only; A: Dry-bulb temperature = 25 °C; A: Relative humidity (%) = 80; the others as above.
| Result | Source | This calc |
|---|---|---|
| A saturation vapor pressure | 3,170 Pa | 3,169 Pa |
PsychroLib inverse: h = 81.316 kJ/kg, W = 0.02
Source: PsychroLib SI test_DryAir includes the independently published enthalpy/humidity inverse example.
Inputs: HVAC process = Air state only; Barometric pressure = Measured pressure; Station pressure (absolute) = 95.461 kPa; Known properties for A = Humidity ratio + enthalpy; A: Humidity ratio (per kg dry air) = 20 g/kg; A: Enthalpy (per kg dry air) = 81.316 kJ/kg; the others as above.
| Result | Source | This calc |
|---|---|---|
| A dry-bulb temperature | 30 °C | 30 °C |
PsychroLib documented dew point: 25 °C, 80% RH
Source: PsychroLib published API/source documentation example, 25 °C and 80% RH; attached source s3 p. 1.
Inputs: HVAC process = Air state only; A: Dry-bulb temperature = 25 °C; A: Relative humidity (%) = 80; the others as above.
| Result | Source | This calc |
|---|---|---|
| A dew / frost point | 21.309 °C | 21.309 °C |







Responses