Skip to content
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

Update Avg Conditioned Floor Area #1284

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion docs/read_the_docs/source/changelog/changelog_dev.rst
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Development Changelog
:tags: workflow, hvac, feature
:pullreq: 1254

**Date**: 2024-09-218
**Date**: 2024-09-27

Title:
Heating and Cooling Unavailable Days
Expand All @@ -100,3 +100,21 @@ Development Changelog
Specifically, this PR modifies HVAC heating/cooling seasons using number of unavailable days and BAHSP definition for heating/cooling months.

Assignees: Joe Robertson


.. change::
:tags: buxfix, floor area
:pullreq: 1284

**Date**: 2024-10-01

Title:
Update Avg Conditioned Floor Area

Description:
Reconcile differences between the AHS floor area definition and the OpenStudio-HPXML conditioned floor area. The change updates ResStockArguments to include
Different floor area values for homes with and without heated basements. AHS includes unheated basements in the floor area definition. So sometimes when the
unit has an unheated basement, then the modeled conditioned floor area is smaller than the lower bound of the floor area bin range. This fix also assigns
floor areas for manufactured homes, where previously they were the same as single-family detached units.

Assignees: Rajendra Adhikari, Anthony Fontanini
109 changes: 69 additions & 40 deletions measures/ResStockArguments/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -433,48 +433,77 @@ def run(model, runner, user_arguments)

args_to_delete = args.keys - arg_names # these are the extra ones added in the arguments section

# Conditioned floor area
# Assign a conditioned floor area from the floor area bins
# In ResStock AHS is used in to assign the distribution of floor areas.
# AHS includes unheated basements in their floor area estimates, and needs to be removed for the OS-HPXML conditioned floor area.
# Sometimes the conditioned floor area assigned will be smaller than the bin assigned for units with unheated basements.
# The bin values are created from RECS 2020 by using the maximum of the heated and cooled floor area minus an estimate of the
# garage floor area if the garage is heated or cooled. The script for generating these values is in the ResStock-Estimation repository.
if args[:geometry_unit_cfa] == Constants::Auto
# TODO: Disaggregate detached and mobile home
cfas = { ['0-499', HPXML::ResidentialTypeSFD] => 298, # AHS 2021, 1 detached and mobile home weighted average
['0-499', HPXML::ResidentialTypeSFA] => 273, # AHS 2021, 1 attached
['0-499', HPXML::ResidentialTypeApartment] => 322, # AHS 2021, multi-family weighted average
['0-499', HPXML::ResidentialTypeManufactured] => 298, # AHS 2021, 1 detached and mobile home weighted average
['500-749', HPXML::ResidentialTypeSFD] => 634, # AHS 2021, 1 detached and mobile home weighted average
['500-749', HPXML::ResidentialTypeSFA] => 625, # AHS 2021, 1 attached
['500-749', HPXML::ResidentialTypeApartment] => 623, # AHS 2021, multi-family weighted average
['500-749', HPXML::ResidentialTypeManufactured] => 634, # AHS 2021, 1 detached and mobile home weighted average
['750-999', HPXML::ResidentialTypeSFD] => 881, # AHS 2021, 1 detached and mobile home weighted average
['750-999', HPXML::ResidentialTypeSFA] => 872, # AHS 2021, 1 attached
['750-999', HPXML::ResidentialTypeApartment] => 854, # AHS 2021, multi-family weighted average
['750-999', HPXML::ResidentialTypeManufactured] => 881, # AHS 2021, 1 detached and mobile home weighted average
['1000-1499', HPXML::ResidentialTypeSFD] => 1228, # AHS 2021, 1 detached and mobile home weighted average
['1000-1499', HPXML::ResidentialTypeSFA] => 1207, # AHS 2021, 1 attached
['1000-1499', HPXML::ResidentialTypeApartment] => 1138, # AHS 2021, multi-family weighted average
['1000-1499', HPXML::ResidentialTypeManufactured] => 1228, # AHS 2021, 1 detached and mobile home weighted average
['1500-1999', HPXML::ResidentialTypeSFD] => 1698, # AHS 2021, 1 detached and mobile home weighted average
['1500-1999', HPXML::ResidentialTypeSFA] => 1678, # AHS 2021, 1 attached
['1500-1999', HPXML::ResidentialTypeApartment] => 1682, # AHS 2021, multi-family weighted average
['1500-1999', HPXML::ResidentialTypeManufactured] => 1698, # AHS 2021, 1 detached and mobile home weighted average
['2000-2499', HPXML::ResidentialTypeSFD] => 2179, # AHS 2021, 1 detached and mobile home weighted average
['2000-2499', HPXML::ResidentialTypeSFA] => 2152, # AHS 2021, 1 attached
['2000-2499', HPXML::ResidentialTypeApartment] => 2115, # AHS 2021, multi-family weighted average
['2000-2499', HPXML::ResidentialTypeManufactured] => 2179, # AHS 2021, 1 detached and mobile home weighted average
['2500-2999', HPXML::ResidentialTypeSFD] => 2678, # AHS 2021, 1 detached and mobile home weighted average
['2500-2999', HPXML::ResidentialTypeSFA] => 2663, # AHS 2021, 1 attached
['2500-2999', HPXML::ResidentialTypeApartment] => 2648, # AHS 2021, multi-family weighted average
['2500-2999', HPXML::ResidentialTypeManufactured] => 2678, # AHS 2021, 1 detached and mobile home weighted average
['3000-3999', HPXML::ResidentialTypeSFD] => 3310, # AHS 2021, 1 detached and mobile home weighted average
['3000-3999', HPXML::ResidentialTypeSFA] => 3228, # AHS 2021, 1 attached
['3000-3999', HPXML::ResidentialTypeApartment] => 3171, # AHS 2021, multi-family weighted average
['3000-3999', HPXML::ResidentialTypeManufactured] => 3310, # AHS 2021, 1 detached and mobile home weighted average
['4000+', HPXML::ResidentialTypeSFD] => 5587, # AHS 2021, 1 detached and mobile home weighted average
['4000+', HPXML::ResidentialTypeSFA] => 7414, # AHS 2019, 1 attached
['4000+', HPXML::ResidentialTypeApartment] => 6348, # AHS 2021, 4,000 or more all unit average
['4000+', HPXML::ResidentialTypeManufactured] => 5587 } # AHS 2021, 1 detached and mobile home weighted average
cfa = cfas[[args[:geometry_unit_cfa_bin], args[:geometry_unit_type]]]
cfas = {
['0-499', HPXML::ResidentialTypeSFD, 'Yes'] => 451, # From RECS2020
['0-499', HPXML::ResidentialTypeSFD, 'No'] => 341, # From RECS2020
['0-499', HPXML::ResidentialTypeSFA, 'Yes'] => 390, # From RECS2020
['0-499', HPXML::ResidentialTypeSFA, 'No'] => 344, # From RECS2020
['0-499', HPXML::ResidentialTypeApartment, 'No'] => 377, # From RECS2020
['0-499', HPXML::ResidentialTypeManufactured, 'No'] => 386, # From RECS2020
['500-749', HPXML::ResidentialTypeSFD, 'Yes'] => 643, # From RECS2020
['500-749', HPXML::ResidentialTypeSFD, 'No'] => 562, # From RECS2020
['500-749', HPXML::ResidentialTypeSFA, 'Yes'] => 578, # From RECS2020
['500-749', HPXML::ResidentialTypeSFA, 'No'] => 549, # From RECS2020
['500-749', HPXML::ResidentialTypeApartment, 'No'] => 589, # From RECS2020
['500-749', HPXML::ResidentialTypeManufactured, 'No'] => 614, # From RECS2020
['750-999', HPXML::ResidentialTypeSFD, 'Yes'] => 881, # From RECS2020
['750-999', HPXML::ResidentialTypeSFD, 'No'] => 803, # From RECS2020
['750-999', HPXML::ResidentialTypeSFA, 'Yes'] => 902, # From RECS2020
['750-999', HPXML::ResidentialTypeSFA, 'No'] => 798, # From RECS2020
['750-999', HPXML::ResidentialTypeApartment, 'No'] => 818, # From RECS2020
['750-999', HPXML::ResidentialTypeManufactured, 'No'] => 856, # From RECS2020
['1000-1499', HPXML::ResidentialTypeSFD, 'Yes'] => 1254, # From RECS2020
['1000-1499', HPXML::ResidentialTypeSFD, 'No'] => 1151, # From RECS2020
['1000-1499', HPXML::ResidentialTypeSFA, 'Yes'] => 1241, # From RECS2020
['1000-1499', HPXML::ResidentialTypeSFA, 'No'] => 1143, # From RECS2020
['1000-1499', HPXML::ResidentialTypeApartment, 'No'] => 1119, # From RECS2020
['1000-1499', HPXML::ResidentialTypeManufactured, 'No'] => 1177, # From RECS2020
['1500-1999', HPXML::ResidentialTypeSFD, 'Yes'] => 1716, # From RECS2020
['1500-1999', HPXML::ResidentialTypeSFD, 'No'] => 1554, # From RECS2020
['1500-1999', HPXML::ResidentialTypeSFA, 'Yes'] => 1716, # From RECS2020
['1500-1999', HPXML::ResidentialTypeSFA, 'No'] => 1504, # From RECS2020
['1500-1999', HPXML::ResidentialTypeApartment, 'No'] => 1603, # From RECS2020
['1500-1999', HPXML::ResidentialTypeManufactured, 'No'] => 1615, # From RECS2020
['2000-2499', HPXML::ResidentialTypeSFD, 'Yes'] => 2214, # From RECS2020
['2000-2499', HPXML::ResidentialTypeSFD, 'No'] => 1982, # From RECS2020 - less than the bin see note above
['2000-2499', HPXML::ResidentialTypeSFA, 'Yes'] => 2178, # From RECS2020
['2000-2499', HPXML::ResidentialTypeSFA, 'No'] => 1847, # From RECS2020 - less than the bin see note above
['2000-2499', HPXML::ResidentialTypeApartment, 'No'] => 2135, # From RECS2020
['2000-2499', HPXML::ResidentialTypeManufactured, 'No'] => 2082, # From RECS2020
['2500-2999', HPXML::ResidentialTypeSFD, 'Yes'] => 2663, # From RECS2020
['2500-2999', HPXML::ResidentialTypeSFD, 'No'] => 2296, # From RECS2020 - less than the bin see note above
['2500-2999', HPXML::ResidentialTypeSFA, 'Yes'] => 2570, # From RECS2020
['2500-2999', HPXML::ResidentialTypeSFA, 'No'] => 2079, # From RECS2020 - less than the bin see note above
['2500-2999', HPXML::ResidentialTypeApartment, 'No'] => 2818, # From RECS2020
['2500-2999', HPXML::ResidentialTypeManufactured, 'No'] => 2616, # From RECS2020
['3000-3999', HPXML::ResidentialTypeSFD, 'Yes'] => 3353, # From RECS2020
['3000-3999', HPXML::ResidentialTypeSFD, 'No'] => 2690, # From RECS2020 - less than the bin see note above
['3000-3999', HPXML::ResidentialTypeSFA, 'Yes'] => 3336, # From RECS2020
['3000-3999', HPXML::ResidentialTypeSFA, 'No'] => 2650, # From RECS2020 - less than the bin see note above
['3000-3999', HPXML::ResidentialTypeApartment, 'No'] => 3106, # From RECS2020
['3000-3999', HPXML::ResidentialTypeManufactured, 'No'] => 3000, # From RECS2020
['4000+', HPXML::ResidentialTypeSFD, 'Yes'] => 4862, # From RECS2020
['4000+', HPXML::ResidentialTypeSFD, 'No'] => 3682, # From RECS2020 - less than the bin see note above
['4000+', HPXML::ResidentialTypeSFA, 'Yes'] => 4792, # From RECS2020
['4000+', HPXML::ResidentialTypeSFA, 'No'] => 3377, # From RECS2020 - less than the bin see note above
['4000+', HPXML::ResidentialTypeApartment, 'No'] => 5000, # From RECS2020
['4000+', HPXML::ResidentialTypeManufactured, 'No'] => 5587, # From AHS 2021, 1 detached and mobile home weighted average
}
if args[:geometry_foundation_type] == HPXML::FoundationTypeBasementConditioned
has_conditioned_basement = 'Yes'
else
has_conditioned_basement = 'No'
end
cfa = cfas[[args[:geometry_unit_cfa_bin], args[:geometry_unit_type], has_conditioned_basement]]
if cfa.nil?
runner.registerError("ResStockArguments: Could not look up conditioned floor area for '#{args[:geometry_unit_cfa_bin]}' and '#{args[:geometry_unit_type]}'.")
runner.registerError("ResStockArguments: Could not look up conditioned floor area for '#{args[:geometry_unit_cfa_bin]}' and '#{args[:geometry_unit_type]}' with conditioned basement status: '#{has_conditioned_basement}'.")
return false
end
args[:geometry_unit_cfa] = Float(cfa)
Expand Down
Loading