Introducing Energy Flow X, an advanced web application for engineers!
PROJECT LOGO (Copyright pending) | URL's: |
---|---|
![]() |
⇒ 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.
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: |
---|---|
![]() |
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:
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.
- Tech & dependencies
- System design & architecture
- Current version
- Functionality
- 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 - Attribution and citation
- Feature request and bug reporting
- Acknowledgments
- Reference sources
EnergyFlow X is developed using the following technologies:
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
Status: pre-release
Version: 0.0.1-alpha
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,
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
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.
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.
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
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
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
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
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
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
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
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:
- As part of the request body in JSON requests (in the
unitOverrides
field) - 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.
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
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.
For easier API testing a SWAGGER UI has been provided, follow this URL: https://demo.energyflowx.com
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.
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.
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!
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!
- [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)