-
Notifications
You must be signed in to change notification settings - Fork 394
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
New Outdoor Air Details report #8529
Conversation
…EnergyPlus into EnhanceOutdoorAirReporting
…Target Ventilation - Voz-dyn"
From a quick CI scan, looks like acceptable RDD and Audit diffs, though Mac is complaining about some build warnings that should be cleaned up. I see this is still marked as draft so I will not dive in any deeper than this right now. |
@Myoldmopar Getting close, added a todo list at the top. Some things could wait until after I/O Freeze as a followup. |
…doorAirReporting2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code walkthrough.
\memo There should be as many fields (A) in this object as there are keys in the following (minus | ||
\memo AllSummary+AllMonthly+AllSummaryAndMonthly) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This object, Output:Table:SummaryReports has been incredibly long for a long time (https://github.com/NREL/EnergyPlusArchive/commit/7134906aa552086d7fc76fafde2158efe85fe2ac). Taking a bold step here and reducing it to 25 report names in the IDD instead of 82. It's extensible, so any long objects should run just fine. It might trip up someone using IDF Editor, but it seems time to shorten this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am fine with that bold step.
@@ -98551,6 +98549,7 @@ Output:Table:SummaryReports, | |||
\key ComponentSizingSummary | |||
\key CoilSizingDetails | |||
\key OutdoorAirSummary | |||
\key OutdoorAirDetails |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New report key. This report is included automatically with AllSummary* options.
@@ -101001,5981 +101023,7 @@ Output:Table:SummaryReports, | |||
\key ThermalResilienceSummary | |||
\key CO2ResilienceSummary | |||
\key VisualResilienceSummary | |||
A25, \field Report 25 Name |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The field-ectomy begins here.
Real64 StdDensInfilVolume = (state.dataAirflowNetworkBalanceManager->exchangeData(i).SumMCp / CpAir / state.dataEnvrn->StdRhoAir) * | ||
ReportingConstant; // compute volume using standard density air | ||
// MJWToDo - Separate AFN Vent and InfilVolFlow |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sum AFN infiltration and ventilation (well, once #8475 is addressed).
|
||
// OA Reports - accumulated values | ||
// All Vol variables are in m3 | ||
Real64 MechVentVolTotalOcc; // volume for mechanical ventilation of outside air for entire simulation during occupied at current |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename some of the existing Outdoor Air Summary variables to help keep them separate from the new report. The old report is only for occupied hours, so add "Occ" to some names.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I think that is reasonable.
@@ -4452,6 +4664,24 @@ namespace EnergyPlus::SystemReports { | |||
state.dataSysRpts->ZoneOAVolFlowStdRho(CtrlZoneNum) = state.dataSysRpts->ZoneOAMassFlow(CtrlZoneNum) / state.dataEnvrn->StdRhoAir; | |||
state.dataSysRpts->ZoneOAVolStdRho(CtrlZoneNum) = state.dataSysRpts->ZoneOAVolFlowStdRho(CtrlZoneNum) * TimeStepSys * DataGlobalConstants::SecInHour; | |||
|
|||
// set time mechanical+natural ventilation is below, at, or above target Voz-dyn |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gather zone table values.
@@ -4524,7 +4780,55 @@ namespace EnergyPlus::SystemReports { | |||
} else { | |||
} | |||
} // loop over controlled zones | |||
} | |||
|
|||
// loop over air loops |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gather air loop table values.
struct SysPreDefRepType | ||
{ | ||
Real64 SysMechVentTotal; // air loop mechanical vent total volume OA at standard density {m3} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New struct for airloop tables.
Array1D<Real64> ZoneOAVolFlowCrntRho; // zone mech vent volume flow rate at current density {m3/s} | ||
Array1D<Real64> ZoneOAVolCrntRho; // zone mech vent total volume OA at current density {m3} | ||
Array1D<Real64> ZoneMechACH; // zone mech vent air changes per hour {ACH} | ||
Array1D<Real64> ZoneTargetVentilationFlowVoz; // zone target ventilation ventilation flow based on 62.1 Voz-dyn {m3/s} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New zone and system variables for tracking various timestep values to accumulate. Many of these are new output variables.
@@ -1001,6 +1001,7 @@ namespace EnergyPlus::ZoneEquipmentManager { | |||
FinalZoneSizing(CtrlZoneNum).HeatDesTempDiff = ZoneSizingInput(ZoneSizNum).HeatDesTempDiff; | |||
FinalZoneSizing(CtrlZoneNum).CoolDesHumRat = ZoneSizingInput(ZoneSizNum).CoolDesHumRat; | |||
FinalZoneSizing(CtrlZoneNum).HeatDesHumRat = ZoneSizingInput(ZoneSizNum).HeatDesHumRat; | |||
FinalZoneSizing(CtrlZoneNum).ZoneAirDistributionIndex = ZoneSizingInput(ZoneSizNum).ZoneAirDistributionIndex; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is needed in order to fetch the DesignSpecification:AirTerminal:Sizing data.
@Myoldmopar This is ready for review. There are some pieces missing that will need to get fleshed out after I/O freeze if this passes muster enough to make it in. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is quite a lot, but I am so thankful for the IDD cleanup. I don't imagine anyone will have needed all 82 extensible fields in that input object. I am building and running locally, but this looks good to go in.
@@ -160,6 +160,56 @@ \subsubsection{Outputs}\label{outputs-1-001} | |||
|
|||
Reports the air changes per hour in the zone due to the outside fresh air supplied by mechanical ventilation system. | |||
|
|||
\paragraph{Zone Target Voz Ventilation Flow Rate {[}m3/s{]}}\label{zone-target-voz-ventilation-flow-rate} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lots of new ventilation outputs, OK.
@@ -172,6 +172,27 @@ \subsubsection{Predefined Annual Summary Reports}\label{predefined-annual-summar | |||
Minimum Outside Air During Occupied Hours table shows for each zone the average and nominal number of occupants, the zone volume, the minimum air change rate based on mechanical ventilation, infiltration and simple ventilation during occupied hours. | |||
\end{itemize} | |||
|
|||
\paragraph{Outdoor Air Details}\label{outdoor-air-details} | |||
|
|||
The Outdoor Air Details report (key: OutdoorAirDetails) produces a report that includes the following tables: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, so this is the section that describes the new tabular report, if the user enters the OutdoorAirDetails
key. I was expecting to find a list of all the possible keys in this section which would need this key added, but I guess that's not here. Just in the IDD itself.
\memo There should be as many fields (A) in this object as there are keys in the following (minus | ||
\memo AllSummary+AllMonthly+AllSummaryAndMonthly) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am fine with that bold step.
|
||
// OA Reports - accumulated values | ||
// All Vol variables are in m3 | ||
Real64 MechVentVolTotalOcc; // volume for mechanical ventilation of outside air for entire simulation during occupied at current |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I think that is reasonable.
Real64 AFNInfilVolMin; // a large number since finding minimum volume at current zone air density | ||
Real64 SimpVentVolTotalOcc; // volume for simple 'ZoneVentilation' of outside air for entire simulation during occupied current | ||
Real64 SimpVentVolMin; // a large number since finding minimum volumeat current zone air density | ||
Real64 MechVentVolTotalStdDen; // volume for mechanical ventilation of outside air for entire simulation at standard density |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also reasonable.
@@ -965,6 +945,31 @@ namespace DataSizing { | |||
} | |||
} | |||
|
|||
Real64 ZoneAirDistributionData::calculateEz(EnergyPlusData &state, int const ZoneNum) // Zone index |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
ZoneOAMin = ZoneOAArea / ZoneEz; | ||
ZoneOAMax = (ZoneOAArea + ZoneOAPeople) / ZoneEz; | ||
ZoneOAMin = ZoneOAArea; | ||
ZoneOAMax = (ZoneOAArea + ZoneOAPeople); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch!
Zone(iZone).Multiplier * Zone(iZone).ListMultiplier), | ||
3); | ||
Zone(iZone).Name, | ||
ZonePreDefRep(iZone).MechVentVolTotalOcc / (ZonePreDefRep(iZone).TotTimeOcc * Zone(iZone).Volume * |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, so a bunch of changes for the Occ suffix on those existing variables.
CI results are in order. The 500 server errors are not on us. Locally testing is all good, this is ready to merge. Thanks @mjwitte and @JasonGlazer |
Pull request overview
This PR supersedes #7629.
This version keeps the existing Outdoor Air Summary report and adds the new report as Outdoor Air Details.
Currently, users seeking to use EnergyPlus for LEED work need to document the use of Outdoor Air (OA) in their models. While the current Outdoor Air Summary in EnergyPlus provides some information to help these users, it does not provide enough information. Users often find it difficult to compare the OA delivered for proposed vs. baseline simulations, especially with economizers and zone equipment. This new feature adds a new Outdoor Air Details tabular report to include zone HVAC equipment, add tracking and table outputs for minimum requested outdoor air flow, track times when the delivered outdoor air is less than the minimum required and provide outputs in standard air density.
The needs of this enhancement were discussed in issue #5298
The new feature proposal provides further detail.
Resolves #5298.
Resolves #5846 (final piece)
ToDo List
Unfinished business from this PR is documented in #8550
Pull Request Author
Add to this list or remove from it as applicable. This is a simple templated set of guidelines.
Reviewer
This will not be exhaustively relevant to every PR.