openstudio-standards 0.6.0.rc1 → 0.6.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/standards/test_performance_expected_dd_results.csv +8 -8
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +7 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +46 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +171 -178
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +3 -3
- data/lib/openstudio-standards/utilities/simulation.rb +5 -0
- data/lib/openstudio-standards/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eeae37f1a829d1531a5036352d1a2c63593060c6efbefd3af99dba3daeb46c1a
|
|
4
|
+
data.tar.gz: c5272723e22efb67b5e3d5b99a1db683b1d00e7c92c535d94cd8e0abba7cbc9f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a1f549cfe400b25576b93541d5fadc0d3aad695ea33a10ddea9b4d39a22d841c603da92b8860a3622af478189ea88f5627c1660d6ad764d27fd5bf3047fd3057
|
|
7
|
+
data.tar.gz: 844646771ff16c9e1ecf3b8860c694ae0b36e493651e1399268d47f000917ea7de13487c329f734bbf4468eab9bbf773cd2edda135e43d5a13a8d07e57b92cd8
|
|
@@ -65,17 +65,17 @@ FullServiceRestaurant,90.1-2010,ASHRAE 169-2013-4A,777539613.1023173,0,0,0,0,0,0
|
|
|
65
65
|
FullServiceRestaurant,90.1-2013,ASHRAE 169-2013-4A,755631711.948922,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256687116.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4297953623.6510105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1245911470.5462978,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14136512.169772021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3908703861.4121346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11642346584.45856,0.0,11642346584.45856,504301758.4820919,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,659020530.2483394,0,0,0,0,0,0,0,0,0,18.483544466559202,0,0,0,0,0,0,0,0
|
|
66
66
|
FullServiceRestaurant,90.1-2016,ASHRAE 169-2013-4A,620443829.9347649,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154382256.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4297953623.6510105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1210468758.551721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14136512.169772021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3793374488.949421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11254131588.132673,0.0,11254131588.132673,504409020.65290403,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,658963098.2230852,0,0,0,0,0,0,0,0,0,18.483544466559202,0,0,0,0,0,0,0,0
|
|
67
67
|
FullServiceRestaurant,90.1-2019,ASHRAE 169-2013-4A,597946658.1005332,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154382256.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4184760983.6510096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1198296660.8610497,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14136512.169772021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3750980520.625906,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10948760999.042639,0.0,10948760999.042639,389190069.46910566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,659067338.1652699,0,0,0,0,0,0,0,0,0,18.483544466559202,0,0,0,0,0,0,0,0
|
|
68
|
-
MidriseApartment,90.1-2004,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
69
|
-
MidriseApartment,90.1-2007,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
70
|
-
MidriseApartment,90.1-2010,ASHRAE 169-2013-4A,1264722844.1737761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300960000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4611200599.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
68
|
+
MidriseApartment,90.1-2004,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,822237969.1271257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03033663212866495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3118760026.6748786,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13937338361.958841,0.0,13937338361.958841,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3550002640.5727863,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
69
|
+
MidriseApartment,90.1-2007,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,809000404.0380547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03033663212866495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2528602358.197528,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13333936887.96347,0.0,13333936887.96347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3549996400.143838,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
70
|
+
MidriseApartment,90.1-2010,ASHRAE 169-2013-4A,1264722844.1737761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300960000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4611200599.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,704832644.0873003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.029272188896080235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2295723503.6061645,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12711631630.973076,0.0,12711631630.973076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3534192040.0464287,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
71
71
|
MidriseApartment,90.1-2013,ASHRAE 169-2013-4A,1101038681.645097,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300960000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4607308711.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1256799325.2086463,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.035753887865926565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2744609020.8069496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13144730768.847263,0.0,13144730768.847263,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3113968269.3115425,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
72
72
|
MidriseApartment,90.1-2016,ASHRAE 169-2013-4A,855834791.8498567,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198123000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4607308711.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1182782275.7769496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.035753887865926565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2569744536.0970163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12547808335.214468,0.0,12547808335.214468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3113968259.6156197,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
73
73
|
MidriseApartment,90.1-2019,ASHRAE 169-2013-4A,709501859.475796,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198123000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4607308711.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1162767188.6764462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.035753887865926565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2520799815.662402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12332519761.625237,0.0,12332519761.625237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3113972425.935563,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
74
|
-
HighriseApartment,90.1-2004,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
75
|
-
HighriseApartment,90.1-2007,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
76
|
-
HighriseApartment,90.1-2010,ASHRAE 169-2013-4A,2979275880.92879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9820817101.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170434864.9558134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
77
|
-
HighriseApartment,90.1-2013,ASHRAE 169-2013-4A,2502911158.565948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170319510.47468275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
78
|
-
HighriseApartment,90.1-2016,ASHRAE 169-2013-4A,1931902613.3330522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,900109560.0000012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118479993.45694521,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
74
|
+
HighriseApartment,90.1-2004,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2759561631.1494513,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,535385144.18915427,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5196503967.47089,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8875514542.687614,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,413405499.66227293,0,0,0,0,0,0,0,0,0,19.3778306394734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32406989386.80568,0.0,32406989386.80568,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
75
|
+
HighriseApartment,90.1-2007,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2703997101.9827433,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,524708568.86517787,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4900477910.411963,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8876724591.81084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,407243708.7186346,0,0,0,0,0,0,0,0,0,19.2909489563067,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32039770483.43566,0.0,32039770483.43566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
76
|
+
HighriseApartment,90.1-2010,ASHRAE 169-2013-4A,2979275880.92879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9820817101.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170434864.9558134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345467351.7142277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,478968864.1229158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3576635640.9440866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8051631861.32485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,978219656.8966086,0,0,0,0,0,0,0,0,0,21.611850387905623,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29687851222.10414,0.0,29687851222.10414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
77
|
+
HighriseApartment,90.1-2013,ASHRAE 169-2013-4A,2502911158.565948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170319510.47468275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3813943393.7084503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472222105.5504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4945734316.175122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8916435671.29256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,984248362.8439888,0,0,0,0,0,0,0,0,0,24.03349270191599,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32929186492.63715,0.0,32929186492.63715,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
78
|
+
HighriseApartment,90.1-2016,ASHRAE 169-2013-4A,1931902613.3330522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,900109560.0000012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118479993.45694521,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3603255819.112727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,446176575.3944447,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4703256163.616502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8493315396.990675,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,790543658.4208595,0,0,0,0,0,0,0,0,0,21.72224373776791,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30824011754.3512,0.0,30824011754.3512,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
79
79
|
HighriseApartment,90.1-2019,ASHRAE 169-2013-4A,1610413342.225185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,900109560.0000012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118471681.5553761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3585415380.3169084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,434118898.3026537,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4736283926.267405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8374609000.969961,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,775714827.7673504,0,0,0,0,0,0,0,0,0,21.388790981215433,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30372108591.430824,0.0,30372108591.430824,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
80
80
|
Hospital,90.1-2004,ASHRAE 169-2013-4A,43700141905.51176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1996320000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73851258109.6063,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34067503994.126015,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33103022164.466347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10112571728.238243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46820766045.57834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6532353748.843508,0,0,0,0,0,0,0,0,0,191.02704311998363,0,0,0,0,0,0,0,0,6798818700.137337,0,0,0,0,0,0,0,0,0,2.5291605564510893,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,258704259073.49158,0.0,258704259073.49158,1470040442.5647764,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251462234.41894314,0,0,0,0,0,0,0,0,0,46.80754034926254,0,0,0,0,0,0,0,0
|
|
81
81
|
Hospital,90.1-2007,ASHRAE 169-2013-4A,43700141905.51176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1996320000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66950317309.60635,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33600246624.695667,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32641907550.116947,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9789181478.960934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45212694684.451775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6362012611.503619,0,0,0,0,0,0,0,0,0,185.34140190149392,0,0,0,0,0,0,0,0,7302765350.65984,0,0,0,0,0,0,0,0,0,2.716628710445461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249277725384.5667,0.0,249277725384.5667,1470690632.651906,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251447236.40786576,0,0,0,0,0,0,0,0,0,46.80754034926254,0,0,0,0,0,0,0,0
|
|
@@ -51,8 +51,13 @@ class Standard
|
|
|
51
51
|
htg_coil.setGasBurnerEfficiency(efficiency)
|
|
52
52
|
|
|
53
53
|
# defaults
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if model.version < OpenStudio::VersionString.new('3.7.0')
|
|
55
|
+
htg_coil.setParasiticElectricLoad(0.0)
|
|
56
|
+
htg_coil.setParasiticGasLoad(0.0)
|
|
57
|
+
else
|
|
58
|
+
htg_coil.setOnCycleParasiticElectricLoad(0.0)
|
|
59
|
+
htg_coil.setOffCycleParasiticGasLoad(0.0)
|
|
60
|
+
end
|
|
56
61
|
|
|
57
62
|
return htg_coil
|
|
58
63
|
end
|
|
@@ -1579,9 +1579,54 @@ Standard.class_eval do
|
|
|
1579
1579
|
air_loop_hvac.thermalZones.each do |zone|
|
|
1580
1580
|
next unless OpenstudioStandards::ThermalZone.thermal_zone_residential?(zone)
|
|
1581
1581
|
|
|
1582
|
+
# Exception 3 to 6.5.6.1.1
|
|
1583
|
+
case template
|
|
1584
|
+
when '90.1-2019'
|
|
1585
|
+
case climate_zone
|
|
1586
|
+
when 'ASHRAE 169-2006-0A',
|
|
1587
|
+
'ASHRAE 169-2006-0B',
|
|
1588
|
+
'ASHRAE 169-2006-1A',
|
|
1589
|
+
'ASHRAE 169-2006-1B',
|
|
1590
|
+
'ASHRAE 169-2006-2A',
|
|
1591
|
+
'ASHRAE 169-2006-2B',
|
|
1592
|
+
'ASHRAE 169-2006-3A',
|
|
1593
|
+
'ASHRAE 169-2006-3B',
|
|
1594
|
+
'ASHRAE 169-2006-3C',
|
|
1595
|
+
'ASHRAE 169-2006-4A',
|
|
1596
|
+
'ASHRAE 169-2006-4B',
|
|
1597
|
+
'ASHRAE 169-2006-4C',
|
|
1598
|
+
'ASHRAE 169-2006-5A',
|
|
1599
|
+
'ASHRAE 169-2006-5B',
|
|
1600
|
+
'ASHRAE 169-2006-5C',
|
|
1601
|
+
'ASHRAE 169-2013-0A',
|
|
1602
|
+
'ASHRAE 169-2013-0B',
|
|
1603
|
+
'ASHRAE 169-2013-1A',
|
|
1604
|
+
'ASHRAE 169-2013-1B',
|
|
1605
|
+
'ASHRAE 169-2013-2A',
|
|
1606
|
+
'ASHRAE 169-2013-2B',
|
|
1607
|
+
'ASHRAE 169-2013-3A',
|
|
1608
|
+
'ASHRAE 169-2013-3B',
|
|
1609
|
+
'ASHRAE 169-2013-3C',
|
|
1610
|
+
'ASHRAE 169-2013-4A',
|
|
1611
|
+
'ASHRAE 169-2013-4B',
|
|
1612
|
+
'ASHRAE 169-2013-4C',
|
|
1613
|
+
'ASHRAE 169-2013-5A',
|
|
1614
|
+
'ASHRAE 169-2013-5B',
|
|
1615
|
+
'ASHRAE 169-2013-5C'
|
|
1616
|
+
if zone.floorArea <= OpenStudio.convert(500.0, 'ft^2', 'm^2').get
|
|
1617
|
+
has_erv = false
|
|
1618
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Energy recovery will not be modeled for the ERV serving #{zone.name}.")
|
|
1619
|
+
end
|
|
1620
|
+
end
|
|
1621
|
+
end
|
|
1622
|
+
|
|
1582
1623
|
oa_cfm_per_ft2 = 0.0578940512546562
|
|
1583
1624
|
oa_m3_per_m2 = OpenStudio.convert(OpenStudio.convert(oa_cfm_per_ft2, 'cfm', 'm^3/s').get, '1/ft^2', '1/m^2').get
|
|
1584
|
-
|
|
1625
|
+
if has_erv
|
|
1626
|
+
model_add_residential_erv(model, zone, oa_m3_per_m2)
|
|
1627
|
+
else
|
|
1628
|
+
model_add_residential_ventilator(model, zone, oa_m3_per_m2)
|
|
1629
|
+
end
|
|
1585
1630
|
|
|
1586
1631
|
# Shut-off air loop level OA intake
|
|
1587
1632
|
oa_controller = air_loop_hvac.airLoopHVACOutdoorAirSystem.get.getControllerOutdoorAir
|
|
@@ -5904,6 +5904,177 @@ class Standard
|
|
|
5904
5904
|
return ideal_systems
|
|
5905
5905
|
end
|
|
5906
5906
|
|
|
5907
|
+
# Add a residential ERV: standalone ERV that operates to provide OA,
|
|
5908
|
+
# used in conjuction with a system that having mechanical cooling and a heating coil
|
|
5909
|
+
#
|
|
5910
|
+
# @param model [OpenStudio::Model::Model] OpenStudio Model object
|
|
5911
|
+
# @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
|
|
5912
|
+
# @return [OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator] Standalone ERV
|
|
5913
|
+
def model_add_residential_erv(model,
|
|
5914
|
+
thermal_zone,
|
|
5915
|
+
min_oa_flow_m3_per_s_per_m2 = nil)
|
|
5916
|
+
|
|
5917
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone ERV for #{thermal_zone.name}.")
|
|
5918
|
+
|
|
5919
|
+
# Determine ERR and design basis when energy recovery is required
|
|
5920
|
+
#
|
|
5921
|
+
# enthalpy_recovery_ratio = nil will trigger an ERV with no effectiveness that only provides OA
|
|
5922
|
+
enthalpy_recovery_ratio = nil
|
|
5923
|
+
climate_zone = OpenstudioStandards::Weather.model_get_climate_zone(model)
|
|
5924
|
+
case template
|
|
5925
|
+
when '90.1-2019'
|
|
5926
|
+
search_criteria = {
|
|
5927
|
+
'template' => template,
|
|
5928
|
+
'climate_zone' => climate_zone,
|
|
5929
|
+
'under_8000_hours' => false,
|
|
5930
|
+
'nontransient_dwelling' => true
|
|
5931
|
+
}
|
|
5932
|
+
else
|
|
5933
|
+
search_criteria = {
|
|
5934
|
+
'template' => template,
|
|
5935
|
+
'climate_zone' => climate_zone,
|
|
5936
|
+
'under_8000_hours' => false
|
|
5937
|
+
}
|
|
5938
|
+
end
|
|
5939
|
+
|
|
5940
|
+
erv_enthalpy_recovery_ratio = model_find_object(standards_data['energy_recovery'], search_criteria)
|
|
5941
|
+
|
|
5942
|
+
# Extract ERR from data lookup
|
|
5943
|
+
if !erv_enthalpy_recovery_ratio.nil?
|
|
5944
|
+
if erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio'].nil? & erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].nil?
|
|
5945
|
+
# If not included in the data, an enthalpy
|
|
5946
|
+
# recovery ratio (ERR) of 50% is used
|
|
5947
|
+
enthalpy_recovery_ratio = 0.5
|
|
5948
|
+
case climate_zone
|
|
5949
|
+
when 'ASHRAE 169-2006-6B',
|
|
5950
|
+
'ASHRAE 169-2013-6B',
|
|
5951
|
+
'ASHRAE 169-2006-7A',
|
|
5952
|
+
'ASHRAE 169-2013-7A',
|
|
5953
|
+
'ASHRAE 169-2006-7B',
|
|
5954
|
+
'ASHRAE 169-2013-7B',
|
|
5955
|
+
'ASHRAE 169-2006-8A',
|
|
5956
|
+
'ASHRAE 169-2013-8A',
|
|
5957
|
+
'ASHRAE 169-2006-8B',
|
|
5958
|
+
'ASHRAE 169-2013-8B'
|
|
5959
|
+
design_conditions = 'heating'
|
|
5960
|
+
else
|
|
5961
|
+
design_conditions = 'cooling'
|
|
5962
|
+
end
|
|
5963
|
+
else
|
|
5964
|
+
design_conditions = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].downcase
|
|
5965
|
+
enthalpy_recovery_ratio = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio']
|
|
5966
|
+
end
|
|
5967
|
+
end
|
|
5968
|
+
|
|
5969
|
+
# # Fan power with energy recovery = 0.934 W/cfm
|
|
5970
|
+
supply_fan = create_fan_by_name(model,
|
|
5971
|
+
'ERV_Supply_Fan',
|
|
5972
|
+
fan_name: "#{thermal_zone.name} ERV Supply Fan")
|
|
5973
|
+
exhaust_fan = create_fan_by_name(model,
|
|
5974
|
+
'ERV_Supply_Fan',
|
|
5975
|
+
fan_name: "#{thermal_zone.name} ERV Exhaust Fan")
|
|
5976
|
+
supply_fan.setMotorEfficiency(0.48)
|
|
5977
|
+
exhaust_fan.setMotorEfficiency(0.48)
|
|
5978
|
+
supply_fan.setFanTotalEfficiency(0.303158)
|
|
5979
|
+
exhaust_fan.setFanTotalEfficiency(0.303158)
|
|
5980
|
+
supply_fan.setPressureRise(270.64755)
|
|
5981
|
+
exhaust_fan.setPressureRise(270.64755)
|
|
5982
|
+
|
|
5983
|
+
|
|
5984
|
+
# Create ERV Controller
|
|
5985
|
+
erv_controller = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilatorController.new(model)
|
|
5986
|
+
erv_controller.setName("#{thermal_zone.name} ERV Controller")
|
|
5987
|
+
erv_controller.setControlHighIndoorHumidityBasedonOutdoorHumidityRatio(false)
|
|
5988
|
+
|
|
5989
|
+
# Create heat exchanger
|
|
5990
|
+
heat_exchanger = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
|
|
5991
|
+
heat_exchanger.setName("#{thermal_zone.name} ERV HX")
|
|
5992
|
+
heat_exchanger.setSupplyAirOutletTemperatureControl(false)
|
|
5993
|
+
heat_exchanger.setHeatExchangerType('Rotary')
|
|
5994
|
+
heat_exchanger.setEconomizerLockout(false)
|
|
5995
|
+
heat_exchanger.setFrostControlType('ExhaustOnly')
|
|
5996
|
+
heat_exchanger.setThresholdTemperature(-23.3)
|
|
5997
|
+
heat_exchanger.setInitialDefrostTimeFraction(0.167)
|
|
5998
|
+
heat_exchanger.setRateofDefrostTimeFractionIncrease(1.44)
|
|
5999
|
+
heat_exchanger.setAvailabilitySchedule(model_add_schedule(model, 'Always On - No Design Day'))
|
|
6000
|
+
heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency_enthalpy_recovery_ratio(heat_exchanger, enthalpy_recovery_ratio, design_conditions, climate_zone)
|
|
6001
|
+
|
|
6002
|
+
erv = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
|
|
6003
|
+
erv.setName("#{thermal_zone.name} ERV")
|
|
6004
|
+
|
|
6005
|
+
erv.setController(erv_controller)
|
|
6006
|
+
erv.addToThermalZone(thermal_zone)
|
|
6007
|
+
|
|
6008
|
+
# Set OA requirements; Assumes a default of 55 cfm
|
|
6009
|
+
if min_oa_flow_m3_per_s_per_m2.nil?
|
|
6010
|
+
erv.setSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6011
|
+
erv.setExhaustAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6012
|
+
else
|
|
6013
|
+
erv.setVentilationRateperUnitFloorArea(min_oa_flow_m3_per_s_per_m2)
|
|
6014
|
+
end
|
|
6015
|
+
erv.setVentilationRateperOccupant(0.0)
|
|
6016
|
+
|
|
6017
|
+
# Ensure the ERV takes priority, so ventilation load is included when treated by other zonal systems
|
|
6018
|
+
# From EnergyPlus I/O reference:
|
|
6019
|
+
# "For situations where one or more equipment types has limited capacity or limited control capability, order the
|
|
6020
|
+
# sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
|
|
6021
|
+
# system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
|
|
6022
|
+
# Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
|
|
6023
|
+
# is added to the zone."
|
|
6024
|
+
thermal_zone.setCoolingPriority(erv.to_ModelObject.get, 1)
|
|
6025
|
+
thermal_zone.setHeatingPriority(erv.to_ModelObject.get, 1)
|
|
6026
|
+
|
|
6027
|
+
return erv
|
|
6028
|
+
end
|
|
6029
|
+
|
|
6030
|
+
# Add a residential ventilation: standalone unit ventilation and zone exhaust that operates to provide OA,
|
|
6031
|
+
# used in conjuction with a system that having mechanical cooling and a heating coil
|
|
6032
|
+
#
|
|
6033
|
+
# @param model [OpenStudio::Model::Model] OpenStudio Model object
|
|
6034
|
+
# @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
|
|
6035
|
+
# @return [OpenStudio::Model::ZoneHVACUnitVentilator] Standalone Unit Ventilator
|
|
6036
|
+
def model_add_residential_ventilator(model,
|
|
6037
|
+
thermal_zone,
|
|
6038
|
+
min_oa_flow_m3_per_s_per_m2 = nil)
|
|
6039
|
+
|
|
6040
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone unit ventilator for #{thermal_zone.name}.")
|
|
6041
|
+
|
|
6042
|
+
# Fan power with no energy recovery = 0.806 W/cfm
|
|
6043
|
+
supply_fan = create_fan_by_name(model,
|
|
6044
|
+
'ERV_Supply_Fan',
|
|
6045
|
+
fan_name: "#{thermal_zone.name} Ventilator Supply Fan")
|
|
6046
|
+
supply_fan.setMotorEfficiency(0.48)
|
|
6047
|
+
supply_fan.setFanTotalEfficiency(0.303158)
|
|
6048
|
+
supply_fan.setPressureRise(233.6875)
|
|
6049
|
+
|
|
6050
|
+
unit_ventilator = OpenStudio::Model::ZoneHVACUnitVentilator.new(model, supply_fan)
|
|
6051
|
+
unit_ventilator.setName("#{thermal_zone.name} Unit Ventilator")
|
|
6052
|
+
unit_ventilator.addToThermalZone(thermal_zone)
|
|
6053
|
+
fan_zone_exhaust = create_fan_zone_exhaust(model,
|
|
6054
|
+
fan_name: "#{thermal_zone.name} Exhaust Fan",
|
|
6055
|
+
fan_efficiency: 0.303158,
|
|
6056
|
+
pressure_rise: 233.6875)
|
|
6057
|
+
|
|
6058
|
+
# Set OA requirements; Assumes a default of 55 cfm
|
|
6059
|
+
if min_oa_flow_m3_per_s_per_m2.nil?
|
|
6060
|
+
unit_ventilator.setMaximumSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6061
|
+
fan_zone_exhaust.setMaximumFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6062
|
+
else
|
|
6063
|
+
unit_ventilator.setMaximumSupplyAirFlowRate(min_oa_flow_m3_per_s_per_m2)
|
|
6064
|
+
fan_zone_exhaust.setMaximumFlowRate(min_oa_flow_m3_per_s_per_m2)
|
|
6065
|
+
end
|
|
6066
|
+
|
|
6067
|
+
# Ensure the unit ventilator takes priority, so ventilation load is included when treated by other zonal systems
|
|
6068
|
+
# From EnergyPlus I/O reference:
|
|
6069
|
+
# "For situations where one or more equipment types has limited capacity or limited control capability, order the
|
|
6070
|
+
# sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
|
|
6071
|
+
# system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
|
|
6072
|
+
# Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
|
|
6073
|
+
# is added to the zone."
|
|
6074
|
+
thermal_zone.setCoolingPriority(unit_ventilator.to_ModelObject.get, 1)
|
|
6075
|
+
thermal_zone.setHeatingPriority(unit_ventilator.to_ModelObject.get, 1)
|
|
6076
|
+
end
|
|
6077
|
+
|
|
5907
6078
|
# Adds an exhaust fan to each zone.
|
|
5908
6079
|
#
|
|
5909
6080
|
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
@@ -7295,182 +7466,4 @@ class Standard
|
|
|
7295
7466
|
rename_air_loop_nodes(model)
|
|
7296
7467
|
rename_plant_loop_nodes(model)
|
|
7297
7468
|
end
|
|
7298
|
-
|
|
7299
|
-
# Add a residential ERV: standalone ERV that operates to provide OA,
|
|
7300
|
-
# use in conjuction witha system that having mechanical cooling and
|
|
7301
|
-
# a heating coil
|
|
7302
|
-
#
|
|
7303
|
-
# @param model [OpenStudio::Model::Model] OpenStudio Model object
|
|
7304
|
-
# @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
|
|
7305
|
-
# @param climate_zone [String] Climate zone
|
|
7306
|
-
# @param energy_recovery [Boolean] Indicates if the ERV is to recover energy, if false, only provides OA
|
|
7307
|
-
# @return [OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator] Standalone ERV
|
|
7308
|
-
def model_add_residential_erv(model,
|
|
7309
|
-
thermal_zone,
|
|
7310
|
-
climate_zone,
|
|
7311
|
-
energy_recovery,
|
|
7312
|
-
min_oa_flow_m3_per_s_per_m2 = nil)
|
|
7313
|
-
|
|
7314
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone ERV for #{thermal_zone.name}.")
|
|
7315
|
-
|
|
7316
|
-
# Exception 3 to 6.5.6.1.1
|
|
7317
|
-
case template
|
|
7318
|
-
when '90.1-2019'
|
|
7319
|
-
case climate_zone
|
|
7320
|
-
when 'ASHRAE 169-2006-0A',
|
|
7321
|
-
'ASHRAE 169-2006-0B',
|
|
7322
|
-
'ASHRAE 169-2006-1A',
|
|
7323
|
-
'ASHRAE 169-2006-1B',
|
|
7324
|
-
'ASHRAE 169-2006-2A',
|
|
7325
|
-
'ASHRAE 169-2006-2B',
|
|
7326
|
-
'ASHRAE 169-2006-3A',
|
|
7327
|
-
'ASHRAE 169-2006-3B',
|
|
7328
|
-
'ASHRAE 169-2006-3C',
|
|
7329
|
-
'ASHRAE 169-2006-4A',
|
|
7330
|
-
'ASHRAE 169-2006-4B',
|
|
7331
|
-
'ASHRAE 169-2006-4C',
|
|
7332
|
-
'ASHRAE 169-2006-5A',
|
|
7333
|
-
'ASHRAE 169-2006-5B',
|
|
7334
|
-
'ASHRAE 169-2006-5C',
|
|
7335
|
-
'ASHRAE 169-2013-0A',
|
|
7336
|
-
'ASHRAE 169-2013-0B',
|
|
7337
|
-
'ASHRAE 169-2013-1A',
|
|
7338
|
-
'ASHRAE 169-2013-1B',
|
|
7339
|
-
'ASHRAE 169-2013-2A',
|
|
7340
|
-
'ASHRAE 169-2013-2B',
|
|
7341
|
-
'ASHRAE 169-2013-3A',
|
|
7342
|
-
'ASHRAE 169-2013-3B',
|
|
7343
|
-
'ASHRAE 169-2013-3C',
|
|
7344
|
-
'ASHRAE 169-2013-4A',
|
|
7345
|
-
'ASHRAE 169-2013-4B',
|
|
7346
|
-
'ASHRAE 169-2013-4C',
|
|
7347
|
-
'ASHRAE 169-2013-5A',
|
|
7348
|
-
'ASHRAE 169-2013-5B',
|
|
7349
|
-
'ASHRAE 169-2013-5C'
|
|
7350
|
-
if thermal_zone.floorArea <= OpenStudio.convert(500.0, 'ft^2', 'm^2').get
|
|
7351
|
-
energy_recovery = false
|
|
7352
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Energy recovery will not be modeled for the ERV serving #{thermal_zone.name}.")
|
|
7353
|
-
end
|
|
7354
|
-
end
|
|
7355
|
-
end
|
|
7356
|
-
|
|
7357
|
-
# Determine ERR and design basis when energy recovery is required
|
|
7358
|
-
#
|
|
7359
|
-
# enthalpy_recovery_ratio = nil will trigger an ERV with no effectiveness that only provides OA
|
|
7360
|
-
enthalpy_recovery_ratio = nil
|
|
7361
|
-
if energy_recovery
|
|
7362
|
-
case template
|
|
7363
|
-
when '90.1-2019'
|
|
7364
|
-
search_criteria = {
|
|
7365
|
-
'template' => template,
|
|
7366
|
-
'climate_zone' => climate_zone,
|
|
7367
|
-
'under_8000_hours' => false,
|
|
7368
|
-
'nontransient_dwelling' => true
|
|
7369
|
-
}
|
|
7370
|
-
else
|
|
7371
|
-
search_criteria = {
|
|
7372
|
-
'template' => template,
|
|
7373
|
-
'climate_zone' => climate_zone,
|
|
7374
|
-
'under_8000_hours' => false
|
|
7375
|
-
}
|
|
7376
|
-
end
|
|
7377
|
-
|
|
7378
|
-
erv_enthalpy_recovery_ratio = model_find_object(standards_data['energy_recovery'], search_criteria)
|
|
7379
|
-
|
|
7380
|
-
# Extract ERR from data lookup
|
|
7381
|
-
if !erv_enthalpy_recovery_ratio.nil?
|
|
7382
|
-
if erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio'].nil? & erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].nil?
|
|
7383
|
-
# If not included in the data, an enthalpy
|
|
7384
|
-
# recovery ratio (ERR) of 50% is used
|
|
7385
|
-
enthalpy_recovery_ratio = 0.5
|
|
7386
|
-
case climate_zone
|
|
7387
|
-
when 'ASHRAE 169-2006-6B',
|
|
7388
|
-
'ASHRAE 169-2013-6B',
|
|
7389
|
-
'ASHRAE 169-2006-7A',
|
|
7390
|
-
'ASHRAE 169-2013-7A',
|
|
7391
|
-
'ASHRAE 169-2006-7B',
|
|
7392
|
-
'ASHRAE 169-2013-7B',
|
|
7393
|
-
'ASHRAE 169-2006-8A',
|
|
7394
|
-
'ASHRAE 169-2013-8A',
|
|
7395
|
-
'ASHRAE 169-2006-8B',
|
|
7396
|
-
'ASHRAE 169-2013-8B'
|
|
7397
|
-
design_conditions = 'heating'
|
|
7398
|
-
else
|
|
7399
|
-
design_conditions = 'cooling'
|
|
7400
|
-
end
|
|
7401
|
-
else
|
|
7402
|
-
design_conditions = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].downcase
|
|
7403
|
-
enthalpy_recovery_ratio = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio']
|
|
7404
|
-
end
|
|
7405
|
-
end
|
|
7406
|
-
end
|
|
7407
|
-
|
|
7408
|
-
# Create fans
|
|
7409
|
-
#
|
|
7410
|
-
# Fan power:
|
|
7411
|
-
# No energy recovery = 0.806 W/cfm
|
|
7412
|
-
# Energy recovery = 0.934 W/cfm
|
|
7413
|
-
supply_fan = create_fan_by_name(model,
|
|
7414
|
-
'ERV_Supply_Fan',
|
|
7415
|
-
fan_name: "#{thermal_zone.name} ERV Supply Fan")
|
|
7416
|
-
exhaust_fan = create_fan_by_name(model,
|
|
7417
|
-
'ERV_Supply_Fan',
|
|
7418
|
-
fan_name: "#{thermal_zone.name} ERV Exhaust Fan")
|
|
7419
|
-
supply_fan.setMotorEfficiency(0.48)
|
|
7420
|
-
exhaust_fan.setMotorEfficiency(0.48)
|
|
7421
|
-
supply_fan.setFanTotalEfficiency(0.303158)
|
|
7422
|
-
exhaust_fan.setFanTotalEfficiency(0.303158)
|
|
7423
|
-
if energy_recovery
|
|
7424
|
-
supply_fan.setPressureRise(270.64755)
|
|
7425
|
-
exhaust_fan.setPressureRise(270.64755)
|
|
7426
|
-
else
|
|
7427
|
-
supply_fan.setPressureRise(233.6875)
|
|
7428
|
-
exhaust_fan.setPressureRise(233.6875)
|
|
7429
|
-
end
|
|
7430
|
-
|
|
7431
|
-
# Create ERV Controller
|
|
7432
|
-
erv_controller = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilatorController.new(model)
|
|
7433
|
-
erv_controller.setName("#{thermal_zone.name} ERV Controller")
|
|
7434
|
-
erv_controller.setControlHighIndoorHumidityBasedonOutdoorHumidityRatio(false)
|
|
7435
|
-
|
|
7436
|
-
# Create heat exchanger
|
|
7437
|
-
heat_exchanger = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
|
|
7438
|
-
heat_exchanger.setName("#{thermal_zone.name} ERV HX")
|
|
7439
|
-
heat_exchanger.setSupplyAirOutletTemperatureControl(false)
|
|
7440
|
-
heat_exchanger.setHeatExchangerType('Rotary')
|
|
7441
|
-
heat_exchanger.setEconomizerLockout(false)
|
|
7442
|
-
heat_exchanger.setFrostControlType('ExhaustOnly')
|
|
7443
|
-
heat_exchanger.setThresholdTemperature(-23.3)
|
|
7444
|
-
heat_exchanger.setInitialDefrostTimeFraction(0.167)
|
|
7445
|
-
heat_exchanger.setRateofDefrostTimeFractionIncrease(1.44)
|
|
7446
|
-
heat_exchanger.setAvailabilitySchedule(model_add_schedule(model, 'Always On - No Design Day'))
|
|
7447
|
-
heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency_enthalpy_recovery_ratio(heat_exchanger, enthalpy_recovery_ratio, design_conditions, climate_zone)
|
|
7448
|
-
|
|
7449
|
-
erv = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
|
|
7450
|
-
erv.setName("#{thermal_zone.name} ERV")
|
|
7451
|
-
|
|
7452
|
-
erv.setController(erv_controller)
|
|
7453
|
-
erv.addToThermalZone(thermal_zone)
|
|
7454
|
-
|
|
7455
|
-
# Set OA requirements; Assumes a default of 55 cfm
|
|
7456
|
-
if min_oa_flow_m3_per_s_per_m2.nil?
|
|
7457
|
-
erv.setSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
7458
|
-
erv.setExhaustAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
7459
|
-
else
|
|
7460
|
-
erv.setVentilationRateperUnitFloorArea(min_oa_flow_m3_per_s_per_m2)
|
|
7461
|
-
end
|
|
7462
|
-
erv.setVentilationRateperOccupant(0.0)
|
|
7463
|
-
|
|
7464
|
-
# Ensure the ERV takes priority, so ventilation load is included when treated by other zonal systems
|
|
7465
|
-
# From EnergyPlus I/O reference:
|
|
7466
|
-
# "For situations where one or more equipment types has limited capacity or limited control capability, order the
|
|
7467
|
-
# sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
|
|
7468
|
-
# system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
|
|
7469
|
-
# Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
|
|
7470
|
-
# is added to the zone."
|
|
7471
|
-
thermal_zone.setCoolingPriority(erv.to_ModelObject.get, 1)
|
|
7472
|
-
thermal_zone.setHeatingPriority(erv.to_ModelObject.get, 1)
|
|
7473
|
-
|
|
7474
|
-
return erv
|
|
7475
|
-
end
|
|
7476
7469
|
end
|
|
@@ -541,7 +541,7 @@ class NECB2011
|
|
|
541
541
|
constructions = []
|
|
542
542
|
outdoor_subsurfaces.each { |surface| constructions << surface.construction.get }
|
|
543
543
|
ext_const_base = Hash.new(0)
|
|
544
|
-
constructions.each { |name| ext_const_base[name] += 1 }
|
|
544
|
+
constructions.each { |name| ext_const_base[name.to_Construction.get] += 1 }
|
|
545
545
|
# iterate thought each construction and get store data
|
|
546
546
|
ext_const_base.sort.each do |construction, count|
|
|
547
547
|
construction_info = {}
|
|
@@ -558,7 +558,7 @@ class NECB2011
|
|
|
558
558
|
constructions = []
|
|
559
559
|
outdoor_surfaces.each { |surface| constructions << surface.construction.get }
|
|
560
560
|
ext_const_base = Hash.new(0)
|
|
561
|
-
constructions.each { |name| ext_const_base[name] += 1 }
|
|
561
|
+
constructions.each { |name| ext_const_base[name.to_Construction.get] += 1 }
|
|
562
562
|
# iterate thought each construction and get store data
|
|
563
563
|
ext_const_base.sort.each do |construction, count|
|
|
564
564
|
construction_info = {}
|
|
@@ -575,7 +575,7 @@ class NECB2011
|
|
|
575
575
|
constructions = []
|
|
576
576
|
ground_surfaces.each { |surface| constructions << surface.construction.get }
|
|
577
577
|
ext_const_base = Hash.new(0)
|
|
578
|
-
constructions.each { |name| ext_const_base[name] += 1 }
|
|
578
|
+
constructions.each { |name| ext_const_base[name.to_Construction.get] += 1 }
|
|
579
579
|
# iterate thought each construction and get store data
|
|
580
580
|
ext_const_base.sort.each do |construction, count|
|
|
581
581
|
construction_info = {}
|
|
@@ -193,6 +193,11 @@ Standard.class_eval do
|
|
|
193
193
|
sim_control.setDoHVACSizingSimulationforSizingPeriods(true)
|
|
194
194
|
sim_control.setMaximumNumberofHVACSizingSimulationPasses(1)
|
|
195
195
|
end
|
|
196
|
+
if model.version >= OpenStudio::VersionString.new('3.8.0')
|
|
197
|
+
sim_control.setDoZoneSizingCalculation(true)
|
|
198
|
+
sim_control.setDoSystemSizingCalculation(true)
|
|
199
|
+
sim_control.setDoPlantSizingCalculation(true)
|
|
200
|
+
end
|
|
196
201
|
|
|
197
202
|
# check that all zones have surfaces.
|
|
198
203
|
raise 'Error: Sizing Run Failed. Thermal Zones with no surfaces exist.' unless model_do_all_zones_have_surfaces?(model)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openstudio-standards
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.0.
|
|
4
|
+
version: 0.6.0.rc2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Adams
|
|
@@ -39,7 +39,7 @@ authors:
|
|
|
39
39
|
autorequire:
|
|
40
40
|
bindir: bin
|
|
41
41
|
cert_chain: []
|
|
42
|
-
date: 2024-04-
|
|
42
|
+
date: 2024-04-19 00:00:00.000000000 Z
|
|
43
43
|
dependencies:
|
|
44
44
|
- !ruby/object:Gem::Dependency
|
|
45
45
|
name: minitest-reporters
|