From e8840de5a63a6977f823fb171f0fc5cbb90be4dd Mon Sep 17 00:00:00 2001 From: Guille Date: Mon, 26 Oct 2020 13:47:10 -0400 Subject: [PATCH] Idf blocks connection --- helpers/idf_helper.py | 28 +++++++++------ tests/test_idf.py | 83 ++----------------------------------------- 2 files changed, 19 insertions(+), 92 deletions(-) diff --git a/helpers/idf_helper.py b/helpers/idf_helper.py index b2bbef3d..009cb4fc 100644 --- a/helpers/idf_helper.py +++ b/helpers/idf_helper.py @@ -15,15 +15,13 @@ class IdfHelper: 'Roof': 'roof' } - def __init__(self, idf_file_path, idd_file_path, epw_file_path, eso_file_path): + def __init__(self, idf_file_path, idd_file_path, epw_file_path): self._idd_file_path = str(idd_file_path) self._idf_file_path = str(idf_file_path) self._epw_file_path = str(epw_file_path) - self._eso_file_path = str(eso_file_path) - IDF.setiddname(self._idd_file_path, testing=True) + IDF.setiddname(self._idd_file_path) self._idf = IDF(self._idf_file_path, self._epw_file_path) self._idf.epw = self._epw_file_path - self._eso_file_path = str((Path.cwd() / 'eplusout.eso').resolve()) def add_zone(self, building_name): @@ -83,17 +81,25 @@ class IdfHelper: self._idf.translate_to_origin() if display_render: self._idf.view_model() - else: + # else: # self._idf.to_obj('ep_outputs/city.obj') # Run - # self._idf.newidfobject("OUTPUT:METER", Key_Name="Heating:DistrictHeating", Reporting_Frequency="hourly") - # self._idf.newidfobject("OUTPUT:METER", Key_Name="Cooling:DistrictCooling", Reporting_Frequency="hourly" ) + self._idf.newidfobject("OUTPUT:METER", Key_Name="Heating:DistrictHeating", Reporting_Frequency="hourly") + self._idf.newidfobject("OUTPUT:METER", Key_Name="Cooling:DistrictCooling", Reporting_Frequency="hourly" ) + print('**************************************************') self._idf.run(output_directory=output_directory) - """ - dd, data = esoreader.read(self._eso_file_path) + + @staticmethod + def read_eso(eso_path): + print('**************************************************') + dd, data = esoreader.read(str(eso_path)) + + print(data) + list_values = [v for v in data.values()] heating = [(float(x)) / 3600000.0 for x in list_values[0]] cooling = [(float(x)) / 3600000.0 for x in list_values[1]] - print("text") + print(heating) + print(cooling) return heating, cooling - """ + diff --git a/tests/test_idf.py b/tests/test_idf.py index 3ba3c1e4..1af28c97 100644 --- a/tests/test_idf.py +++ b/tests/test_idf.py @@ -34,7 +34,7 @@ class TestIdf(TestCase): idd_file_path = (self._example_path / 'energy+.idd').resolve() idf_file_path = (self._example_path / 'minimal.idf').resolve() epw_file_path = (self._example_path / 'montreal.epw').resolve() - _idf = IdfHelper(idf_file_path, idd_file_path, epw_file_path, self._example_path) + _idf = IdfHelper(idf_file_path, idd_file_path, epw_file_path) city = self._get_citygml() for building in city.buildings: _idf.add_block(building) @@ -44,85 +44,6 @@ class TestIdf(TestCase): # _idf.add_surface(surface, building.name) _idf.run(output_directory="ep_outputs") + IdfHelper.read_eso((Path(__file__).parent / 'ep_outputs/eplusout.eso')) self.assertTrue(True) - def test_tutorial_1(self): - idd_file_path = (self._example_path / 'energy+.idd').resolve() - idf_file_path = (self._example_path / 'minimal.idf').resolve() - epw_file_path = (self._example_path / 'montreal.epw').resolve() - IDF.setiddname(str(idd_file_path), testing=True) - idf = IDF(str(idf_file_path)) - idf.epw = str(epw_file_path) - idf.add_block( - name="Boring hut", coordinates=[(10, 0), (10, 10), (0, 10), (0, 0)], height=3.5 - ) - idf.intersect_match() - idf.set_wwr(0.6, construction="Project External Window") - idf.set_default_constructions() - idf.to_obj("boring_hut.obj") - idf.run(output_directory="tests") - - def test_tutorial_2(self): - IDF.setiddname("C:/EnergyPlusV9-1-0/Energy+.idd", testing=True) - idf = IDF("C:/EnergyPlusV9-1-0/ExampleFiles/Minimal.idf") - idf.epw = "USA_CO_Golden-NREL.724666_TMY3.epw" - idf.add_block( - name="Two storey", - coordinates=[(10, 0), (10, 5), (0, 5), (0, 0)], - height=6, - num_stories=2, - ) - idf.add_block( - name="One storey", coordinates=[(10, 5), (10, 10), (0, 10), (0, 5)], height=3 - ) - idf.intersect_match() - idf.set_default_constructions() - # add a heating system - stat = idf.newidfobject( - "HVACTEMPLATE:THERMOSTAT", - Name="Zone Stat", - Constant_Heating_Setpoint=20, - Constant_Cooling_Setpoint=25, - ) - for zone in idf.idfobjects["ZONE"]: - idf.newidfobject( - "HVACTEMPLATE:ZONE:IDEALLOADSAIRSYSTEM", - Zone_Name=zone.Name, - Template_Thermostat_Name=stat.Name, - ) - # add some output variables - idf.newidfobject( - "OUTPUT:VARIABLE", - Variable_Name="Zone Ideal Loads Supply Air Total Heating Energy", - Reporting_Frequency="Hourly", - ) - idf.newidfobject( - "OUTPUT:VARIABLE", - Variable_Name="Zone Ideal Loads Supply Air Total Cooling Energy", - Reporting_Frequency="Hourly", - ) - # run a set of simulations, moving glazing from mostly on the South facade, to mostly on the North facade - north_wwr = [i / 10 for i in range(1, 10)] - south_wwr = [1 - wwr for wwr in north_wwr] - for north, south in zip(north_wwr, south_wwr): - idf.set_wwr(north, construction="Project External Window", orientation="north") - idf.set_wwr(south, construction="Project External Window", orientation="south") - idf.run( - output_prefix=f"{north}_{south}_", - output_directory="tests/tutorial", - expandobjects=True, - verbose="q", - ) - results = [] - for north, south in zip(north_wwr, south_wwr): - eso = ESO(f"tests/tutorial/{north}_{south}_out.eso") - heat = eso.total_kwh("Zone Ideal Loads Supply Air Total Heating Energy") - cool = eso.total_kwh("Zone Ideal Loads Supply Air Total Cooling Energy") - results.append([north, south, heat, cool, heat + cool]) - # print out the results - headers = ["WWR-N", "WWR-S", "Heat", "Cool", "Total"] - header_format = "{:>10}" * (len(headers)) - print(header_format.format(*headers)) - row_format = "{:>10.1f}" * (len(headers)) - for row in results: - print(row_format.format(*row)) \ No newline at end of file