-
Notifications
You must be signed in to change notification settings - Fork 460
Improved duct model for a single AirLoop #10887
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
Conversation
|
@lgu1234 @Myoldmopar it has been 29 days since this pull request was last updated. |
|
|
|
|
|
|
|
src/EnergyPlus/DuctLoss.cc
Outdated
| for (int SupAirPath = 1; SupAirPath <= state.dataZoneEquip->NumSupplyAirPaths; ++SupAirPath) { | ||
| for (int CompNum = 1; CompNum <= state.dataZoneEquip->SupplyAirPath(SupAirPath).NumOfComponents; ++CompNum) { | ||
| state.dataDuctLoss->SplitterNum = state.dataZoneEquip->SupplyAirPath(SupAirPath).SplitterIndex(CompNum); | ||
| break; | ||
| } | ||
| } |
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 do not understand these loops. Shouldn't there be some sort of if test?
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 loop logic is to find SplitterNum from the loop. It is not necessary for the present new feature, due to a single AirLoop. SplitterNum should be equal 1. I can remove the loop and set the value = 1. Any suggestions?
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 loop logic is to find SplitterNum from the loop. It is not necessary for the present new feature, due to a single AirLoop. SplitterNum should be equal 1. I can remove the loop and set the value = 1. Any suggestions?
There are some bigger questions:
- I did not find an error check for a single airloop?
- It is possible to define an airloop without any mixer or splitter if it is a single zone loop.
- It is possible to have supply paths with multiple mixers/splitters/plenums.
- It is possible for an airloop to have more than 1 supply paht (e.g. dual-duct system).
- I did not find any checks for these possibilities.
state.dataAirLoop->AirToZoneNodeInfo(AirSysNum).SupplyAirPath(ductNum)andSupplyAirPathNum(ductNum). So that much is already known.state.dataZoneEquip->SupplyAirPathandstate.dataZoneEquip->ReturnAirPathalready know their inlet and outlet nodes, so I think you can use those directly without accessing the splitter/mixer data.
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.
@mjwitte Here are my answers based on your question order:
- A single airloop is checked in AirflowNetwork. I can add an error check for a single airloop.
- The present model assumes a single splitter and mixer for a single airloop, Any other choices will be expanded later.
- No for the present model. The airflownetwork model does not allow multiple mixers and splitters for a single airloop. More choices will be expanded later.
- Not yet for the present model.
- I am going to add more error checks to allow a single splitter and mixer for a single airloop.
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.
In that case, then I would remove these loops and just initialize the mixer and splitter nums to 1.
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.
@mjwitte You are right.
I remove state.dataZoneEquip->SupplyAirPath and state.dataZoneEquip->ReturnAirPath and set both variables of SplitterNum and MixerNumto 1,
Thanks.
| state.dataHeatBal->Zone(ZoneNum).Name); | ||
| } | ||
|
|
||
| if (state.dataDuctLoss->NumOfDuctLosses > 0) { |
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.
Noticed RDD diffs on many test files:
+Output:Variable,*,Zone Added Latent Rate Due to Duct Loss,hourly; !- HVAC Average [W]
+Output:Variable,*,Zone Added Sensible Rate Due to Duct Loss,hourly; !- HVAC Average [W]
These shouldn't be created if these are no duct loss objects.
Move this if up higher? Before the SetupOutputVariable calls and maybe more. Move up to line 348?
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.
You are right. The issue is fixed. Thanks.
|
|
@mjwitte A warning of duplicate labels is addressed |
mjwitte
left a comment
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.
@lgu1234 Your changes to address earlier comments look good. Thanks. Sorry for the delay in reviewing them. There are some documentation and idd cleanup comments below.
| \item | ||
| Supply Trunk duct: The connection of SupplyTrunk is between the inlet node (AirloopHVAC Demand Side Inlet Node) of AirLoopHVAC and the AirLoopHVAC:ZoneSplitter. A single supply trunk is specified. In other words, there is a single supply trunk for each AirLoopHVAC. | ||
| \item | ||
| Supply Branch duct: The connection of SupplyBranch is between the AirLoopHVAC:ZoneSplitter and the inlet node of a zone terminal. Each outlet of the AirLoopHVAC:ZoneSplitter has a single branch duct. The number of Supply Brnach ducts are the same as the number of outlets of the AirLoopHVAC:ZoneSplitter for each AirLoopHVAC. |
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.
Typo: Brnach
Also in line 3402.
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.
Done. Thanks.
|
|
||
| \begin{itemize} | ||
| \item | ||
| Supply Trunk leak: The supply trunk duct leak occurs at the end of supply trunk duct. The leak is originated at the AirLoopHVAC:ZoneSplitter and terminated at a zone or outdoor. |
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.
outdoor --> outdoors
Here and in the next three leak descriptions.
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.
Done.
|
|
||
| Other input rules | ||
|
|
||
| The inputs for Duct:Loss:Leakage require inputs of a corresponding Duct:Loss:Conduction. For instance, a Supply Trunk leak must have an associated Supply Trunk duct. However, a Supply Trunk duct is allowed to exist without a corresponding Supply Trunk leak. |
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.
Even though there is only one item in the list, it would look better to use the itemize format here. Also this sentence is unclear, I think it should say "must have an associated Supply Trunk conduction loss."?
After reading through the duct loss section and then looking at AirflowNetwork:Distribution:Linkage it is not clear that AirflowNetwork:Distribution:Component:Duct objects are the last piece of this puzzle. I would add bullets here for
- Every Duct:Loss:* object requires a corresponding AirflowNetwork:Distribution:Linkage object.
- The AirflowNetwork:Distribution:Linkage objects must reference an AirflowNetwork:Distribution:Component:Duct object which specifies the duct properties.
- The Duct:Loss:Conduction and Duct:Loss:Leakage objects for a given duct should reference the same AirflowNetwork:Distribution:Component:Duct object.
Perhaps a simple example of a complete set of these objects would be useful here as an idf snippet.
AirflowNetwork:Distribution:Component:Duct
Duct:Loss:Conduction
AirflowNetwork:Distribution:Linkage
Duct:Loss:Leakage
AirflowNetwork:Distribution:Linkage
Oh, wait, and then there's AirflowNetwork:Distribution:Node objects, and AirflowNetwork:Distribution:Component:LeakageRatio objects.
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.
Great suggestion.
Add all required objects in idf snippets to simulate Duct:Loss:x using the simple duct model.
Done
|
|
||
| \subsection{Duct:Loss:Conduction}\label{ductlossconduction} | ||
|
|
||
| This object allows users to input ducts with conduction loss only for simplified duct model. The object is used without using Airflow Network model exclusively. |
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 not sure what this means: "The object is used without using Airflow Network model exclusively."
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 agree. The statement is not clear and removed.
|
|
||
| \paragraph{Duct Loss Sensible Loss Rate {[}W{]}}\label{duct-loss-sensible-rate-w} | ||
|
|
||
| This is the duct loass sensible ratee output in W for the simple duct model for each duct loss object. |
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.
Typos: loass sensible ratee output
Also in the next paragraph.
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.
Done.
|
|
||
| Note: | ||
|
|
||
| The return conduction and leak losses are not part fo system loads. The impact is the temperature and moisture change at the AirLoopHVAC inlet node. The HVAC system in an AirLoopHVAC uses changed inlet conditions to cover the return conduction and leakage impact. |
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.
Typo: part fo system
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.
Done
idd/Energy+.idd.in
Outdated
| \note the OutdoorAir:Mixer | ||
| \note Other -- none of the above, the Node name already defined in the previous field is part | ||
| \note of an air loop. | ||
| \note Zone -- Enter a zone name for duct simple model to calculate duct loss wihtout using AFN model. |
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.
wihtout
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.
Done
idd/Energy+.idd.in
Outdated
| Duct:Loss:Conduction, | ||
| A1 , \field Name | ||
| \required-field | ||
| A2 , \field AirLoopHAVC 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.
AirLoopHAVC
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.
Done
idd/Energy+.idd.in
Outdated
| Duct:Loss:Leakage, | ||
| A1 , \field Name | ||
| \required-field | ||
| A2 , \field AirLoopHAVC 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.
AirLoopHAVC
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.
Done
idd/Energy+.idd.in
Outdated
| Duct:Loss:MakeupAir, | ||
| A1 , \field Name | ||
| \required-field | ||
| A2 , \field AirLoopHAVC 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.
AirLoopHAVC
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.
Done
|
@mjwitte Your comments have been addressed. All changes were uploaded. Please review the changes. |
mjwitte
left a comment
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.
@lgu1234 Thanks for the updates.
@Myoldmopar This is ready for your full review.
|
@Myoldmopar @lgu1234 @Myoldmopar it has been 29 days since this pull request was last updated. |
|
@Myoldmopar @lgu1234 @Myoldmopar it has been 33 days since this pull request was last updated. |
|
@mjwitte I just resolved a couple issues and merge in develop here. Are you intending to do any more review here? |
No. |
|
Seems like everyone is pretty much done here. Merging. |


Pull request overview
The task will improve duct modeling support to enable conduction heat losses for a single air loop, and also duct leakage for a single air loop. The duct modeling roadmap was developed previously and should be used as guidance for the scope of these features.
NOTE: ENHANCEMENTS MUST FOLLOW A SUBMISSION PROCESS INCLUDING A FEATURE PROPOSAL AND DESIGN DOCUMENT PRIOR TO SUBMITTING CODE
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.