def test_sqlite_component_sizing(): """Test the properties and methods related to component sizes.""" sql_path = './tests/assets/sql/eplusout_hourly.sql' sql_obj = SQLiteResult(sql_path) comp_sizes = sql_obj.component_sizes comp_size_type = sql_obj.component_sizes_by_type( 'ZoneHVAC:IdealLoadsAirSystem') comp_types = sql_obj.component_types assert len(comp_sizes) == 7 assert len(comp_size_type) == 7 assert comp_types == ['ZoneHVAC:IdealLoadsAirSystem'] for size_obj in comp_sizes: assert isinstance(size_obj, ComponentSize) assert size_obj.component_type == 'ZoneHVAC:IdealLoadsAirSystem' assert isinstance(size_obj.component_name, str) assert all(isinstance(desc, str) for desc in size_obj.descriptions) assert all(isinstance(prop, str) for prop in size_obj.properties) assert all(isinstance(val, float) for val in size_obj.values) assert all(isinstance(unit, str) for unit in size_obj.units) assert isinstance(size_obj.properties_dict, dict) assert len(size_obj.properties_dict) == 4 size_dict = size_obj.to_dict() new_size = ComponentSize.from_dict(size_dict) assert new_size.to_dict() == size_dict
def test_sqlite_sizing_odd(): """Test the properties and methods related to zone sizes with an odd SQL file.""" sql_path = './tests/assets/sql/eplusout_odd_zonesize.sql' sql_obj = SQLiteResult(sql_path) cool_sizes = sql_obj.zone_cooling_sizes heat_sizes = sql_obj.zone_heating_sizes assert len(cool_sizes) == 2 assert len(heat_sizes) == 2 comp_sizes = sql_obj.component_sizes comp_size_type = sql_obj.component_sizes_by_type( 'ZoneHVAC:IdealLoadsAirSystem') comp_types = sql_obj.component_types assert len(comp_sizes) == 2 assert len(comp_size_type) == 2 assert comp_types == ['ZoneHVAC:IdealLoadsAirSystem']
def component_sizes(result_sql, component_type, output_file): """Get a list of ComponentSize JSONs. \b Args: result_sql: Full path to an SQLite file that was generated by EnergyPlus. """ try: sql_obj = SQLiteResult(result_sql) comp_sizes = [] if component_type is None or component_type == '' or component_type == 'None': for comp_size in sql_obj.component_sizes: comp_sizes.append(comp_size.to_dict()) else: for comp_size in sql_obj.component_sizes_by_type(component_type): comp_sizes.append(comp_size.to_dict()) output_file.write(json.dumps(comp_sizes)) except Exception as e: _logger.exception('Failed to retrieve component sizes from sql.\n{}'.format(e)) sys.exit(1) else: sys.exit(0)
zone_names = [] zone_peak_cool = [] zone_peak_heat = [] comp_properties_mtx = [] comp_values_mtx = [] if os.name == 'nt': # we are on windows; use IronPython like usual sql_obj = SQLiteResult(_sql) # create the SQL result parsing object zone_cooling_sizes = sql_obj.zone_cooling_sizes zone_heating_sizes = sql_obj.zone_heating_sizes if comp_type_ is None: comp_types = sql_obj.component_types component_sizes = sql_obj.component_sizes else: comp_types = comp_type_ component_sizes = sql_obj.component_sizes_by_type(comp_type_) else: # we are on Mac; sqlite3 module doesn't work in Mac IronPython # Execute the honybee CLI to obtain the zone sizes via CPython cmds = [folders.python_exe_path, '-m', 'honeybee_energy', 'result', 'zone-sizes', _sql] process = subprocess.Popen(cmds, stdout=subprocess.PIPE) stdout = process.communicate() zone_size_dicts = json.loads(stdout[0]) zone_cooling_sizes = [ZoneSize.from_dict(zs) for zs in zone_size_dicts['cooling']] zone_heating_sizes = [ZoneSize.from_dict(zs) for zs in zone_size_dicts['heating']] # Execute the honybee CLI to obtain the component sizes via CPython cmds = [folders.python_exe_path, '-m', 'honeybee_energy', 'result', 'component-sizes', _sql] if comp_type_ is not None: comp_types = comp_type_