Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Surf heat balance arrays refactoring #8744

Merged
merged 40 commits into from
May 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0f089cf
hb arrays
xuanluo113 Apr 18, 2021
7d55810
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 Apr 21, 2021
cced5d3
unit test bug
xuanluo113 Apr 21, 2021
3ff0b21
more variables
xuanluo113 Apr 22, 2021
7fdca94
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 Apr 26, 2021
a0cab54
surface properties
xuanluo113 Apr 29, 2021
4155b06
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 Apr 29, 2021
15d6228
more vars
xuanluo113 May 1, 2021
191e31e
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 1, 2021
fb54ea7
more vars
xuanluo113 May 2, 2021
d3fe306
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 2, 2021
036ba68
data surface
xuanluo113 May 2, 2021
a65ace3
data hb
xuanluo113 May 3, 2021
bf6584a
merge
xuanluo113 May 6, 2021
24f0112
shading vars
xuanluo113 May 9, 2021
eaddaf2
merge
xuanluo113 May 9, 2021
cb8ccff
shadowing surface
xuanluo113 May 11, 2021
be5af2f
movable insul
xuanluo113 May 12, 2021
4b0d247
fix unit test
xuanluo113 May 13, 2021
a65105a
clang-format
xuanluo113 May 13, 2021
4d62254
reorder some heat balance arrays
xuanluo113 May 14, 2021
fd55ea4
more array initialization reordering; reduce duplicate condition chec…
xuanluo113 May 15, 2021
63474d7
clean up
xuanluo113 May 15, 2021
fcfbb32
fix clang format
xuanluo113 May 15, 2021
2f12d06
revert some fields
xuanluo113 May 19, 2021
a018b58
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 19, 2021
43c1fb6
complex window fix
xuanluo113 May 19, 2021
29c4808
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 19, 2021
fdd6bb7
clang
xuanluo113 May 19, 2021
235dc60
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 20, 2021
fb0cb3d
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 20, 2021
2624f19
remove index
xuanluo113 May 20, 2021
4b02fe6
Merge remote-tracking branch 'remotes/NRELEnergyPlus/develop' into su…
mjwitte May 21, 2021
5b0b904
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 21, 2021
14e9c20
fix eio diff
xuanluo113 May 22, 2021
1e1bcad
clang
xuanluo113 May 22, 2021
75008fe
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into sur…
xuanluo113 May 25, 2021
053ec95
shading para initialization
xuanluo113 May 26, 2021
14afd22
Merge branch 'surf-hb-struct' of https://github.com/energy-plus/Energ…
mjwitte May 28, 2021
fe0f6a7
Engrg ref equation ReflSolar equation cleanup
mjwitte May 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ \subsubsection{Iterative procedure}\label{iterative-procedure}

\subsubsection{Step 1}\label{step-1}

Subroutine \emph{HcUCSDDV} is quite straightforward. It loops through all the surfaces in each zone and decides whether the surface is located in the upper, mixed subzone or the lower, occupied subzone, or if the surface is in both subzones. If entirely in one subzone the subzone temperature is stored in the surface effective temperature variable \emph{TempEffBulkAir(SurfNum)} and h\(_{c}\) for the surface is calculated by a call to subroutine \emph{CalcDetailedHcInForDVModel}. This routine uses the ``detailed'' natural convection coefficient calculation that depends on surface tilt and \(\Delta {T^{1/3}}\). This calculation is appropriate for situations with low air velocity.
Subroutine \emph{HcUCSDDV} is quite straightforward. It loops through all the surfaces in each zone and decides whether the surface is located in the upper, mixed subzone or the lower, occupied subzone, or if the surface is in both subzones. If entirely in one subzone the subzone temperature is stored in the surface effective temperature variable \emph{SurfTempEffBulkAir(SurfNum)} and h\(_{c}\) for the surface is calculated by a call to subroutine \emph{CalcDetailedHcInForDVModel}. This routine uses the ``detailed'' natural convection coefficient calculation that depends on surface tilt and \(\Delta {T^{1/3}}\). This calculation is appropriate for situations with low air velocity.

For surfaces that bound 2 subzones, the subroutine calculates h\(_{c}\) for each subzone and then averages them, weighting by the amount of surface in each subzone.

Expand Down Expand Up @@ -857,7 +857,7 @@ \subsubsection{Iterative procedure}\label{iterative-procedure-1}

\subsubsection{Step 1}\label{step-1-1}

Subroutine \emph{HcUCSDUF} is quite straightforward. It loops through all the surfaces in each zone and decides whether the surface is located in the upper, mixed subzone or the lower, occupied subzone, or if the surface is in both subzones. If entirely in one subzone the subzone temperature is stored in the surface effective temperature variable \emph{TempEffBulkAir(SurfNum)} and h\(_{c}\) for the surface is calculated by a call to subroutine \emph{CalcDetailedHcInForDVModel}. This routine uses the ``detailed'' natural convection coefficient calculation that depends on surface tilt and \(\Delta {T^{1/3}}\) . This calculation is appropriate for situations with low air velocity.
Subroutine \emph{HcUCSDUF} is quite straightforward. It loops through all the surfaces in each zone and decides whether the surface is located in the upper, mixed subzone or the lower, occupied subzone, or if the surface is in both subzones. If entirely in one subzone the subzone temperature is stored in the surface effective temperature variable \emph{SurfTempEffBulkAir(SurfNum)} and h\(_{c}\) for the surface is calculated by a call to subroutine \emph{CalcDetailedHcInForDVModel}. This routine uses the ``detailed'' natural convection coefficient calculation that depends on surface tilt and \(\Delta {T^{1/3}}\) . This calculation is appropriate for situations with low air velocity.

For surfaces that bound 2 subzones, the subroutine calculates h\(_{c}\) for each subzone and then averages them, weighting by the amount of surface in each subzone.

Expand Down Expand Up @@ -1160,7 +1160,7 @@ \subsubsection{Iterative procedure}\label{iterative-procedure-2}

\subsubsection{Step 1}\label{step-1-2}

Subroutine \emph{HcUCSDUF} is quite straightforward. It loops through all the surfaces in each zone and decides whether the surface is located in the upper, mixed subzone or the lower, occupied subzone, or if the surface is in both subzones. If entirely in one subzone the subzone temperature is stored in the surface effective temperature variable \emph{TempEffBulkAir(SurfNum)} and h\(_{c}\) for the surface is calculated by a call to subroutine \emph{CalcDetailedHcInForDVModel}. This routine uses the ``detailed'' natural convection coefficient calculation that depends on surface tilt and \(\Delta {T^{1/3}}\) . This calculation is appropriate for situations with low air velocity.
Subroutine \emph{HcUCSDUF} is quite straightforward. It loops through all the surfaces in each zone and decides whether the surface is located in the upper, mixed subzone or the lower, occupied subzone, or if the surface is in both subzones. If entirely in one subzone the subzone temperature is stored in the surface effective temperature variable \emph{SurfTempEffBulkAir(SurfNum)} and h\(_{c}\) for the surface is calculated by a call to subroutine \emph{CalcDetailedHcInForDVModel}. This routine uses the ``detailed'' natural convection coefficient calculation that depends on surface tilt and \(\Delta {T^{1/3}}\) . This calculation is appropriate for situations with low air velocity.

For surfaces that bound 2 subzones, the subroutine calculates h\(_{c}\) for each subzone and then averages them, weighting by the amount of surface in each subzone.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,31 +59,35 @@ \subsection{Sky Solar Radiation Diffusely Reflected from Obstructions}\label{sky
The factor for reflection of sky radiation from obstructions onto a receiving surface is calculated in subroutine CalcSkySolDiffuseReflFactors. It is given by:

\begin{equation}
\begin{array}{l}{\rm{ReflFacSkySolObs(RecSurfNum)}} = \\\frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {Hi{t_{obs,i}}ViewFacSk{y_{obs,i}}DifShdgRatioIsoSk{y_{obs,i}}{\rho_{obs,i}}\cos {\alpha_i}/\pi } } \end{array}
\begin{array}{l}
{SurfReflFacSkySolObs(RecSurfNum)} = \\\frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {Hi{t_{obs,i}}ViewFacSk{y_{obs,i}}DifShdgRatioIsoSk{y_{obs,i}}{\rho_{obs,i}}\cos {\alpha_i}/\pi } }
\end{array}
\end{equation}

where

RecSurfNum is the receiving surface number,
\({RecSurfNum}\) is the receiving surface number,

\({N_{rec}}\) is the number of receiving points,

\({N_{ray}}\) is the number of rays,

``\emph{obs,i}'' denotes the obstruction hit by ray \emph{i},
\({obs,i}\) denotes the obstruction hit by ray \emph{i},

\emph{Hit\(_{obs,i}\)} = 1 if ray \emph{i} hits an obstruction, = 0 otherwise,
\({Hit\(_{obs,i}}\) = 1 if ray \emph{i} hits an obstruction, = 0 otherwise,

\emph{ViewFacSky\(_{obs,i}\)} = unobstructed sky view factor of the obstruction = \((1 + \cos til{t_{obs}})/2\) ,
\({ViewFacSky\(_{obs,i}}\) = unobstructed sky view factor of the obstruction = \((1 + \cos til{t_{obs}})/2\) ,

\emph{DifShdgRatioIsoSky\(_{obs,i}\)} = (obstructed sky irradiance on obstruction)/(unobstructed sky irradiance on obstruction)
\({DifShdgRatioIsoSky\(_{obs,i}}\) = (obstructed sky irradiance on obstruction)/(unobstructed sky irradiance on obstruction)

In this equation, the product \emph{ViewFacSky*DifShdgRatioIsoSky} is the sky irradiance at the hit point divided by the horizontal sky irradiance taking into account shadowing of sky diffuse radiation on the obstruction by other obstructions, and assuming that the radiance of the sky is uniform. Note that we ignore secondary reflections here and in the following sections. In the present case this means that the irradiance at the hit point due to reflection of sky radiation from the ground or from other obstructions is not considered.

The above reflection factor is used in the timestep calculation to find the irradiance on a receiving surface due to sky radiation reflected from obstructions:

\begin{equation}
QRadSWOutIncSkyDiffReflObs(RecSurfNum) = DifSolarRad * ReflFacSkySolObs(RecSurfNum) (W/m^{2})
\begin{array}{l}
{QRadSWOutIncSkyDiffReflObs(RecSurfNum)} = \\{DifSolarRad * SurfReflFacSkySolObs(RecSurfNum) (W/m^{2})}
\end{array}
\end{equation}

where \emph{DifSolarRad} is the horizontal sky irradiance on an unobstructed horizontal plane (W/m\(^{2}\)).
Expand All @@ -102,7 +106,7 @@ \subsection{Sky Solar Radiation Diffusely Reflected from the Ground}\label{sky-s

\begin{equation}
\begin{array}{l}
{\rm{ReflFacSkySolGnd(RecSurfNum)}} = \\\frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {\left[ {(Hi{t_{gnd,i}}d{\Omega_i}\cos {\alpha_i}/\pi )\sum\limits_{j(i)}^{{N_{ray}}} {Hi{t_{sky,j(i)}}\cos {\alpha_{j(i)}}d{\Omega_{j(i)}}/\pi } } \right]} }
{SurfReflFacSkySolGnd(RecSurfNum)} = \\\frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {\left[ {(Hi{t_{gnd,i}}d{\Omega_i}\cos {\alpha_i}/\pi )\sum\limits_{j(i)}^{{N_{ray}}} {Hi{t_{sky,j(i)}}\cos {\alpha_{j(i)}}d{\Omega_{j(i)}}/\pi } } \right]} }
\end{array}
\end{equation}

Expand All @@ -119,7 +123,9 @@ \subsection{Sky Solar Radiation Diffusely Reflected from the Ground}\label{sky-s
This factor is used in the timestep calculation to find the irradiance on a receiving surface due to sky radiation reflected from the ground:

\begin{equation}
QRadSWOutIncSkyDiffReflGnd(RecSurfNum) = DifSolarRad * {\rho_{gnd}} * ReflFacSkySolGnd(RecSurfNum)~ (W/m^{2})
\begin{array}{l}
{QRadSWOutIncSkyDiffReflGnd(RecSurfNum)} = \\{DifSolarRad * {\rho_{gnd}} * SurfReflFacSkySolGnd(RecSurfNum)~ (W/m^{2})}
\end{array}
\end{equation}

where \({\rho_{gnd}}\) is the solar reflectance of the ground, which is assumed to be uniform over the ground plane but may vary monthly (because of snow cover, for example).
Expand All @@ -134,7 +140,7 @@ \subsection{Beam Solar Radiation Diffusely Reflected from Obstructions}\label{be

{\scriptsize
\begin{equation}
{\rm{ReflFacBmToDiffSolObs(RecSurfNum,IHr)}} = \frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {Hi{t_{obs,i}}Hi{t_{obs,i,sun}}d{\Omega_i}\cos {\alpha_i}{\rho_{obs,i}}\cos {\alpha_{sun,obs,i}}} }
{SurfReflFacBmToDiffSolObs(RecSurfNum,IHr)} = \frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {Hi{t_{obs,i}}Hi{t_{obs,i,sun}}d{\Omega_i}\cos {\alpha_i}{\rho_{obs,i}}\cos {\alpha_{sun,obs,i}}} }
\end{equation}}

where
Expand All @@ -152,8 +158,8 @@ \subsection{Beam Solar Radiation Diffusely Reflected from Obstructions}\label{be
\begin{equation}
\begin{split}
QRadSWOutIncBmToDiffReflObs(RecSurfNum) = BeamSolarRad \\
* (WeightNow * ReflFacBmToDiffSolObs(RecSurfNum,HourOfDay) \\
+ WeightPreviousHour * ReflFacBmToDiffSolObs(RecSurfNum,PreviousHour))
* (WeightNow * SurfReflFacBmToDiffSolObs(RecSurfNum,HourOfDay) \\
+ WeightPreviousHour * SurfReflFacBmToDiffSolObs(RecSurfNum,PreviousHour))
\end{split}
\end{equation}

Expand All @@ -165,7 +171,7 @@ \subsection{Beam Solar Radiation Diffusely Reflected from the Ground}\label{beam

{\scriptsize
\begin{equation}
{\rm{ReflFacBmToDiffSolGnd(RecSurfNum,IHr)}} = \frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {Hi{t_{gnd,i}}Hi{t_{gnd,i,sun}}d{\Omega_i}\cos {\alpha_{gnd,i}}\cos {\alpha_{sun,gnd}}} }
{SurfReflFacBmToDiffSolGnd(RecSurfNum,IHr)} = \frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {\sum\limits_{i = 1}^{{N_{ray}}} {Hi{t_{gnd,i}}Hi{t_{gnd,i,sun}}d{\Omega_i}\cos {\alpha_{gnd,i}}\cos {\alpha_{sun,gnd}}} }
\end{equation}}

where
Expand All @@ -179,7 +185,11 @@ \subsection{Beam Solar Radiation Diffusely Reflected from the Ground}\label{beam
This factor is used in the timestep calculation to find the diffuse irradiance on a receiving surface due to beam solar diffusely reflected from the ground:

\begin{equation}
QRadSWOutIncBmToDiffReflGnd(RecSurfNum) = BeamSolarRad * {\rho_{gnd}} * (WeightNow * ReflFacBmToDiffSolGnd(RecSurfNum,HourOfDay) + WeightPreviousHour * ReflFacBmToDiffSolGnd(RecSurfNum,PreviousHour))
\begin{split}
QRadSWOutIncBmToDiffReflGnd(RecSurfNum) =
\\BeamSolarRad * {\rho_{gnd}} * (WeightNow * SurfReflFacBmToDiffSolGnd(RecSurfNum,HourOfDay)
\\+ WeightPreviousHour * SurfReflFacBmToDiffSolGnd(RecSurfNum,PreviousHour))
\end{split}
\end{equation}

\subsection{Beam Solar Radiation Specularly Reflected from Obstructions}\label{beam-solar-radiation-specularly-reflected-from-obstructions}
Expand Down Expand Up @@ -223,7 +233,10 @@ \subsection{Beam Solar Radiation Specularly Reflected from Obstructions}\label{b
The factor for specular reflection of beam solar from obstruction onto a receiving surface is calculated in subroutine CalcBeamSolSpecularReflFactors. It is given by:

\begin{equation}
{\rm{ReflFacBmToBmSolObs(RecSurfNum,IHr) }} = \sum\limits_{\scriptstyle \substack{specularly \, reflecting \, surfaces}} \left[ {\frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {{f_{C,glazed}}{\rho_{spec}}({\alpha_C})\cos {\alpha_D}} } \right]
\begin{split}
{{SurfReflFacBmToBmSolObs(RecSurfNum,IHr) } =
\\\sum\limits_{\scriptstyle \substack{specularly \, reflecting \, surfaces}} \left[ {\frac{1}{{{N_{rec}}}}\sum\limits_1^{{N_{rec}}} {{f_{C,glazed}}{\rho_{spec}}({\alpha_C})\cos {\alpha_D}} } \right]
\end{split}
\end{equation}

The program assumes that specular reflection from a surface is due to glazing. If the reflecting surface is a window belonging to the building itself (as in Figure~\ref{fig:solar-reflection-from-building-surfaces-onto}), then \({f_{C,glazed}}\) is the fraction of the window that is glazed (which is 1.0 unless the window has dividers).
Expand All @@ -243,5 +256,9 @@ \subsection{Beam Solar Radiation Specularly Reflected from Obstructions}\label{b
The above specular reflection factor is used in the timestep calculation to find the beam irradiance on a receiving surface due to beam-beam reflection from obstructions:

\begin{equation}
QRadSWOutIncBmToBmReflObsRecSurfNum) = BeamSolarRad * (WeightNow * ReflFacBmToBmSolObs(RecSurfNum,HourOfDay) + WeightPreviousHour * ReflFacBmToBmSolObs(RecSurfNum,PreviousHour))
\begin{split}
QRadSWOutIncBmToBmReflObsRecSurfNum) =
\\BeamSolarRad * (WeightNow * SurfReflFacBmToBmSolObs(RecSurfNum,HourOfDay)
\\+ WeightPreviousHour * SurfReflFacBmToBmSolObs(RecSurfNum,PreviousHour))
\end{split}
\end{equation}
16 changes: 8 additions & 8 deletions src/EnergyPlus/AirflowNetworkBalanceManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9180,12 +9180,12 @@ namespace AirflowNetworkBalanceManager {
ZN2 = state.dataAirflowNetwork->AirflowNetworkNodeData(M).EPlusZoneNum;
// Find a linkage from a zone to outdoors
if (ZN1 > 0 && ZN2 == 0) {
if (state.dataSurface->Surface(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum).HasLinkedOutAirNode) {
Tamb = state.dataSurface->Surface(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum).OutDryBulbTemp;
if (state.dataSurface->SurfHasLinkedOutAirNode(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum)) {
Tamb = state.dataSurface->SurfOutDryBulbTemp(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum);
CpAir = PsyCpAirFnW(Psychrometrics::PsyWFnTdbTwbPb(
state,
Tamb,
state.dataSurface->Surface(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum).OutWetBulbTemp,
state.dataSurface->SurfOutWetBulbTemp(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum),
state.dataEnvrn->OutBaroPress));
} else {
Tamb = Zone(ZN1).OutDryBulbTemp;
Expand Down Expand Up @@ -9265,12 +9265,12 @@ namespace AirflowNetworkBalanceManager {
}
}
if (ZN1 == 0 && ZN2 > 0) {
if (state.dataSurface->Surface(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum).HasLinkedOutAirNode) {
Tamb = state.dataSurface->Surface(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum).OutDryBulbTemp;
if (state.dataSurface->SurfHasLinkedOutAirNode(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum)) {
Tamb = state.dataSurface->SurfOutDryBulbTemp(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum);
CpAir = PsyCpAirFnW(Psychrometrics::PsyWFnTdbTwbPb(
state,
Tamb,
state.dataSurface->Surface(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum).OutWetBulbTemp,
state.dataSurface->SurfOutWetBulbTemp(state.dataAirflowNetwork->MultizoneSurfaceData(i).SurfNum),
state.dataEnvrn->OutBaroPress));
} else {
Tamb = Zone(ZN2).OutDryBulbTemp;
Expand Down Expand Up @@ -10875,7 +10875,7 @@ namespace AirflowNetworkBalanceManager {
// Venting based on inside-outside air temperature difference

if ((VentCtrlNum == VentControlType::Temp || VentCtrlNum == VentControlType::AdjTemp) && VentingAllowed) {
Tamb = state.dataSurface->Surface(SurfNum).OutDryBulbTemp;
Tamb = state.dataSurface->SurfOutDryBulbTemp(SurfNum);
// Check whether this surface is an interior wall or not. If Yes, use adjacent zone conditions
if (VentCtrlNum == VentControlType::AdjTemp && state.dataAirflowNetwork->MultizoneSurfaceData(i).IndVentControl) {
Tamb = state.dataAirflowNetwork->ANZT(
Expand Down Expand Up @@ -13220,7 +13220,7 @@ namespace AirflowNetworkBalanceManager {
Tcomfort = CurveValue(state, ComfortHighTempCurveNum, OutDryBulb);
}
ComfortBand = -0.0028 * (100 - MaxPPD) * (100 - MaxPPD) + 0.3419 * (100 - MaxPPD) - 6.6275;
Toperative = 0.5 * (state.dataHeatBalFanSys->MAT(ZoneNum) + state.dataHeatBal->MRT(ZoneNum));
Toperative = 0.5 * (state.dataHeatBalFanSys->MAT(ZoneNum) + state.dataHeatBal->ZoneMRT(ZoneNum));

if (Toperative > (Tcomfort + ComfortBand)) {
if (openingProbability(state, ZoneNum, TimeCloseDuration)) {
Expand Down
8 changes: 4 additions & 4 deletions src/EnergyPlus/ChilledCeilingPanelSimple.cc
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ void GetCoolingPanelInput(EnergyPlusData &state)
ThisCP.TotSurfToDistrib = MinFraction;
}
if (ThisCP.SurfacePtr(SurfNum) != 0) {
state.dataSurface->Surface(ThisCP.SurfacePtr(SurfNum)).IntConvSurfGetsRadiantHeat = true;
state.dataSurface->SurfIntConvSurfGetsRadiantHeat(ThisCP.SurfacePtr(SurfNum)) = true;
}

AllFracsSummed += ThisCP.FracDistribToSurf(SurfNum);
Expand Down Expand Up @@ -1313,7 +1313,7 @@ void CoolingPanelParams::CalcCoolingPanel(EnergyPlusData &state, int const Cooli
CoolingPanelOn = false;
}
// Calculate the "zone" temperature for determining the output of the cooling panel
Tzone = Xr * state.dataHeatBal->MRT(ZoneNum) + ((1.0 - Xr) * state.dataHeatBalFanSys->MAT(ZoneNum));
Tzone = Xr * state.dataHeatBal->ZoneMRT(ZoneNum) + ((1.0 - Xr) * state.dataHeatBalFanSys->MAT(ZoneNum));

// Logical controls: if the WaterInletTemperature is higher than Tzone, do not run the panel
if (waterInletTemp >= Tzone) CoolingPanelOn = false;
Expand Down Expand Up @@ -1545,9 +1545,9 @@ void CoolingPanelParams::SetCoolingPanelControlTemp(EnergyPlusData &state, Real6
if (SELECT_CASE_var == Control::MAT) {
ControlTemp = state.dataHeatBalFanSys->MAT(ZoneNum);
} else if (SELECT_CASE_var == Control::MRT) {
ControlTemp = state.dataHeatBal->MRT(ZoneNum);
ControlTemp = state.dataHeatBal->ZoneMRT(ZoneNum);
} else if (SELECT_CASE_var == Control::Operative) {
ControlTemp = 0.5 * (state.dataHeatBalFanSys->MAT(ZoneNum) + state.dataHeatBal->MRT(ZoneNum));
ControlTemp = 0.5 * (state.dataHeatBalFanSys->MAT(ZoneNum) + state.dataHeatBal->ZoneMRT(ZoneNum));
} else if (SELECT_CASE_var == Control::ODB) {
ControlTemp = state.dataHeatBal->Zone(ZoneNum).OutDryBulbTemp;
} else if (SELECT_CASE_var == Control::OWB) {
Expand Down
Loading