Esempio n. 1
0
def run_scenario(countries,
                 regions_method,
                 area_factor,
                 rooftop_pv,
                 save_dir,
                 national=False):
    calliope.set_log_verbosity('CRITICAL', include_solver_output=False)
    eu_ds = euses.import_dataset('euses_datasets.nc')
    # remove power plants not considered
    fuels_considered = ['Biomass and biogas', 'Natural gas', 'Solar', 'Wind']
    fuels_removed = np.setdiff1d(eu_ds.ds.coords['fuel'].values,
                                 fuels_considered)
    eu_ds.ds = eu_ds.ds.drop(fuels_removed, dim='fuel')
    tech_not_grouped = ['Solar', 'Wind', 'Wind Offshore']
    tech_list = np.setdiff1d(eu_ds.ds.coords['tech'].values, tech_not_grouped)
    # group natural gas and biomass/biogas based power_plants in single group
    sum_var = eu_ds.ds['power_plants'].loc[:, tech_list, :].sum(axis=1)
    tech_list = np.setdiff1d(tech_list, ['Combined cycle'])
    eu_ds.ds['power_plants'].loc[:,
                                 ['Combined cycle']] = [[g]
                                                        for g in sum_var.values
                                                        ]
    eu_ds.ds = eu_ds.ds.drop(tech_list, dim='tech')
    # only percentage of rooftop_pv and utility_pv area considered
    eu_ds.ds['rooftop_pv'] = eu_ds.ds['rooftop_pv'] * rooftop_pv
    eu_ds.ds['utility_pv'] = eu_ds.ds['utility_pv'] * 0.50
    filt_ds = eu_ds.filter_countries(countries)
    # Build and solve calliope model
    filt_ds.create_regions(regions_method, area_factor)
    regions_gpd = gpd.GeoDataFrame(
        filt_ds.ds_regions['regions'].values,
        columns=['id'],
        geometry=filt_ds.ds_regions['geometry'].values)
    filt_ds.create_calliope_model(op_mode='plan',
                                  sectors=['power', 'heat'],
                                  co2_cap_factor=0.2,
                                  national=national)
    model = calliope.Model('calliope_model/model.yaml',
                           scenario='time_3H',
                           override_dict={'run.solver': 'gurobi'})
    model.run()
    model.to_netcdf('calliope_model/results/' + save_dir + '.nc')

    return model, regions_gpd
Esempio n. 2
0
    def test_set_log_verbosity(self):
        calliope.set_log_verbosity("CRITICAL", include_solver_output=True)

        assert logging.getLogger("calliope").getEffectiveLevel() == 50
        assert logging.getLogger("py.warnings").getEffectiveLevel() == 50
        assert (logging.getLogger(
            "calliope.backend.pyomo.model").getEffectiveLevel() == 10)

        calliope.set_log_verbosity("CRITICAL", include_solver_output=False)

        assert logging.getLogger("calliope").getEffectiveLevel() == 50
        assert logging.getLogger("py.warnings").getEffectiveLevel() == 50
        assert (logging.getLogger(
            "calliope.backend.pyomo.model").getEffectiveLevel() == 50)

        calliope.set_log_verbosity()

        assert logging.getLogger("calliope").getEffectiveLevel() == 20
        assert logging.getLogger("py.warnings").getEffectiveLevel() == 20
        assert (logging.getLogger(
            "calliope.backend.pyomo.model").getEffectiveLevel() == 10)
Esempio n. 3
0
    def test_set_log_verbosity(self):
        calliope.set_log_verbosity('CRITICAL', include_solver_output=True)

        assert logging.getLogger('calliope').getEffectiveLevel() == 50
        assert logging.getLogger('py.warnings').getEffectiveLevel() == 50
        assert logging.getLogger(
            'calliope.backend.pyomo.model').getEffectiveLevel() == 10

        calliope.set_log_verbosity('CRITICAL', include_solver_output=False)

        assert logging.getLogger('calliope').getEffectiveLevel() == 50
        assert logging.getLogger('py.warnings').getEffectiveLevel() == 50
        assert logging.getLogger(
            'calliope.backend.pyomo.model').getEffectiveLevel() == 50

        calliope.set_log_verbosity()

        assert logging.getLogger('calliope').getEffectiveLevel() == 20
        assert logging.getLogger('py.warnings').getEffectiveLevel() == 20
        assert logging.getLogger(
            'calliope.backend.pyomo.model').getEffectiveLevel() == 10
Esempio n. 4
0
import calliope
import os

DIR = os.getcwd()

calliope.set_log_verbosity('INFO')

model = calliope.Model(DIR + '/model.yaml', scenario='milp')

model.run()

# model.results
Esempio n. 5
0
@author: FLomb
"""

import pandas as pd
import numpy as np
import math
import os
import copy
import calliope

from obj_utils import load_obj, save_obj
from calliope_process import netcdf_to_data, p2h_plot, profile_dict_to_matrix
from summary_plots import choropleth_map_nrmse, choropleth_map_energy

calliope.set_log_verbosity(
    'ERROR')  #sets the level of verbosity of Calliope's operations


#%%
def nrmse(vpp, tot_real):

    n = len(vpp.index)
    sq_diff_hp_con = 0
    sq_diff_tes_soc = 0

    for i in range(n):
        sq_diff_hp_con += math.pow(
            (vpp['en_con_hp'].iloc[i] - tot_real['en_con_hp'].iloc[i]), 2)
        sq_diff_tes_soc += math.pow(
            (vpp['soc_tes'].iloc[i] - tot_real['soc_tes'].iloc[i]), 2)