@@ -105,6 +105,16 @@ def test_resnet_dx_ac_and_hp
105105 5 => [ 2541.1 , 7535.3 , 7531.5 ] ,
106106 -20 => [ 1585.7 , 4536.7 , 4496.8 ] ,
107107 }
108+ # Cooling indoor temps
109+ indoor_t_clg = [ 57.0 , HVAC ::AirSourceCoolRatedIWB , 72.0 ]
110+ # Heating coefficients to introduce indoor sensitivity
111+ cool_cap_ft_spec = [ 3.717717741 , -0.09918866 , 0.000964488 , 0.005887776 , -0.000012808 , -0.000132822 ]
112+ cool_eir_ft_spec = [ -3.400341169 , 0.135184783 , -0.001037932 , -0.007852322 , 0.000183438 , -0.000142548 ]
113+ # Heating indoor temps
114+ indoor_t_htg = [ 60.0 , HVAC ::AirSourceHeatRatedIDB , 80.0 ]
115+ # Heating coefficients to introduce indoor sensitivity
116+ heat_cap_ft_spec = [ 0.568706266 , -0.000747282 , -0.0000103432 , 0.00945408 , 0.000050812 , -0.00000677828 ]
117+ heat_eir_ft_spec = [ 0.722917608 , 0.003520184 , 0.000143097 , -0.005760341 , 0.000141736 , -0.000216676 ]
108118
109119 # Check cooling coil
110120 assert_equal ( 1 , model . getCoilCoolingDXMultiSpeeds . size )
@@ -117,12 +127,32 @@ def test_resnet_dx_ac_and_hp
117127 cops . each_with_index do |cop , i |
118128 eir_adj = _get_table_lookup_factor ( clg_coil . stages [ i ] . energyInputRatioFunctionofTemperatureCurve , HVAC ::AirSourceCoolRatedIWB , odb )
119129 assert_in_epsilon ( cop , 1.0 / eir_adj * clg_coil . stages [ i ] . grossRatedCoolingCOP , tol )
130+ # Indoor sensitivity test
131+ indoor_t_clg . each do |indoor_t |
132+ # Indoor + outdoor impact from table lookup
133+ eir_adj_indoor = _get_table_lookup_factor ( clg_coil . stages [ i ] . energyInputRatioFunctionofTemperatureCurve , indoor_t , odb )
134+ # Indoor impact
135+ odb_indoor = [ odb , 75.0 ] . max
136+ eir_correction_factor = MathTools . biquadratic ( indoor_t , odb_indoor , cool_eir_ft_spec ) / MathTools . biquadratic ( HVAC ::AirSourceCoolRatedIWB , odb_indoor , cool_eir_ft_spec )
137+ # eir_correction_factor * eir_adj = eir_adj_indoor
138+ assert_in_epsilon ( cop / eir_correction_factor , 1.0 / eir_adj_indoor * clg_coil . stages [ i ] . grossRatedCoolingCOP , tol )
139+ end
120140 end
121141 end
122142 expected_clg_capacities . each do |odb , capacities |
123143 capacities . each_with_index do |capacity , i |
124144 cap_adj = _get_table_lookup_factor ( clg_coil . stages [ i ] . totalCoolingCapacityFunctionofTemperatureCurve , HVAC ::AirSourceCoolRatedIWB , odb )
125145 assert_in_epsilon ( capacity , cap_adj * UnitConversions . convert ( clg_coil . stages [ i ] . grossRatedTotalCoolingCapacity . get , 'W' , 'Btu/hr' ) , tol )
146+ # Indoor sensitivity test
147+ indoor_t_clg . each do |indoor_t |
148+ # Indoor + outdoor impact from table lookup
149+ cap_adj_indoor = _get_table_lookup_factor ( clg_coil . stages [ i ] . totalCoolingCapacityFunctionofTemperatureCurve , indoor_t , odb )
150+ # Indoor impact
151+ odb_indoor = [ odb , 75.0 ] . max
152+ cap_correction_factor = MathTools . biquadratic ( indoor_t , odb_indoor , cool_cap_ft_spec ) / MathTools . biquadratic ( HVAC ::AirSourceCoolRatedIWB , odb_indoor , cool_cap_ft_spec )
153+ # cap_correction_factor * cap_adj = cap_adj_indoor
154+ assert_in_epsilon ( capacity * cap_correction_factor , cap_adj_indoor * UnitConversions . convert ( clg_coil . stages [ i ] . grossRatedTotalCoolingCapacity . get , 'W' , 'Btu/hr' ) , tol )
155+ end
126156 end
127157 end
128158 clg_coil . stages . each do |stage |
@@ -140,12 +170,29 @@ def test_resnet_dx_ac_and_hp
140170 cops . each_with_index do |cop , i |
141171 eir_adj = _get_table_lookup_factor ( htg_coil . stages [ i ] . energyInputRatioFunctionofTemperatureCurve , HVAC ::AirSourceHeatRatedIDB , odb )
142172 assert_in_epsilon ( cop , 1.0 / eir_adj * htg_coil . stages [ i ] . grossRatedHeatingCOP , tol )
173+ # Indoor sensitivity test
174+ indoor_t_htg . each do |indoor_t |
175+ # Indoor + outdoor impact from table lookup
176+ eir_adj_indoor = _get_table_lookup_factor ( htg_coil . stages [ i ] . energyInputRatioFunctionofTemperatureCurve , indoor_t , odb )
177+ eir_correction_factor = MathTools . biquadratic ( indoor_t , odb , heat_eir_ft_spec ) / MathTools . biquadratic ( HVAC ::AirSourceHeatRatedIDB , odb , heat_eir_ft_spec )
178+ # eir_correction_factor * eir_adj = eir_adj_indoor
179+ assert_in_epsilon ( cop / eir_correction_factor , 1.0 / eir_adj_indoor * htg_coil . stages [ i ] . grossRatedHeatingCOP , tol )
180+ end
143181 end
144182 end
145183 expected_htg_capacities . each do |odb , capacities |
146184 capacities . each_with_index do |capacity , i |
147185 cap_adj = _get_table_lookup_factor ( htg_coil . stages [ i ] . heatingCapacityFunctionofTemperatureCurve , HVAC ::AirSourceHeatRatedIDB , odb )
148186 assert_in_epsilon ( capacity , cap_adj * UnitConversions . convert ( htg_coil . stages [ i ] . grossRatedHeatingCapacity . get , 'W' , 'Btu/hr' ) , tol )
187+ # Indoor sensitivity test
188+ indoor_t_htg . each do |indoor_t |
189+ # Indoor + outdoor impact from table lookup
190+ cap_adj_indoor = _get_table_lookup_factor ( htg_coil . stages [ i ] . heatingCapacityFunctionofTemperatureCurve , indoor_t , odb )
191+ # Indoor impact
192+ cap_correction_factor = MathTools . biquadratic ( indoor_t , odb , heat_cap_ft_spec ) / MathTools . biquadratic ( HVAC ::AirSourceHeatRatedIDB , odb , heat_cap_ft_spec )
193+ # cap_correction_factor * cap_adj = cap_adj_indoor
194+ assert_in_epsilon ( capacity * cap_correction_factor , cap_adj_indoor * UnitConversions . convert ( htg_coil . stages [ i ] . grossRatedHeatingCapacity . get , 'W' , 'Btu/hr' ) , tol )
195+ end
149196 end
150197 end
151198
0 commit comments