Skip to content

Commit

Permalink
address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
bpark1327 committed Jan 25, 2024
1 parent d8cd2a8 commit ce56aee
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 30 deletions.
22 changes: 6 additions & 16 deletions docs/source/workflow_inputs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1540,7 +1540,7 @@ Additional information is entered in each ``Ducts``.
``DuctInsulationRValue`` double F-ft2-hr/Btu >= 0 Yes R-value of duct insulation [#]_
``DuctBuriedInsulationLevel`` string See [#]_ No not buried Duct buried insulation level [#]_
``DuctLocation`` string See [#]_ Yes Duct location
``FractionDuctArea`` and/or ``DuctSurfaceArea`` double frac or ft2 0-1 or >= 0 [#]_ See [#]_ See [#]_ Duct fraction/surface area in location
``FractionDuctArea`` and/or ``DuctSurfaceArea`` double frac or ft2 0-1 or >= 0 [#]_ Yes [#]_ See [#]_ Duct fraction/surface area in location
=============================================== ======= ============ ================ ======== ========== ======================================

.. [#] DuctType choices are "supply" or "return".
Expand All @@ -1555,23 +1555,13 @@ Additional information is entered in each ``Ducts``.
.. [#] DuctLocation choices are "conditioned space", "basement - conditioned", "basement - unconditioned", "crawlspace - unvented", "crawlspace - vented", "attic - unvented", "attic - vented", "garage", "outside", "exterior wall", "under slab", "roof deck", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space".
See :ref:`hpxmllocations` for descriptions.
.. [#] The sum of all FractionDuctArea must each equal to 1, both for the supply side and return side.
.. [#] FractionDuctArea or DuctSurfaceArea are required if DuctLocation is provided. If both are provided, DuctSurfaceArea will be used in the model.
.. [#] If neither DuctSurfaceArea nor FractionDuctArea provided, duct surface areas will be calculated based on `ASHRAE Standard 152 <https://www.energy.gov/eere/buildings/downloads/ashrae-standard-152-spreadsheet>`_:
\- **Primary supply duct area**: 0.27 * F_out * ConditionedFloorAreaServed
\- **Secondary supply duct area**: 0.27 * (1 - F_out) * ConditionedFloorAreaServed
.. [#] If both are provided, DuctSurfaceArea will be used in the model.
.. [#] Duct surface areas will be calculated based on BSR/RESNET/ICC 301-2022 Table 4.2.2(1) footnote z. aa.:
\- **Total supply duct area**: **Primary supply duct area** + **Secondary supply duct area**
\- **Primary return duct area**: b_r * F_out * ConditionedFloorAreaServed
\- **Secondary return duct area**: b_r * (1 - F_out) * ConditionedFloorAreaServed
\- **Supply duct area**: 0.27 * ConditionedFloorAreaServed
\- **Return duct area**: (if Number of Returns < 6, 0.05 * Number of Returns, 0.25 otherwise) * ConditionedFloorAreaServed
\- **Total return duct area**: **Primary return duct area** + **Secondary return duct area**
where F_out is 1.0 when NumberofConditionedFloorsAboveGrade <= 1 and 0.75 when NumberofConditionedFloorsAboveGrade > 1, and b_r is 0.05 * NumberofReturnRegisters with a maximum value of 0.25.
If FractionDuctArea is provided, each duct surface area will be FractionDuctArea times total duct area, which is calculated using the sum of primary and secondary duct areas from the equations above.
.. _hvac_distribution_hydronic:
Expand Down
16 changes: 3 additions & 13 deletions rulesets/resources/301ruleset.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1415,23 +1415,13 @@ def self.set_systems_hvac_rated(orig_bldg, new_bldg)

# Ducts
orig_hvac_distribution.ducts.each do |orig_duct|
if orig_duct.duct_surface_area.nil?
# Default duct surface area(s)
cfa_served = orig_hvac_distribution.conditioned_floor_area_served
n_returns = orig_hvac_distribution.number_of_return_registers
total_duct_area = HVAC.get_default_duct_surface_area(orig_duct.duct_type, @ncfl_ag, cfa_served, n_returns).sum()
duct_surface_area = total_duct_area * orig_duct.duct_fraction_area
duct_surface_area_isdefaulted = true
else
duct_surface_area = orig_duct.duct_surface_area
end
new_hvac_distribution.ducts.add(id: orig_duct.id,
duct_type: orig_duct.duct_type,
duct_insulation_r_value: orig_duct.duct_insulation_r_value,
duct_location: orig_duct.duct_location,
duct_surface_area: duct_surface_area,
duct_buried_insulation_level: orig_duct.duct_buried_insulation_level,
duct_surface_area_isdefaulted: duct_surface_area_isdefaulted)
duct_surface_area: orig_duct.duct_surface_area,
duct_fraction_area: orig_duct.duct_fraction_area,
duct_buried_insulation_level: orig_duct.duct_buried_insulation_level)
end
end

Expand Down
3 changes: 3 additions & 0 deletions rulesets/resources/301validator.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1103,6 +1103,9 @@
<sch:assert role='ERROR' test='count(h:FractionDuctArea) + count(h:DuctSurfaceArea) &gt;= 1'>Expected 1 or more element(s) for xpath: FractionDuctArea | DuctSurfaceArea</sch:assert>
<sch:assert role='ERROR' test='count(../h:NumberofReturnRegisters) = 1'>Expected 1 element(s) for xpath: ../NumberofReturnRegisters</sch:assert>
<sch:assert role='ERROR' test='count(../../../h:ConditionedFloorAreaServed) = 1'>Expected 1 element(s) for xpath: ../../../ConditionedFloorAreaServed</sch:assert>
<!-- Sum Checks -->
<sch:assert role='ERROR' test='(sum(h:Ducts[h:DuctType="supply"]/h:FractionDuctArea) &gt;= 0.99 and sum(h:Ducts[h:DuctType="supply"]/h:FractionDuctArea) &lt;= 1.01) or count(h:Ducts[h:DuctType="supply"]/h:FractionDuctArea) = 0'>Expected sum(Ducts/FractionDuctArea) for DuctType="supply" to be 1</sch:assert>
<sch:assert role='ERROR' test='(sum(h:Ducts[h:DuctType="return"]/h:FractionDuctArea) &gt;= 0.99 and sum(h:Ducts[h:DuctType="return"]/h:FractionDuctArea) &lt;= 1.01) or count(h:Ducts[h:DuctType="return"]/h:FractionDuctArea) = 0'>Expected sum(Ducts/FractionDuctArea) for DuctType="return" to be 1</sch:assert>
</sch:rule>
</sch:pattern>

Expand Down
11 changes: 10 additions & 1 deletion rulesets/tests/test_hvac.rb
Original file line number Diff line number Diff line change
Expand Up @@ -952,14 +952,23 @@ def test_duct_fraction_area
duct.duct_fraction_area = 0.7
end
end
[HPXML::DuctTypeSupply, HPXML::DuctTypeReturn].each do |duct_type|
hpxml_bldg.hvac_distributions[-1].ducts.add(id: "Ducts#{hpxml_bldg.hvac_distributions[-1].ducts.size + 1}",
duct_type: duct_type,
duct_insulation_r_value: 0,
duct_location: HPXML::LocationConditionedSpace,
duct_fraction_area: 0.3)
end
hpxml_name = File.basename(@tmp_hpxml_path)
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)

_all_calc_types.each do |calc_type|
_hpxml, hpxml_bldg = _test_ruleset(hpxml_name, calc_type)
if [Constants.CalcTypeERIRatedHome].include? calc_type
_check_ducts(hpxml_bldg, [{ duct_type: HPXML::DuctTypeSupply, duct_rvalue: 4.0, duct_area: 510.3, duct_location: HPXML::LocationAtticUnvented, duct_buried: HPXML::DuctBuriedInsulationNone },
{ duct_type: HPXML::DuctTypeReturn, duct_rvalue: 0.0, duct_area: 189.0, duct_location: HPXML::LocationAtticUnvented, duct_buried: HPXML::DuctBuriedInsulationNone }])
{ duct_type: HPXML::DuctTypeReturn, duct_rvalue: 0.0, duct_area: 189.0, duct_location: HPXML::LocationAtticUnvented, duct_buried: HPXML::DuctBuriedInsulationNone },
{ duct_type: HPXML::DuctTypeSupply, duct_rvalue: 0.0, duct_area: 218.7, duct_location: HPXML::LocationConditionedSpace, duct_buried: HPXML::DuctBuriedInsulationNone },
{ duct_type: HPXML::DuctTypeReturn, duct_rvalue: 0.0, duct_area: 81.0, duct_location: HPXML::LocationConditionedSpace, duct_buried: HPXML::DuctBuriedInsulationNone }])
else
_check_ducts(hpxml_bldg)
end
Expand Down
1 change: 1 addition & 0 deletions tasks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2439,6 +2439,7 @@ def create_sample_hpxmls
'base-hvac-central-ac-only-var-speed.xml',
'base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml',
'base-hvac-dse.xml',
'base-hvac-ducts-area-fractions.xml',
'base-hvac-ducts-leakage-cfm50.xml',
'base-hvac-ducts-buried.xml',
'base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml',
Expand Down

0 comments on commit ce56aee

Please sign in to comment.