Exemplo n.º 1
0
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
Exemplo n.º 2
0
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']
Exemplo n.º 3
0
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)
Exemplo n.º 4
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_