Beispiel #1
0
def energy_demand_model(
        regions,
        data,
        criterias,
        assumptions,
        weather_stations,
        weather_yr,
        weather_by
    ):
    """Main function of energy demand model to calculate yearly demand

    Arguments
    ----------
    regions : list
        Regions
    data : dict
        Data container
    assumptions : dict
        Assumptions
    weather_yr: int
        Year of weather data

    Returns
    -------
    result_dict : dict
        A nested dictionary containing all data for energy supply model with
        timesteps for every hour in a year.
        [fueltype : region : timestep]
    modelrun_obj : dict
        Object of a yearly model run

    Note
    ----
    This function is executed in the wrapper
    """
    logging.info("... Number of modelled regions: %s", len(regions))

    modelrun = model.EnergyDemandModel(
        regions=regions,
        data=data,
        criterias=criterias,
        assumptions=assumptions,
        weather_stations=weather_stations,
        weather_yr=weather_yr,
        weather_by=weather_by)

    # Calculate base year demand
    fuels_in = testing_functions.test_function_fuel_sum(
        data, data['fuel_disagg'], criterias['mode_constrained'], assumptions.enduse_space_heating)

    # Log model results
    write_data.logg_info(modelrun, fuels_in, data)

    return modelrun
Beispiel #2
0
def energy_demand_model(data):
    """Main function of energy demand model to calculate yearly demand

    Parameters
    ----------
    data : dict
        Data container

    Returns
    -------
    result_dict : dict
        A nested dictionary containing all data for energy supply model with
        timesteps for every hour in a year.
        [fuel_type : region : timestep]
    model_run_object : dict
        Object of a yearly model run

    Note
    ----
    This function is executed in the wrapper
    """
    fuel_in, fuel_in_elec, _ = testing.test_function_fuel_sum(data)

    # Add all region instances as an attribute (region name) into the class `EnergyModel`
    model_run_object = energy_model.EnergyModel(
        region_names=data['lu_reg'],
        data=data,
    )

    # Total fuel of country
    fueltot = model_run_object.sum_uk_fueltypes_enduses_y 

    print("================================================")
    print("Simulation year:     " + str(model_run_object.curr_yr))
    print("Number of regions    " + str(len(data['lu_reg'])))
    print("Fuel input:          " + str(fuel_in))
    print("Fuel output:         " + str(fueltot))
    print("FUEL DIFFERENCE:     " + str(round((fueltot - fuel_in), 4)))
    print("elec fuel in:        " + str(fuel_in_elec))
    print("elec fuel out:       " + str(np.sum(model_run_object.all_submodels_sum_uk_specfuelype_enduses_y[2])))
    print("ele fueld diff:      " + str(round(fuel_in_elec - np.sum(model_run_object.all_submodels_sum_uk_specfuelype_enduses_y[2]), 4))) #ithout transport
    print("================================================")
    for fff in range(8):
        print("FF: " + str(np.sum(model_run_object.all_submodels_sum_uk_specfuelype_enduses_y[fff])))
    # # --- Write to csv and YAML Convert data according to region and fueltype
    #result_dict = read_data.convert_out_format_es(data, model_run_object, ['rs_submodel', 'ss_submodel', 'is_submodel', 'ts_submodel'])
    ###write_data.write_final_result(data, result_dict, model_run_object.curr_yr, data['lu_reg'], False)

    print("...finished energy demand model simulation")
    return _, model_run_object
Beispiel #3
0
def energy_demand_model(data, assumptions, fuel_in=0, fuel_in_elec=0):
    """Main function of energy demand model to calculate yearly demand

    Arguments
    ----------
    data : dict
        Data container

    Returns
    -------
    result_dict : dict
        A nested dictionary containing all data for energy supply model with
        timesteps for every hour in a year.
        [fueltype : region : timestep]
    modelrun_obj : dict
        Object of a yearly model run

    Note
    ----
    This function is executed in the wrapper
    """
    modelrun_obj = model.EnergyDemandModel(regions=data['regions'],
                                           data=data,
                                           assumptions=assumptions)

    # Calculate base year demand
    fuel_in, fuel_in_biomass, fuel_in_elec, fuel_in_gas, fuel_in_heat, fuel_in_hydrogen, fuel_in_solid_fuel, fuel_in_oil, tot_heating = testing.test_function_fuel_sum(
        data, data['criterias']['mode_constrained'],
        assumptions.enduse_space_heating)

    print("================================================")
    print("Simulation year:     " + str(modelrun_obj.curr_yr))
    print("Number of regions    " + str(data['reg_nrs']))
    print(" TOTAL KTOE:         " + str(conversions.gwh_to_ktoe(fuel_in)))

    print("-----------------")
    print("[GWh] Total fuel input:    " + str(fuel_in))
    print("[GWh] Total output:        " +
          str(np.sum(modelrun_obj.ed_fueltype_national_yh)))
    print("[GWh] Total difference:    " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh) - fuel_in), 4)))
    print("-----------")
    print("[GWh] oil fuel in:         " + str(fuel_in_oil))
    print("[GWh] oil fuel out:        " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[data['lookups']
                                                    ['fueltypes']['oil']])))
    print("[GWh] oil diff:            " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['oil']]) - fuel_in_oil, 4)))
    print("-----------")
    print("[GWh] biomass fuel in:     " + str(fuel_in_biomass))
    print("[GWh] biomass fuel out:    " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['biomass']])))
    print("[GWh] biomass diff:        " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['biomass']]) -
            fuel_in_biomass, 4)))
    print("-----------")
    print("[GWh] solid_fuel fuel in:  " + str(fuel_in_solid_fuel))
    print("[GWh] solid_fuel fuel out: " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['solid_fuel']])))
    print("[GWh] solid_fuel diff:     " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['solid_fuel']]) -
            fuel_in_solid_fuel, 4)))
    print("-----------")
    print("[GWh] elec fuel in:        " + str(fuel_in_elec))
    print("[GWh] elec fuel out:       " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['electricity']])))
    print("[GWh] ele fuel diff:       " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['electricity']]) -
            fuel_in_elec, 4)))
    print("-----------")
    print("[GWh] gas fuel in:         " + str(fuel_in_gas))
    print("[GWh] gas fuel out:        " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[data['lookups']
                                                    ['fueltypes']['gas']])))
    print("[GWh] gas diff:            " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['gas']]) - fuel_in_gas, 4)))
    print("-----------")
    print("[GWh] hydro fuel in:       " + str(fuel_in_hydrogen))
    print("[GWh] hydro fuel out:      " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['hydrogen']])))
    print("[GWh] hydro diff:          " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['hydrogen']]) -
            fuel_in_hydrogen, 4)))
    print("-----------")
    print("TOTAL HEATING        " + str(tot_heating))
    print("[GWh] heat fuel in:        " + str(fuel_in_heat))
    print("[GWh] heat fuel out:       " + str(
        np.sum(modelrun_obj.ed_fueltype_national_yh[data['lookups']
                                                    ['fueltypes']['heat']])))
    print("[GWh] heat diff:           " + str(
        round(
            np.sum(modelrun_obj.ed_fueltype_national_yh[
                data['lookups']['fueltypes']['heat']]) - fuel_in_heat, 4)))
    print("-----------")
    print("Diff elec %:         " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['electricity']]) / fuel_in_elec), 4)))
    print("Diff gas %:          " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['gas']]) / fuel_in_gas), 4)))
    print("Diff oil %:          " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['oil']]) / fuel_in_oil), 4)))
    print("Diff solid_fuel %:   " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['solid_fuel']]) /
               fuel_in_solid_fuel), 4)))
    print("Diff hydrogen %:     " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['hydrogen']]) /
               fuel_in_hydrogen), 4)))
    print("Diff biomass %:      " + str(
        round((np.sum(modelrun_obj.ed_fueltype_national_yh[
            data['lookups']['fueltypes']['biomass']]) / fuel_in_biomass), 4)))
    print("================================================")

    logging.info("...finished running energy demand model simulation")
    return modelrun_obj
Beispiel #4
0
    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)

        # --------------------
        # Result unconstrained
        #
        # Sum according to first element in array (sectors)
        # which aggregtes over the sectors
        # ---
        supply_results_unconstrained = sum(