From 8f0dd5a6205c5c493222420075a144774663c818 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 17 Jul 2019 16:24:25 +0200 Subject: [PATCH 1/2] 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 From e94d988d562b18be6a59d991ce154c3a2e576fee Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 28 Aug 2019 16:33:06 +0200 Subject: [PATCH 2/2] Added output change md file per @mjwitte --- .../OutputChanges9-2-0-to-9-3-0.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/Transition/OutputRulesFiles/OutputChanges9-2-0-to-9-3-0.md diff --git a/src/Transition/OutputRulesFiles/OutputChanges9-2-0-to-9-3-0.md b/src/Transition/OutputRulesFiles/OutputChanges9-2-0-to-9-3-0.md new file mode 100644 index 00000000000..d42f80db545 --- /dev/null +++ b/src/Transition/OutputRulesFiles/OutputChanges9-2-0-to-9-3-0.md @@ -0,0 +1,14 @@ +Output Changes +============== + +This file documents the structural changes on the output of EnergyPlus that could affect interfaces, etc. + +### Description + +This will eventually become a more structured file, but currently it isn't clear what format is best. As an intermediate solution, and to allow the form to be formed organically, this plain text file is being used. Entries should be clearly delimited. It isn't expected that there will be but maybe a couple each release at most. Entries should also include some reference back to the repo. At least a PR number or whatever. + +### Additional field for Coil Sizing Details:Coils report + +A new column "Peak Load Type to Size On" has been added to the `Coil Sizing Details:Coils` report + +See [7397](https://github.com/NREL/EnergyPlus/pull/7397)