Fine tuning the idf export

This commit is contained in:
Soroush Samareh Abolhassani 2021-08-11 16:16:15 -04:00
parent 92d35d8c8a
commit cab4df33db
2 changed files with 14 additions and 7 deletions

View File

@ -68,7 +68,7 @@ class ExportsFactory:
:return: :return:
""" """
# todo: this need to be generalized # todo: this need to be generalized
data_path = Path('./test/data').resolve() data_path = Path('../libs_Final/tests/tests_data').resolve()
return Idf(self._city, self._path, (data_path / f'minimal.idf').resolve(), (data_path / f'energy+.idd').resolve(), return Idf(self._city, self._path, (data_path / f'minimal.idf').resolve(), (data_path / f'energy+.idd').resolve(),
(data_path / f'montreal.epw').resolve()) (data_path / f'montreal.epw').resolve())

View File

@ -4,7 +4,7 @@ SPDX - License - Identifier: LGPL - 3.0 - or -later
Copyright © 2020 Project Author Soroush Samareh Abolhassani - soroush.samarehabolhassani@mail.concordia.ca Copyright © 2020 Project Author Soroush Samareh Abolhassani - soroush.samarehabolhassani@mail.concordia.ca
""" """
from geomeppy import IDF from geomeppy import IDF
from pathlib import Path
class Idf: class Idf:
_THERMOSTAT = 'HVACTEMPLATE:THERMOSTAT' _THERMOSTAT = 'HVACTEMPLATE:THERMOSTAT'
_IDEAL_LOAD_AIR_SYSTEM = 'HVACTEMPLATE:ZONE:IDEALLOADSAIRSYSTEM' _IDEAL_LOAD_AIR_SYSTEM = 'HVACTEMPLATE:ZONE:IDEALLOADSAIRSYSTEM'
@ -34,12 +34,14 @@ class Idf:
def __init__(self, city, output_path, idf_file_path, idd_file_path, epw_file_path): def __init__(self, city, output_path, idf_file_path, idd_file_path, epw_file_path):
self._city = city self._city = city
self._output_path = str(output_path) self._output_path = str(output_path.resolve())
print(self._output_path)
self._idd_file_path = str(idd_file_path) self._idd_file_path = str(idd_file_path)
self._idf_file_path = str(idf_file_path) self._idf_file_path = str(idf_file_path)
self._epw_file_path = str(epw_file_path) self._epw_file_path = str(epw_file_path)
IDF.setiddname(self._idd_file_path) IDF.setiddname(self._idd_file_path)
self._idf = IDF(self._idf_file_path, self._epw_file_path) self._idf = IDF(self._idf_file_path, self._epw_file_path)
self._export()
@staticmethod @staticmethod
def _matrix_to_list(points): def _matrix_to_list(points):
@ -87,7 +89,7 @@ class Idf:
) )
def _add_schedule(self, usage_zone, schedule_type): def _add_schedule(self, usage_zone, schedule_type):
for schedule in self._idf.idfobjects[schedule_type]: for schedule in self._idf.idfobjects[self._HOURLY_SCHEDULE]:
if schedule.Name == f'{schedule_type} schedules {usage_zone.usage}': if schedule.Name == f'{schedule_type} schedules {usage_zone.usage}':
return return
schedule = self._idf.newidfobject(self._HOURLY_SCHEDULE) schedule = self._idf.newidfobject(self._HOURLY_SCHEDULE)
@ -123,6 +125,7 @@ class Idf:
for construction in self._idf.idfobjects[self._CONSTRUCTION]: for construction in self._idf.idfobjects[self._CONSTRUCTION]:
if construction.Name == thermal_boundary.construction_name: if construction.Name == thermal_boundary.construction_name:
return return
for layer in thermal_boundary.layers: for layer in thermal_boundary.layers:
self._add_material(layer) self._add_material(layer)
layers = thermal_boundary.layers layers = thermal_boundary.layers
@ -191,24 +194,28 @@ class Idf:
Velocity_Squared_Term_Coefficient=0.0000000E+00 # todo: change it from usage catalog Velocity_Squared_Term_Coefficient=0.0000000E+00 # todo: change it from usage catalog
) )
def export(self, city, export_type="Surfaces"): def _export(self, export_type="Surfaces"):
""" """
Export the idf file into the given path Export the idf file into the given path
export type = "Surfaces|Block" export type = "Surfaces|Block"
""" """
for building in city.buildings: print("called")
for building in self._city.buildings:
print('add building')
for usage_zone in building.usage_zones: for usage_zone in building.usage_zones:
self._add_schedule(usage_zone, "Infiltration") self._add_schedule(usage_zone, "Infiltration")
self._add_schedule(usage_zone, "Lights") self._add_schedule(usage_zone, "Lights")
self._add_schedule(usage_zone, "Occupancy") self._add_schedule(usage_zone, "Occupancy")
self._add_zone(usage_zone) self._add_zone(usage_zone)
self._add_heating_system(usage_zone) self._add_heating_system(usage_zone)
self._add_equipment(usage_zone)
self._add_construction(usage_zone) self._add_construction(usage_zone)
print('zone construction')
print('add surfaces')
if export_type == "Surfaces": if export_type == "Surfaces":
self._add_surfaces(building) self._add_surfaces(building)
else: else:
self._add_block(building) self._add_block(building)
print(' =out path', str(self._output_path))
self._idf.saveas(str(self._output_path)) self._idf.saveas(str(self._output_path))
def _add_block(self, building): def _add_block(self, building):