diff --git a/bpeng/ecm/weatherstripping.py b/bpeng/ecm/weatherstripping.py new file mode 100644 index 0000000000000000000000000000000000000000..93b7a079e0f08ba6e979b3aa8feb40d53b096806 --- /dev/null +++ b/bpeng/ecm/weatherstripping.py @@ -0,0 +1,82 @@ +""" +Calculate the savings from Weatherstripping + +""" + +import pandas as pd + + +def weatherstripping_window_doors(weather, hs_overall_eff, fuel_price, cost, + T_indoor, existing_air_leakage_rating, + proposed_air_leakage_rating): + + weather_data = pd.DataFrame(weather, index=[0]) + heating_season = weather_data[[ + 'JAN', 'FEB', 'MAR', 'APR', 'OCT', 'NOV', 'DEC' + ]] + df2 = heating_season.T + + density_air = 0.0765 # lb/(cu ft) + capacity_air = 0.24 # btu/lb F + + inflitration_reduce = existing_air_leakage_rating - proposed_air_leakage_rating + df2['monthly loss'] = '' + + for i in range(len(df2)): + df2['monthly loss'][i] = inflitration_reduce * ( + 60 * 24 * 30.5) * density_air * capacity_air * ( + T_indoor - df2[0][i]) + + annual_loss = (sum(df2['monthly loss']) / 1000000) # MMBTU + annual_saving = (annual_loss / hs_overall_eff * fuel_price) + payback = (cost / annual_saving) + + # print('Annual heating demand reduction per sq ft (kBtu):', + # annual_loss) + # print('Savings/yr($):', round(annual_saving, 2)) + # print('Simple payback:', round(payback, 2)) + + return annual_loss, annual_saving, payback + + +def weatherstripping_ac(weather, hs_overall_eff, fuel_price, estimated_costs, T_indoor): + + """ + the function is to calcuate the savings for a single weatherstripped AC unit + + Assumptions: + weather data for the average monthly temperature in New York + Air density = 0.0765 #lb/(cu ft) + Heat capacity of Air = 0.24 # btu/lb F + Air flow rate reduction for eache weatherstripped AC = 13 cfm - from the SWA study + """ + + weather_data = pd.DataFrame(weather, index=[0]) + heating_season = weather_data[[ + 'JAN', 'FEB', 'MAR', 'APR', 'OCT', 'NOV', 'DEC' + ]] + df2 = heating_season.T + + density_air = 0.0765 + capacity_air = 0.24 + + df2['air flow rate'] = '' + df2['monthly loss'] = '' + + for i in range(len(df2)): + + df2['air flow rate'][i] = 13 + df2['monthly loss'][i] = df2['air flow rate'][i] * ( + 60 * 24 * 30.5) * density_air * capacity_air * ( + T_indoor - df2[0][i]) + + annual_loss = sum(df2['monthly loss']) / 1000000 # MMBTU + annual_saving = annual_loss / hs_overall_eff * fuel_price # $ + payback = estimated_costs / annual_saving # simple payback + + # print('Annual heating demand reduction (MMBtu):', round( + # annual_loss, 2)) + # print('Savings/yr($):', round(annual_saving, 2)) + # print('Simple payback:', round(payback, 2)) + + return annual_loss, annual_saving, payback diff --git a/bpeng/tests/test_ecmsavings.py b/bpeng/tests/test_ecmsavings.py new file mode 100644 index 0000000000000000000000000000000000000000..b0b29d1ecd20f73065c0bed44cd36e103a2a648f --- /dev/null +++ b/bpeng/tests/test_ecmsavings.py @@ -0,0 +1,67 @@ +from bpeng.ecm.weatherstripping import weatherstripping_ac, weatherstripping_window_doors + + +""" +The overall efficiency of Heating system should be paased from utility bill and energy plus simulation result +The default value is listing below: + +heating_system_overall_eff = float(0.5) +fuel_price = 12 + +Estimated costs for install a single window weahterstripping(3'*6') - for $48 + +window_weatherstripping_costs = 48 +single_window_area = 18 +existing_air_leakage_rating_window = 0.6 #cfm/sq ft +proposed_air_leakage_rating_window = 0.25 # cfm/ sq ft + +""" + +avg_temp = { + "JAN": 32.9, + "FEB": 34.7, + "MAR": 42.8, + "APR": 52.7, + "MAY": 62.6, + "JUN": 71.6, + "JUL": 76.1, + "AUG": 75.2, + "SEP": 77.0, + "OCT": 57.2, + "NOV": 47.3, + "DEC": 37.4 + } + +T_indoor = 75 # F +ac_weatherstripping_costs = 25 # $ +hs_overall_eff = 0.5 +fuel_price = 12 # per MMBTU + +""" weatherstripping for windows """ +window_costs = 2.8 # $/ sq ft +existing_air_leakage_rating_window = 0.6 # cfm/ sq ft +proposed_air_leakage_rating_window = 0.25 # cfm/ sq ft + +""" weatherstripping for exterior door """ +door_costs = 3 # $/ sq ft +existing_air_leakage_rating_door = 0.8 # cfm/ sq ft# +proposed_air_leakage_rating_door = 0.45 # cfm/ sq ft + + +def test_weatherstripping(): + + result_ac = weatherstripping_ac(avg_temp, hs_overall_eff, fuel_price, ac_weatherstripping_costs, T_indoor) + + result_window = weatherstripping_window_doors(avg_temp, hs_overall_eff, fuel_price, + window_costs, T_indoor, + existing_air_leakage_rating_window, + proposed_air_leakage_rating_window) + + result_door = weatherstripping_window_doors(avg_temp, hs_overall_eff, fuel_price, + door_costs, T_indoor, + existing_air_leakage_rating_door, + proposed_air_leakage_rating_door) + + print('weatherstripping AC', result_ac) + print('weatherstripping windows', result_window) + print('weatherstripping door', result_door)