Introducing Energy Flow X, a professional-grade web platform and REST API for thermodynamic calculations, HVAC engineering, and fluid mechanics.
| PROJECT LOGO (Copyright pending) | URL's: |
|---|---|
![]() |
⇒ Go to EFX Website ⇐ ⇒ Go to EFX Demo API ⇐ |
EnergyFlowX is powered by a family of engineering libraries built from scratch:
- HVAC-Engine-Pro — Thermodynamic properties and processes: dry/humid air, water & steam (IAPWS-IF97), ice, plus HVAC process calculations (heating, cooling, mixing, heat recovery),
- Unitility — Physical quantities and units of measure conversion framework,
- Brent-Dekker Solver — Enhanced numerical root-finding for nested equations.
This platform serves HVAC/MEP engineers, mechanical engineers, and chemical/process engineers with precise, standards-based calculations spanning psychrometrics, steam/water thermodynamics (IAPWS-IF97), ice properties, hydraulic flow in ducts and pipes, and heat recovery systems.
This is not "just another psychrometrics calculator."
It is a comprehensive engineering software ecosystem, designed to support the development of complex engineering projects like this one.
This product is the result of years of development, with over 10,000 hours of personal time invested.
The frontend is merely the crowning jewel — the cherry on top.
To readers unfamiliar with fluid mechanics and thermodynamics, the calculation forms may appear deceptively simple.
But trust me — there's nothing simple here once you look behind the curtain…
No fluid parameters are assumed as constants (specific heat, density, etc.) as is common in many available tools. Every temperature- and pressure-dependent property is calculated from first-principles equations sourced from international standards (IAPWS, ASHRAE), peer-reviewed scientific journals, or formulas derived independently. Review the full list of reference sources at the end of this documentation.
Eager to see how the project works? Visit the site below, register to create your own free
account, and explore the platform!
If you are a developer interested in building your own application — check the API demo. I offer REST API as a service so you can focus on your application's business logic instead of investing ~10,000 hours into building backbone physics libraries. API-as-a-Service is available on an individual pricing basis. Contact me directly for details!
| CREATED BY (All rights reserved): | DEVELOPER: |
|---|---|
![]() |
Piotr Jazdzyk, MSc Eng Read more about the author Reach me out on LinkedIn |
Do not forget to say hello!
Cooling process calculation showcase:

Multiple air stream mixing process showcase:

Humid air thermophysical properties calculation showcase:

DuctX — comprehensive ventilation duct sizing calculator:

NO AI ZONE.
All calculations use hand-crafted algorithms based on established scientific formulas and equations, implemented from scratch.
I love AI, but this is not the right project for LLMs.
- Tech & dependencies
- System design & architecture
- Functionality
- REST API 4.1 API versioning 4.2 Physical quantities master data 4.3 Unit conversion 4.4 Dry air properties 4.5 Liquid water properties 4.6 Humid air properties 4.7 Steam properties (IAPWS-IF97) 4.8 Ice Ih properties 4.9 Property tables generation 4.10 Heating process 4.11 Cooling process 4.12 Mixing process 4.13 Heat recovery process 4.14 Humid air flow calculations 4.15 Sequential process computation 4.16 Unit overrides 4.17 Hydraulic conduit 4.18 Conduit master data 4.19 Materials database 4.20 Benchmark 4.21 File download 4.22 Error response 4.23 Swagger UI
- Licensing, attribution, and citation
- Feature request and bug reporting
- Acknowledgments
- Reference sources
EnergyFlow X is built with the following technologies:
EnergyFlowX is deployed as a set of microservices on an external server using Docker Swarm. Separation of Concerns is applied, with the following independent services:
- User manager service — user registration, authentication, and account management,
- Business logic service — all thermodynamic, HVAC process, fluid properties, unit conversion, hydraulic, and materials computations,
- Reverse proxy server — NGINX instance serving static frontend assets and acting as a reverse proxy.
The Backend business-logic service follows a hexagonal (ports-and-adapters) architecture. Both user manager and business logic services are structured as modular Maven projects with separated API and CORE modules. The API module defines port interfaces implemented by REST controllers in the CORE infrastructure layer.
The Frontend is built with Vue.js and Quasar Framework in JavaScript. Custom components like ScientificInput handle
physical quantity values with associated units, automatic validation, and live unit conversion.
The frontend is designed to be super lightweight and fast — no raster images (PNG/JPG) are used; all graphics are
vector-based SVG. Pages prioritize content density and usability for engineers in daily professional use.
Google Analytics tracks basic page usage. SEO meta tags are configured for search engine visibility.
Security follows industry best practices:
- RBAC (role-based access control) for tiered content access,
- GDPR/ROD-compliant data handling with minimal data collection,
- HTTPS (strict mode) across all pages,
- Modern encryption algorithms for sensitive data,
- Secrets stored in an external cloud key-vault.
Dry air properties:
- Density, specific enthalpy, specific heat (Cp, Cv),
- Kinematic and dynamic viscosity,
- Thermal conductivity, thermal diffusivity,
- Prandtl number,
- Wide temperature/pressure range per Lemmon & Jacobsen (2000).
Liquid water properties (IAPWS-IF97):
- Density, specific enthalpy, specific entropy,
- Specific heat (Cp, Cv),
- Speed of sound, isothermal compressibility,
- Thermal expansion coefficient,
- Viscosity and thermal conductivity (IAPWS formulations),
- Surface tension.
Steam / water vapor properties (IAPWS-IF97):
- Full coverage of Regions 1–5 (compressed liquid, superheated vapor, near-critical, two-phase, high-pressure/high-temperature),
- All standard thermodynamic properties (density, enthalpy, entropy, Cp, Cv, speed of sound, etc.),
- Backward equations p(h,s), v(p,T),
- Boundary and saturation equations.
Ice Ih properties:
- Gibbs energy equation of state (IAPWS R10-06),
- Density, enthalpy, entropy, heat capacity,
- Compressibility, thermal expansion coefficient,
- Melting and sublimation curve pressures.
Moist (humid) air properties:
- Vapour saturation pressure, dew point and wet bulb temperatures,
- Relative humidity, humidity ratio (and maximum humidity ratio),
- Specific enthalpy (including water mist and ice mist components),
- Kinematic and dynamic viscosity, thermal conductivity,
- Specific heat, density, thermal diffusivity, Prandtl number,
- Enhanced fugacity calculations per IAPWS G11-15.
Air heating:
- For a given input heating power,
- For a target outlet air temperature,
- For a target outlet air relative humidity.
Air cooling (with condensate discharge):
- For a given input cooling power,
- For a target outlet temperature,
- For a target outlet relative humidity,
- Optional coolant secondary-side calculations.
Heat recovery:
- From a given effectiveness value,
- For a target supply temperature,
- For a target recovered power,
- Support for multiple heat recovery types (enthalpic, sensible, latent, total),
- Air-to-air and air-to-water configurations,
- Frost/defrost diagnostics, condensate tracking, leakage modeling.
Air stream mixing:
- Two-flow mixing with humidity content,
- Multi-flow mixing (up to 20 streams).
Humid air flow calculations:
- Inter-conversion between volumetric flow, mass flow, and dry-air mass flow at given state conditions.
Hydraulic conduits — DuctX & PipeX:
- Circular, rectangular, and elliptical cross-sections,
- Flow velocity, Reynolds number,
- Linear pressure loss and linear resistance,
- Colebrook-White friction factor (iterative numerical solution),
- Minor (local) pressure losses via loss coefficients (ζ),
- Linear mass density from construction materials and insulation layers,
- Master data database of real market duct and pipe products,
- Calculations based on real humid air properties,
- HeatMap visualization for full dimension series.
Materials database:
- Construction and insulation materials with thermal and mechanical properties,
- Hydraulic condition data (surface roughness),
- Query by material type, layer type, or application.
Property tables generation:
- Generate multi-parameter thermodynamic property tables,
- Configurable axes, modes, and step sizes.
Sequential process computation:
- Chain multiple process definitions (heating, cooling, mixing, heat recovery) where each process's output feeds the next,
- Simulate arbitrary air handling unit configurations,
- Bulk computation mode for multiple scenarios in a single request.
Benchmark tool:
- Performance benchmarking of core computation engines.
The REST API empowers developers to integrate thermodynamic and HVAC calculations into their own software. A free demo is available at https://demo.energyflowx.com/ with limited functionality and rate limiting. For unlimited access, contact the author for pricing.
All API paths are prefixed with /api. Physical quantities are specified as strings combining a numeric value and a unit symbol (e.g., "20.5C", "101325.0Pa"). The full list of supported units is available via the /api/quantities endpoint.
The API is not versioned in the URL path to simplify maintenance. If versioned access is required, contact the author.
Retrieve the full catalog of supported physical quantities and their units.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/quantities |
GET | List all physical quantity types |
| 2 | /api/quantities/{quantity-type} |
GET | Get units for a specific quantity type |
Example: Quantities master data response
Convert physical quantities between any supported units of the same quantity type.
| # | PATH | METHOD | PARAMETERS |
|---|---|---|---|
| 1 | /api/quantities/convert/{quantity-type} |
GET | quantity-type (path), value, from-unit, target-unit (query) |
| 2 | /api/quantities/convert |
POST | Request body example |
Example: Conversion response
Calculate thermodynamic properties of dry air over wide temperature/pressure ranges (Lemmon & Jacobsen, 2000).
| # | PATH | METHOD | QUERY PARAMETERS |
|---|---|---|---|
| 1 | /api/properties/dry-air |
GET | temperature, pressure (default: 101325.0Pa), imperial-units, unit-overrides |
Calculate properties of liquid water per IAPWS-IF97 Region 1 and IAPWS transport property formulations.
| # | PATH | METHOD | QUERY PARAMETERS |
|---|---|---|---|
| 1 | /api/properties/liquid-water |
GET | temperature, pressure, imperial-units, unit-overrides |
Six entry modes to compute humid air state from different input combinations.
| # | PATH | METHOD | REQUIRED QUERY PARAMETERS |
|---|---|---|---|
| 1 | /api/properties/humid-air |
GET | temperature, (+ humidity-ratio OR relative-humidity) |
| 2 | /api/properties/humid-air/from-wet-bulb |
GET | wet-bulb-temperature, (+ relative-humidity OR humidity-ratio) |
| 3 | /api/properties/humid-air/from-dew-point |
GET | dew-point-temperature, relative-humidity |
| 4 | /api/properties/humid-air/from-enthalpy |
GET | specific-enthalpy, humidity-ratio |
| 5 | /api/properties/humid-air/from-humidity |
GET | humidity-ratio, relative-humidity |
All endpoints also accept optional: pressure (default: 101325.0Pa), imperial-units, unit-overrides.
Example: Humid air response
Full IAPWS-IF97 steam/water properties across all five regions, with multiple entry modes.
| # | PATH | METHOD | REQUIRED QUERY PARAMETERS |
|---|---|---|---|
| 1 | /api/properties/steam |
GET | temperature, pressure |
| 2 | /api/properties/steam/from-enthalpy |
GET | specific-enthalpy, pressure |
| 3 | /api/properties/steam/from-entropy |
GET | specific-entropy, pressure |
| 4 | /api/properties/steam/from-mollier |
GET | specific-enthalpy, specific-entropy |
All endpoints also accept optional: imperial-units, unit-overrides.
Thermodynamic properties of ice (Ice Ih phase) per IAPWS R10-06 equation of state.
| # | PATH | METHOD | QUERY PARAMETERS |
|---|---|---|---|
| 1 | /api/properties/ice |
GET | temperature, pressure, imperial-units, unit-overrides |
Generate tabulated thermodynamic property data for reporting or further analysis.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/properties/table |
POST | Generate a property table (request body) |
| 2 | /api/properties/table/modes |
GET | List available table generation modes |
| 3 | /api/properties/table/modes/{mode} |
GET | Get parameters for a specific mode |
Heat a humid air stream in one of three modes.
| # | PATH | METHOD | REQUEST BODY EXAMPLE |
|---|---|---|---|
| 1 | /api/processes/heating/target-input-power |
POST | Request body |
| 2 | /api/processes/heating/target-temperature |
POST | Request body |
| 3 | /api/processes/heating/target-relative-humidity |
POST | Request body |
Query params: imperial-units, unit-overrides. Example: Heating response
Cool a humid air stream with condensate discharge in one of three modes. Optional coolant (secondary) side.
| # | PATH | METHOD | REQUEST BODY EXAMPLE |
|---|---|---|---|
| 1 | /api/processes/cooling/target-input-power |
POST | Request body |
| 2 | /api/processes/cooling/target-temperature |
POST | Request body |
| 3 | /api/processes/cooling/target-relative-humidity |
POST | Request body |
Query params: imperial-units, unit-overrides. Example: Cooling response
Mix two or more humid air streams.
| # | PATH | METHOD | REQUEST BODY EXAMPLE |
|---|---|---|---|
| 1 | /api/processes/mixing |
POST | Request body |
| 2 | /api/processes/mixing/multiple |
POST | Request body |
Query params: imperial-units, unit-overrides. Example: Mixing response
Compute heat recovery between supply and exhaust air streams with frost/defrost diagnostics, condensate tracking, and leakage modeling.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/processes/heat-recovery/from-effectiveness |
POST | Given heat recovery effectiveness |
| 2 | /api/processes/heat-recovery/target-supply-temperature |
POST | Target supply outlet temperature |
| 3 | /api/processes/heat-recovery/target-recovered-power |
POST | Target recovered thermal power |
Supports enthalpic, sensible, latent, and total heat recovery types. Air-to-air and air-to-water configurations. Defrost strategy configuration.
Query params: imperial-units, unit-overrides.
Inter-convert volumetric flow, mass flow, and dry-air mass flow at specified state conditions.
| # | PATH | METHOD | REQUEST BODY EXAMPLE |
|---|---|---|---|
| 1 | /api/flows/humid-air |
POST | Request body |
Example: Flow response
Chain multiple HVAC processes where each process's output feeds the next input. Simulate arbitrary air handling unit configurations. Bulk mode supports multiple independent scenario chains in one request.
| # | PATH | METHOD | REQUEST BODY EXAMPLE |
|---|---|---|---|
| 1 | /api/procedures/sequential |
POST | Request body |
Example: Sequential response
Query params: imperial-units, unit-overrides.
All endpoints that return physical quantities support unit overrides to customize the output units:
In request body (POST):
{
"unitOverrides": {
"pressure": "kPa",
"temperature": "K",
"volumetricFlow": "m3/min"
}
}As query parameter (GET):
?unit-overrides=pressure_kPa,temperature_K,volumetricFlow_m3%2Fmin
Retrieve the full list of supported quantity types and unit symbols from /api/quantities.
Calculate flow characteristics for conduits (ducts and pipes) with circular, rectangular, or elliptical cross-sections.
| # | PATH | METHOD | REQUEST BODY EXAMPLE |
|---|---|---|---|
| 1 | /api/hydraulics/single-flow-mode |
POST | Request body |
Computes flow velocity, Reynolds number, friction factor (Colebrook-White), linear and local pressure losses, and structural mass.
Example: Conduit response
Access databases of standard duct and pipe dimensions from real manufacturers, filtered by application, pressure class, leakage class, and material.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/conduits/ducts/{ductCode} |
GET | Get duct master data by product code |
| 2 | /api/conduits/pipes/{pipeCode} |
GET | Get pipe master data by product code |
| 3 | /api/conduits/ducts/query |
POST | Query ducts by filter criteria |
| 4 | /api/conduits/pipes/query |
POST | Query pipes by filter criteria |
| 5 | /api/conduits/ducts/value-help/query |
POST | Lightweight value-help lookup for ducts |
| 6 | /api/conduits/pipes/value-help/query |
POST | Lightweight value-help lookup for pipes |
Query construction and insulation materials with thermal, mechanical, and hydraulic properties.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/materials |
POST | Query materials by filter criteria |
Returns material properties, layer types, hydraulic roughness data, and thermal conductivity.
Run performance benchmarks on the core computation engines.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/benchmark/run |
GET | Execute a benchmark run |
Returns timing data, throughput metrics, and per-engine summaries.
Download reference documents and resources.
| # | PATH | METHOD | DESCRIPTION |
|---|---|---|---|
| 1 | /api/resources/documents/{fileType}/{fileCode} |
GET | Download a reference document |
Validation errors and domain exceptions return HTTP 400 (Bad Request) with a structured response:
{
"serviceName": "Energy Flow X",
"cause": "UnitSystemParseException",
"message": "Unsupported unit symbol: {xyz}. Target class: TemperatureUnits",
"timestamp": "2024-02-10T14:39:11.8551038Z"
}Internal stack traces are never exposed. Report any leaks immediately via the issue tracker.
Interactive API documentation and testing is available at: https://demo.energyflowx.com
Any reference to this project must include proper attribution to the author. While code samples may be shared publicly for educational purposes, the project as a whole is designated for commercial use under the author's terms. Unauthorized commercial use is strictly prohibited. All rights reserved by the author.
Feedback and ideas are welcome. This project was built by an engineer, for engineers — I want it to be as useful as possible in your daily work. Submit bugs and feature requests on the GitHub Issues page.
Include the following in your report:
- Page or Functionality — where the issue occurred,
- Description — clear and detailed account of the bug,
- Input Data — values/inputs used when the bug triggered,
- Result and Expectation — what happened vs. what you expected,
- App Version — found at the bottom of the application.
Your feedback is the fuel that drives this project forward. Every suggestion and bug report makes this tool better — thank you for being part of the process!
I want to thank Mabas83, for everything you did for me.
Heartfelt gratitude to the Silesian University of Technology for the knowledge, scientific guidance, and for shaping me into an engineer.
Special thanks to GreedyJ4ck for discussions and valuable suggestions during frontend development. BIG THANKS!
- [1] IAPWS R7-97(2012) — Industrial Formulation for the Thermodynamic Properties of Water and Steam (IF97). Covers Regions 1–5, boundary equations, backward equations, and uncertainty estimates. Valid up to 100 MPa, 273.15 K–1073.15 K (Region 1), up to 80 MPa, 863.15 K–1073.15 K (Region 2).
- [2] IAPWS G5-01(2020) — Fundamental Constants. CODATA 2018 constants, ITS-90 scale, VSMOW isotopic composition, critical and triple-point values.
- [3] IAPWS SR2-01(2014) — Revised Supplementary Release on Backward Equations p(h,s) for Regions 1 and 2.
- [4] IAPWS SR4-04(2014) — Revised Supplementary Release on Backward Equations p(h,s) for Region 3, Boundary Equations, Tsat(h,s) for Region 4.
- [5] IAPWS SR5-05(2016) — Revised Supplementary Release on Backward Equations v(p,T) for Region 3. 26 subregions plus auxiliary equations near the critical point.
- [6] IAPWS R6-95(2018) — Revised Release on IAPWS-95 Formulation. Fundamental Helmholtz free energy equation, ideal-gas and residual parts.
- [7] IAPWS R12-08(2008) — Formulation 2008 for Viscosity of Ordinary Water Substance.
- [8] IAPWS R15-11(2011) — Formulation 2011 for Thermal Conductivity of Ordinary Water Substance.
- [9] IAPWS R1-76(2014) — Revised Release on Surface Tension of Ordinary Water Substance.
- [10] IAPWS R10-06(2009) — Revised Release on Equation of State 2006 for H₂O Ice Ih. Gibbs energy EOS, T ∈ [0 K, 273.16 K], p ∈ [0 Pa, 210 MPa].
- [11] IAPWS R14-08(2011) — Revised Release on Pressure along Melting and Sublimation Curves. Melting pressure for ice phases Ih, III, V, VI, VII; sublimation pressure for T ∈ [50 K, 273.16 K].
- [12] Lemmon E.W., Jacobsen R.T., Penoncello S.G., Friend D.G. (2000) — Thermodynamic Properties of Air and Mixtures of N₂, Ar, and O₂ from 60 to 2000 K at Pressures to 2000 MPa. J. Phys. Chem. Ref. Data, Vol. 29, No. 3, p. 331.
- [13] Lemmon E.W., Jacobsen R.T. (2004) — Viscosity and Thermal Conductivity Equations for N₂, Ar, O₂, and Air. J. Phys. Chem. Ref. Data, Vol. 33, No. 1, p. 309.
- [14] IAPWS G11-15(2015) — Guideline on Virial Equation for Fugacity of H₂O in Humid Air.
- [15] IAPWS G9-12(2012) — Guideline on Low-Temperature Extension of IAPWS-95 for Water Vapor (50 K–130 K).
- [HYD-1] Lotfi Z., Loup J., Aouine B. (2019) — Explicit solutions for turbulent flow friction factor: A review, assessment and approaches classification. Ain Shams Engineering Journal, 10(4), 241–254. Includes Vatankhah (2014) approximation used for initial guess in the Colebrook-White solver.
- [HYD-2] Mitosek M. (2001) — Mechanika płynów w inżynierii i ochronie środowiska. Polskie Wydawnictwo Naukowe PWN. Reynolds number, Darcy-Weisbach, minor losses, hydraulic diameter.
- [HYD-3] Barnard R.W., Pearce K., Schovanec L. (2001) — Inequalities for the Perimeter of an Ellipse. Texas Tech University. Jacobsen (1985) rational approximation for ellipse perimeter.


