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
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)
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
import calliope import os DIR = os.getcwd() calliope.set_log_verbosity('INFO') model = calliope.Model(DIR + '/model.yaml', scenario='milp') model.run() # model.results
@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)