|
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.
|
Compressed air receiver tank sizing and usable capacity calculations. More...
Classes | |
| struct | BridgingInput |
| Input parameters for the Bridging Compressor Reaction Delay sizing method. More... | |
| struct | CompressorCycleInput |
| Input parameters for the Compressor Cycle sizing method. More... | |
| struct | CompressorCycleResult |
| Result of the Compressor Cycle sizing calculation. More... | |
| struct | DedicatedStorageInput |
| Input parameters for the Dedicated Storage sizing method. More... | |
| struct | GeneralInput |
| Input parameters for the General sizing method. More... | |
| struct | MeteredStorageInput |
| Input parameters for the Metered Storage sizing method. More... | |
| struct | MeteredStorageResult |
| Result of the Metered Storage sizing calculation. More... | |
| struct | SizeResult |
| Tank size result shared by the General, Dedicated Storage, and Bridging methods. More... | |
| struct | UsableCapacityInput |
| Input parameters for the usable air capacity calculation. More... | |
| struct | UsableCapacityResult |
| Result of the usable air capacity calculation. More... | |
Functions | |
| UsableCapacityResult | calculateUsableCapacity (const UsableCapacityInput &input) |
| Calculates the usable air capacity of a receiver tank. | |
| SizeResult | calculateGeneralSize (const GeneralInput &input) |
| Calculates receiver tank size using the General method. | |
| SizeResult | calculateDedicatedStorageSize (const DedicatedStorageInput &input) |
| Calculates receiver tank size using the Dedicated Storage method. | |
| MeteredStorageResult | calculateMeteredStorageSize (const MeteredStorageInput &input) |
| Calculates receiver tank size and refill time using the Metered Storage method. | |
| SizeResult | calculateBridgingSize (const BridgingInput &input) |
| Calculates receiver tank size using the Bridging Compressor Reaction Delay method. | |
| CompressorCycleResult | calculateCompressorCycleSize (const CompressorCycleInput &input) |
| Calculates receiver tank size from the compressor duty cycle and pressure band. | |
Variables | |
| constexpr double | kGallonsPerCubicFoot = 7.48 |
| U.S. customary conversion: gallons per cubic foot \([\unit{\gallon\per\cubicFoot}]\). | |
| constexpr double | kCubicFeetPerGallon = 0.133681 |
| U.S. customary conversion: cubic feet per gallon \([\unit{\cubicFoot\per\gallon}]\). | |
This namespace provides four sizing methods and one capacity method:
| SizeResult receiver_tank::calculateBridgingSize | ( | const BridgingInput & | input | ) |
Sizes a tank that must supply air for the time it takes the pressure signal to travel from the demand event back to the compressor room and for the compressor to respond. The transit time is: \(t_{transit} = d_{pipe} / v_{air}\) (seconds).
\begin{equation}\label{eq:receiver-tank-bridging-size} V_{tank} = \frac{d_{pipe}}{v_{air}} \cdot \frac{Q_{demand}}{60} \cdot \frac{P_{atm}}{\Delta P} \cdot k_{gal} \end{equation}
where:
| \(V_{tank}\) | Required receiver tank size \([\unit{ \gallon}]\) |
| \(d_{pipe}\) | Distance from demand event to compressor room \([\unit{ \foot}]\) |
| \(v_{air}\) | Speed of air in the distribution piping \([\unit{ \foot\per\second}]\) |
| \(Q_{demand}\) | Air demand at the event location \([\unit{ \cubicFoot\per\minute}]\) |
| \(60\) | Minutes-to-seconds conversion \([\unit{ \second\per\minute}]\) |
| \(P_{atm}\) | Atmospheric pressure \([\unit{ \psi}]\) |
| \(\Delta P\) | Allowable pressure drop \([\unit{ \psi}]\) |
| \(k_{gal}\) | Gallons per cubic foot (7.48) \([\unit{ \gallon\per\cubicFoot}]\) |
| [in] | input | BridgingInput |
| CompressorCycleResult receiver_tank::calculateCompressorCycleSize | ( | const CompressorCycleInput & | input | ) |
Sizes a receiver tank so that the compressor can run at its natural load/unload cycle without short-cycling. The effective net capacity is the fraction of the compressor's rated output actually consumed during a cycle, and the required storage volume is the amount of air that must be stored during the unloaded interval to keep system pressure within the operating band.
\begin{equation}\label{eq:receiver-tank-compressor-cycle-size} V_{required} = \frac{Q_{comp} \cdot t_{load} \cdot t_{unload} \cdot P_{atm}} {60 \cdot (t_{load} + t_{unload}) \cdot (P_{unload} - P_{load})} \cdot k_{gal} \end{equation}
where:
| \(V_{required}\) | Required receiver tank size \([\unit{ \gallon}]\) |
| \(Q_{comp}\) | Rated compressor capacity at full load \([\unit{ \cubicFoot\per\minute}]\) |
| \(t_{load}\) | Compressor loaded time per cycle \([\unit{ \minute}]\) |
| \(t_{unload}\) | Compressor unloaded time per cycle \([\unit{ \minute}]\) |
| \(P_{atm}\) | Atmospheric pressure \([\unit{ \psi}]\) |
| \(P_{unload}\) | Compressor unload pressure \([\unit{ \psi}]\) |
| \(P_{load}\) | Compressor full-load pressure \([\unit{ \psi}]\) |
| \(60\) | Seconds per minute conversion \([\unit{ \second\per\minute}]\) |
| \(k_{gal}\) | Gallons per cubic foot (7.48) \([\unit{ \gallon\per\cubicFoot}]\) |
| [in] | input | CompressorCycleInput |
| SizeResult receiver_tank::calculateDedicatedStorageSize | ( | const DedicatedStorageInput & | input | ) |
Sizes a tank that must deliver a sustained air flow for a defined duration, drawing down from an initial to a final operating pressure:
\begin{equation}\label{eq:receiver-tank-dedicated-storage-size} V_{tank} = \frac{k_{gal} \cdot t_{demand} \cdot Q_{flow} \cdot P_{atm}}{P_1 - P_2} \end{equation}
where:
| \(V_{tank}\) | Required receiver tank size \([\unit{ \gallon}]\) |
| \(k_{gal}\) | Gallons per cubic foot (7.48) \([\unit{ \gallon\per\cubicFoot}]\) |
| \(t_{demand}\) | Duration of the air demand event \([\unit{ \minute}]\) |
| \(Q_{flow}\) | Required air flow rate \([\unit{ \cubicFoot\per\minute}]\) |
| \(P_{atm}\) | Atmospheric pressure \([\unit{ \psi}]\) |
| \(P_1\) | Initial tank pressure \([\unit{ \psi}]\) |
| \(P_2\) | Final tank pressure \([\unit{ \psi}]\) |
| [in] | input | DedicatedStorageInput |
| SizeResult receiver_tank::calculateGeneralSize | ( | const GeneralInput & | input | ) |
Sizes a receiver tank to deliver a known air demand while limiting the pressure drop to the specified allowable value:
\begin{equation}\label{eq:receiver-tank-general-size} V_{tank} = Q_{demand} \cdot \frac{P_{atm}}{\Delta P} \cdot k_{gal} \end{equation}
where:
| \(V_{tank}\) | Required receiver tank size \([\unit{ \gallon}]\) |
| \(Q_{demand}\) | Air demand drawn from the tank \([\unit{ \cubicFoot}]\) |
| \(P_{atm}\) | Atmospheric pressure \([\unit{ \psi}]\) |
| \(\Delta P\) | Allowable pressure drop \([\unit{ \psi}]\) |
| \(k_{gal}\) | Gallons per cubic foot (7.48) \([\unit{ \gallon\per\cubicFoot}]\) |
| [in] | input | GeneralInput |
| MeteredStorageResult receiver_tank::calculateMeteredStorageSize | ( | const MeteredStorageInput & | input | ) |
The demand event draws air at \(Q_{flow}\) while the metering valve supplies air at the controlled rate \(Q_{metered}\). Only the net demand \((Q_{flow} - Q_{metered})\) depletes the stored volume.
Tank Size:
\begin{equation}\label{eq:receiver-tank-metered-storage-size} V_{tank} = \frac{k_{gal} \cdot t_{demand} \cdot (Q_{flow} - Q_{metered}) \cdot P_{atm}}{P_1 - P_2} \end{equation}
Refill Time:
\begin{equation}\label{eq:receiver-tank-metered-storage-refill} T_{refill} = \frac{60 \cdot V_{cf} \cdot (P_1 - P_2)}{Q_{metered} \cdot P_{atm}} \end{equation}
where \(V_{cf} = V_{tank} \cdot k_{cf}\) is the tank volume in cubic feet, and:
| \(V_{tank}\) | Required receiver tank size \([\unit{ \gallon}]\) |
| \(V_{cf}\) | Tank volume in cubic feet \([\unit{ \cubicFoot}]\) |
| \(k_{gal}\) | Gallons per cubic foot (7.48) \([\unit{ \gallon\per\cubicFoot}]\) |
| \(k_{cf}\) | Cubic feet per gallon (0.133681) \([\unit{ \cubicFoot\per\gallon}]\) |
| \(t_{demand}\) | Duration of the air demand event \([\unit{ \minute}]\) |
| \(Q_{flow}\) | Required air flow rate \([\unit{ \cubicFoot\per\minute}]\) |
| \(Q_{metered}\) | Metering valve flow rate \([\unit{ \cubicFoot\per\minute}]\) |
| \(P_{atm}\) | Atmospheric pressure \([\unit{ \psi}]\) |
| \(P_1\) | Initial tank pressure \([\unit{ \psi}]\) |
| \(P_2\) | Final tank pressure \([\unit{ \psi}]\) |
| \(T_{refill}\) | Tank refill time \([\unit{ \second}]\) |
| \(60\) | Seconds per minute conversion \([\unit{ \second\per\minute}]\) |
| [in] | input | MeteredStorageInput |
| UsableCapacityResult receiver_tank::calculateUsableCapacity | ( | const UsableCapacityInput & | input | ) |
Converts the tank volume to cubic feet and scales by the available pressure differential relative to atmospheric pressure:
\begin{equation}\label{eq:receiver-tank-usable-capacity} V_{usable} = \frac{V_{tank}}{k_{gal}} \cdot \frac{P_{in} - P_{out}}{P_{atm}} \end{equation}
where:
| \(V_{usable}\) | Usable air storage capacity \([\unit{ \scf}]\) |
| \(V_{tank}\) | Tank volume \([\unit{ \gallon}]\) |
| \(k_{gal}\) | Gallons per cubic foot (7.48) \([\unit{ \gallon\per\cubicFoot}]\) |
| \(P_{in}\) | Charging (inlet) pressure \([\unit{ \psi}]\) |
| \(P_{out}\) | Cut-out (outlet) pressure \([\unit{ \psi}]\) |
| \(P_{atm}\) | Atmospheric pressure (14.7 psia) \([\unit{ \psi}]\) |
| [in] | input | UsableCapacityInput |
|
inlineconstexpr |
Definition at line 43 of file receiver_tank.h.
|
inlineconstexpr |
Definition at line 40 of file receiver_tank.h.