From 034c0f8af2fe91d471e43d5a95a122ce1a55c5d5 Mon Sep 17 00:00:00 2001 From: xuanluo113 Date: Tue, 23 Feb 2021 20:57:35 -0800 Subject: [PATCH 1/6] address comments --- .../occupant-thermal-comfort.tex | 12 +++++++- ...oup-internal-gains-people-lights-other.tex | 30 ++++++++++++++++++- src/EnergyPlus/ThermalComfort.cc | 24 +++++++-------- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex index 20db1fce248..55f42350fd6 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex @@ -1215,7 +1215,15 @@ \subsubsection{Description of the model and algorithm}\label{description-of-the- Where \(v_{r}\) is the relative air velocity caused by body movement, and \(v_{ankle}\) is the air speed at 0.1 m above the floor. -This equation is only applicable for \(v_{r} < 0.2 m/s\) . And the subject’s metabolic rate and clothing level should be kept below 1.3 met and 0.7 clo, respectively. Warnings would be thrown if these conditions are not met. +This equation is only applicable for \(v_{r} < 0.2 m/s\) . And the subject’s metabolic rate and clothing level should be kept below 1.3 met and 0.7 clo, respectively. PPD at ankle draft will be set to -1.0 if if these conditions are not met. + +It should be noted that the metrics only measures the predicted percentage dissatisfied on the sensation of draft. PPD_AD levels at various air speeds and thermal sensations are depicted in Figure~\ref{fig:ankle-draft-ppd} + +\begin{figure}[hbtp] +\centering +\includegraphics[width=0.9\textwidth, height=0.9\textheight, keepaspectratio=true]{media/ankle_draft.png} +\caption{Ankle Draft PPD Levels \protect \label{fig:ankle-draft-ppd}} +\end{figure} \subsection{References}\label{references-1-012} @@ -1256,3 +1264,5 @@ \subsection{References}\label{references-1-012} Int-Hout, D. 1990. ``Thermal Comfort Calculation / A Computer Model'', ASHRAE Trans., Vol.96, Pt 1. ISO. 1983. ``Determination of the PMV and PPD Indices and Specification of the Conditions for Thermal Comfort'', DIS 7730, Moderate Thermal Environment, 1983. + +Liu S., Schiavon S., Kabanshi A., Nazaroff W.W. 2017. \"Predicted percentage dissatisfied with ankle draft\", Indoor Air, Vol.27. diff --git a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex index 802fc3f7653..7a426e95a70 100644 --- a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex +++ b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex @@ -199,7 +199,35 @@ \subsubsection{Inputs}\label{inputs-025} \paragraph{Field: Thermal Comfort Model Type (up to 7 allowed)}\label{field-thermal-comfort-model-type-up-to-7-allowed} -The final one to five fields are optional and are intended to trigger various thermal comfort models within EnergyPlus. By entering the keywords Fanger, Pierce, KSU, AdaptiveASH55, AdaptiveCEN15251, CoolingEffectASH55, and AnkleDraftASH55, the user can request the Fanger, Pierce Two-Node, Kansas State UniversityTwo-Node, the adaptive comfort models of the ASHRAE Standard 55 and CEN Standard 15251, ASHRAE Standard 55 Elevated Air Cooling Effect model, and ASHRAE Standard 55 Ankle Draft Risk model results for this particular people statement. AdaptiveASH55 is only applicable when the running average outdoor air temperature for the past 7 days is between 10.0 and 33.5C. AdaptiveCEN15251 is only applicable when the running average outdoor air temperature for the past 30 days is between 10.0 and 30.0C. Note that since up to five models may be specified, the user may opt to have EnergyPlus calculate the thermal comfort for people identified with this people statement using all five models if desired. Note that the KSU model is computationally intensive and may noticeably increase the execution time of the simulation. For descriptions of the thermal comfort calculations, see the Engineering Reference document. +The final one to five fields are optional and are intended to trigger various thermal comfort models within EnergyPlus. By entering the keywords Fanger, Pierce, KSU, AdaptiveASH55, AdaptiveCEN15251, CoolingEffectASH55, and AnkleDraftASH55, the user can request the Fanger, Pierce Two-Node, Kansas State UniversityTwo-Node, the adaptive comfort models of the ASHRAE Standard 55 and CEN Standard 15251, ASHRAE Standard 55 Elevated Air Cooling Effect model, and ASHRAE Standard 55 Ankle Draft Risk model results for this particular people statement. Detailed descriptions and requirements of the seven models as listed below. + +\begin{description} + \item[Fanger] + Fanger’s Comfort model is applied to calculate related thermal comfort metrics. Fanger Model PMV, PPD, and Clothing Surface Temperature are calculated and reported as each time step. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, and Air Velocity Schedule Name. + + \item[Pierce] + The Pierce Two-Node model is applied to calculate related thermal comfort metrics. Pierce Model Effective Temperature PMV, Standard Effective Temperature PMV, Discomfort Index, Thermal Sensation Index, and Standard Effective Temperature are calculated and reported as each time step.Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, and Air Velocity Schedule Name. + + \item[KSU] + The KSU Two-Node Model is applied to calculate related thermal comfort metrics. KSU Model Thermal Sensation Vote is calculated and reported as each time step. Note that the KSU model is computationally intensive and may noticeably increase the execution time of the simulation. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, and Air Velocity Schedule Name. + + \item[AdaptiveASH55] + Adaptive Comfort Model Based on ASHRAE Standard 55-2010 is applied to calculate related thermal comfort metrics. ASHRAE 55 Adaptive Model 90\% Acceptability Status, 80\% Acceptability Status, Running Average Outdoor Air Temperature, and the Adaptive Model Temperature are calculated and reported as each time step. AdaptiveASH55 is only applicable when the running average outdoor air temperature for the past 7 days is between 10.0 and 33.5C. + + \item[AdaptiveCEN15251] + Adaptive Comfort Model Based on European Standard EN15251-2007 is applied to calculate related thermal comfort metrics. CEN 15251 Adaptive Model Category I/II/II Status, Running Average Outdoor Air Temperature, and the Adaptive Model Temperature are calculated and reported as each time step. AdaptiveCEN15251 is only applicable when the running average outdoor air temperature for the past 30 days is between 10.0 and 30.0C. + + \item[CoolingEffectASH55] + ASHRAE 55-2017 Elevated Air Speed Cooling Effect Model is applied to calculate related thermal comfort metrics. Elevated Air Speed Cooling Effect, Cooling Effect Adjusted PMV, and Cooling Effect Adjusted PPD are calculated and reported as each time step. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, and Air Velocity Schedule Name. + + \item[AnkleDraftASH55] + ASHRAE 55-2017 Ankle Draft Risk Model is applied to calculate related thermal comfort metrics. Zone Thermal Comfort ASHRAE 55 Ankle Draft PPD is calculated and reported as each time step. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, Air Velocity Schedule Name, and Ankle Level Air Velocity Schedule Name. + +\end{description} + + For descriptions of the thermal comfort calculations, see the Engineering Reference document. + + Note that since up to seven models may be specified, the user may opt to have EnergyPlus calculate the thermal comfort for people identified with this people statement using all seven models if desired. \paragraph{Field: Ankle Level Air Velocity Schedule Name}\label{field-ankle-level-air-velocity-schedule-name} diff --git a/src/EnergyPlus/ThermalComfort.cc b/src/EnergyPlus/ThermalComfort.cc index e956428625b..e593a82180e 100644 --- a/src/EnergyPlus/ThermalComfort.cc +++ b/src/EnergyPlus/ThermalComfort.cc @@ -795,23 +795,23 @@ namespace ThermalComfort { // Thermal const - Real64 const CloFac(0.25); // Clothing factor determined experimentally (var KCLO) - Real64 const BodyWeight(69.9); // (var BODYWEIGHT) - Real64 const SweatContConst(170.0); // Proportionality constant for sweat control; g/m2.hr (var CSW) - Real64 const DriCoeffVasodilation(120); // driving coefficient for vasodilation (var CDIL) - Real64 const DriCoeffVasoconstriction(0.5); // (var CSTR) - Real64 const MaxSkinBloodFlow(90.0); // Max. value of skin blood flow - Real64 const MinSkinBloodFlow(0.5); // Min. value of skin blood flow - Real64 const RegSweatMax(500); // Max. value of regulatory sweating; w/m2 + constexpr Real64 CloFac(0.25); // Clothing factor determined experimentally (var KCLO) + constexpr Real64 BodyWeight(69.9); // (var BODYWEIGHT) + constexpr Real64 SweatContConst(170.0); // Proportionality constant for sweat control; g/m2.hr (var CSW) + constexpr Real64 DriCoeffVasodilation(120); // driving coefficient for vasodilation (var CDIL) + constexpr Real64 DriCoeffVasoconstriction(0.5); // (var CSTR) + constexpr Real64 MaxSkinBloodFlow(90.0); // Max. value of skin blood flow + constexpr Real64 MinSkinBloodFlow(0.5); // Min. value of skin blood flow + constexpr Real64 RegSweatMax(500); // Max. value of regulatory sweating; w/m2 // Standard condition const // Definition of vascular control signals CoreTempSet, SkinTempSet, and AvgBodyTempSet are the setpoints for core, skin and // average body temperatures corresponding to physiol. neutrality SkinMassRatSet is the ratio of skin mass to total body mass (skin+core) // Typical values for CoreTempSet, SkinTempSet and SkinMassRatSet are 36.8, 33.7 and 0.10 SkinMassRat is the actual skin to total body mass ratio - Real64 const SkinTempSet(33.7); // (var TempSkinNeutral) - Real64 const CoreTempSet(36.8); // (var TempCoreNeutral) - Real64 const SkinBloodFlowSet(6.3); // (var SkinBloodFlowNeutral) - Real64 const SkinMassRatSet(0.1); // (var ALFA) + constexpr Real64 SkinTempSet(33.7); // (var TempSkinNeutral) + constexpr Real64 CoreTempSet(36.8); // (var TempCoreNeutral) + constexpr Real64 SkinBloodFlowSet(6.3); // (var SkinBloodFlowNeutral) + constexpr Real64 SkinMassRatSet(0.1); // (var ALFA) if (AirVel < 0.1) AirVel = 0.1; From c9f020ebf945f91c35cf5255f7bdf7c17e7a0e9d Mon Sep 17 00:00:00 2001 From: xuanluo113 Date: Wed, 24 Feb 2021 16:49:21 -0800 Subject: [PATCH 2/6] address comments part 2 --- .../media/ankle_draft.png | Bin 0 -> 66487 bytes src/EnergyPlus/InternalHeatGains.cc | 19 +++++---- src/EnergyPlus/ThermalComfort.cc | 39 +++++++++++++----- src/EnergyPlus/ThermalComfort.hh | 6 ++- 4 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 doc/engineering-reference/media/ankle_draft.png diff --git a/doc/engineering-reference/media/ankle_draft.png b/doc/engineering-reference/media/ankle_draft.png new file mode 100644 index 0000000000000000000000000000000000000000..9589f244d03c412d861da1c4057c183c8275ae23 GIT binary patch literal 66487 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�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 KvQ^UHp#KL~zZzHo literal 0 HcmV?d00001 diff --git a/src/EnergyPlus/InternalHeatGains.cc b/src/EnergyPlus/InternalHeatGains.cc index 1674acb1b22..a4a3606bb61 100644 --- a/src/EnergyPlus/InternalHeatGains.cc +++ b/src/EnergyPlus/InternalHeatGains.cc @@ -867,7 +867,8 @@ namespace InternalHeatGains { } else if (ModelWithAdditionalInputs) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", blank " + cAlphaFieldNames(9) + - " is required for this item."); + ". " + cAlphaFieldNames(9) + " is required when Thermal Comfort Model Type is one of " + "\"Fanger\", \"Pierce\", \"KSU\", \"CoolingEffectASH55\" or \"AnkleDraftASH55\"" ); ErrorsFound = true; } } @@ -881,7 +882,7 @@ namespace InternalHeatGains { if (People(Loop).ClothingPtr == 0 && ModelWithAdditionalInputs) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", invalid " + - cAlphaFieldNames(12) + " entered=" + AlphaName(12)); + cAlphaFieldNames(12) + " entered=\"" + AlphaName(12) + "\"."); ErrorsFound = true; } } else { // check min/max on schedule @@ -933,7 +934,7 @@ namespace InternalHeatGains { if (People(Loop).ClothingMethodPtr == 0) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", invalid " + - cAlphaFieldNames(11) + " entered=" + AlphaName(11)); + cAlphaFieldNames(11) + " entered=\"" + AlphaName(11) + "\"."); ErrorsFound = true; } } @@ -942,7 +943,7 @@ namespace InternalHeatGains { if (People(Loop).ClothingPtr == 0) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", invalid " + - cAlphaFieldNames(12) + " entered=" + AlphaName(12)); + cAlphaFieldNames(12) + " entered=\"" + AlphaName(12) + "\"."); ErrorsFound = true; } } @@ -963,7 +964,7 @@ namespace InternalHeatGains { if (People(Loop).AirVelocityPtr == 0) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", invalid " + - cAlphaFieldNames(13) + " entered=" + AlphaName(13)); + cAlphaFieldNames(13) + " entered=\"" + AlphaName(13) + "\"."); ErrorsFound = true; } } else { // check min/max on schedule @@ -995,7 +996,8 @@ namespace InternalHeatGains { } else if (ModelWithAdditionalInputs) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", blank " + cAlphaFieldNames(13) + - " is required for this item."); + ". " + cAlphaFieldNames(13) + " is required when Thermal Comfort Model Type is one of " + "\"Fanger\", \"Pierce\", \"KSU\", \"CoolingEffectASH55\" or \"AnkleDraftASH55\""); ErrorsFound = true; } } @@ -1006,14 +1008,15 @@ namespace InternalHeatGains { if (People(Loop).AnkleAirVelocityPtr == 0) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", invalid " + - cAlphaFieldNames(indexAnkleAirVelPtr) + " entered=" + AlphaName(indexAnkleAirVelPtr)); + cAlphaFieldNames(indexAnkleAirVelPtr) + " entered=\"" + AlphaName(indexAnkleAirVelPtr) + "\"."); ErrorsFound = true; } } } else if (People(Loop).AnkleDraftASH55) { if (Item1 == 1) { ShowSevereError(state, RoutineName + CurrentModuleObject + "=\"" + AlphaName(1) + "\", blank " + cAlphaFieldNames(indexAnkleAirVelPtr) + - " is required for this item."); + ". " + cAlphaFieldNames(indexAnkleAirVelPtr) + " is required when Thermal Comfort Model Type is one of " + "\"Fanger\", \"Pierce\", \"KSU\", \"CoolingEffectASH55\" or \"AnkleDraftASH55\""); ErrorsFound = true; } } diff --git a/src/EnergyPlus/ThermalComfort.cc b/src/EnergyPlus/ThermalComfort.cc index e593a82180e..ee9d5191ff1 100644 --- a/src/EnergyPlus/ThermalComfort.cc +++ b/src/EnergyPlus/ThermalComfort.cc @@ -1174,12 +1174,10 @@ namespace ThermalComfort { upperBound, ce_root_termination); CoolingEffect = (solverResult.first + solverResult.second) / 2; } catch (const std::exception &e) { + ShowRecurringWarningErrorAtEnd(state, "The cooling effect could not be solved for People=\"" + People(state.dataThermalComforts->PeopleNum).Name + "\"" + + "As a result, no cooling effect will be applied to adjust the PMV and PPD results.", + state.dataThermalComforts->CoolingEffectWarningInd); CoolingEffect = 0; - if (state.dataThermalComforts->FirstTimeCoolingEffectWarning) { - ShowWarningError(state, "The cooling effect could not be solved for People=\"" + People(state.dataThermalComforts->PeopleNum).Name + "\""); - ShowContinueError(state, "As a result, no cooling effect will be applied to adjust the PMV and PPD results."); - state.dataThermalComforts->FirstTimeCoolingEffectWarning = false; - } } if (CoolingEffect > 0) { @@ -1214,11 +1212,32 @@ namespace ThermalComfort { PPD_AD = (std::exp(-2.58 + 3.05 * AnkleAirVel - 1.06 * PMV) / (1 + std::exp(-2.58 + 3.05 * AnkleAirVel - 1.06 * PMV))) * 100.0; } else { - if (state.dataThermalComforts->FirstTimeAnkleDraftWarning) { - ShowWarningError(state, "Ankle draft PPD calculations are only applicable for relative air velocity is below 0.2 m/s,"); - ShowContinueError(state,"and the subject’s metabolic rate and clothing level should be kept below 1.3 met and 0.7 clo."); - ShowContinueError(state,"PPD at ankle draft will be set to -1.0 if if these conditions are not met."); - state.dataThermalComforts->FirstTimeAnkleDraftWarning = false; + if (RelAirVel >= 0.2) { + ShowRecurringWarningErrorAtEnd(state, "Relative air velocity is above 0.2 m/s in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", + state.dataThermalComforts->AnkleDraftAirVelWarningInd, + RelAirVel, + RelAirVel, + _, + "[m/s]", + "[m/s]"); + } + if (state.dataThermalComforts->ActMet >= 1.3) { + ShowRecurringWarningErrorAtEnd(state, "Metabolic rate is above 1.3 met in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", + state.dataThermalComforts->AnkleDraftActMetWarningInd, + state.dataThermalComforts->ActMet, + state.dataThermalComforts->ActMet, + _, + "[m/s]", + "[m/s]"); + } + if (state.dataThermalComforts->CloUnit >= 0.7) { + ShowRecurringWarningErrorAtEnd(state, "Clothing unit is above 0.7 in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", + state.dataThermalComforts->AnkleDraftCloUnitWarningInd, + state.dataThermalComforts->CloUnit, + state.dataThermalComforts->CloUnit, + _, + "[m/s]", + "[m/s]"); } } state.dataThermalComforts->ThermalComfortData(state.dataThermalComforts->PeopleNum).AnkleDraftPPDASH55 = PPD_AD; diff --git a/src/EnergyPlus/ThermalComfort.hh b/src/EnergyPlus/ThermalComfort.hh index d331cadea3f..e70965ad6f0 100644 --- a/src/EnergyPlus/ThermalComfort.hh +++ b/src/EnergyPlus/ThermalComfort.hh @@ -264,8 +264,10 @@ struct ThermalComfortsData : BaseGlobalStruct { bool FirstTimeFlag = true; // Flag set to make sure you get input once bool FirstTimeSurfaceWeightedFlag = true; // Flag set to make sure certain calcs related to surface weighted option are only done once - bool FirstTimeCoolingEffectWarning = true; // Flag set to make sure certain warnings related to cooling effect calcs are only done once - bool FirstTimeAnkleDraftWarning = true; // Flag set to make sure certain warnings related to ankle draft calcs are only done once + int CoolingEffectWarningInd = 0; // Counter for ankle draft invalid air velocity warnings. + int AnkleDraftAirVelWarningInd = 0; // Counter for ankle draft invalid air velocity warnings. + int AnkleDraftCloUnitWarningInd = 0; // Counter for ankle draft invalid clothing unit warnings. + int AnkleDraftActMetWarningInd = 0; // Counter for ankle draft invalid activity level warnings. // MODULE PARAMETER DEFINITIONS Real64 const TAbsConv = DataGlobalConstants::KelvinConv; // Converter for absolute temperature From d6b44720693af62acc0df9722820f671c839e8a9 Mon Sep 17 00:00:00 2001 From: xuanluo113 Date: Wed, 24 Feb 2021 18:01:35 -0800 Subject: [PATCH 3/6] more documents --- .../occupant-thermal-comfort.tex | 4 ++-- ...roup-internal-gains-people-lights-other.tex | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex index 55f42350fd6..f1ec22c2cc5 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex @@ -1165,11 +1165,11 @@ \subsubsection{Description of the model and algorithm}\label{description-of-the- \subsection{ASHRAE 55 Elevated Air Speed Cooling Effect Model}\label{elevated-air-speed-ce-model} -ASHRAE Standard 55-2017 Section 5.3 requires that the Elevated Air Speed Comfort Zone Method be used when average air speed Va is greater than 0.10 m/s. The method provides cooling credit for elevated air velocity in the space. The method can be used to evaluate passive cooling technologies such as natural ventilation, ceiling fan, and portable fan. +ASHRAE Standard 55-2017 Section 5.3 requires that the Elevated Air Speed Comfort Zone Method be used when average air speed \(V_{a}\) is greater than 0.10 m/s. The method provides cooling credit for elevated air velocity in the space. The method can be used to evaluate passive cooling technologies such as natural ventilation, ceiling fan, and portable fan. \subsubsection{Description of the model and algorithm}\label{description-of-the-model-and-algorithm-4} -The Pierce Two-Node Standard Effective Temperature (SET) model is used to account for the cooling effect of air speeds greater than the 0.10 m/s. Specifically, for a given set of environmental and personal variables, including an elevated average air speed, an average air temperature \(t_{a}\), and a mean radiant temperature \(t_{r}\), the SET is first calculated. Then the average air speed Va is replaced by still air (0.1 m/s), and the average air temperature and radiant temperature are adjusted according to the cooling effect (CE). The CE of the elevated air speed is the value that, when subtracted equally from both the average air temperature and the mean radiant temperature, yields the same SET under still air as in the first SET calculation under elevated air speed. +The Pierce Two-Node Standard Effective Temperature (SET) model is used to account for the cooling effect of air speeds greater than the 0.10 m/s. Specifically, for a given set of environmental and personal variables, including an elevated average air speed, an average air temperature \(t_{a}\), and a mean radiant temperature \(t_{r}\), the SET is first calculated. Then the average air speed \(V_{a}\) is replaced by still air (0.1 m/s), and the average air temperature and radiant temperature are adjusted according to the cooling effect (CE). The CE of the elevated air speed is the value that, when subtracted equally from both the average air temperature and the mean radiant temperature, yields the same SET under still air as in the first SET calculation under elevated air speed. The following is a formal description of this process. To define the CE, we assert that it satisfies the following: diff --git a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex index 7a426e95a70..4ad5c3c0d3f 100644 --- a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex +++ b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex @@ -221,7 +221,7 @@ \subsubsection{Inputs}\label{inputs-025} ASHRAE 55-2017 Elevated Air Speed Cooling Effect Model is applied to calculate related thermal comfort metrics. Elevated Air Speed Cooling Effect, Cooling Effect Adjusted PMV, and Cooling Effect Adjusted PPD are calculated and reported as each time step. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, and Air Velocity Schedule Name. \item[AnkleDraftASH55] - ASHRAE 55-2017 Ankle Draft Risk Model is applied to calculate related thermal comfort metrics. Zone Thermal Comfort ASHRAE 55 Ankle Draft PPD is calculated and reported as each time step. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, Air Velocity Schedule Name, and Ankle Level Air Velocity Schedule Name. + ASHRAE 55-2017 Ankle Draft Risk Model is applied to calculate related thermal comfort metrics. Zone Thermal Comfort ASHRAE 55 Ankle Draft PPD is calculated and reported as each time step. Apart from existing required fields in People object, extra fields required for this model include Surface Name/Angle Factor List Name, Work Efficiency Schedule Name, Clothing Insulation Schedule Name, Air Velocity Schedule Name, and Ankle Level Air Velocity Schedule Name. Ankle draft PPD calculations are only applicable for relative air velocity is below 0.2 m/s, and the subject’s metabolic rate and clothing level should be kept below 1.3 met and 0.7 clo. PPD at ankle draft will be set to -1.0 if if these conditions are not met. \end{description} @@ -588,6 +588,22 @@ \subsubsection{Outputs}\label{outputs-017} This field reports the ideal indoor operative temperature, or comfort temperature, as determined by the CEN-15251 adaptive comfort model. Category I, II, and II limits for indoor operative temperature are defined as no greater than 2, 3, and 4 degrees C from this value respectively. A value of -1 means not applicable (when running average outdoor temp is outside the range of 10.0 to 30.0C). +\paragraph{Zone Thermal Comfort ASHRAE 55 Elevated Air Speed Cooling Effect}\label{zone-thermal-comfort-ashrae55-elevated-air-speed-cooling-effect} + +This field is the calculated Cooling Effect of the elevated air speed in degree celsius. It is the value that, when subtracted equally from both the average air temperature and the mean radiant temperature, yields the same SET under still air as in the first SET calculation under elevated air speed. + +\paragraph{Zone Thermal Comfort ASHRAE 55 Elevated Air Speed Cooling Effect Adjusted PMV}\label{zone-thermal-comfort-ashrae55-elevated-air-speed-cooling-effect-adjusted-pmv} + +This field is the \"predicted mean vote\" (PMV) calculated using the Fanger PMV model, adjusted by the ASHRAE 55 Elevated Air Speed Cooling Effect. The Cooling Effect adjusted PMV for an environment with elevated average air speed is calculated using the adjusted average air temperature, the adjusted radiant temperature, and still air (0.1 m/s). + +\paragraph{Zone Thermal Comfort ASHRAE 55 Elevated Air Speed Cooling Effect Adjusted PPD}\label{zone-thermal-comfort-ashrae55-elevated-air-speed-cooling-effect-adjusted-ppd} + +This field is the \"ppredicted percentage of dissatisfied\" (PPD) calculated using the Fanger PMV-PPD model, adjusted by the ASHRAE 55 Elevated Air Speed Cooling Effect. The Cooling Effect adjusted PPD for an environment with elevated average air speed is calculated using the adjusted average air temperature, the adjusted radiant temperature, and still air (0.1 m/s). + +\paragraph{Zone Thermal Comfort ASHRAE 55 Ankle Draft PPD}\label{zone-thermal-comfort-ashrae55-ankle-draft-ppd} + +This field is the \"ppredicted percentage of dissatisfied\" (PPD) on draft at ankle level. It is used as the metric to evaluate the ankle draft risk as a function of PMV and air speed at the ankle level (0.1 m). + \subsubsection{Outputs}\label{outputs-1-014} The following output variables are all based on whether the humidity ratio and the operative temperature is within the region shown in ASHRAE Standard 55-2004 in Figure 5.2.1.1. For these outputs the operative temperature is simplified to be the average of the air temperature and the mean radiant temperature. For summer, the 0.5 Clo level is used and, for winter, the 1.0 Clo level is used. The graphs below are based on the following tables which extend the ASHRAE values to zero humidity ratio. From 24267ceea077305f6ed2b6e3c994c8590024f39d Mon Sep 17 00:00:00 2001 From: xuanluo113 Date: Wed, 24 Feb 2021 18:05:10 -0800 Subject: [PATCH 4/6] cmake --- doc/engineering-reference/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/engineering-reference/CMakeLists.txt b/doc/engineering-reference/CMakeLists.txt index e5f110b752b..082376d5be7 100644 --- a/doc/engineering-reference/CMakeLists.txt +++ b/doc/engineering-reference/CMakeLists.txt @@ -533,6 +533,7 @@ set(INCLUDED_IMAGES ${PROJECT_SOURCE_DIR}/engineering-reference/media/IdealLoadsSchematic.png ${PROJECT_SOURCE_DIR}/engineering-reference/media/humidex_chart.jpg ${PROJECT_SOURCE_DIR}/engineering-reference/media/heat_index_chart.png - ${PROJECT_SOURCE_DIR}/engineering-reference/media/heatemission.png) + ${PROJECT_SOURCE_DIR}/engineering-reference/media/heatemission.png + ${PROJECT_SOURCE_DIR}/engineering-reference/media/ankle_draft.png) create_doc_target("engineering-reference" "EngineeringReference") From c653eb7fa025ee8279cd911c8f5a407226a9055c Mon Sep 17 00:00:00 2001 From: xuanluo113 Date: Thu, 25 Feb 2021 10:58:03 -0800 Subject: [PATCH 5/6] fix a document --- .../occupant-thermal-comfort.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex index f1ec22c2cc5..2462cc536ec 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex @@ -1217,7 +1217,7 @@ \subsubsection{Description of the model and algorithm}\label{description-of-the- This equation is only applicable for \(v_{r} < 0.2 m/s\) . And the subject’s metabolic rate and clothing level should be kept below 1.3 met and 0.7 clo, respectively. PPD at ankle draft will be set to -1.0 if if these conditions are not met. -It should be noted that the metrics only measures the predicted percentage dissatisfied on the sensation of draft. PPD_AD levels at various air speeds and thermal sensations are depicted in Figure~\ref{fig:ankle-draft-ppd} +It should be noted that the metrics only measures the predicted percentage dissatisfied on the sensation of draft. \(PPD_{AD}\) levels at various air speeds and thermal sensations are depicted in Figure~\ref{fig:ankle-draft-ppd} \begin{figure}[hbtp] \centering From 55c3309885a8cfe32621581bfdbbac9023d4443d Mon Sep 17 00:00:00 2001 From: xuanluo113 Date: Mon, 1 Mar 2021 10:27:44 -0800 Subject: [PATCH 6/6] address more comments --- .../occupant-thermal-comfort.tex | 4 +- ...oup-internal-gains-people-lights-other.tex | 6 +-- src/EnergyPlus/ThermalComfort.cc | 47 +++++++++---------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex index 2462cc536ec..db458d7d4b4 100644 --- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex +++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-005/occupant-thermal-comfort.tex @@ -1165,11 +1165,11 @@ \subsubsection{Description of the model and algorithm}\label{description-of-the- \subsection{ASHRAE 55 Elevated Air Speed Cooling Effect Model}\label{elevated-air-speed-ce-model} -ASHRAE Standard 55-2017 Section 5.3 requires that the Elevated Air Speed Comfort Zone Method be used when average air speed \(V_{a}\) is greater than 0.10 m/s. The method provides cooling credit for elevated air velocity in the space. The method can be used to evaluate passive cooling technologies such as natural ventilation, ceiling fan, and portable fan. +ASHRAE Standard 55-2017 Section 5.3 requires that the Elevated Air Speed Comfort Zone Method be used when average air speed \(v_{a}\) is greater than 0.10 m/s. The method provides cooling credit for elevated air velocity in the space. The method can be used to evaluate passive cooling technologies such as natural ventilation, ceiling fan, and portable fan. \subsubsection{Description of the model and algorithm}\label{description-of-the-model-and-algorithm-4} -The Pierce Two-Node Standard Effective Temperature (SET) model is used to account for the cooling effect of air speeds greater than the 0.10 m/s. Specifically, for a given set of environmental and personal variables, including an elevated average air speed, an average air temperature \(t_{a}\), and a mean radiant temperature \(t_{r}\), the SET is first calculated. Then the average air speed \(V_{a}\) is replaced by still air (0.1 m/s), and the average air temperature and radiant temperature are adjusted according to the cooling effect (CE). The CE of the elevated air speed is the value that, when subtracted equally from both the average air temperature and the mean radiant temperature, yields the same SET under still air as in the first SET calculation under elevated air speed. +The Pierce Two-Node Standard Effective Temperature (SET) model is used to account for the cooling effect of air speeds greater than the 0.10 m/s. Specifically, for a given set of environmental and personal variables, including an elevated average air speed, an average air temperature \(t_{a}\), and a mean radiant temperature \(t_{r}\), the SET is first calculated. Then the average air speed \(v_{a}\) is replaced by still air (0.1 m/s), and the average air temperature and radiant temperature are adjusted according to the cooling effect (CE). The CE of the elevated air speed is the value that, when subtracted equally from both the average air temperature and the mean radiant temperature, yields the same SET under still air as in the first SET calculation under elevated air speed. The following is a formal description of this process. To define the CE, we assert that it satisfies the following: diff --git a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex index 4ad5c3c0d3f..bc8021db28d 100644 --- a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex +++ b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex @@ -594,15 +594,15 @@ \subsubsection{Outputs}\label{outputs-017} \paragraph{Zone Thermal Comfort ASHRAE 55 Elevated Air Speed Cooling Effect Adjusted PMV}\label{zone-thermal-comfort-ashrae55-elevated-air-speed-cooling-effect-adjusted-pmv} -This field is the \"predicted mean vote\" (PMV) calculated using the Fanger PMV model, adjusted by the ASHRAE 55 Elevated Air Speed Cooling Effect. The Cooling Effect adjusted PMV for an environment with elevated average air speed is calculated using the adjusted average air temperature, the adjusted radiant temperature, and still air (0.1 m/s). +This field is the ``predicted mean vote'' (PMV) calculated using the Fanger PMV model, adjusted by the ASHRAE 55 Elevated Air Speed Cooling Effect. The Cooling Effect adjusted PMV for an environment with elevated average air speed is calculated using the adjusted average air temperature, the adjusted radiant temperature, and still air (0.1 m/s). \paragraph{Zone Thermal Comfort ASHRAE 55 Elevated Air Speed Cooling Effect Adjusted PPD}\label{zone-thermal-comfort-ashrae55-elevated-air-speed-cooling-effect-adjusted-ppd} -This field is the \"ppredicted percentage of dissatisfied\" (PPD) calculated using the Fanger PMV-PPD model, adjusted by the ASHRAE 55 Elevated Air Speed Cooling Effect. The Cooling Effect adjusted PPD for an environment with elevated average air speed is calculated using the adjusted average air temperature, the adjusted radiant temperature, and still air (0.1 m/s). +This field is the ``predicted percentage of dissatisfied'' (PPD) calculated using the Fanger PMV-PPD model, adjusted by the ASHRAE 55 Elevated Air Speed Cooling Effect. The Cooling Effect adjusted PPD for an environment with elevated average air speed is calculated using the adjusted average air temperature, the adjusted radiant temperature, and still air (0.1 m/s). \paragraph{Zone Thermal Comfort ASHRAE 55 Ankle Draft PPD}\label{zone-thermal-comfort-ashrae55-ankle-draft-ppd} -This field is the \"ppredicted percentage of dissatisfied\" (PPD) on draft at ankle level. It is used as the metric to evaluate the ankle draft risk as a function of PMV and air speed at the ankle level (0.1 m). +This field is the ``ppredicted percentage of dissatisfied'' (PPD) on draft at ankle level. It is used as the metric to evaluate the ankle draft risk as a function of PMV and air speed at the ankle level (0.1 m). \subsubsection{Outputs}\label{outputs-1-014} diff --git a/src/EnergyPlus/ThermalComfort.cc b/src/EnergyPlus/ThermalComfort.cc index ee9d5191ff1..45e905ff552 100644 --- a/src/EnergyPlus/ThermalComfort.cc +++ b/src/EnergyPlus/ThermalComfort.cc @@ -1212,32 +1212,27 @@ namespace ThermalComfort { PPD_AD = (std::exp(-2.58 + 3.05 * AnkleAirVel - 1.06 * PMV) / (1 + std::exp(-2.58 + 3.05 * AnkleAirVel - 1.06 * PMV))) * 100.0; } else { - if (RelAirVel >= 0.2) { - ShowRecurringWarningErrorAtEnd(state, "Relative air velocity is above 0.2 m/s in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", - state.dataThermalComforts->AnkleDraftAirVelWarningInd, - RelAirVel, - RelAirVel, - _, - "[m/s]", - "[m/s]"); - } - if (state.dataThermalComforts->ActMet >= 1.3) { - ShowRecurringWarningErrorAtEnd(state, "Metabolic rate is above 1.3 met in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", - state.dataThermalComforts->AnkleDraftActMetWarningInd, - state.dataThermalComforts->ActMet, - state.dataThermalComforts->ActMet, - _, - "[m/s]", - "[m/s]"); - } - if (state.dataThermalComforts->CloUnit >= 0.7) { - ShowRecurringWarningErrorAtEnd(state, "Clothing unit is above 0.7 in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", - state.dataThermalComforts->AnkleDraftCloUnitWarningInd, - state.dataThermalComforts->CloUnit, - state.dataThermalComforts->CloUnit, - _, - "[m/s]", - "[m/s]"); + if (state.dataGlobal->DisplayExtraWarnings) { + if (RelAirVel >= 0.2) { + ShowRecurringWarningErrorAtEnd(state, + "Relative air velocity is above 0.2 m/s in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", + state.dataThermalComforts->AnkleDraftAirVelWarningInd, RelAirVel, + RelAirVel, _, "[m/s]", "[m/s]"); + } + if (state.dataThermalComforts->ActMet >= 1.3) { + ShowRecurringWarningErrorAtEnd(state, + "Metabolic rate is above 1.3 met in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", + state.dataThermalComforts->AnkleDraftActMetWarningInd, + state.dataThermalComforts->ActMet, state.dataThermalComforts->ActMet, + _, "[m/s]", "[m/s]"); + } + if (state.dataThermalComforts->CloUnit >= 0.7) { + ShowRecurringWarningErrorAtEnd(state, + "Clothing unit is above 0.7 in Ankle draft PPD calculations. PPD at ankle draft will be set to -1.0.", + state.dataThermalComforts->AnkleDraftCloUnitWarningInd, + state.dataThermalComforts->CloUnit, + state.dataThermalComforts->CloUnit, _, "[m/s]", "[m/s]"); + } } } state.dataThermalComforts->ThermalComfortData(state.dataThermalComforts->PeopleNum).AnkleDraftPPDASH55 = PPD_AD;