|
MEASUR-Tools-Suite v1.0.11
The MEASUR Tools Suite is a collection of industrial efficiency calculations written in C++ and with bindings for compilation to WebAssembly.
|
This calculator estimates annual steam use, energy use, and associated cost for a set of steam reduction measures identified during an energy treasure hunt or steam efficiency assessment. It supports four measurement methods — flow meter, air mass flow, water mass flow, and offsheet (direct consumption) — and accumulates the results across all measures in a single pass.
The calculation follows these steps for each measure:
Relevant formulas and symbol definitions are documented below.
Enthalpy difference between steam at operating conditions and feedwater at atmospheric pressure.
The enthalpy of steam is determined from the specified pressure and thermodynamic variable using the IAPWS-IF97 steam properties model. The feedwater enthalpy is determined at atmospheric pressure (0.101325 MPaa) and the given feedwater temperature. The difference drives all subsequent energy calculations.
\begin{equation}\label{eq:steam-reduction-enthalpy} \Delta h = h_{steam}(P_{steam}, \theta_{steam}) - h_{feed}(P_{atm}, T_{feed})\end{equation}
| \(\Delta h\) | Enthalpy difference between steam and feedwater \([\unit{ \kJ\per\kg}]\) |
| \(h_{steam}\) | Specific enthalpy of steam at operating conditions \([\unit{ \kJ\per\kg}]\) |
| \(P_{steam}\) | Steam pressure \([\unit{ \mega\pascal}]\) |
| \(\theta_{steam}\) | Steam thermodynamic variable (temperature, enthalpy, entropy, or quality) \([\unit{ \unitless}]\) |
| \(h_{feed}\) | Specific enthalpy of feedwater at atmospheric pressure \([\unit{ \kJ\per\kg}]\) |
| \(P_{atm}\) | Atmospheric reference pressure (0.101325) \([\unit{ \mega\pascal}]\) |
| \(T_{feed}\) | Feedwater temperature \([\unit{ \K}]\) |
Annual steam use and energy use derived from a direct flow meter reading.
The flow meter method uses the measured flow rate together with annual operating hours, a unit conversion factor, and system efficiency to calculate annual steam use. Energy use is then derived from the steam use and the enthalpy difference, adjusted by boiler efficiency.
\begin{equation}\label{eq:steam-reduction-flow-meter-steam} \dot{m}_{steam} = \dot{V}_{meter} \cdot t_{op} \cdot \frac{k_{units}}{\eta_{sys}}\end{equation}
\begin{equation}\label{eq:steam-reduction-flow-meter-energy} E_{use} = \Delta h \cdot \dot{m}_{steam} \cdot \frac{1}{\eta_{boiler}}\end{equation}
| \(\dot{m}_{steam}\) | Annual steam use \([\unit{ \kg\per\year}]\) |
| \(\dot{V}_{meter}\) | Flow meter reading \([\unit{ \kg\per\year}]\) |
| \(t_{op}\) | Annual operating hours \([\unit{ \hour\per\year}]\) |
| \(k_{units}\) | Quantity multiplier (number of identical units) \([\unit{ \unitless}]\) |
| \(\eta_{sys}\) | System efficiency \([\unit{ \unitless}]\) |
| \(E_{use}\) | Annual energy use \([\unit{ \kJ\per\year}]\) |
| \(\Delta h\) | Enthalpy difference between steam and feedwater \([\unit{ \kJ\per\kg}]\) |
| \(\eta_{boiler}\) | Boiler efficiency \([\unit{ \unitless}]\) |
Annual energy use derived from air flow rate and temperature differential.
The air flow rate is determined from either nameplate data or field measurements. When using nameplate data, the flow rate is taken directly from the equipment nameplate. When using measured data, the flow rate is computed as the product of the duct cross-sectional area and the measured air velocity. The heat flow rate is then computed from the air flow rate and the temperature rise across the heat exchanger using an empirical air heat capacity coefficient. Annual energy use is scaled by operating hours, units, system efficiency, and boiler efficiency. The constant \(k_{air} = 0.072381\) \([\unit{\kJ\minute\per\cubic\meter\per\hour\per\K}]\) is derived from the standard air heat capacity \(1.08\) \([\unit{\btu\hour\per\scf\per\hour\per\degreeR}]\).
\begin{equation}\label{eq:steam-reduction-air-flow-measured} \dot{V}_{air} = v_{air} \cdot A_{duct}\end{equation}
\begin{equation}\label{eq:steam-reduction-air-heat-flow} \dot{Q}_{air} = k_{air} \cdot \dot{V}_{air} \cdot (T_{out} - T_{in})\end{equation}
\begin{equation}\label{eq:steam-reduction-air-energy} E_{use} = \frac{k_{units} \cdot \dot{Q}_{air} \cdot t_{op}}{\eta_{sys} \cdot \eta_{boiler}}\end{equation}
| \(\dot{V}_{air}\) | Air flow rate \([\unit{ \cubic\meter\per\minute}]\) |
| \(v_{air}\) | Measured air velocity in the duct \([\unit{ \m\per\minute}]\) |
| \(A_{duct}\) | Cross-sectional area of the duct \([\unit{ \squareMeter}]\) |
| \(\dot{Q}_{air}\) | Air heat flow rate \([\unit{ \kJ\per\hour}]\) |
| \(k_{air}\) | Air heat capacity coefficient (0.072381) \([\unit{ \kJ\minute\per\cubic\meter\per\hour\per\K}]\) |
| \(T_{out}\) | Outlet temperature \([\unit{ \degreeCelsius}]\) |
| \(T_{in}\) | Inlet temperature \([\unit{ \degreeCelsius}]\) |
| \(E_{use}\) | Annual energy use \([\unit{ \kJ\per\year}]\) |
| \(k_{units}\) | Quantity multiplier (number of identical units) \([\unit{ \unitless}]\) |
| \(t_{op}\) | Annual operating hours \([\unit{ \hour\per\year}]\) |
| \(\eta_{sys}\) | System efficiency \([\unit{ \unitless}]\) |
| \(\eta_{boiler}\) | Boiler efficiency \([\unit{ \unitless}]\) |
Annual energy use derived from nameplate water mass flow and temperature differential.
The heat flow rate is computed from the nameplate water flow rate and the temperature rise across the heat exchanger using an empirical water heat capacity coefficient. The constant \(k_{water} = 251045\) \([\unit{\kJ\per\cubic\meter\per\K\minute\per\hour}]\) is derived from \(8.34\ \text{lb/gal} \times 1\ \text{Btu/(lb·°F)} \times 60\ \text{min/hr}\).
\begin{equation}\label{eq:steam-reduction-water-heat-flow} \dot{Q}_{water} = k_{water} \cdot \dot{V}_{water} \cdot (T_{out} - T_{in})\end{equation}
\begin{equation}\label{eq:steam-reduction-water-energy} E_{use} = \frac{k_{units} \cdot \dot{Q}_{water} \cdot t_{op}}{\eta_{sys} \cdot \eta_{boiler}}\end{equation}
| \(\dot{Q}_{water}\) | Water heat flow rate \([\unit{ \kJ\per\hour}]\) |
| \(k_{water}\) | Water heat capacity coefficient (251045) \([\unit{ \kJ\per\cubic\meter\per\K\minute\per\hour}]\) |
| \(\dot{V}_{water}\) | Nameplate water flow rate \([\unit{ \cubic\meter\per\minute}]\) |
| \(T_{out}\) | Outlet temperature \([\unit{ \degreeCelsius}]\) |
| \(T_{in}\) | Inlet temperature \([\unit{ \degreeCelsius}]\) |
| \(E_{use}\) | Annual energy use \([\unit{ \kJ\per\year}]\) |
| \(k_{units}\) | Quantity multiplier (number of identical units) \([\unit{ \unitless}]\) |
| \(t_{op}\) | Annual operating hours \([\unit{ \hour\per\year}]\) |
| \(\eta_{sys}\) | System efficiency \([\unit{ \unitless}]\) |
| \(\eta_{boiler}\) | Boiler efficiency \([\unit{ \unitless}]\) |
Annual energy use supplied as a direct consumption value.
The offsheet method accepts a pre-calculated or independently determined annual energy consumption value. No flow-rate conversion is applied; the consumption figure is used directly as the annual energy use.
\begin{equation}\label{eq:steam-reduction-offsheet} E_{use} = C_{offsheet}\end{equation}
| \(E_{use}\) | Annual energy use \([\unit{ \kJ\per\year}]\) |
| \(C_{offsheet}\) | Direct total annual energy consumption \([\unit{ \kJ\per\year}]\) |
Annual steam use derived from annual energy use for the mass flow and offsheet methods.
For the air mass flow, water mass flow, and offsheet methods, steam use is back-calculated from the annual energy use using the enthalpy difference and boiler efficiency.
\begin{equation}\label{eq:steam-reduction-steam-use} \dot{m}_{steam} = \frac{E_{use}}{\Delta h} \cdot \eta_{boiler}\end{equation}
| \(\dot{m}_{steam}\) | Annual steam use \([\unit{ \kg\per\hour}]\) |
| \(E_{use}\) | Annual energy use \([\unit{ \kJ\per\year}]\) |
| \(\Delta h\) | Enthalpy difference between steam and feedwater \([\unit{ \kJ\per\kg}]\) |
| \(\eta_{boiler}\) | Boiler efficiency \([\unit{ \unitless}]\) |
Annual energy cost calculated from steam or energy use and the utility cost rate.
For steam utility, the cost is based on annual steam use. For natural gas or other utility types, the cost is based on annual energy use.
\begin{equation}\label{eq:steam-reduction-cost-steam} C_{energy} = \dot{m}_{steam} \cdot r_{utility} \quad \text{(steam utility)}\end{equation}
\begin{equation}\label{eq:steam-reduction-cost-energy} C_{energy} = E_{use} \cdot r_{utility} \quad \text{(natural gas or other utility)}\end{equation}
| \(C_{energy}\) | Annual energy cost \([\unit{ \dollar\per\year}]\) |
| \(\dot{m}_{steam}\) | Annual steam use \([\unit{ \kg\per\hour}]\) |
| \(E_{use}\) | Annual energy use \([\unit{ \kJ\per\year}]\) |
| \(r_{utility}\) | Utility cost rate (steam utility) \([\unit{ \dollar\per\kg}]\) |
| \(r_{utility}\) | Utility cost rate (natural gas or other utility) \([\unit{ \dollar\per\kJ}]\) |
Modules | |
| Enthalpy Difference Formula | |
| Enthalpy difference between steam at operating conditions and feedwater at atmospheric pressure. | |
| Flow Meter Method Formula | |
| Annual steam use and energy use derived from a direct flow meter reading. | |
| Air Mass Flow Method Formula | |
| Annual energy use derived from air flow rate and temperature differential. | |
| Water Mass Flow Method Formula | |
| Annual energy use derived from nameplate water mass flow and temperature differential. | |
| Offsheet Method Formula | |
| Annual energy use supplied as a direct consumption value. | |
| Steam Use from Energy Use Formula | |
| Annual steam use derived from annual energy use for the mass flow and offsheet methods. | |
| Energy Cost Formula | |
| Annual energy cost calculated from steam or energy use and the utility cost rate. | |
Files | |
| file | steam_reduction.h |
| Declares structs, enums, and functions for the Steam Reduction Calculator.Calculates annual steam use, energy use, and energy cost for steam reduction measures using multiple measurement methods. | |
Namespaces | |
| namespace | steam_reduction |
| Steam reduction calculations for treasure hunt measures. | |
Classes | |
| struct | steam_reduction::FlowMeterMethodData |
| Input data for the flow meter measurement method. More... | |
| struct | steam_reduction::MassFlowNameplateData |
| Input data for nameplate-based mass flow measurement. More... | |
| struct | steam_reduction::MassFlowMeasuredData |
| Input data for field-measured mass flow. More... | |
| struct | steam_reduction::MassFlowMethodData |
| Input data for the air or water mass flow measurement method. More... | |
| struct | steam_reduction::OffsheetMethodData |
| Input data for the offsheet (direct consumption) measurement method. More... | |
| struct | steam_reduction::SteamReductionInput |
| Input data for a single steam reduction measure. More... | |
| struct | steam_reduction::SteamReductionOutput |
| Output data for a steam reduction calculation. More... | |
Functions | |
| SteamReductionOutput | steam_reduction::steamReduction (const std::vector< SteamReductionInput > &input_vec) |
| Calculates total annual steam use, energy use, and energy cost for a collection of steam reduction measures. | |
| SteamReductionOutput | steam_reduction::flowMeterReduction (const FlowMeterMethodData &data, int hours_per_year, double system_efficiency, int units, double boiler_efficiency, double change_enthalpy) |
| Calculates steam use and energy use using the flow meter method. | |
| SteamReductionOutput | steam_reduction::airMassFlowReduction (const MassFlowMethodData &data, int hours_per_year, double system_efficiency, int units, double boiler_efficiency, double change_enthalpy) |
| Calculates steam use and energy use using the air mass flow method. | |
| SteamReductionOutput | steam_reduction::waterMassFlowReduction (const MassFlowMethodData &data, int hours_per_year, double system_efficiency, int units, double boiler_efficiency, double change_enthalpy) |
| Calculates steam use and energy use using the water mass flow method. | |
| SteamReductionOutput | steam_reduction::offsheetReduction (const OffsheetMethodData &data, double boiler_efficiency, double change_enthalpy) |
| Calculates steam use and energy use using the offsheet (direct consumption) method. | |
| double | steam_reduction::calculateChangeEnthalpy (double pressure, SteamProperties::ThermodynamicQuantity steam_variable_option, double steam_variable, double feed_water_temperature) |
| Calculates the enthalpy difference between steam at the given conditions and feedwater. | |
| SteamReductionOutput steam_reduction::airMassFlowReduction | ( | const MassFlowMethodData & | data, |
| int | hours_per_year, | ||
| double | system_efficiency, | ||
| int | units, | ||
| double | boiler_efficiency, | ||
| double | change_enthalpy | ||
| ) |
Derives the heat flow rate from measured or nameplate air flow and the temperature differential, then scales to annual energy use.
| [in] | data | MassFlowMethodData with air flow and temperature data. |
| [in] | hours_per_year | Annual operating hours \([\unit{\hour\per\year}]\). |
| [in] | system_efficiency | System efficiency @unitless. |
| [in] | units | Unit conversion factor @unitless. |
| [in] | boiler_efficiency | Boiler efficiency @unitless. |
| [in] | change_enthalpy | Enthalpy difference between steam and feedwater \([\unit{kJ\per\kg}]\). |
| double steam_reduction::calculateChangeEnthalpy | ( | double | pressure, |
| SteamProperties::ThermodynamicQuantity | steam_variable_option, | ||
| double | steam_variable, | ||
| double | feed_water_temperature | ||
| ) |
Computes steam enthalpy at the specified pressure and thermodynamic variable, and feedwater enthalpy at atmospheric pressure and the given feedwater temperature. Returns the difference.
| [in] | pressure | Steam pressure \([\unit{MPaa}]\). |
| [in] | steam_variable_option | Thermodynamic quantity type (temperature, enthalpy, entropy, or quality). |
| [in] | steam_variable | Steam thermodynamic variable value. |
| [in] | feed_water_temperature | Feedwater temperature \([\unit{K}]\). |
| SteamReductionOutput steam_reduction::flowMeterReduction | ( | const FlowMeterMethodData & | data, |
| int | hours_per_year, | ||
| double | system_efficiency, | ||
| int | units, | ||
| double | boiler_efficiency, | ||
| double | change_enthalpy | ||
| ) |
Uses the directly measured steam or water flow rate along with operating hours, units, system efficiency, and boiler efficiency to calculate annual steam use and energy use.
| [in] | data | FlowMeterMethodData with the flow rate. |
| [in] | hours_per_year | Annual operating hours \([\unit{\hour\per\year}]\). |
| [in] | system_efficiency | System efficiency @unitless. |
| [in] | units | Unit conversion factor @unitless. |
| [in] | boiler_efficiency | Boiler efficiency @unitless. |
| [in] | change_enthalpy | Enthalpy difference between steam and feedwater \([\unit{kJ\per\kg}]\). |
| SteamReductionOutput steam_reduction::offsheetReduction | ( | const OffsheetMethodData & | data, |
| double | boiler_efficiency, | ||
| double | change_enthalpy | ||
| ) |
Uses the supplied energy consumption value directly as annual energy use, then derives steam use from the enthalpy difference and boiler efficiency.
| [in] | data | OffsheetMethodData with the total annual energy consumption \([\unit{kJ\per\year}]\). |
| [in] | boiler_efficiency | Boiler efficiency @unitless. |
| [in] | change_enthalpy | Enthalpy difference between steam and feedwater \([\unit{kJ\per\kg}]\). |
| SteamReductionOutput steam_reduction::steamReduction | ( | const std::vector< SteamReductionInput > & | input_vec | ) |
Iterates over input_vec, dispatches each measure to the appropriate measurement method helper, and accumulates the results.
| [in] | input_vec | Vector of SteamReductionInput structs, one per measure. |
| SteamReductionOutput steam_reduction::waterMassFlowReduction | ( | const MassFlowMethodData & | data, |
| int | hours_per_year, | ||
| double | system_efficiency, | ||
| int | units, | ||
| double | boiler_efficiency, | ||
| double | change_enthalpy | ||
| ) |
Derives the heat flow rate from the nameplate water flow rate and the temperature differential, then scales to annual energy use.
| [in] | data | MassFlowMethodData with water flow and temperature data (nameplate). |
| [in] | hours_per_year | Annual operating hours \([\unit{\hour\per\year}]\). |
| [in] | system_efficiency | System efficiency @unitless. |
| [in] | units | Unit conversion factor @unitless. |
| [in] | boiler_efficiency | Boiler efficiency @unitless. |
| [in] | change_enthalpy | Enthalpy difference between steam and feedwater \([\unit{kJ\per\kg}]\). |