Beispiel #1
0
        region_selection = read_data.get_region_selection(
            os.path.join(
                data['local_paths']['local_path_datafolder'],
                "region_definitions",
                config['CRITERIA']['reg_selection_csv_name']))
        #region_selection = ['E02003237', 'E02003238']

        setattr(data['assumptions'], 'reg_nrs', len(region_selection))
    else:
        region_selection = data['regions']

    # -------------------------------------------
    # Create .ini file with simulation information
    # -------------------------------------------
    write_data.write_simulation_inifile(
        path_new_scenario,
        data,
        region_selection)

    # Write population data to file
    for sim_yr in data['assumptions'].sim_yrs:
        write_data.write_scenaric_population_data(
            sim_yr,
            os.path.join(path_new_scenario, 'model_run_pop'),
            list(data['scenario_data']['population'][sim_yr].values()))

    # -----------------------
    # Main model run function
    # -----------------------
    for sim_yr in data['assumptions'].sim_yrs:

        print("Local simulation for year:  " + str(sim_yr))
def load_data_before_simulation(data, sim_yrs, config, curr_yr):
    # ---------
    # Configuration
    # -----------
    base_yr = config['CONFIG']['base_yr']
    weather_yr_scenario = config['CONFIG']['weather_yr_scenario']
    path_new_scenario = config['PATHS']['path_new_scenario']

    data['data_path'] = os.path.normpath(config['PATHS']['path_local_data'])
    data['processed_path'] = os.path.normpath(
        config['PATHS']['path_processed_data'])
    data['result_path'] = os.path.normpath(config['PATHS']['path_result_data'])
    data['paths'] = config['CONFIG_DATA']

    # Downloaded (FTP) data
    data['local_paths'] = config['DATA_PATHS']

    # ------------------------------------------------
    # Load Inputs
    # ------------------------------------------------
    data['enduses'], data['sectors'], data['fuels'], lookup_enduses, \
        lookup_sector_enduses = data_loader.load_fuels(config['CONFIG_DATA'])

    # ------------------------------------------------
    # Load Assumptions
    # ------------------------------------------------
    data['assumptions'] = general_assumptions.Assumptions(
        lookup_enduses=lookup_enduses,
        lookup_sector_enduses=lookup_sector_enduses,
        base_yr=base_yr,
        weather_by=config['CONFIG']['user_defined_weather_by'],
        simulation_end_yr=config['CONFIG']['user_defined_simulation_end_yr'],
        curr_yr=curr_yr,
        sim_yrs=sim_yrs,
        paths=config['CONFIG_DATA'],
        enduses=data['enduses'],
        sectors=data['sectors'],
        reg_nrs=len(data['regions']))

    # ------------------------------------------
    # Make selection of regions to model
    # ------------------------------------------
    if config['CRITERIA']['reg_selection']:

        region_selection = read_data.get_region_selection(
            os.path.join(config['DATA_PATHS']['local_path_datafolder'],
                         "region_definitions",
                         config['CRITERIA']['reg_selection_csv_name']))
        #region_selection = ['E02003237', 'E02003238']
        setattr(data['assumptions'], 'reg_nrs', len(region_selection))
    else:
        region_selection = data['regions']

    # Create .ini file with simulation parameter
    write_data.write_simulation_inifile(path_new_scenario, data,
                                        region_selection)

    # -------------------------------------------
    # Weather year specific initialisations
    # -------------------------------------------
    path_folder_weather_yr = os.path.join(
        os.path.join(path_new_scenario,
                     str(weather_yr_scenario) + "__" + "all_stations"))

    data['weather_result_paths'] = basic_functions.get_result_paths(
        path_folder_weather_yr)

    folders_to_create = [
        path_folder_weather_yr, data['weather_result_paths']['data_results'],
        data['weather_result_paths']['data_results_PDF'],
        data['weather_result_paths']['data_results_validation'],
        data['weather_result_paths']['data_results_model_run_results_txt']
    ]
    for folder in folders_to_create:
        basic_functions.create_folder(folder)

    # ------------------------------------------------
    # Load load profiles of technologies
    # ------------------------------------------------
    data['tech_lp'] = data_loader.load_data_profiles(
        config['CONFIG_DATA'], config['DATA_PATHS'],
        data['assumptions'].model_yeardays,
        data['assumptions'].model_yeardays_daytype)

    # Obtain population data for disaggregation
    if config['CRITERIA']['msoa_crit']:
        name_population_dataset = config['DATA_PATHS'][
            'path_population_data_for_disaggregation_msoa']
    else:
        name_population_dataset = config['DATA_PATHS'][
            'path_population_data_for_disaggregation_lad']

    data['pop_for_disag'] = data_loader.read_scenario_data(
        name_population_dataset, region_name='region', value_name='value')

    # ------------------------------------------------
    # Load building related data
    # ------------------------------------------------
    if config['CRITERIA']['virtual_building_stock_criteria']:
        data['scenario_data']['floor_area']['rs_floorarea'], data[
            'scenario_data']['floor_area']['ss_floorarea'], data[
                'service_building_count'], rs_regions_without_floorarea, ss_regions_without_floorarea = data_loader.floor_area_virtual_dw(
                    data['regions'],
                    data['sectors'],
                    config['DATA_PATHS'],
                    data['scenario_data']['population'][
                        data['assumptions'].base_yr],
                    base_yr=data['assumptions'].base_yr)

        # Add all areas with no floor area data
        data['assumptions'].update("rs_regions_without_floorarea",
                                   rs_regions_without_floorarea)
        data['assumptions'].update("ss_regions_without_floorarea",
                                   ss_regions_without_floorarea)
    else:
        # ------------------------------------------------
        # Load floor area directly from scenario
        # ------------------------------------------------
        data['scenario_data']['floor_area']['rs_floorarea'] = {}
        data['scenario_data']['floor_area']['rs_floorarea'] = data[
            'scenario_data']['rs_floorarea']
        data['scenario_data']['floor_area']['ss_floorarea'] = data[
            'scenario_data']['ss_floorarea']
        data['scenario_data']['service_building_count'][
            data['assumptions'].base_yr] = {}

    return data
Beispiel #3
0
    print("... Load data from script calculations")
    data = read_data.load_script_data(data)  #SCENARIO INITIALISATION

    #-------------------
    # Folder cleaning
    #--------------------
    print("... delete previous model run results")
    basic_functions.del_previous_setup(data['result_paths']['data_results'])
    basic_functions.create_folder(data['result_paths']['data_results'])
    basic_functions.create_folder(data['result_paths']['data_results_PDF'])
    basic_functions.create_folder(
        data['result_paths']['data_results_model_run_pop'])

    # Create .ini file with simulation information
    write_data.write_simulation_inifile(data['result_paths']['data_results'],
                                        data['enduses'], data['assumptions'],
                                        data['reg_nrs'], data['regions'])

    for sim_yr in data['assumptions'].simulated_yrs:
        setattr(data['assumptions'], 'curr_yr', sim_yr)

        print("Simulation for year --------------:  " + str(sim_yr))
        fuel_in, fuel_in_biomass, fuel_in_elec, fuel_in_gas, fuel_in_heat, fuel_in_hydro, fuel_in_solid_fuel, fuel_in_oil, tot_heating = testing.test_function_fuel_sum(
            data, data['criterias']['mode_constrained'],
            data['assumptions'].enduse_space_heating)

        a = datetime.datetime.now()

        # Main model run function
        modelrun_obj = energy_demand_model(data, data['assumptions'], fuel_in,
                                           fuel_in_elec)