Improved duct model for a single AirLoop#10887
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.
I do not understand these loops. Shouldn't there be some sort of if test?
There was a problem hiding this comment.
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.
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.
@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.
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.
@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.
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.
You are right. The issue is fixed. Thanks.
|
|
@mjwitte A warning of duplicate labels is addressed |
| \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.
Typo: Brnach
Also in line 3402.
|
|
||
| \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.
outdoor --> outdoors
Here and in the next three leak descriptions.
|
|
||
| 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.
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.
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.
I am not sure what this means: "The object is used without using Airflow Network model exclusively."
There was a problem hiding this comment.
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.
Typos: loass sensible ratee output
Also in the next paragraph.
|
|
||
| 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. |
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. |
idd/Energy+.idd.in
Outdated
| Duct:Loss:Conduction, | ||
| A1 , \field Name | ||
| \required-field | ||
| A2 , \field AirLoopHAVC Name |
idd/Energy+.idd.in
Outdated
| Duct:Loss:Leakage, | ||
| A1 , \field Name | ||
| \required-field | ||
| A2 , \field AirLoopHAVC Name |
idd/Energy+.idd.in
Outdated
| Duct:Loss:MakeupAir, | ||
| A1 , \field Name | ||
| \required-field | ||
| A2 , \field AirLoopHAVC Name |
|
@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.
@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.