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

Addition of Standard Effective Temperature (SET) as an Output Variable #7431

Merged
merged 12 commits into from
Aug 31, 2019
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,19 @@ \subsubsection{Inputs}\label{inputs-025}
, !- Zone Floor Area per Person {m2/person}
0.3, !- Fraction Radiant
, !- Sensible Heat Fraction
ActSchd; !- Activity Level Schedule Name
ActSchd, !- Activity Level Schedule Name
3.82E-8, !- Carbon Dioxide Generation Rate {m3/s-W}
No, !- Enable ASHRAE 55 Comfort Warnings
surfaceweighted, !- Mean Radiant Temperature Calculation Type
Zn001:Wall001, !- Surface Name/Angle Factor List Name
Work Eff Sch, !- Work Efficiency Schedule Name
ClothingInsulationSchedule, !- Clothing Insulation Calculation Method
, !- Clothing Insulation Calculation Method Schedule Name
Clothing Sch, !- Clothing Insulation Schedule Name
Air Velo Sch, !- Air Velocity Schedule Name
FANGER, !- Thermal Comfort Model 1 Type
PIERCE, !- Thermal Comfort Model 2 Type
KSU; !- Thermal Comfort Model 3 Type
\end{lstlisting}

\subsubsection{Outputs}\label{outputs-017}
Expand Down Expand Up @@ -350,6 +362,8 @@ \subsubsection{Outputs}\label{outputs-017}
Zone,Average,Zone Thermal Comfort Pierce Model Discomfort Index {[]}
\item
Zone,Average,Zone Thermal Comfort Pierce Model Thermal Sensation Index {[]}
\item
Zone,Average,Zone Thermal Comfort Pierce Model Standard Effective Temperature {[C]}
\item
Zone,Average,Zone Thermal Comfort KSU Model Thermal Sensation Index {[]}
\item
Expand All @@ -372,6 +386,8 @@ \subsubsection{Outputs}\label{outputs-017}
Zone,Average,Zone Thermal Comfort CEN 15251 Adaptive Model Temperature {[}C{]}
\end{itemize}

It should be noted that if a user is trying to output the Standard Effective Temperature (SET) that the Pierce two-node model must be selected. This variable is calculated as part of the Pierce model and can be seen in the output by requesting Zone Thermal Comfort Pierce Model Standard Effective Temperature.

\paragraph{People Occupant Count {[]}}\label{people-occupant-count}

This field is the number of people for this PEOPLE object during the timestep in question.
Expand Down Expand Up @@ -486,6 +502,10 @@ \subsubsection{Outputs}\label{outputs-017}

This field is the ``thermal sensation index'' (PMV) calculated using the Pierce two-node thermal comfort model.

\paragraph{Zone Thermal Comfort Pierce Model Standard Effective Temperature {[C]}}\label{zone-thermal-comfort-pierce-model-standard-effective-temperature}

This field is the ``standard effective temperature'' (SET) calculated using the Pierce two-node thermal comfort model. Note that if a user wishes to report the Pierce Model SET that it must be done using the Pierce two-node model and the user must select "Pierce" as one of the Thermal Comfort model types as shown above in the input syntax for the People statement.

\paragraph{Zone Thermal Comfort KSU Model Thermal Sensation Vote {[]}}\label{zone-thermal-comfort-ksu-model-thermal-sensation-vote}

This field is the ``thermal sensation vote'' (TSV) calculated using the KSU two-node thermal comfort model.
Expand Down
9 changes: 8 additions & 1 deletion src/EnergyPlus/ThermalComfort.cc
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,12 @@ namespace ThermalComfort {
"Zone",
"State",
People(Loop).Name);
SetupOutputVariable("Zone Thermal Comfort Pierce Model Standard Effective Temperature",
OutputProcessor::Unit::C,
ThermalComfortData(Loop).PierceSET,
"Zone",
"State",
People(Loop).Name);
}

if (People(Loop).KSU) {
Expand Down Expand Up @@ -1071,7 +1077,7 @@ namespace ThermalComfort {

CloCond = 1.0 / (CloUnit * 0.155);

// INITIALIZE THE POLLOWING VARIABLES
// INITIALIZE THE FOLLOWING VARIABLES
if (AirVel < 0.137) AirVel = 0.137;

Hc = 8.6 * std::pow(AirVel, 0.53);
Expand Down Expand Up @@ -1367,6 +1373,7 @@ namespace ThermalComfort {

ThermalComfortData(PeopleNum).ThermalComfortMRT = RadTemp;
ThermalComfortData(PeopleNum).ThermalComfortOpTemp = (RadTemp + AirTemp) / 2.0;
ThermalComfortData(PeopleNum).PierceSET = SET;
}
}

Expand Down
11 changes: 6 additions & 5 deletions src/EnergyPlus/ThermalComfort.hh
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ namespace ThermalComfort {
Real64 PiercePMVSET;
Real64 PierceDISC;
Real64 PierceTSENS;
Real64 PierceSET;
Real64 KsuTSV;
Real64 ThermalComfortMRT;
Real64 ThermalComfortOpTemp;
Expand All @@ -200,11 +201,11 @@ namespace ThermalComfort {

// Default Constructor
ThermalComfortDataType()
: FangerPMV(0.0), FangerPPD(0.0), CloSurfTemp(0.0), PiercePMVET(0.0), PiercePMVSET(0.0), PierceDISC(0.0), PierceTSENS(0.0), KsuTSV(0.0),
ThermalComfortMRT(0.0), ThermalComfortOpTemp(0.0), ClothingValue(0.0), ThermalComfortAdaptiveASH5590(0),
ThermalComfortAdaptiveASH5580(0), ThermalComfortAdaptiveCEN15251CatI(0), ThermalComfortAdaptiveCEN15251CatII(0),
ThermalComfortAdaptiveCEN15251CatIII(0), TComfASH55(0.0), TComfCEN15251(0.0), ASHRAE55RunningMeanOutdoorTemp(0.0),
CEN15251RunningMeanOutdoorTemp(0.0)
: FangerPMV(0.0), FangerPPD(0.0), CloSurfTemp(0.0), PiercePMVET(0.0), PiercePMVSET(0.0), PierceDISC(0.0), PierceTSENS(0.0),
PierceSET(0.0), KsuTSV(0.0), ThermalComfortMRT(0.0), ThermalComfortOpTemp(0.0), ClothingValue(0.0),
ThermalComfortAdaptiveASH5590(0), ThermalComfortAdaptiveASH5580(0), ThermalComfortAdaptiveCEN15251CatI(0),
ThermalComfortAdaptiveCEN15251CatII(0), ThermalComfortAdaptiveCEN15251CatIII(0), TComfASH55(0.0), TComfCEN15251(0.0),
ASHRAE55RunningMeanOutdoorTemp(0.0), CEN15251RunningMeanOutdoorTemp(0.0)
{
}
};
Expand Down
2 changes: 2 additions & 0 deletions testfiles/TermReheatSurfTC.idf
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,8 @@

Output:Variable,*,Zone Thermal Comfort Pierce Model Thermal Sensation Index,timestep;

Output:Variable,*,Zone Thermal Comfort Pierce Model Standard Effective Temperature,timestep;

Output:Variable,*,Zone Thermal Comfort KSU Model Thermal Sensation Vote,timestep;

Output:Variable,*,HVAC System Solver Iteration Count,timestep;
Expand Down
1 change: 1 addition & 0 deletions testfiles/TermReheatSurfTC.rvi
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Zone Air System Sensible Cooling Energy
Zone Air System Sensible Heating Energy
Zone Thermal Comfort Fanger Model PMV
Zone Thermal Comfort Pierce Model Thermal Sensation Index
Zone Thermal Comfort Pierce Model Standard Effective Temperature
Zone Thermal Comfort KSU Model Thermal Sensation Vote
Zone Operative Temperature
Zone Mean Air Temperature
Expand Down
57 changes: 57 additions & 0 deletions tst/EnergyPlus/unit/ThermalComfort.unit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -948,3 +948,60 @@ TEST_F(EnergyPlusFixture, ThermalComfort_CalcIfSetPointMetWithCutoutTest)
EXPECT_EQ(TimeStepZone, ThermalComfortSetPoint(1).totalNotMetCoolingOccupied);

}

TEST_F(EnergyPlusFixture, ThermalComfort_CalcThermalComfortPierceSET)
{

// Set the data for the test
TotPeople = 1;
People.allocate(TotPeople);
ThermalComfortData.allocate(TotPeople);
NumOfZones = 1;
Zone.allocate(NumOfZones);
ZTAVComf.allocate(NumOfZones);
MRT.allocate(NumOfZones);
ZoneAirHumRatAvgComf.allocate(NumOfZones);
IsZoneDV.allocate(NumOfZones);
IsZoneUI.allocate(NumOfZones);
QHTRadSysToPerson.allocate(NumOfZones);
QCoolingPanelToPerson.allocate(NumOfZones);
QHWBaseboardToPerson.allocate(NumOfZones);
QSteamBaseboardToPerson.allocate(NumOfZones);
QElecBaseboardToPerson.allocate(NumOfZones);

People(1).ZonePtr = 1;
People(1).NumberOfPeoplePtr = -1;
People(1).NumberOfPeople = 5.0;
People(1).NomMinNumberPeople = 5.0;
People(1).NomMaxNumberPeople = 5.0;
Zone(People(1).ZonePtr).TotOccupants = People(1).NumberOfPeople;
People(1).FractionRadiant = 0.3;
People(1).FractionConvected = 1.0 - People(1).FractionRadiant;
People(1).UserSpecSensFrac = AutoCalculate;
People(1).CO2RateFactor = 3.82e-8;
People(1).ActivityLevelPtr = -1;
People(1).Show55Warning = true;
People(1).Pierce = true;
People(1).MRTCalcType = ZoneAveraged;
People(1).WorkEffPtr = 0;
People(1).ClothingType = 1;
People(1).ClothingPtr = -1;
People(1).AirVelocityPtr = 0;

ZTAVComf(1) = 25.0;
MRT(1) = 26.0;
ZoneAirHumRatAvgComf(1) = 0.00529; // 0.002 to 0.006
DataEnvironment::OutBaroPress = 101217.;
IsZoneDV(1) = IsZoneUI(1) = false;
QHTRadSysToPerson(1) = 0.0;
QCoolingPanelToPerson(1) = 0.0;
QHWBaseboardToPerson(1) = 0.0;
QSteamBaseboardToPerson(1) = 0.0;
QElecBaseboardToPerson(1) = 0.0;

CalcThermalComfortPierce();

EXPECT_NEAR(ThermalComfortData(1).PiercePMVSET, -3.350, 0.005);
EXPECT_NEAR(ThermalComfortData(1).PierceSET, 23.62, 0.01);

}