Skip to content

Commit

Permalink
Merge ec88e02 into e7ecb2d
Browse files Browse the repository at this point in the history
  • Loading branch information
yujiex authored Sep 26, 2024
2 parents e7ecb2d + ec88e02 commit efd2514
Show file tree
Hide file tree
Showing 15 changed files with 1,343 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,69 +66,17 @@ \subsubsection{Heat Index}\label{heat-index}
\end{tabular}
\end{table}

The computation of the heat index is a refinement of a result obtained by
Before version 24.2, the computation of the heat index is a refinement of a result obtained by
multiple regression analysis carried out by Lans P. Rothfusz and described in a
1990 National Weather Service (NWS) Technical Attachment (SR 90-23) [4-5]. The
calculation is based on degree Fahrenheit.
1990 National Weather Service (NWS) Technical Attachment (SR 90-23) [4-5].

The regression equation of Rothfusz is
\begin{equation} \label{eq:rm-1}
HI = c_1 + c_2T + c_3R + c_4TR + c_5T^2 + c_6R^2 + c_7T^2R + c_8TR^2 + c_9T^2R^2
\end{equation}

where

HI = heat index (expressed as an apparent temperature in degrees Fahrenheit),

T = ambient dry-bulb temperature (in degrees Fahrenheit),

R = relative humidity (percentage value between 0 and 100),

$c_1$ = -42.379,

$c_2$ = 2.04901523,

$c_3$ = 10.14333127,

$c_4$ = -0.22475541,

$c_5$ = -0.00683783,

$c_6$ = -0.05481717,

$c_7$ = 0.00122874,

$c_8$ = 0.00085282,

$c_9$ = -0.00000199.

If the RH is less than 13\% and the temperature is between 80 and \IP{112}{\fahrenheit}, then
the following adjustment is subtracted from HI:

\begin{equation} \label{eq:rm-2}
HI = (13 - R) / 4 * ((17 - |T - 95|) / 17)^{0.5}
\end{equation}

Otherwise, if the RH is greater than 85\% and the temperature is between 80 and
\IP{87}{\fahrenheit}, then the following adjustment is added to HI:

\begin{equation} \label{eq:rm-3}
HI = (R - 85) / 10 * (87 - T) / 5
\end{equation}

The Rothfusz regression is not appropriate when conditions of temperature and
humidity warrant a heat index value below about \IP{80}{\fahrenheit}. In those cases, a simpler
formula is applied to calculate values consistent with Steadman's results:

\begin{equation} \label{eq:rm-4}
HI = 0.5 * (T + 61.0 + (T - 68.0) * 1.2 + (R * 0.094))
\end{equation}

In practice, the simple formula is computed first based on the temperature and
humidity. If this heat index value is \IP{80}{\fahrenheit} or higher, the full regression
equation along with any adjustment as described above is applied. The Rothfusz
regression is not valid for extreme temperature and relative humidity conditions
beyond the range of data considered by Steadman.
Starting from version 24.2, the heat index calculation adopts the extended heat
index method developed by Lu \& Romps [17]. The previous heat index gives
unrealistic results for very hot and humid or very cold and dry conditions. The
extended index extends the domain of the heat index calculation to all
combinations of temperature and relative humidity and gives a more realistic heat
index for the extreme conditions. The implementation in EnergyPlus is based on
the released Python code by Lu and Romps [18].

The Heat Index Hours (accumulated hours for a space) and Heat Index
OccupantHours (accumulated hours for the sum of all occupants in a space) of
Expand Down Expand Up @@ -516,3 +464,11 @@ \subsection{References}

{[}16{]} ACGIH, Threshold Limit Values (TLVs) and Biological Exposure Indices
(BEIs), 2012. doi:10.1073/pnas.0703993104.

{[}17{]} Lu, Yi-Chuan, and David M. Romps. ``Extending the heat index''. Journal
of Applied Meteorology and Climatology 61, no. 10 (2022): 1367-1383.
doi:10.1073/pnas.0703993104.

{[}18{]} Lu, Yi-Chuan, and David M. Romps. ``Lu and Romps, Extending the heat index, JAMC, 2022'',
Physics of Climate, February 23, 2023.
https://romps.berkeley.edu/papers/pubs-2020-heatindex.html.
11 changes: 11 additions & 0 deletions idd/Energy+.idd.in
Original file line number Diff line number Diff line change
Expand Up @@ -977,6 +977,17 @@ HVACSystemRootFindingAlgorithm,
\type integer
\default 5

HeatIndexAlgorithm,
\memo Specify whether the simplified or the extended method should be used
\memo Simplified: based on regression analysis carried out by Lans P. Rothfusz
\memo Extended: Based on paper by Lu & Romps
\unique-object
A1 ; \field Algorithm
\type choice
\key Simplified
\key Extended
\default Simplified

\group Compliance Objects

Compliance:Building,
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,8 @@ set(SRC
EvaporativeFluidCoolers.hh
ExhaustAirSystemManager.cc
ExhaustAirSystemManager.hh
ExtendedHI.cc
ExtendedHI.hh
ExteriorEnergyUse.cc
ExteriorEnergyUse.hh
ExternalInterface.cc
Expand Down
14 changes: 14 additions & 0 deletions src/EnergyPlus/DataHeatBalance.hh
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,19 @@ namespace DataHeatBalance {
{
}
};

enum class HeatIndexMethod : int
{
Invalid = -1,
Simplified,
Extended,
Num
};
static constexpr std::array<std::string_view, static_cast<int>(HeatIndexMethod::Num)> HeatIndexMethodUC = {
"SIMPLIFIED",
"EXTENDED",
};

struct ZoneData : ZoneSpaceData
{
// Members
Expand Down Expand Up @@ -1847,6 +1860,7 @@ struct HeatBalanceData : BaseGlobalStruct
bool NoRegularMaterialsUsed = true;
bool DoLatentSizing = false; // true when latent sizing is performed during zone sizing
bool isAnyLatentLoad = false;
DataHeatBalance::HeatIndexMethod heatIndexMethod = DataHeatBalance::HeatIndexMethod::Simplified;

Array1D<Real64> ZoneListSNLoadHeatEnergy;
Array1D<Real64> ZoneListSNLoadCoolEnergy;
Expand Down
Loading

0 comments on commit efd2514

Please sign in to comment.