From 8f0dd5a6205c5c493222420075a144774663c818 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 17 Jul 2019 16:24:25 +0200 Subject: [PATCH] WIP on #7342 --- src/EnergyPlus/DataSizing.hh | 2 +- src/EnergyPlus/OutputReportPredefined.cc | 3 ++ src/EnergyPlus/OutputReportPredefined.hh | 1 + src/EnergyPlus/ReportCoilSelection.cc | 46 +++++++++++++++++------- src/EnergyPlus/ReportCoilSelection.hh | 3 ++ 5 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/EnergyPlus/DataSizing.hh b/src/EnergyPlus/DataSizing.hh index b0e19f855d1..b9fe199ba6d 100644 --- a/src/EnergyPlus/DataSizing.hh +++ b/src/EnergyPlus/DataSizing.hh @@ -92,7 +92,7 @@ namespace DataSizing { extern int const CondenserLoop; extern int const SteamLoop; - // paramters for sizing + // parameters for sizing extern int const NonCoincident; extern int const Coincident; diff --git a/src/EnergyPlus/OutputReportPredefined.cc b/src/EnergyPlus/OutputReportPredefined.cc index d6eb2f8ac6b..621521e1406 100644 --- a/src/EnergyPlus/OutputReportPredefined.cc +++ b/src/EnergyPlus/OutputReportPredefined.cc @@ -376,6 +376,7 @@ namespace OutputReportPredefined { int pdchCoilDateTimeTotIdealPeak; int pdchCoilDDnameAirFlowIdealPeak; int pdchCoilDateTimeAirFlowIdealPeak; + int pdchCoilPeakLoadTypeToSizeOn; int pdchCoilTotalCapIdealPeak; int pdchCoilSensCapIdealPeak; int pdchCoilAirMassFlowIdealPeak; @@ -1158,6 +1159,7 @@ namespace OutputReportPredefined { pdchCoilDateTimeTotIdealPeak = 0; pdchCoilDDnameAirFlowIdealPeak = 0; pdchCoilDateTimeAirFlowIdealPeak = 0; + pdchCoilPeakLoadTypeToSizeOn = 0; pdchCoilTotalCapIdealPeak = 0; pdchCoilSensCapIdealPeak = 0; pdchCoilAirMassFlowIdealPeak = 0; @@ -2072,6 +2074,7 @@ namespace OutputReportPredefined { pdchCoilDateTimeTotIdealPeak = newPreDefColumn(pdstCoilSummaryCoilSelection, "Date/Time at Total Ideal Loads Peak"); pdchCoilDDnameAirFlowIdealPeak = newPreDefColumn(pdstCoilSummaryCoilSelection, "Design Day Name at Air Flow Ideal Loads Peak"); pdchCoilDateTimeAirFlowIdealPeak = newPreDefColumn(pdstCoilSummaryCoilSelection, "Date/Time at Air Flow Ideal Loads Peak"); + pdchCoilPeakLoadTypeToSizeOn = newPreDefColumn(pdstCoilSummaryCoilSelection, "Peak Load Type to Size On"); pdchCoilTotalCapIdealPeak = newPreDefColumn(pdstCoilSummaryCoilSelection, "Coil Total Capacity at Ideal Loads Peak [W]"); pdchCoilSensCapIdealPeak = newPreDefColumn(pdstCoilSummaryCoilSelection, "Coil Sensible Capacity at Ideal Loads Peak [W]"); diff --git a/src/EnergyPlus/OutputReportPredefined.hh b/src/EnergyPlus/OutputReportPredefined.hh index a410abaf8d8..25a19b25336 100644 --- a/src/EnergyPlus/OutputReportPredefined.hh +++ b/src/EnergyPlus/OutputReportPredefined.hh @@ -368,6 +368,7 @@ namespace OutputReportPredefined { extern int pdchCoilDateTimeTotIdealPeak; extern int pdchCoilDDnameAirFlowIdealPeak; extern int pdchCoilDateTimeAirFlowIdealPeak; + extern int pdchCoilPeakLoadTypeToSizeOn; extern int pdchCoilTotalCapIdealPeak; extern int pdchCoilSensCapIdealPeak; extern int pdchCoilOffRatingCapacityModifierIdealPeak; diff --git a/src/EnergyPlus/ReportCoilSelection.cc b/src/EnergyPlus/ReportCoilSelection.cc index de3d4259362..9a430c8604a 100644 --- a/src/EnergyPlus/ReportCoilSelection.cc +++ b/src/EnergyPlus/ReportCoilSelection.cc @@ -99,19 +99,19 @@ CoilSelectionData::CoilSelectionData( // constructor std::string const &coilName) : isCooling(false), isHeating(false), coilNum(-999), airloopNum(-999), oaControllerNum(-999), zoneEqNum(-999), oASysNum(-999), zoneHVACTypeNum(0), zoneHVACIndex(0), typeof_Coil(-999), coilSizingMethodConcurrence(-999), coilSizingMethodCapacity(-999), coilSizingMethodAirFlow(-999), - capIsAutosized(false), volFlowIsAutosized(false), coilWaterFlowUser(-999.0), oaPretreated(false), isSupplementalHeater(false), - coilTotCapFinal(-999.0), coilSensCapFinal(-999.0), coilRefAirVolFlowFinal(-999.0), coilRefWaterVolFlowFinal(-999.0), coilTotCapAtPeak(-999.0), - coilSensCapAtPeak(-999.0), coilDesMassFlow(-999.0), coilDesVolFlow(-999.0), coilDesEntTemp(-999.0), coilDesEntWetBulb(-999.0), - coilDesEntHumRat(-999.0), coilDesEntEnth(-999.0), coilDesLvgTemp(-999.0), coilDesLvgWetBulb(-999.0), coilDesLvgHumRat(-999.0), - coilDesLvgEnth(-999.0), coilDesWaterMassFlow(-999.0), coilDesWaterEntTemp(-999.0), coilDesWaterLvgTemp(-999.0), coilDesWaterTempDiff(-999.0), - pltSizNum(-999), waterLoopNum(-999), oaPeakTemp(-999.00), oaPeakHumRat(-999.0), oaPeakWetBulb(-999.0), oaPeakVolFlow(-999.0), - oaPeakVolFrac(-999.0), oaDoaTemp(-999.0), oaDoaHumRat(-999.0), raPeakTemp(-999.0), raPeakHumRat(-999.0), rmPeakTemp(-999.0), - rmPeakHumRat(-999.0), rmPeakRelHum(-999.0), rmSensibleAtPeak(-999.0), rmLatentAtPeak(0.0), coilIdealSizCapOverSimPeakCap(-999.0), - coilIdealSizCapUnderSimPeakCap(-999.0), reheatLoadMult(-999.0), minRatio(-999.0), maxRatio(-999.0), cpMoistAir(-999.0), cpDryAir(-999.0), - rhoStandAir(-999.0), rhoFluid(-999.0), cpFluid(-999.0), coilCapFTIdealPeak(1.0), coilRatedTotCap(-999.0), coilRatedSensCap(-999.0), - ratedAirMassFlow(-999.0), ratedCoilInDb(-999.0), ratedCoilInWb(-999.0), ratedCoilInHumRat(-999.0), ratedCoilInEnth(-999.0), - ratedCoilOutDb(-999.0), ratedCoilOutWb(-999.0), ratedCoilOutHumRat(-999.0), ratedCoilOutEnth(-999.0), ratedCoilEff(-999.0), - ratedCoilBpFactor(-999.0), ratedCoilAppDewPt(-999.0), ratedCoilOadbRef(-999.0), ratedCoilOawbRef(-999.0), + isCoilSizingForTotalLoad(false), capIsAutosized(false), volFlowIsAutosized(false), coilWaterFlowUser(-999.0), oaPretreated(false), + isSupplementalHeater(false), coilTotCapFinal(-999.0), coilSensCapFinal(-999.0), coilRefAirVolFlowFinal(-999.0), + coilRefWaterVolFlowFinal(-999.0), coilTotCapAtPeak(-999.0), coilSensCapAtPeak(-999.0), coilDesMassFlow(-999.0), coilDesVolFlow(-999.0), + coilDesEntTemp(-999.0), coilDesEntWetBulb(-999.0), coilDesEntHumRat(-999.0), coilDesEntEnth(-999.0), coilDesLvgTemp(-999.0), + coilDesLvgWetBulb(-999.0), coilDesLvgHumRat(-999.0), coilDesLvgEnth(-999.0), coilDesWaterMassFlow(-999.0), coilDesWaterEntTemp(-999.0), + coilDesWaterLvgTemp(-999.0), coilDesWaterTempDiff(-999.0), pltSizNum(-999), waterLoopNum(-999), oaPeakTemp(-999.00), oaPeakHumRat(-999.0), + oaPeakWetBulb(-999.0), oaPeakVolFlow(-999.0), oaPeakVolFrac(-999.0), oaDoaTemp(-999.0), oaDoaHumRat(-999.0), raPeakTemp(-999.0), + raPeakHumRat(-999.0), rmPeakTemp(-999.0), rmPeakHumRat(-999.0), rmPeakRelHum(-999.0), rmSensibleAtPeak(-999.0), rmLatentAtPeak(0.0), + coilIdealSizCapOverSimPeakCap(-999.0), coilIdealSizCapUnderSimPeakCap(-999.0), reheatLoadMult(-999.0), minRatio(-999.0), maxRatio(-999.0), + cpMoistAir(-999.0), cpDryAir(-999.0), rhoStandAir(-999.0), rhoFluid(-999.0), cpFluid(-999.0), coilCapFTIdealPeak(1.0), coilRatedTotCap(-999.0), + coilRatedSensCap(-999.0), ratedAirMassFlow(-999.0), ratedCoilInDb(-999.0), ratedCoilInWb(-999.0), ratedCoilInHumRat(-999.0), + ratedCoilInEnth(-999.0), ratedCoilOutDb(-999.0), ratedCoilOutWb(-999.0), ratedCoilOutHumRat(-999.0), ratedCoilOutEnth(-999.0), + ratedCoilEff(-999.0), ratedCoilBpFactor(-999.0), ratedCoilAppDewPt(-999.0), ratedCoilOadbRef(-999.0), ratedCoilOawbRef(-999.0), supFanModelTypeEnum(DataAirSystems::fanModelTypeNotYetSet), supFanNum(0), supFanVecIndex(-1), fanSizeMaxAirVolumeFlow(-999.0), fanSizeMaxAirMassFlow(-999.0), fanHeatGainIdealPeak(-999.0), coilAndFanNetTotalCapacityIdealPeak(-999.0), plantDesMaxMassFlowRate(-999.0), @@ -131,6 +131,7 @@ CoilSelectionData::CoilSelectionData( // constructor coilSizingMethodConcurrenceName = "N/A"; coilSizingMethodCapacityName = "N/A"; coilSizingMethodAirFlowName = "N/A"; + coilPeakLoadTypeToSizeOnName = "N/A"; coilCapAutoMsg = "unknown"; coilVolFlowAutoMsg = "unknown"; coilWaterFlowAutoMsg = "unknown"; @@ -212,6 +213,9 @@ void ReportCoilSelection::writeCoilSelectionOutput() OutputReportPredefined::PreDefTableEntry(OutputReportPredefined::pdchCoilDateTimeTotIdealPeak, c->coilName_, c->coilTotalPeakHrMin); OutputReportPredefined::PreDefTableEntry(OutputReportPredefined::pdchCoilDDnameAirFlowIdealPeak, c->coilName_, c->desDayNameAtAirFlowPeak); OutputReportPredefined::PreDefTableEntry(OutputReportPredefined::pdchCoilDateTimeAirFlowIdealPeak, c->coilName_, c->airPeakHrMin); + + OutputReportPredefined::PreDefTableEntry(OutputReportPredefined::pdchCoilPeakLoadTypeToSizeOn, c->coilName_, c->coilPeakLoadTypeToSizeOnName); + OutputReportPredefined::PreDefTableEntry(OutputReportPredefined::pdchCoilTotalCapIdealPeak, c->coilName_, c->coilTotCapAtPeak, 2); OutputReportPredefined::PreDefTableEntry(OutputReportPredefined::pdchCoilSensCapIdealPeak, c->coilName_, c->coilSensCapAtPeak, 2); if (c->coilDesMassFlow == -999.0 || c->coilDesMassFlow == -99999.0) { @@ -695,6 +699,12 @@ void ReportCoilSelection::doFinalProcessingOfCoilData() c->coilSizingMethodAirFlowName = "FractionOfAutosizedHeatingAirflow"; } + if (c->isCoilSizingForTotalLoad) { + c->coilPeakLoadTypeToSizeOnName = "Total"; + } else { + c->coilPeakLoadTypeToSizeOnName = "Sensible"; + } + if (c->capIsAutosized) { c->coilCapAutoMsg = "Yes"; } else { @@ -1179,6 +1189,12 @@ void ReportCoilSelection::setCoilCoolingCapacity( getTimeText(DataSizing::SysSizPeakDDNum(curSysNum).TimeStepAtCoolFlowPk(DataSizing::SysSizPeakDDNum(curSysNum).CoolFlowPeakDD)); } + if (DataSizing::FinalSysSizing(curSysNum).CoolingPeakLoadType == DataSizing::TotalCoolingLoad) { + c->isCoilSizingForTotalLoad = true; + } else { + c->isCoilSizingForTotalLoad = false; + } + c->oaPeakTemp = DataSizing::FinalSysSizing(curSysNum).OutTempAtCoolPeak; c->oaPeakVolFlow = DataSizing::FinalSysSizing(curSysNum).DesOutAirVolFlow; c->oaPeakHumRat = DataSizing::FinalSysSizing(curSysNum).OutHumRatAtCoolPeak; @@ -1391,6 +1407,10 @@ void ReportCoilSelection::setCoilHeatingCapacity( c->coilSizingMethodConcurrence = DataSizing::FinalSysSizing(curSysNum).SizingOption; c->coilSizingMethodCapacity = DataSizing::FinalSysSizing(curSysNum).HeatingCapMethod; c->coilSizingMethodAirFlow = DataSizing::FinalSysSizing(curSysNum).ScaleHeatSAFMethod; + + // Central Heating Coils are always sized at the conditions at the peak Sensible Heating Load + c->isCoilSizingForTotalLoad = false; + // DesOutAirVolFlow // loop over heated zones attached to this airloop to find average Room condition, if none heated use cooled zones diff --git a/src/EnergyPlus/ReportCoilSelection.hh b/src/EnergyPlus/ReportCoilSelection.hh index d2c3c0d45b3..bebeee399c6 100644 --- a/src/EnergyPlus/ReportCoilSelection.hh +++ b/src/EnergyPlus/ReportCoilSelection.hh @@ -113,6 +113,9 @@ public: // data // 5=FractionOfAutosizedHeatingAirflow, 6=FlowPerCoolingCapacity, 7=FlowPerHeatingCapacity std::string coilSizingMethodAirFlowName; + bool isCoilSizingForTotalLoad; // Type of peak to size (cooling) coils on: True is TotalCoolingLoad, False is sensible + std::string coilPeakLoadTypeToSizeOnName; + // Real64 coilDesCapUser; // coil capacity original input value [W]; -999 means field not applicable to this coil bool capIsAutosized; // true if the coil's capacity was autosized std::string coilCapAutoMsg; // Yes if user cap was autosized, No if hard value entered