Skip to content

Engineering platform designed for HVAC professionals, offering practical tools to support MEP system design and analysis. It includes a variety of calculation tools such as psychrometric analysis, cooling with condensate removal, heating, air mixing, and more.

License

Notifications You must be signed in to change notification settings

pjazdzyk/energy-flow-x-demo

ENERGY FLOW X (EFX) - HVAC Engineer's Analysis Toolkit

Introducing Energy Flow X, an advanced web application for engineers!

PROJECT LOGO (Copyright pending) URL's:
logo-sns.png Go to EFX Website

Go to EFX Demo API

EnergyFlowX integrates the following of my HVAC engineering libraries:

  • HVAC | Engine - The physics of air with water vapor content including thermodynamic processes,
  • UNITILITY - Spring - The physical quantity and units of measure conversion handling library,
  • Brent Dekker Solver - The enhanced implementation of a famous Brent-Dekker numerical scheme for solving nested equations.

This service is dedicated to HVAC/MEP, mechanical engineers, and chemical and process engineers providing accurate calculations of air properties with humidity content (Psychrometrics) and thermodynamic processes within the typical parameters scope for HVAC industry applications.

EnergyFlowX is planned to be commercialized in the coming months, once the testing phase with end users is successfully completed.

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…

Fluid parameters are not assumed as constants (specific heat, or density as an example) as in many other available psychrometrics tools. Every temperature-dependent property is calculated based on equations available in standards (e.g., ASHRAE), scientific journals and papers, or formulas derived by myself. You can review the full list of reference sources at the end of this documentation.

WEBSITE AND API

Eager to see how the project works and help HVAC engineers? Visit the site below, register to create your own free account, and feel free to explore the site!

If you are a developer interested in creating your own application—check the API demo. I can provide you REST API as a service so you could focus on your application business layer instead of investing ~10 000 of hours for building backbone physics libraries as I did. API-As-Service is available only in individual pricing mode. Contact me directly for details!

CREATED BY (All rights reserved): DEVELOPER:
logo-sns.png Piotr Jazdzyk, MSc Eng
Read more about the author
Reach me out on LinkedIn

Do not forget to say hello!

Cooling process calculation showcase: logo-sns.png

Multiple air stream mixing process showcase: logo-sns.png

Humid air thermophysical properties calculation showcase: logo-sns.png

NO AI ZONE.
All calculations use fine crafted algorithms based on existing scientific formulas and equations, implemented from scratch all by myself. I love AI, but this is not a right project for using LLMs.


DOCUMENTATION

  1. Tech & dependencies
  2. System design & architecture
  3. Current version
  4. Functionality
  5. REST API
    5.1 Api versioning
    5.2 Physical quantity master data
    5.3 Units of measure conversion
    5.4 Properties of dry / humid air
    5.5 Heating process
    5.6 Cooling process
    5.7 Mixing process
    5.8 Multiple processes in sequence
    5.9 Unit Overrides
    5.10 Hydraulic Conduit
    5.11 Error response
    5.12 SwaggerUI
  6. Attribution and citation
  7. Feature request and bug reporting
  8. Acknowledgments
  9. Reference sources

1. TECH AND DEPENDENCIES

EnergyFlow X is developed using the following technologies:

Frontend:
image   image   image   image   image   image  

Backend:
image   image   image   image   image   image  

Infrastructure:
image   image   image   image   image  

Engineering libraries:
Unitility   Brent-Dekker-Solver   Hvac-Engine  

2. SYSTEM DESIGN

EnergyFlowX is designed as a small microservice deployed on an external server using docker swarm. Separation of Concerns is applied, and the following independent services have been developed:

  • user manager service - responsible for handling all user-related functions such as registration or account management,
  • business logic service - HVAC process and fluid properties computation and units of measure conversion and all other features,
  • reverse proxy server - Apache NGINX server instance, serving static frontend assets and acting as reverse proxy.

Backend service responsible for business logic was developed in hexagonal architecture. Why hexagonal? For practice and training, and because I like it. User manager was designed using classic multi-layer architecture. Both services are designed as modular with separated API and CORE Maven modules. API module is composed of port interfaces to be implemented by Rest Controllers in CORE infrastructure.

Frontend is developed using the latest version of VUE.JS and Quasar, using JavaScript as a main programming language. Plenty of custom-made components are designed to create ScientificInput acting as a placeholder for physical quantity value and unit with automatic validation and value conversion when different unit is selected by user.
Frontend is build to be super lightweight and fast. There is no single PNG or JPG image used on page. Only vector graphic is used in SVG format including the icons. Pages are focused to deliver content, to be user-friendly, and to use the available screen size as much as possible to fill it with relevant content without unnecessary distraction. After all this project is meant to be used by engineers in their daily routine.

Google Analytics is used for basic page usage statistics. Proper SEO tags have been defined to ensure search engine positioning.

Security has been guaranteed following the best industry practices:

  • RBAC (role-based access) provided to allow only a certain group of users to access specific content, leaving some content available for everyone,
  • RODO / GDPR best practices are followed, application gathers as little data as possible respecting user privacy,
  • HTTPS protocol in full/strict protocol used for all pages,
  • state-of-art encryption algorithms are used to protect sensitive data,
  • secrets are stored in an external cloud key-vault

3. CURRENT VERSION

Status: pre-release
Version: 0.0.1-alpha

4. FUNCTIONALITY

⇒ Available application capabilities:

Dry air properties:

  • relative humidity,
  • kinematic and dynamic viscosity,
  • thermal conductivity,
  • specific enthalpy,
  • specific heat,
  • density,
  • thermal diffusivity,
  • Prandtl number,

Moist air properties:

  • vapour saturation pressure,
  • dew point temperature, wet bulb temperature,
  • relative humidity,
  • humidity ratio and maximum humidity ratio,
  • kinematic and dynamic viscosity,
  • thermal conductivity,
  • specific enthalpy of humid air with water mist and ice mist components,
  • specific heat,
  • density,
  • thermal diffusivity,
  • Prandtl number,

Air heating:

  • heating process for input heating power,
  • heating process for target outlet air temperature,
  • heating process for target outlet air relative humidity,

Air cooling:

  • real cooling process with a condensate discharge process for input cooling power,
  • real cooling process with a condensate discharge process for target outlet temperature,
  • real cooling process with a condensate discharge process for target outlet relative humidity,

Air stream mixing:

  • simple mixing of two flows with humidity content,
  • mixing of multiple flows with humidity content,

⇒ Functionalities available in the backend but not yet provided in the frontend:

Sequential process computation procedure:

  • user defined collection of process definitions to be sequentially calculated using predecessor output as successor input, allowing to simulate any user custom HVAC process

Hydraulic Conduits:

  • multiple shapes: circular, rectangular, elliptical
  • flow velocity and Reynolds Number,
  • Linear pressure loss and Linear resistance
  • Colebrooke-White Friction Factor (numerical computation)
  • Linear mass density of a duct, based on selected construction materials and insulation layers

5. REST API

REST Api is dedicated for developers who would like to use the capabilities of this service for developing their own HVAC software systems. API DEMO version is available for free with limited functionality and heavy rate limiters applied: https://demo.energyflowx.com/. Demo is provided for testing only. If you would like to have access to unlimited API - contact me for a custom pricing offer.

5.1. Versioning

Versioning is not planned for simplicity and to avoid maintaining of multiple apis and versions at the same time. However, if you need it for any reason, please let me know.

5.2. Physical quantities master data

This endpoint provides information about all supported physical quantities and their corresponding units. It allows you to retrieve the full list of supported quantities and units, which can be useful for building dynamic interfaces or validating input data.

LP PATH MTHD PATH VARIABLE
1 /quantities GET None
2 /quantities/{quantity-type} GET quantity-type (path variable)

Example response for /quantities/temperature: Quantities_masterdata_response

5.3. Physical quantities conversion

This service enables the conversion of any supported physical quantity from its current unit to a specified target unit, provided the target unit belongs to the same type of quantity. You can retrieve the full list of supported physical quantities and their corresponding units from the /quantities (master data) REST service.

LP PATH MTHD QUERY PARAMS / REQUEST BODY
1 /quantities/convert/{quantity-type} GET quantity-type (path variable)
value
from-unit
target-unit
2 /quantities/convert POST request-body-example

Example response for multiple conversions: Conversion_response

5.4. Physical properties of humid air

Endpoints available for users are listed below. Parameters written in bold font are required, the rest are optional. If not specified - default values will be assumed:

  • pressure: "101325.0Pa"
  • relative-humidity: "0.0%"
  • humidity ratio: "0.0kg/kg"
  • imperial-units: "false"

Physical quantities must be specified as a String type with value and associated quantity unit, for example, "20.5C" as 20.5 degrees of Celsius. For the list of supported units, see the Unitility user guide.
Imperial units determine the unit system used in the response. For the input in query param or request objects, you can use any unit you want from the supported units pool (both imperial and SI).

LP PATH MTHD QUERY PARAMS
1 /properties/dry-air GET temperature
pressure
imperial-units
unit-overrides
2 /properties/humid-air GET temperature
pressure
humidity-ratio
relative-humidity
imperial-units
unit-overrides
3 /properties/humid-air/from-wet-bulb GET wet-bulb-temperature
pressure
relative-humidity
imperial-units
unit-overrides
4 /properties/humid-air/from-dew-point GET dew-point-temperature
pressure
relative-humidity
imperial-units
unit-overrides
5 /properties/humid-air/from-enthalpy GET specific-enthalpy
pressure
humidity-ratio
imperial-units
unit-overrides
6 /properties/humid-air/from-humidity GET humidity-ratio
relative-humidity
pressure
imperial-units
unit-overrides

Humid air response example: Humid_air_response_SI

5.5. Process of heating

The process of heating is available in three different modes: from input power, for target temperature, or for target relative humidity. More details on a heating process can be found in HVAC|Engine library user guide, section 3.1 Heating.

LP PATH MTHD REQUEST BODY EXAMPLE QUERY PARAMS
1 /processes/heating/target-input-power POST request-body-example imperial-units
2 /processes/heating/target-temperature POST request-body-example imperial-units
3 /processes/heating/target-relative-humidity POST request-body-example imperial-units

As previously explained, setting query param imperial-units to true will provide a calculation result in a predefined set of imperial units.
Heating response example: Heating_response_SI

5.6. Process of real cooling with condensate discharge

The process of cooling is available in three different modes: from input power, for target temperature, or for target relative humidity. More details on a heating process can be found in HVAC|Engine library user guide, section 3.2 Cooling.

LP PATH MTHD REQUEST BODY EXAMPLE QUERY PARAMS
1 /processes/cooling/target-input-power POST request-body-example imperial-units
2 /processes/cooling/target-temperature POST request-body-example imperial-units
3 /processes/cooling/target-relative-humidity POST request-body-example imperial-units

Cooling response example: Cooling_response_SI

5.7. Process of mixing

The process of mixing is available in two different modes: mixing of two humid air flows and mixing of multiple humid air flows, up to 20. More details on a heating process can be found in HVAC|Engine library user guide, section 3.3 Mixing.

LP PATH MTHD REQUEST BODY EXAMPLE QUERY PARAMS
1 /processes/mixing POST request-body-example imperial-units
2 /processes/mixing/multiple POST request-body-example imperial-units

Mixing response example: Mixing_response_SI

5.8. Sequential process computation

Sequential processing procedure allows specifying multiple connected processes to simulate real HVAC air handling units or other devices. User specifies inlet airflow and process definitions (up to 20). Output of each process is taken as input of another process next in line. Calculations are based on sequential processing engine and flow data connectivity model developed in HVAC|Engine library.

LP PATH MTHD REQUEST BODY EXAMPLE QUERY PARAMS
1 /procedures/sequential POST request-body-example imperial-units

Sequential procedure response example in SI units: Multiple_processes_response_SI

5.9. Unit Overrides

Unit Overrides allow you to specify in which unit a given quantity type should be provided in the response. This feature gives you flexibility to receive data in the units that are most convenient for your application or analysis.

Unit Overrides can be specified in two ways:

  1. As part of the request body in JSON requests (in the unitOverrides field)
  2. As query parameters for GET requests (using the unit-overrides parameter)

The unitOverrides object is a key-value map where:

  • The key is the quantity type (e.g., "pressure", "temperature", "volumetricFlow")
  • The value is the unit symbol you want to use (e.g., "kPa", "K", "m3/min")

Example of unit overrides in a request body:

{
  "unitOverrides": {
    "pressure": "kPa",
    "temperature": "K",
    "volumetricFlow": "m3/min"
  }
}

Example of unit overrides as query parameters:

?unit-overrides=pressure_kPa,temperature_K

You can retrieve the full list of supported physical quantities and their corresponding units from the /quantities (master data) REST service.

5.10. Hydraulic Conduit

The Hydraulic Conduit API allows you to calculate flow parameters for different conduit shapes including circular, rectangular, and elliptical. It provides detailed information about flow characteristics, pressure losses, and conduit properties.

LP PATH MTHD REQUEST BODY EXAMPLE QUERY PARAMS
1 /processes/conduit-flow POST request-body-example imperial-units

Conduit response example: Conduit_response_SI

5.11. Error response

In case of validation errors or domain exceptions response will result in HTTP code of 400 (Bad Request). InvalidResponse will be created and returned to user, with the following structure:

{
   "serviceName": "Energy Flow X",
   "cause": "UnitSystemParseException",
   "message": "Unsupported unit symbol: {xyz}. Target class: TemperatureUnits",
   "timestamp": "2024-02-10T14:39:11.8551038Z"
}

Exception stack trace should never be returned to the user. If this happens, please let me know as soon as possible.

5.12. Swagger Ui

For easier API testing a SWAGGER UI has been provided, follow this URL: https://demo.energyflowx.com

6. LICENSING, ATTRIBUTION, AND CITATION

Please be informed that any reference to this project must be appropriately cited to include the author's attribution. Additionally, it should be noted that while samples may have been shared publicly for educational purposes, the project as a whole is designated for commercial utilization. Unauthorized commercial usage is strictly prohibited. The author reserves all rights.

7. Feature request and bug reporting

I really appreciate your feedback and new ideas. This project was created by an engineer, for engineers. I want this site to be as helpful as possible in your daily tasks. Please report any bugs or feature requests on the GitHub Issues page.

Help me improve by reporting any bugs you encounter.

To ensure we can resolve issues quickly, please include the following information in your report:

  • Page or Functionality: Specify which page or feature you were using when the issue occurred.
  • Description: Provide a clear and detailed description of the bug.
  • Input Data: Mention the data or inputs used when the bug occurred.
  • Result and Expectation: Explain what happened and what you expected to happen.
  • App Version: Include the app version, which you can find at the bottom of the application.

Your feedback is the fuel that drives this project forward.
Every suggestion, idea, or bug report helps make this tool better for everyone—thank you for being a part of that process!

8. ACKNOWLEDGMENTS

I want to thank Mabas83, for everything you did for me.
I extend my heartfelt gratitude to the Silesian University of Technology for the knowledge, scientific guidance, and for shaping me into an engineer.
Special thanks for GreedyJ4ck for multiple discussion and valuable suggestions during frontend development. BIG THANKS!

9. REFERENCE SOURCES

  • [1] - ASHRAE FUNDAMENTALS 2002, CHAPTER 6 "Psychrometrics"
  • [2] - Buck, Arden L. "New Equations for Computing Vapour Pressure and Enhancement Factor". Journal of Applied Meteorology and Climatology (December 1981).
  • [3] - Buck Research Instruments L.L.C. "MODEL CR-1A HYGROMETER WITH AUTO FILL OPERATING MANUAL" (May 2012).
  • [4] - Morvay Z.K, Gvozdenac D.D. "Fundamentals for analysis and calculation of energy and environmental performance". Applied Industrial Energy And Environmental Management.
  • [5] - Lipska B. "Projektowanie Wentylacji i Klimatyzacji. Podstawy uzdatniania powietrza" Wydawnictwo Politechniki Śląskiej (Gliwice 2014).
  • [6] - https://www.engineeringtoolbox.com
  • [7] - Stull R. "Wet-Bulb Temperature from Relative Humidity and Air Temperature". Manuscript received 14 July 2011, in final form 28 August 2011
  • [8] - Tsilingiris P.T "Thermophysical and transport properties of humid air at temperature range between 0 and 100oC". Elsevier, Science Direct (September 2007)
  • [9] - E.W. Lemmon, R.T. Jacobsen, S.G. Penoncello, D. Friend. Thermodynamic Properties of Air and Mixtures of Nitrogen, Argon, and Oxygen from 60 to 2000 K at Pressures to 2000 MPa. J. Phys. Chem. Ref. Data, Vol. 29, No. 3, (2000)
  • [11] - F.E. Jones, G.L. Harris. ITS-90 Density of water formulation for volumetric standards' calibration. Journal of Research of the National Institute of Standards and Technology (1992)
  • [12] - Water specific heat tables: https://www.engineeringtoolbox.com/specific-heat-capacity-water-d_660.html
  • [13] - Mitosek M. Mechanika płynów w inżynierii i ochronie środowiska. Polskie Wydawnictwo Naukowe PWN (2001r).
  • [14] - Lotfi Z., Jean Loup R., Bachir A. Explicit solutions for a turbulent flow friction factor: A review, assessment, and approaches classification. Ain Shams Engineering Journal (2019r)
  • [15] - Brent-Dekker Iterative Solver - Modified Algorithm proposed by Zhengqiu Zhang / International Journal of Experimental Algorithms (IJEA), Volume (2) : Issue (1) : 2011
  • [16] - F.E. Jones, G.L. Harris. ITS-90 Density of water formulation for volumetric standards' calibration. Journal of Research of the National Institute of Standards and Technology (1992)
  • [17] - Water specific heat tables: https://www.engineeringtoolbox.com/specific-heat-capacity-water-d_660.html
  • [18] - Antoine Equation Coefficient for pure substances: https://myengineeringtools.com/Data_Diagrams/Antoine_Law_Coefficients.html
  • [19] - M. L. Huber,a… R. A. Perkins, A. Laesecke, and D. G. Friend. J. V. Sengers M. J. Assael and I. N. Metaxa E. Vogel R. Mareš K. Miyagawa. New International Formulation for the Viscosity of H2O. Journal of Research of the National Institute of Standards and Technology (1992)

About

Engineering platform designed for HVAC professionals, offering practical tools to support MEP system design and analysis. It includes a variety of calculation tools such as psychrometric analysis, cooling with condensate removal, heating, air mixing, and more.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks