The Calliope model and backend objects¶
In this tutorial, we use the urban scale example model to go into a bit more detail on the public and non-public properties of the calliope.Model
and calliope.Model.backend
objects.
from pathlib import Path
import calliope
calliope.set_log_verbosity("INFO", include_solver_output=False)
Model input¶
# Initialise the model with the Urban Scale example model
m = calliope.examples.urban_scale()
[2024-01-27 14:23:52] INFO Model: initialising
[2024-01-27 14:23:52] INFO Model: preprocessing stage 1 (model_run)
[2024-01-27 14:23:56] INFO Model: preprocessing stage 2 (model_data)
[2024-01-27 14:23:56] INFO Model: preprocessing complete
# Get information on the model
print(m.info())
Model name: Urban-scale example model Model size: {'costs': 1, 'techs': 12, 'nodes': 4, 'carriers': 3, 'timesteps': 48} (30 valid node:tech:carrier combinations)
Model definition dictionary¶
m._model_def_dict
is a python dictionary that holds all the data from the model definition YAML files, restructured into one dictionary.
The underscore before the method indicates that it defaults to being hidden (i.e. you wouldn't see it by trying a tab auto-complete and it isn't documented)
m._model_def_dict.keys()
dict_keys(['nodes', 'parameters', 'tech_groups', 'techs'])
techs
hold only the information about a technology that is specific to that node
m._model_def_dict["techs"]["pv"]
{'area_use_max': 1500, 'area_use_per_flow_cap': 7, 'base_tech': 'supply', 'carrier_export': 'electricity', 'carrier_out': 'electricity', 'color': '#F9D956', 'cost_flow_cap': {'data': 1350, 'dims': 'costs', 'index': 'monetary'}, 'flow_cap_max': 250, 'flow_out_parasitic_eff': 0.85, 'inherit': 'interest_rate_setter', 'lifetime': 25, 'name': 'Solar photovoltaic power', 'source_unit': 'per_area'}
nodes
hold only the information about a technology that is specific to that node
m._model_def_dict["nodes"]["X2"]["techs"]["pv"]
{'cost_export': {'data': -0.0491, 'dims': 'costs', 'index': 'monetary'}, 'cost_flow_out': {'data': -0.0203, 'dims': 'costs', 'index': 'monetary'}}
Model data¶
m._model_data
is an xarray Dataset.
Like _model_def_dict
it is a hidden prperty of the Model as you are expected to access the data via the public property inputs
m.inputs
<xarray.Dataset> Dimensions: (costs: 1, techs: 12, nodes: 4, carriers: 3, timesteps: 48) Coordinates: * costs (costs) object 'monetary' * techs (techs) object 'N1_to_X2' ... 'supply_grid_po... * carriers (carriers) object 'electricity' 'gas' 'heat' * nodes (nodes) object 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 2005-07-01 ... 200... Data variables: (12/35) objective_cost_weights (costs) float64 1.0 bigM float64 1e+06 base_tech (techs) object 'transmission' ... 'supply' carrier_in (nodes, techs, carriers) float64 nan nan ... nan carrier_out (nodes, techs, carriers) float64 nan nan ... nan color (techs) object '#823739' '#823739' ... '#C5ABE3' ... ... available_area (nodes) float64 nan 500.0 1.3e+03 900.0 source_use_equals (techs, timesteps) float64 nan nan ... nan nan sink_use_equals (timesteps, techs, nodes) float64 nan ... nan definition_matrix (nodes, techs, carriers) bool False ... False timestep_resolution (timesteps) float64 1.0 1.0 1.0 ... 1.0 1.0 1.0 timestep_weights (timesteps) float64 1.0 1.0 1.0 ... 1.0 1.0 1.0 Attributes: calliope_version_defined: 0.7.0 calliope_version_initialised: 0.7.0.dev2 applied_overrides: scenario: None defaults: {'available_area': inf, 'bigM': 1000000000... allow_operate_mode: 1 config: {'build': {'backend': 'pyomo', 'ensure_fea... applied_custom_math: ['custom_math.yaml'] math: {'constraints': {'flow_capacity_per_storag... name: Urban-scale example model
- costs: 1
- techs: 12
- nodes: 4
- carriers: 3
- timesteps: 48
- costs(costs)object'monetary'
array(['monetary'], dtype=object)
- techs(techs)object'N1_to_X2' ... 'supply_grid_power'
array(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype=object)
- carriers(carriers)object'electricity' 'gas' 'heat'
array(['electricity', 'gas', 'heat'], dtype=object)
- nodes(nodes)object'N1' 'X1' 'X2' 'X3'
array(['N1', 'X1', 'X2', 'X3'], dtype=object)
- timesteps(timesteps)datetime64[ns]2005-07-01 ... 2005-07-02T23:00:00
array(['2005-07-01T00:00:00.000000000', '2005-07-01T01:00:00.000000000', '2005-07-01T02:00:00.000000000', '2005-07-01T03:00:00.000000000', '2005-07-01T04:00:00.000000000', '2005-07-01T05:00:00.000000000', '2005-07-01T06:00:00.000000000', '2005-07-01T07:00:00.000000000', '2005-07-01T08:00:00.000000000', '2005-07-01T09:00:00.000000000', '2005-07-01T10:00:00.000000000', '2005-07-01T11:00:00.000000000', '2005-07-01T12:00:00.000000000', '2005-07-01T13:00:00.000000000', '2005-07-01T14:00:00.000000000', '2005-07-01T15:00:00.000000000', '2005-07-01T16:00:00.000000000', '2005-07-01T17:00:00.000000000', '2005-07-01T18:00:00.000000000', '2005-07-01T19:00:00.000000000', '2005-07-01T20:00:00.000000000', '2005-07-01T21:00:00.000000000', '2005-07-01T22:00:00.000000000', '2005-07-01T23:00:00.000000000', '2005-07-02T00:00:00.000000000', '2005-07-02T01:00:00.000000000', '2005-07-02T02:00:00.000000000', '2005-07-02T03:00:00.000000000', '2005-07-02T04:00:00.000000000', '2005-07-02T05:00:00.000000000', '2005-07-02T06:00:00.000000000', '2005-07-02T07:00:00.000000000', '2005-07-02T08:00:00.000000000', '2005-07-02T09:00:00.000000000', '2005-07-02T10:00:00.000000000', '2005-07-02T11:00:00.000000000', '2005-07-02T12:00:00.000000000', '2005-07-02T13:00:00.000000000', '2005-07-02T14:00:00.000000000', '2005-07-02T15:00:00.000000000', '2005-07-02T16:00:00.000000000', '2005-07-02T17:00:00.000000000', '2005-07-02T18:00:00.000000000', '2005-07-02T19:00:00.000000000', '2005-07-02T20:00:00.000000000', '2005-07-02T21:00:00.000000000', '2005-07-02T22:00:00.000000000', '2005-07-02T23:00:00.000000000'], dtype='datetime64[ns]')
- objective_cost_weights(costs)float641.0
- is_result :
- False
- default :
- 1
array([1.])
- bigM()float641e+06
- is_result :
- False
- default :
- 1000000000.0
array(1000000.)
- base_tech(techs)object'transmission' ... 'supply'
- is_result :
- False
array(['transmission', 'transmission', 'transmission', 'transmission', 'transmission', 'conversion', 'conversion', 'demand', 'demand', 'supply', 'supply', 'supply'], dtype=object)
- carrier_in(nodes, techs, carriers)float64nan nan 1.0 nan ... nan nan nan nan
- is_result :
- False
array([[[nan, nan, 1.], [nan, nan, 1.], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, nan], [nan, nan, 1.], [ 1., nan, nan], [ 1., nan, nan], [nan, nan, nan], [nan, 1., nan], ... [nan, 1., nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, 1., nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]]])
- carrier_out(nodes, techs, carriers)float64nan nan 1.0 nan ... nan nan nan nan
- is_result :
- False
array([[[nan, nan, 1.], [nan, nan, 1.], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, nan], [nan, nan, 1.], [ 1., nan, nan], [ 1., nan, nan], [nan, nan, nan], [ 1., nan, 1.], ... [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, 1., nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, 1., nan], [nan, nan, nan]]])
- color(techs)object'#823739' '#823739' ... '#C5ABE3'
- is_result :
- False
- default :
- nan
array(['#823739', '#823739', '#823739', '#6783E3', '#6783E3', '#8E2999', '#E4AB97', '#072486', '#660507', '#F9D956', '#C98AAD', '#C5ABE3'], dtype=object)
- cost_flow_cap_per_distance(techs, costs)float640.3 0.3 0.3 0.01 ... nan nan nan
- is_result :
- False
- default :
- 0
array([[0.3 ], [0.3 ], [0.3 ], [0.01], [0.01], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]])
- cost_interest_rate(techs, costs)float640.1 0.1 0.1 0.1 ... nan 0.1 0.1 0.1
- is_result :
- False
- default :
- 0
array([[0.1], [0.1], [0.1], [0.1], [0.1], [0.1], [0.1], [nan], [nan], [0.1], [0.1], [0.1]])
- distance(techs)float643.0 4.0 3.0 10.0 ... nan nan nan
- is_result :
- False
- default :
- nan
array([ 3., 4., 3., 10., 5., nan, nan, nan, nan, nan, nan, nan])
- flow_cap_max(techs, carriers, nodes)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- inf
array([[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [2000., nan, 2000., nan]], [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [2000., nan, nan, 2000.]], [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [2000., 2000., nan, nan]], [[ nan, 2000., 2000., nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, 2000., nan, 2000.], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], ... [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, 250., 250., 50.], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, nan, nan, nan], [ nan, 2000., 2000., 2000.], [ nan, nan, nan, nan]], [[ nan, 2000., nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]])
- flow_out_eff_per_distance(techs)float640.975 0.975 0.975 ... nan nan nan
- is_result :
- False
- default :
- 1.0
array([0.975, 0.975, 0.975, nan, nan, nan, nan, nan, nan, nan, nan, nan])
- lifetime(techs)float6425.0 25.0 25.0 ... 25.0 25.0 25.0
- is_result :
- False
- default :
- inf
array([25., 25., 25., 25., 25., 25., 25., nan, nan, 25., 25., 25.])
- name(techs)object'District heat distribution' ......
- is_result :
- False
- default :
- nan
array(['District heat distribution', 'District heat distribution', 'District heat distribution', 'Electrical power distribution', 'Electrical power distribution', 'Natural gas boiler', 'Combined heat and power', 'Electrical demand', 'Heat demand', 'Solar photovoltaic power', 'Natural gas import', 'National grid import'], dtype=object)
- techs_inheritance(techs)object'interest_rate_setter,heat_pipes...
- is_result :
- False
array(['interest_rate_setter,heat_pipes', 'interest_rate_setter,heat_pipes', 'interest_rate_setter,heat_pipes', 'interest_rate_setter,power_lines', 'interest_rate_setter,power_lines', 'interest_rate_setter', 'interest_rate_setter', nan, nan, 'interest_rate_setter', 'interest_rate_setter', 'interest_rate_setter'], dtype=object)
- carrier_export(techs, carriers)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
array([[nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, nan], [nan, nan, nan]])
- cost_flow_cap(nodes, techs, costs, carriers)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 0
array([[[[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], ... [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, 7.80e+01]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[1.35e+03, nan, nan]], [[ nan, 1.00e+00, nan]], [[ nan, nan, nan]]]])
- cost_flow_out(techs, costs, carriers, nodes)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 0
array([[[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], ... [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, -0.0203, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]]])
- flow_out_eff(techs, carriers)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 1.0
array([[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [0.98 , nan, nan], [0.98 , nan, nan], [ nan, 0.85 , 0.85 ], [0.405, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]])
- heat_to_power_ratio(techs)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
array([nan, nan, nan, nan, nan, nan, 0.8, nan, nan, nan, nan, nan])
- area_use_max(techs)float64nan nan nan nan ... 1.5e+03 nan nan
- is_result :
- False
- default :
- inf
array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, 1500., nan, nan])
- area_use_per_flow_cap(techs)float64nan nan nan nan ... nan 7.0 nan nan
- is_result :
- False
- default :
- nan
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, 7., nan, nan])
- flow_out_parasitic_eff(techs)float64nan nan nan nan ... 0.85 nan nan
- is_result :
- False
- default :
- 1.0
array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, 0.85, nan, nan])
- source_unit(techs)objectnan nan nan ... 'per_area' nan nan
- is_result :
- False
- default :
- absolute
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, 'per_area', nan, nan], dtype=object)
- cost_flow_in(techs, costs)float64nan nan nan nan ... nan 0.025 0.1
- is_result :
- False
- default :
- 0
array([[ nan], [ nan], [ nan], [ nan], [ nan], [0.004], [ nan], [ nan], [ nan], [ nan], [0.025], [0.1 ]])
- source_use_max(techs)float64nan nan nan nan ... nan nan inf inf
- is_result :
- False
- default :
- inf
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, inf, inf])
- cost_export(nodes, techs, costs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 0
array([[[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], ..., [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], ..., [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]]])
- cost_om_annual(nodes, techs, costs)float64nan nan nan nan ... -80.5 nan nan
- is_result :
- False
- default :
- 0
array([[[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], ... [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [-80.5], [ nan], [ nan]]])
- latitude(nodes)float6451.45 51.46 51.47 51.43
- is_result :
- False
array([51.4450766, 51.4596158, 51.4652373, 51.4287016])
- longitude(nodes)float64-0.1247 -0.1613 -0.1142 -0.1311
- is_result :
- False
array([-0.1247183, -0.1613446, -0.1141548, -0.1310635])
- available_area(nodes)float64nan 500.0 1.3e+03 900.0
- is_result :
- False
- default :
- inf
array([ nan, 500., 1300., 900.])
- source_use_equals(techs, timesteps)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- nan
array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], ... [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]])
- sink_use_equals(timesteps, techs, nodes)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- nan
array([[[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., ... ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]]])
- definition_matrix(nodes, techs, carriers)boolFalse False True ... False False
- is_result :
- False
array([[[False, False, True], [False, False, True], [False, False, True], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False]], [[False, False, False], [False, False, False], [False, False, True], [ True, False, False], [ True, False, False], [False, False, False], [ True, True, True], ... [False, True, True], [False, False, False], [ True, False, False], [False, False, True], [ True, False, False], [False, True, False], [False, False, False]], [[False, False, False], [False, False, True], [False, False, False], [False, False, False], [ True, False, False], [False, True, True], [False, False, False], [ True, False, False], [False, False, True], [ True, False, False], [False, True, False], [False, False, False]]])
- timestep_resolution(timesteps)float641.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
- is_result :
- False
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
- timestep_weights(timesteps)float641.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
- is_result :
- False
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
- costsPandasIndex
PandasIndex(Index(['monetary'], dtype='object', name='costs'))
- techsPandasIndex
PandasIndex(Index(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype='object', name='techs'))
- carriersPandasIndex
PandasIndex(Index(['electricity', 'gas', 'heat'], dtype='object', name='carriers'))
- nodesPandasIndex
PandasIndex(Index(['N1', 'X1', 'X2', 'X3'], dtype='object', name='nodes'))
- timestepsPandasIndex
PandasIndex(DatetimeIndex(['2005-07-01 00:00:00', '2005-07-01 01:00:00', '2005-07-01 02:00:00', '2005-07-01 03:00:00', '2005-07-01 04:00:00', '2005-07-01 05:00:00', '2005-07-01 06:00:00', '2005-07-01 07:00:00', '2005-07-01 08:00:00', '2005-07-01 09:00:00', '2005-07-01 10:00:00', '2005-07-01 11:00:00', '2005-07-01 12:00:00', '2005-07-01 13:00:00', '2005-07-01 14:00:00', '2005-07-01 15:00:00', '2005-07-01 16:00:00', '2005-07-01 17:00:00', '2005-07-01 18:00:00', '2005-07-01 19:00:00', '2005-07-01 20:00:00', '2005-07-01 21:00:00', '2005-07-01 22:00:00', '2005-07-01 23:00:00', '2005-07-02 00:00:00', '2005-07-02 01:00:00', '2005-07-02 02:00:00', '2005-07-02 03:00:00', '2005-07-02 04:00:00', '2005-07-02 05:00:00', '2005-07-02 06:00:00', '2005-07-02 07:00:00', '2005-07-02 08:00:00', '2005-07-02 09:00:00', '2005-07-02 10:00:00', '2005-07-02 11:00:00', '2005-07-02 12:00:00', '2005-07-02 13:00:00', '2005-07-02 14:00:00', '2005-07-02 15:00:00', '2005-07-02 16:00:00', '2005-07-02 17:00:00', '2005-07-02 18:00:00', '2005-07-02 19:00:00', '2005-07-02 20:00:00', '2005-07-02 21:00:00', '2005-07-02 22:00:00', '2005-07-02 23:00:00'], dtype='datetime64[ns]', name='timesteps', freq=None))
- calliope_version_defined :
- 0.7.0
- calliope_version_initialised :
- 0.7.0.dev2
- applied_overrides :
- scenario :
- None
- defaults :
- {'available_area': inf, 'bigM': 1000000000.0, 'objective_cost_weights': 1, 'area_use': inf, 'area_use_max': inf, 'area_use_min': 0, 'area_use_per_flow_cap': nan, 'cap_method': 'continuous', 'color': nan, 'cost_area_use': 0, 'cost_depreciation_rate': 1, 'cost_export': 0, 'cost_flow_cap': 0, 'cost_flow_cap_per_distance': 0, 'cost_flow_in': 0, 'cost_flow_out': 0, 'cost_interest_rate': 0, 'cost_om_annual': 0, 'cost_om_annual_investment_fraction': 0, 'cost_purchase': 0, 'cost_purchase_per_distance': 0, 'cost_source_cap': 0, 'cost_storage_cap': 0, 'cyclic_storage': True, 'distance': nan, 'export_max': inf, 'flow_cap': inf, 'flow_cap_max': inf, 'flow_cap_max_systemwide': inf, 'flow_cap_min': 0, 'flow_cap_min_systemwide': 0, 'flow_cap_per_storage_cap_max': inf, 'flow_cap_per_storage_cap_min': 0, 'flow_cap_per_unit': nan, 'flow_in_eff': 1.0, 'flow_in_eff_per_distance': 1.0, 'flow_out_eff': 1.0, 'flow_out_eff_per_distance': 1.0, 'flow_out_min_relative': 0, 'flow_out_parasitic_eff': 1.0, 'flow_ramping': 1.0, 'force_async_flow': False, 'include_storage': False, 'integer_dispatch': False, 'lifetime': inf, 'name': nan, 'one_way': False, 'purchased_units': inf, 'purchased_units_max': inf, 'purchased_units_max_systemwide': inf, 'purchased_units_min': 0, 'purchased_units_min_systemwide': 0, 'sink_unit': 'absolute', 'sink_use_equals': nan, 'sink_use_max': inf, 'sink_use_min': 0, 'source_cap': inf, 'source_cap_equals_flow_cap': False, 'source_cap_max': inf, 'source_cap_min': 0, 'source_eff': 1.0, 'source_unit': 'absolute', 'source_use_equals': nan, 'source_use_max': inf, 'source_use_min': 0, 'storage_cap': inf, 'storage_cap_max': inf, 'storage_cap_min': 0, 'storage_cap_per_unit': nan, 'storage_discharge_depth': 0, 'storage_initial': 0, 'storage_loss': 0}
- allow_operate_mode :
- 1
- config :
- {'build': {'backend': 'pyomo', 'ensure_feasibility': True, 'mode': 'plan', 'objective': 'min_cost_optimisation', 'operate_use_cap_results': False}, 'solve': {'save_logs': None, 'solver': 'cbc', 'solver_io': None, 'solver_options': None, 'spores_number': 3, 'spores_save_per_spore': False, 'spores_score_cost_class': 'spores_score', 'spores_skip_cost_op': False, 'zero_threshold': 1e-10}}
- applied_custom_math :
- ['custom_math.yaml']
- math :
- {'constraints': {'flow_capacity_per_storage_capacity_min': {'description': 'Set the lower bound of storage flow capacity relative to its storage capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'storage_cap AND flow_cap_per_storage_cap_min', 'equations': [{'expression': 'flow_cap >= storage_cap * flow_cap_per_storage_cap_min'}]}, 'flow_capacity_per_storage_capacity_max': {'description': 'Set the upper bound of storage flow capacity relative to its storage capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'storage_cap AND flow_cap_per_storage_cap_max', 'equations': [{'expression': 'flow_cap <= storage_cap * flow_cap_per_storage_cap_max'}]}, 'source_capacity_equals_flow_capacity': {'description': "Set a `supply` technology's flow capacity to equal its source capacity.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'source_cap AND source_cap_equals_flow_cap=True', 'equations': [{'expression': 'source_cap == flow_cap'}]}, 'force_zero_area_use': {'description': "Set a technology's area use to zero if its flow capacity upper bound is zero.", 'foreach': ['nodes', 'techs'], 'where': 'area_use AND flow_cap_max=0', 'equations': [{'expression': 'area_use == 0'}]}, 'area_use_per_flow_capacity': {'description': "Set a fixed relationship between a technology's flow capacity and its area use.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'area_use AND area_use_per_flow_cap', 'equations': [{'expression': 'area_use == flow_cap * area_use_per_flow_cap'}]}, 'area_use_capacity_per_loc': {'description': 'Set an upper bound on the total area that all technologies with `area_use` can occupy at a given node.', 'foreach': ['nodes'], 'where': 'area_use AND available_area', 'equations': [{'expression': 'sum(area_use, over=techs) <= available_area'}]}, 'flow_capacity_systemwide_max': {'description': 'Set an upper bound on flow capacity of a technology across all nodes in which the technology exists.', 'foreach': ['techs', 'carriers'], 'where': 'flow_cap_max_systemwide', 'equations': [{'expression': 'sum(flow_cap, over=nodes) <= flow_cap_max_systemwide'}]}, 'flow_capacity_systemwide_min': {'description': 'Set a lower bound on flow capacity of a technology across all nodes in which the technology exists.', 'foreach': ['techs', 'carriers'], 'where': 'flow_cap_min_systemwide', 'equations': [{'expression': 'sum(flow_cap, over=nodes) >= flow_cap_min_systemwide'}]}, 'balance_conversion': {'description': "Fix the relationship between a `conversion` technology's outflow and consumption.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'base_tech=conversion AND NOT include_storage=true', 'equations': [{'where': 'NOT [chp] in techs', 'expression': 'sum(flow_out_inc_eff, over=carriers) == sum(flow_in_inc_eff, over=carriers)'}, {'where': '[chp] in techs', 'expression': 'flow_out_inc_eff[carriers=electricity] == sum(flow_in_inc_eff, over=carriers)'}]}, 'flow_out_max': {'description': "Set the upper bound of a technology's outflow.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_out AND NOT operating_units', 'equations': [{'expression': 'flow_out <= flow_cap * timestep_resolution * flow_out_parasitic_eff'}]}, 'flow_out_min': {'description': "Set the lower bound of a technology's outflow.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out_min_relative AND NOT operating_units', 'equations': [{'expression': 'flow_out >= flow_cap * timestep_resolution * flow_out_min_relative'}]}, 'flow_in_max': {'description': "Set the upper bound of a technology's inflow.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_in AND NOT operating_units', 'equations': [{'expression': 'flow_in <= flow_cap * timestep_resolution'}]}, 'source_max': {'description': "Set the upper bound of a `supply` technology's source consumption.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'source_cap', 'equations': [{'expression': 'source_use <= timestep_resolution * source_cap'}]}, 'storage_max': {'description': 'Set the upper bound of the amount of carrier a technology can store.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'storage', 'equations': [{'expression': 'storage <= storage_cap'}]}, 'storage_discharge_depth_limit': {'description': 'Set the lower bound of the stored carrier a technology must keep in reserve at all times.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'storage AND storage_discharge_depth', 'equations': [{'expression': 'storage - storage_discharge_depth * storage_cap >= 0'}]}, 'system_balance': {'description': 'Set the global carrier balance of the optimisation problem by fixing the total production of a given carrier to equal the total consumption of that carrier at every node in every timestep.', 'foreach': ['nodes', 'carriers', 'timesteps'], 'equations': [{'expression': 'sum(flow_out, over=techs) - sum(flow_in, over=techs) - $flow_export + $unmet_demand_and_unused_supply == 0'}], 'sub_expressions': {'flow_export': [{'where': 'any(carrier_export, over=techs)', 'expression': 'sum(flow_export, over=techs)'}, {'where': 'NOT any(carrier_export, over=techs)', 'expression': '0'}], 'unmet_demand_and_unused_supply': [{'where': 'config.ensure_feasibility=True', 'expression': 'unmet_demand + unused_supply'}, {'where': 'NOT config.ensure_feasibility=True', 'expression': '0'}]}}, 'balance_demand': {'description': 'Set the upper bound on, or a fixed total of, that a demand technology must dump to its sink in each timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'base_tech=demand', 'equations': [{'where': 'sink_use_equals', 'expression': 'flow_in_inc_eff == sink_use_equals * $sink_scaler'}, {'where': 'NOT sink_use_equals AND sink_use_max', 'expression': 'flow_in_inc_eff <= sink_use_max * $sink_scaler'}], 'sub_expressions': {'sink_scaler': [{'where': 'sink_unit=per_area', 'expression': 'area_use'}, {'where': 'sink_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'sink_unit=absolute', 'expression': '1'}]}}, 'balance_demand_min_use': {'description': 'Set the lower bound on the quantity of flow a `demand` technology must dump to its sink in each timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'sink_use_min AND NOT sink_use_equals AND base_tech=demand', 'equations': [{'expression': 'flow_in_inc_eff >= sink_use_min * $sink_scaler'}], 'sub_expressions': {'sink_scaler': [{'where': 'sink_unit=per_area', 'expression': 'area_use'}, {'where': 'sink_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'sink_unit=absolute', 'expression': '1'}]}}, 'balance_supply_no_storage': {'description': 'Fix the outflow of a `supply` technology to its consumption of the available source.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'base_tech=supply AND NOT include_storage=True', 'equations': [{'expression': 'flow_out_inc_eff == source_use * source_eff'}]}, 'balance_supply_with_storage': {'description': 'Fix the outflow of a `supply` technology to its consumption of the available source, with a storage buffer to temporally offset the outflow from source consumption.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'storage AND base_tech=supply', 'equations': [{'expression': 'storage == $storage_previous_step + source_use * source_eff - flow_out_inc_eff'}], 'sub_expressions': {'storage_previous_step': [{'where': 'timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True', 'expression': 'storage_initial * storage_cap'}, {'where': '(\n (timesteps=get_val_at_index(timesteps=0) AND cyclic_storage=True)\n OR NOT timesteps=get_val_at_index(timesteps=0)\n) AND NOT lookup_cluster_first_timestep=True', 'expression': '(1 - storage_loss) ** roll(timestep_resolution, timesteps=1) * roll(storage, timesteps=1)'}, {'where': 'lookup_cluster_first_timestep=True AND NOT (timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True)', 'expression': '(1 - storage_loss) ** select_from_lookup_arrays(timestep_resolution, timesteps=lookup_cluster_last_timestep) * select_from_lookup_arrays(storage, timesteps=lookup_cluster_last_timestep)'}]}}, 'source_availability_supply': {'description': "Set the upper bound on, or a fixed total of, a `supply` technology's ability to consume its available resource.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'source_use AND (source_use_equals OR source_use_max)', 'equations': [{'where': 'source_use_equals', 'expression': 'source_use == source_use_equals * $source_scaler'}, {'where': 'NOT source_use_equals AND source_use_max', 'expression': 'source_use <= source_use_max * $source_scaler'}], 'sub_expressions': {'source_scaler': [{'where': 'source_unit=per_area', 'expression': 'area_use'}, {'where': 'source_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'source_unit=absolute', 'expression': '1'}]}}, 'balance_supply_min_use': {'description': 'Set the lower bound on the quantity of its source a `supply` technology must use in each timestep.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'source_use_min AND NOT source_use_equals AND base_tech=supply', 'equations': [{'expression': 'source_use >= source_use_min * $source_scaler'}], 'sub_expressions': {'source_scaler': [{'where': 'source_unit=per_area', 'expression': 'area_use'}, {'where': 'source_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'source_unit=absolute', 'expression': '1'}]}}, 'balance_storage': {'description': 'Fix the quantity of carrier stored in a `storage` technology at the end of each timestep based on the net flow of carrier charged and discharged and the quantity of carrier stored at the start of the timestep.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '(include_storage=true or base_tech=storage) AND NOT (base_tech=supply OR base_tech=demand)', 'equations': [{'expression': 'storage == $storage_previous_step -\n sum(flow_out_inc_eff, over=carriers) + sum(flow_in_inc_eff, over=carriers)'}], 'sub_expressions': {'storage_previous_step': [{'where': 'timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True', 'expression': 'storage_initial * storage_cap'}, {'where': '(\n (timesteps=get_val_at_index(timesteps=0) AND cyclic_storage=True)\n OR NOT timesteps=get_val_at_index(timesteps=0)\n) AND NOT lookup_cluster_first_timestep=True', 'expression': '(1 - storage_loss) ** roll(timestep_resolution, timesteps=1) * roll(storage, timesteps=1)'}, {'where': 'lookup_cluster_first_timestep=True AND NOT (timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True)', 'expression': '(1 - storage_loss) ** select_from_lookup_arrays(timestep_resolution, timesteps=lookup_cluster_last_timestep) * select_from_lookup_arrays(storage, timesteps=lookup_cluster_last_timestep)'}]}}, 'set_storage_initial': {'description': 'Fix the relationship between carrier stored in a `storage` technology at the start and end of the whole model period.', 'foreach': ['nodes', 'techs'], 'where': 'storage AND storage_initial AND cyclic_storage=True', 'equations': [{'expression': 'storage[timesteps=$final_step] * (\n (1 - storage_loss) ** timestep_resolution[timesteps=$final_step]\n) == storage_initial * storage_cap'}], 'slices': {'final_step': [{'expression': 'get_val_at_index(timesteps=-1)'}]}, 'active': True}, 'balance_transmission': {'description': 'Fix the relationship between between carrier flowing into and out of a `transmission` link in each timestep.', 'foreach': ['techs', 'timesteps'], 'where': 'base_tech=transmission', 'equations': [{'expression': 'sum(flow_out_inc_eff, over=[nodes, carriers]) == sum(flow_in_inc_eff, over=[nodes, carriers])'}]}, 'symmetric_transmission': {'description': 'Fix the flow capacity of two `transmission` technologies representing the same link in the system.', 'foreach': ['nodes', 'techs'], 'where': 'base_tech=transmission', 'equations': [{'expression': 'sum(flow_cap, over=carriers) == link_flow_cap'}]}, 'export_balance': {'description': "Set the lower bound of a technology's outflow to a technology's carrier export, for any technologies that can export carriers out of the system.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_export', 'equations': [{'expression': 'flow_out >= flow_export'}]}, 'flow_export_max': {'description': "Set the upper bound of a technology's carrier export, for any technologies that can export carriers out of the system.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_export AND export_max', 'equations': [{'where': 'operating_units', 'expression': 'flow_export <= export_max * operating_units'}, {'where': 'NOT operating_units', 'expression': 'flow_export <= export_max'}]}, 'unit_commitment_milp': {'description': 'Set the upper bound of the number of integer units of technology that can exist, for any technology using integer units to define its capacity.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'operating_units AND purchased_units', 'equations': [{'expression': 'operating_units <= purchased_units'}]}, 'available_flow_cap_binary': {'description': 'Limit flow capacity to zero if the technology is not operating in a given timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'available_flow_cap', 'equations': [{'expression': 'available_flow_cap <= flow_cap_max * operating_units'}]}, 'available_flow_cap_continuous': {'description': 'Limit flow capacity to the value of the `flow_cap` decision variable when the technology is operating in a given timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'available_flow_cap', 'equations': [{'expression': 'available_flow_cap <= flow_cap'}]}, 'available_flow_cap_max_binary_continuous_switch': {'description': 'Force flow capacity to equal the value of the `flow_cap` decision variable if the technology is operating in a given timestep, zero otherwise.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'available_flow_cap', 'equations': [{'expression': 'available_flow_cap >= flow_cap + ((operating_units - purchased_units) * flow_cap_max)'}]}, 'flow_out_max_milp': {'description': "Set the upper bound of a technology's ability to produce carriers, for any technology using integer units to define its capacity.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out AND operating_units AND flow_cap_per_unit', 'equations': [{'expression': 'flow_out <= operating_units * timestep_resolution * flow_cap_per_unit * flow_out_parasitic_eff'}]}, 'flow_in_max_milp': {'description': "Set the upper bound of a technology's ability to consume carriers, for any technology using integer units to define its capacity.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in AND operating_units AND flow_cap_per_unit', 'equations': [{'expression': 'flow_in <= operating_units * timestep_resolution * flow_cap_per_unit'}]}, 'flow_out_min_milp': {'description': "Set the lower bound of a technology's ability to produce carriers, for any technology using integer units to define its capacity.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out AND operating_units AND flow_out_min_relative', 'equations': [{'where': 'flow_cap_per_unit', 'expression': 'flow_out >= operating_units * timestep_resolution * flow_cap_per_unit * flow_out_min_relative'}, {'where': 'available_flow_cap', 'expression': 'flow_out >= available_flow_cap * timestep_resolution * flow_out_min_relative'}]}, 'storage_capacity_units_milp': {'description': 'Fix the storage capacity of any technology using integer units to define its capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'storage AND purchased_units AND storage_cap_per_unit', 'equations': [{'expression': 'storage_cap == purchased_units * storage_cap_per_unit'}]}, 'flow_capacity_units_milp': {'description': 'Fix the flow capacity of any technology using integer units to define its capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'operating_units', 'equations': [{'where': 'flow_cap_per_unit', 'expression': 'flow_cap == purchased_units * flow_cap_per_unit'}, {'where': 'NOT flow_cap_per_unit', 'expression': 'flow_cap <= purchased_units * bigM'}]}, 'flow_capacity_max_purchase_milp': {'description': "Set the upper bound on a technology's flow capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'purchased_units AND flow_cap_max', 'equations': [{'expression': 'flow_cap <= flow_cap_max * purchased_units'}]}, 'flow_capacity_min_purchase_milp': {'description': "Set the lower bound on a technology's flow capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'purchased_units AND flow_cap_min', 'equations': [{'expression': 'flow_cap >= flow_cap_min * purchased_units'}]}, 'storage_capacity_max_purchase_milp': {'description': "Set the upper bound on a technology's storage capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs'], 'where': 'purchased_units AND storage_cap_max', 'equations': [{'expression': 'storage_cap <= storage_cap_max * purchased_units'}]}, 'storage_capacity_min_purchase_milp': {'description': "Set the lower bound on a technology's storage capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs'], 'where': 'purchased_units AND storage_cap_min', 'equations': [{'expression': 'storage_cap >= storage_cap_min * purchased_units'}]}, 'unit_capacity_max_systemwide_milp': {'description': 'Set the upper bound on the total number of units of a technology that can be purchased across all nodes where the technology can exist, for any technology using integer units to define its capacity.', 'foreach': ['techs'], 'where': 'purchased_units AND purchased_units_max_systemwide', 'equations': [{'expression': 'sum(purchased_units, over=nodes) <= purchased_units_max_systemwide'}]}, 'unit_capacity_min_systemwide_milp': {'description': 'Set the lower bound on the total number of units of a technology that can be purchased across all nodes where the technology can exist, for any technology using integer units to define its capacity.', 'foreach': ['techs'], 'where': 'purchased_units AND purchased_units_max_systemwide', 'equations': [{'expression': 'sum(purchased_units, over=nodes) >= purchased_units_min_systemwide'}]}, 'async_flow_in_milp': {'description': "Set a technology's ability to have inflow in the same timestep that it has outflow, for any technology using the asynchronous flow binary switch.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'async_flow_switch', 'equations': [{'expression': 'sum(flow_in, over=carriers) <= (1 - async_flow_switch) * bigM'}]}, 'async_flow_out_milp': {'description': "Set a technology's ability to have outflow in the same timestep that it has inflow, for any technology using the asynchronous flow binary switch.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'async_flow_switch', 'equations': [{'expression': 'sum(flow_out, over=carriers) <= async_flow_switch * bigM'}]}, 'ramping_up': {'description': "Set the upper bound on a technology's ability to ramp outflow up beyond a certain percentage compared to the previous timestep.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_ramping AND NOT timesteps=get_val_at_index(timesteps=0)', 'equations': [{'expression': '$flow - roll($flow, timesteps=1) <= flow_ramping * flow_cap'}], 'sub_expressions': {'flow': [{'where': 'carrier_out AND NOT carrier_in', 'expression': 'flow_out / timestep_resolution'}, {'where': 'carrier_in AND NOT carrier_out', 'expression': 'flow_in / timestep_resolution'}, {'where': 'carrier_in AND carrier_out', 'expression': '(flow_out - flow_in) / timestep_resolution'}]}}, 'ramping_down': {'description': "Set the upper bound on a technology's ability to ramp outflow down beyond a certain percentage compared to the previous timestep.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_ramping AND NOT timesteps=get_val_at_index(timesteps=0)', 'equations': [{'expression': '-1 * flow_ramping * flow_cap <= $flow - roll($flow, timesteps=1)'}], 'sub_expressions': {'flow': [{'where': 'carrier_out AND NOT carrier_in', 'expression': 'flow_out / timestep_resolution'}, {'where': 'carrier_in AND NOT carrier_out', 'expression': 'flow_in / timestep_resolution'}, {'where': 'carrier_in AND carrier_out', 'expression': '(flow_out - flow_in) / timestep_resolution'}]}}, 'link_chp_outputs': {'description': 'Fix the relationship between heat and electricity output', 'equations': [{'expression': 'flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]'}], 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '[chp] in techs'}}, 'variables': {'flow_cap': {'description': "A technology's flow capacity, also known as its nominal or nameplate capacity.", 'unit': 'power', 'foreach': ['nodes', 'techs', 'carriers'], 'bounds': {'min': 'flow_cap_min', 'max': 'flow_cap_max'}}, 'link_flow_cap': {'description': "A transmission technology's flow capacity, also known as its nominal or nameplate capacity.", 'unit': 'power', 'foreach': ['techs'], 'where': 'base_tech=transmission', 'bounds': {'min': 0, 'max': inf}}, 'flow_out': {'description': 'The outflow of a technology per timestep, also known as the flow discharged (from `storage` technologies) or the flow received (by `transmission` technologies) on a link.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_out', 'bounds': {'min': 0, 'max': inf}}, 'flow_in': {'description': 'The inflow to a technology per timestep, also known as the flow consumed (by `storage` technologies) or the flow sent (by `transmission` technologies) on a link.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_in', 'bounds': {'min': 0, 'max': inf}}, 'flow_export': {'description': 'The flow of a carrier exported outside the system boundaries by a technology per timestep.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_export', 'bounds': {'min': 0, 'max': inf}}, 'area_use': {'description': 'The area in space utilised directly (e.g., solar PV panels) or indirectly (e.g., biofuel crops) by a technology.', 'unit': 'area', 'foreach': ['nodes', 'techs'], 'where': '(area_use_min OR area_use_max OR area_use_per_flow_cap OR sink_unit=per_area OR source_unit=per_area)', 'bounds': {'min': 'area_use_min', 'max': 'area_use_max'}}, 'source_use': {'description': 'The carrier flow consumed from outside the system boundaries by a `supply` technology.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'base_tech=supply', 'bounds': {'min': 0, 'max': inf}}, 'source_cap': {'description': 'The upper limit on a flow that can be consumed from outside the system boundaries by a `supply` technology in each timestep.', 'unit': 'power', 'foreach': ['nodes', 'techs'], 'where': 'base_tech=supply', 'bounds': {'min': 'source_cap_min', 'max': 'source_cap_max'}}, 'storage_cap': {'description': 'The upper limit on a carrier that can be stored by a technology in any timestep.', 'unit': 'energy', 'foreach': ['nodes', 'techs'], 'where': 'include_storage=True OR base_tech=storage', 'domain': 'real', 'bounds': {'min': 'storage_cap_min', 'max': 'storage_cap_max'}, 'active': True}, 'storage': {'description': 'The carrier stored by a `storage` technology in each timestep.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'include_storage=True OR base_tech=storage', 'bounds': {'min': 0, 'max': inf}}, 'purchased_units': {'description': 'Integer number of a technology that has been purchased,\nfor any technology set to require integer capacity purchasing.\nThis is used to allow installation of fixed capacity units of technologies (\nif `flow_cap_max` == `flow_cap_min`) and/or to set a fixed cost for a technology,\nirrespective of its installed capacity.\nOn top of a fixed technology cost,\na continuous cost for the quantity of installed capacity can still be applied.\n\nSince technology capacity is no longer a continuous decision variable,\nit is possible for these technologies to have a lower bound set on outflow/consumption\nwhich will only be enforced in those timesteps that the technology is operating.\nOtherwise, the same lower bound forces the technology to produce/consume\nthat minimum amount of carrier in *every* timestep.\n', 'unit': 'integer', 'foreach': ['nodes', 'techs'], 'where': 'cap_method=integer', 'domain': 'integer', 'bounds': {'min': 'purchased_units_min', 'max': 'purchased_units_max'}}, 'operating_units': {'description': 'Integer number of a technology that is operating in each timestep, for any technology set to require integer capacity purchasing.', 'unit': 'integer', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'integer_dispatch=True AND cap_method=integer', 'domain': 'integer', 'bounds': {'min': 0, 'max': inf}}, 'available_flow_cap': {'description': 'Flow capacity that will be set to zero if the technology is not operating in a given timestep and will be set to the value of the decision variable `flow_cap` otherwise.', 'unit': 'power', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'integer_dispatch=True AND flow_cap_max AND NOT flow_cap_per_unit', 'bounds': {'min': 0, 'max': inf}}, 'async_flow_switch': {'description': 'Binary switch to force asynchronous outflow/consumption of technologies with both `flow_in` and `flow_out` defined. This ensures that a technology with carrier flow efficiencies < 100% cannot produce and consume a flow simultaneously to remove unwanted carrier from the system.', 'unit': 'integer', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'force_async_flow=True', 'domain': 'integer', 'bounds': {'min': 0, 'max': 1}}, 'unmet_demand': {'description': 'Virtual source of carrier flow to ensure model feasibility. This should only be considered a debugging rather than a modelling tool as it may distort the model in other ways due to the large impact it has on the objective function value. When present in a model in which it has been requested, it indicates an inability for technologies in the model to reach a sufficient combined supply capacity to meet demand.', 'unit': 'energy', 'foreach': ['nodes', 'carriers', 'timesteps'], 'where': 'config.ensure_feasibility=True', 'bounds': {'min': 0, 'max': inf}}, 'unused_supply': {'description': 'Virtual sink of carrier flow to ensure model feasibility. This should only be considered a debugging rather than a modelling tool as it may distort the model in other ways due to the large impact it has on the objective function value. In model results, the negation of this variable is combined with `unmet_demand` and presented as only one variable: `unmet_demand`. When present in a model in which it has been requested, it indicates an inability for technologies in the model to reach a sufficient combined consumption capacity to meet required outflow (e.g. from renewables without the possibility of curtailment).', 'unit': 'energy', 'foreach': ['nodes', 'carriers', 'timesteps'], 'where': 'config.ensure_feasibility=True', 'bounds': {'min': -inf, 'max': 0}}}, 'objectives': {'min_cost_optimisation': {'description': 'Minimise the total cost of installing and operating all technologies in the system. If multiple cost classes are present (e.g., monetary and co2 emissions), the weighted sum of total costs is minimised. Cost class weights can be defined in the indexed parameter `objective_cost_weights`.', 'equations': [{'where': 'any(cost, over=[nodes, techs, costs])', 'expression': 'sum(\n sum(cost, over=[nodes, techs])\n * objective_cost_weights,\n over=costs\n) + $unmet_demand'}, {'where': 'NOT any(cost, over=[nodes, techs, costs])', 'expression': '$unmet_demand'}], 'sub_expressions': {'unmet_demand': [{'where': 'config.ensure_feasibility=True', 'expression': 'sum(\n sum(unmet_demand - unused_supply, over=[carriers, nodes])\n * timestep_weights,\n over=timesteps\n) * bigM'}, {'where': 'NOT config.ensure_feasibility=True', 'expression': '0'}]}, 'sense': 'minimise', 'active': True}}, 'global_expressions': {'flow_out_inc_eff': {'description': 'Outflows after taking efficiency losses into account.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_out / (\n flow_out_eff * flow_out_parasitic_eff *\n flow_out_eff_per_distance ** default_if_empty(distance, 1)\n)'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_out / (flow_out_eff * flow_out_parasitic_eff)'}]}, 'flow_in_inc_eff': {'description': 'Inflows after taking efficiency losses into account.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_in * flow_in_eff * flow_in_eff_per_distance ** default_if_empty(distance, 1)'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_in * flow_in_eff'}]}, 'cost_var': {'description': 'The operating costs per timestep of a technology.', 'unit': 'cost_per_time', 'foreach': ['nodes', 'techs', 'costs', 'timesteps'], 'where': 'cost_export OR cost_flow_in OR cost_flow_out', 'equations': [{'expression': 'timestep_weights * ($cost_export + $cost_flow_out + $cost_flow_in)'}], 'sub_expressions': {'cost_export': [{'where': 'flow_export', 'expression': 'sum(cost_export * default_if_empty(flow_export, 0), over=carriers)'}, {'where': 'NOT flow_export', 'expression': '0'}], 'cost_flow_in': [{'where': 'base_tech=supply', 'expression': 'cost_flow_in * source_use'}, {'where': 'NOT base_tech=supply', 'expression': 'sum(cost_flow_in * default_if_empty(flow_in, 0), over=carriers)'}], 'cost_flow_out': [{'expression': 'sum(cost_flow_out * default_if_empty(flow_out, 0), over=carriers)'}]}}, 'cost_investment_flow_cap': {'description': 'The investment costs associated with the nominal/rated capacity of a technology.', 'foreach': ['nodes', 'techs', 'carriers', 'costs'], 'where': 'flow_cap AND (cost_flow_cap OR cost_flow_cap_per_distance)', 'equations': [{'expression': '$cost_sum * flow_cap'}], 'sub_expressions': {'cost_sum': [{'where': 'base_tech=transmission', 'expression': '(cost_flow_cap + cost_flow_cap_per_distance * default_if_empty(distance, 0)) * 0.5'}, {'where': 'NOT base_tech=transmission', 'expression': 'cost_flow_cap'}]}}, 'cost_investment_storage_cap': {'description': 'The investment costs associated with the storage capacity of a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_storage_cap AND storage_cap', 'equations': [{'expression': 'cost_storage_cap * storage_cap'}]}, 'cost_investment_source_cap': {'description': 'The investment costs associated with the source consumption capacity of a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_source_cap AND source_cap', 'equations': [{'expression': 'cost_source_cap * source_cap'}]}, 'cost_investment_area_use': {'description': 'The investment costs associated with the area used by a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_area_use AND area_use', 'equations': [{'expression': 'cost_area_use * area_use'}]}, 'cost_investment_purchase': {'description': 'The investment costs associated with the binary purchase of a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_purchase AND purchased_units', 'equations': [{'where': 'base_tech=transmission', 'expression': '(cost_purchase + cost_purchase_per_distance * default_if_empty(distance, 0)) * purchased_units * 0.5'}, {'where': 'NOT base_tech=transmission', 'expression': 'cost_purchase * purchased_units'}]}, 'cost_investment': {'description': 'The installation costs of a technology, including annualised investment costs and annual maintenance costs.', 'unit': 'cost', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_investment_flow_cap OR cost_investment_storage_cap OR cost_investment_source_cap OR cost_investment_area_use OR cost_investment_purchase', 'equations': [{'expression': '$annualisation_weight * (\n $depreciation_rate * (\n sum(default_if_empty(cost_investment_flow_cap, 0), over=carriers) +\n default_if_empty(cost_investment_storage_cap, 0) +\n default_if_empty(cost_investment_source_cap, 0) +\n default_if_empty(cost_investment_area_use, 0) +\n default_if_empty(cost_investment_purchase, 0)\n ) * (1 + cost_om_annual_investment_fraction)\n + sum(cost_om_annual * default_if_empty(flow_cap, 0), over=carriers)\n)\n'}], 'sub_expressions': {'annualisation_weight': [{'expression': 'sum(timestep_resolution * timestep_weights, over=timesteps) / 8760'}], 'depreciation_rate': [{'where': 'cost_depreciation_rate', 'expression': 'cost_depreciation_rate'}, {'where': 'NOT cost_depreciation_rate AND cost_interest_rate=0', 'expression': '1 / lifetime'}, {'where': 'NOT cost_depreciation_rate AND cost_interest_rate>0', 'expression': '(cost_interest_rate * ((1 + cost_interest_rate) ** lifetime)) / (((1 + cost_interest_rate) ** lifetime) - 1)'}]}}, 'cost': {'description': 'The total annualised costs of a technology, including installation and operation costs.', 'unit': 'cost', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_investment OR cost_var', 'equations': [{'expression': '$cost_investment + $cost_var_sum'}], 'sub_expressions': {'cost_investment': [{'where': 'cost_investment', 'expression': 'cost_investment'}, {'where': 'NOT cost_investment', 'expression': '0'}], 'cost_var_sum': [{'where': 'cost_var', 'expression': 'sum(cost_var, over=timesteps)'}, {'where': 'NOT cost_var', 'expression': '0'}]}, 'active': True}}}
- name :
- Urban-scale example model
Until we solve the model, inputs
is the same as _model_data
m._model_data
<xarray.Dataset> Dimensions: (costs: 1, techs: 12, nodes: 4, carriers: 3, timesteps: 48) Coordinates: * costs (costs) object 'monetary' * techs (techs) object 'N1_to_X2' ... 'supply_grid_po... * carriers (carriers) object 'electricity' 'gas' 'heat' * nodes (nodes) object 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 2005-07-01 ... 200... Data variables: (12/35) objective_cost_weights (costs) float64 1.0 bigM float64 1e+06 base_tech (techs) object 'transmission' ... 'supply' carrier_in (nodes, techs, carriers) float64 nan nan ... nan carrier_out (nodes, techs, carriers) float64 nan nan ... nan color (techs) object '#823739' '#823739' ... '#C5ABE3' ... ... available_area (nodes) float64 nan 500.0 1.3e+03 900.0 source_use_equals (techs, timesteps) float64 nan nan ... nan nan sink_use_equals (timesteps, techs, nodes) float64 nan ... nan definition_matrix (nodes, techs, carriers) bool False ... False timestep_resolution (timesteps) float64 1.0 1.0 1.0 ... 1.0 1.0 1.0 timestep_weights (timesteps) float64 1.0 1.0 1.0 ... 1.0 1.0 1.0 Attributes: calliope_version_defined: 0.7.0 calliope_version_initialised: 0.7.0.dev2 applied_overrides: scenario: None defaults: {'available_area': inf, 'bigM': 1000000000... allow_operate_mode: 1 config: {'build': {'backend': 'pyomo', 'ensure_fea... applied_custom_math: ['custom_math.yaml'] math: {'constraints': {'flow_capacity_per_storag... name: Urban-scale example model
- costs: 1
- techs: 12
- nodes: 4
- carriers: 3
- timesteps: 48
- costs(costs)object'monetary'
array(['monetary'], dtype=object)
- techs(techs)object'N1_to_X2' ... 'supply_grid_power'
array(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype=object)
- carriers(carriers)object'electricity' 'gas' 'heat'
array(['electricity', 'gas', 'heat'], dtype=object)
- nodes(nodes)object'N1' 'X1' 'X2' 'X3'
array(['N1', 'X1', 'X2', 'X3'], dtype=object)
- timesteps(timesteps)datetime64[ns]2005-07-01 ... 2005-07-02T23:00:00
array(['2005-07-01T00:00:00.000000000', '2005-07-01T01:00:00.000000000', '2005-07-01T02:00:00.000000000', '2005-07-01T03:00:00.000000000', '2005-07-01T04:00:00.000000000', '2005-07-01T05:00:00.000000000', '2005-07-01T06:00:00.000000000', '2005-07-01T07:00:00.000000000', '2005-07-01T08:00:00.000000000', '2005-07-01T09:00:00.000000000', '2005-07-01T10:00:00.000000000', '2005-07-01T11:00:00.000000000', '2005-07-01T12:00:00.000000000', '2005-07-01T13:00:00.000000000', '2005-07-01T14:00:00.000000000', '2005-07-01T15:00:00.000000000', '2005-07-01T16:00:00.000000000', '2005-07-01T17:00:00.000000000', '2005-07-01T18:00:00.000000000', '2005-07-01T19:00:00.000000000', '2005-07-01T20:00:00.000000000', '2005-07-01T21:00:00.000000000', '2005-07-01T22:00:00.000000000', '2005-07-01T23:00:00.000000000', '2005-07-02T00:00:00.000000000', '2005-07-02T01:00:00.000000000', '2005-07-02T02:00:00.000000000', '2005-07-02T03:00:00.000000000', '2005-07-02T04:00:00.000000000', '2005-07-02T05:00:00.000000000', '2005-07-02T06:00:00.000000000', '2005-07-02T07:00:00.000000000', '2005-07-02T08:00:00.000000000', '2005-07-02T09:00:00.000000000', '2005-07-02T10:00:00.000000000', '2005-07-02T11:00:00.000000000', '2005-07-02T12:00:00.000000000', '2005-07-02T13:00:00.000000000', '2005-07-02T14:00:00.000000000', '2005-07-02T15:00:00.000000000', '2005-07-02T16:00:00.000000000', '2005-07-02T17:00:00.000000000', '2005-07-02T18:00:00.000000000', '2005-07-02T19:00:00.000000000', '2005-07-02T20:00:00.000000000', '2005-07-02T21:00:00.000000000', '2005-07-02T22:00:00.000000000', '2005-07-02T23:00:00.000000000'], dtype='datetime64[ns]')
- objective_cost_weights(costs)float641.0
- is_result :
- False
- default :
- 1
array([1.])
- bigM()float641e+06
- is_result :
- False
- default :
- 1000000000.0
array(1000000.)
- base_tech(techs)object'transmission' ... 'supply'
- is_result :
- False
array(['transmission', 'transmission', 'transmission', 'transmission', 'transmission', 'conversion', 'conversion', 'demand', 'demand', 'supply', 'supply', 'supply'], dtype=object)
- carrier_in(nodes, techs, carriers)float64nan nan 1.0 nan ... nan nan nan nan
- is_result :
- False
array([[[nan, nan, 1.], [nan, nan, 1.], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, nan], [nan, nan, 1.], [ 1., nan, nan], [ 1., nan, nan], [nan, nan, nan], [nan, 1., nan], ... [nan, 1., nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, 1., nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]]])
- carrier_out(nodes, techs, carriers)float64nan nan 1.0 nan ... nan nan nan nan
- is_result :
- False
array([[[nan, nan, 1.], [nan, nan, 1.], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, nan], [nan, nan, 1.], [ 1., nan, nan], [ 1., nan, nan], [nan, nan, nan], [ 1., nan, 1.], ... [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, 1., nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, 1.], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, 1., nan], [nan, nan, nan]]])
- color(techs)object'#823739' '#823739' ... '#C5ABE3'
- is_result :
- False
- default :
- nan
array(['#823739', '#823739', '#823739', '#6783E3', '#6783E3', '#8E2999', '#E4AB97', '#072486', '#660507', '#F9D956', '#C98AAD', '#C5ABE3'], dtype=object)
- cost_flow_cap_per_distance(techs, costs)float640.3 0.3 0.3 0.01 ... nan nan nan
- is_result :
- False
- default :
- 0
array([[0.3 ], [0.3 ], [0.3 ], [0.01], [0.01], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]])
- cost_interest_rate(techs, costs)float640.1 0.1 0.1 0.1 ... nan 0.1 0.1 0.1
- is_result :
- False
- default :
- 0
array([[0.1], [0.1], [0.1], [0.1], [0.1], [0.1], [0.1], [nan], [nan], [0.1], [0.1], [0.1]])
- distance(techs)float643.0 4.0 3.0 10.0 ... nan nan nan
- is_result :
- False
- default :
- nan
array([ 3., 4., 3., 10., 5., nan, nan, nan, nan, nan, nan, nan])
- flow_cap_max(techs, carriers, nodes)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- inf
array([[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [2000., nan, 2000., nan]], [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [2000., nan, nan, 2000.]], [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [2000., 2000., nan, nan]], [[ nan, 2000., 2000., nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, 2000., nan, 2000.], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], ... [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, 250., 250., 50.], [ nan, nan, nan, nan], [ nan, nan, nan, nan]], [[ nan, nan, nan, nan], [ nan, 2000., 2000., 2000.], [ nan, nan, nan, nan]], [[ nan, 2000., nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]])
- flow_out_eff_per_distance(techs)float640.975 0.975 0.975 ... nan nan nan
- is_result :
- False
- default :
- 1.0
array([0.975, 0.975, 0.975, nan, nan, nan, nan, nan, nan, nan, nan, nan])
- lifetime(techs)float6425.0 25.0 25.0 ... 25.0 25.0 25.0
- is_result :
- False
- default :
- inf
array([25., 25., 25., 25., 25., 25., 25., nan, nan, 25., 25., 25.])
- name(techs)object'District heat distribution' ......
- is_result :
- False
- default :
- nan
array(['District heat distribution', 'District heat distribution', 'District heat distribution', 'Electrical power distribution', 'Electrical power distribution', 'Natural gas boiler', 'Combined heat and power', 'Electrical demand', 'Heat demand', 'Solar photovoltaic power', 'Natural gas import', 'National grid import'], dtype=object)
- techs_inheritance(techs)object'interest_rate_setter,heat_pipes...
- is_result :
- False
array(['interest_rate_setter,heat_pipes', 'interest_rate_setter,heat_pipes', 'interest_rate_setter,heat_pipes', 'interest_rate_setter,power_lines', 'interest_rate_setter,power_lines', 'interest_rate_setter', 'interest_rate_setter', nan, nan, 'interest_rate_setter', 'interest_rate_setter', 'interest_rate_setter'], dtype=object)
- carrier_export(techs, carriers)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
array([[nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, nan], [nan, nan, nan], [ 1., nan, nan], [nan, nan, nan], [nan, nan, nan]])
- cost_flow_cap(nodes, techs, costs, carriers)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 0
array([[[[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], ... [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, 7.80e+01]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[ nan, nan, nan]], [[1.35e+03, nan, nan]], [[ nan, 1.00e+00, nan]], [[ nan, nan, nan]]]])
- cost_flow_out(techs, costs, carriers, nodes)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 0
array([[[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], ... [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, -0.0203, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]], [[[ nan, nan, nan, nan], [ nan, nan, nan, nan], [ nan, nan, nan, nan]]]])
- flow_out_eff(techs, carriers)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 1.0
array([[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [0.98 , nan, nan], [0.98 , nan, nan], [ nan, 0.85 , 0.85 ], [0.405, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]])
- heat_to_power_ratio(techs)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
array([nan, nan, nan, nan, nan, nan, 0.8, nan, nan, nan, nan, nan])
- area_use_max(techs)float64nan nan nan nan ... 1.5e+03 nan nan
- is_result :
- False
- default :
- inf
array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, 1500., nan, nan])
- area_use_per_flow_cap(techs)float64nan nan nan nan ... nan 7.0 nan nan
- is_result :
- False
- default :
- nan
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, 7., nan, nan])
- flow_out_parasitic_eff(techs)float64nan nan nan nan ... 0.85 nan nan
- is_result :
- False
- default :
- 1.0
array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, 0.85, nan, nan])
- source_unit(techs)objectnan nan nan ... 'per_area' nan nan
- is_result :
- False
- default :
- absolute
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, 'per_area', nan, nan], dtype=object)
- cost_flow_in(techs, costs)float64nan nan nan nan ... nan 0.025 0.1
- is_result :
- False
- default :
- 0
array([[ nan], [ nan], [ nan], [ nan], [ nan], [0.004], [ nan], [ nan], [ nan], [ nan], [0.025], [0.1 ]])
- source_use_max(techs)float64nan nan nan nan ... nan nan inf inf
- is_result :
- False
- default :
- inf
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, inf, inf])
- cost_export(nodes, techs, costs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- 0
array([[[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], ..., [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], ..., [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]], [[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]]])
- cost_om_annual(nodes, techs, costs)float64nan nan nan nan ... -80.5 nan nan
- is_result :
- False
- default :
- 0
array([[[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], ... [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [-80.5], [ nan], [ nan]]])
- latitude(nodes)float6451.45 51.46 51.47 51.43
- is_result :
- False
array([51.4450766, 51.4596158, 51.4652373, 51.4287016])
- longitude(nodes)float64-0.1247 -0.1613 -0.1142 -0.1311
- is_result :
- False
array([-0.1247183, -0.1613446, -0.1141548, -0.1310635])
- available_area(nodes)float64nan 500.0 1.3e+03 900.0
- is_result :
- False
- default :
- inf
array([ nan, 500., 1300., 900.])
- source_use_equals(techs, timesteps)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- nan
array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], ... [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]])
- sink_use_equals(timesteps, techs, nodes)float64nan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- nan
array([[[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., ... ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]]])
- definition_matrix(nodes, techs, carriers)boolFalse False True ... False False
- is_result :
- False
array([[[False, False, True], [False, False, True], [False, False, True], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False], [False, False, False]], [[False, False, False], [False, False, False], [False, False, True], [ True, False, False], [ True, False, False], [False, False, False], [ True, True, True], ... [False, True, True], [False, False, False], [ True, False, False], [False, False, True], [ True, False, False], [False, True, False], [False, False, False]], [[False, False, False], [False, False, True], [False, False, False], [False, False, False], [ True, False, False], [False, True, True], [False, False, False], [ True, False, False], [False, False, True], [ True, False, False], [False, True, False], [False, False, False]]])
- timestep_resolution(timesteps)float641.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
- is_result :
- False
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
- timestep_weights(timesteps)float641.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
- is_result :
- False
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
- costsPandasIndex
PandasIndex(Index(['monetary'], dtype='object', name='costs'))
- techsPandasIndex
PandasIndex(Index(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype='object', name='techs'))
- carriersPandasIndex
PandasIndex(Index(['electricity', 'gas', 'heat'], dtype='object', name='carriers'))
- nodesPandasIndex
PandasIndex(Index(['N1', 'X1', 'X2', 'X3'], dtype='object', name='nodes'))
- timestepsPandasIndex
PandasIndex(DatetimeIndex(['2005-07-01 00:00:00', '2005-07-01 01:00:00', '2005-07-01 02:00:00', '2005-07-01 03:00:00', '2005-07-01 04:00:00', '2005-07-01 05:00:00', '2005-07-01 06:00:00', '2005-07-01 07:00:00', '2005-07-01 08:00:00', '2005-07-01 09:00:00', '2005-07-01 10:00:00', '2005-07-01 11:00:00', '2005-07-01 12:00:00', '2005-07-01 13:00:00', '2005-07-01 14:00:00', '2005-07-01 15:00:00', '2005-07-01 16:00:00', '2005-07-01 17:00:00', '2005-07-01 18:00:00', '2005-07-01 19:00:00', '2005-07-01 20:00:00', '2005-07-01 21:00:00', '2005-07-01 22:00:00', '2005-07-01 23:00:00', '2005-07-02 00:00:00', '2005-07-02 01:00:00', '2005-07-02 02:00:00', '2005-07-02 03:00:00', '2005-07-02 04:00:00', '2005-07-02 05:00:00', '2005-07-02 06:00:00', '2005-07-02 07:00:00', '2005-07-02 08:00:00', '2005-07-02 09:00:00', '2005-07-02 10:00:00', '2005-07-02 11:00:00', '2005-07-02 12:00:00', '2005-07-02 13:00:00', '2005-07-02 14:00:00', '2005-07-02 15:00:00', '2005-07-02 16:00:00', '2005-07-02 17:00:00', '2005-07-02 18:00:00', '2005-07-02 19:00:00', '2005-07-02 20:00:00', '2005-07-02 21:00:00', '2005-07-02 22:00:00', '2005-07-02 23:00:00'], dtype='datetime64[ns]', name='timesteps', freq=None))
- calliope_version_defined :
- 0.7.0
- calliope_version_initialised :
- 0.7.0.dev2
- applied_overrides :
- scenario :
- None
- defaults :
- {'available_area': inf, 'bigM': 1000000000.0, 'objective_cost_weights': 1, 'area_use': inf, 'area_use_max': inf, 'area_use_min': 0, 'area_use_per_flow_cap': nan, 'cap_method': 'continuous', 'color': nan, 'cost_area_use': 0, 'cost_depreciation_rate': 1, 'cost_export': 0, 'cost_flow_cap': 0, 'cost_flow_cap_per_distance': 0, 'cost_flow_in': 0, 'cost_flow_out': 0, 'cost_interest_rate': 0, 'cost_om_annual': 0, 'cost_om_annual_investment_fraction': 0, 'cost_purchase': 0, 'cost_purchase_per_distance': 0, 'cost_source_cap': 0, 'cost_storage_cap': 0, 'cyclic_storage': True, 'distance': nan, 'export_max': inf, 'flow_cap': inf, 'flow_cap_max': inf, 'flow_cap_max_systemwide': inf, 'flow_cap_min': 0, 'flow_cap_min_systemwide': 0, 'flow_cap_per_storage_cap_max': inf, 'flow_cap_per_storage_cap_min': 0, 'flow_cap_per_unit': nan, 'flow_in_eff': 1.0, 'flow_in_eff_per_distance': 1.0, 'flow_out_eff': 1.0, 'flow_out_eff_per_distance': 1.0, 'flow_out_min_relative': 0, 'flow_out_parasitic_eff': 1.0, 'flow_ramping': 1.0, 'force_async_flow': False, 'include_storage': False, 'integer_dispatch': False, 'lifetime': inf, 'name': nan, 'one_way': False, 'purchased_units': inf, 'purchased_units_max': inf, 'purchased_units_max_systemwide': inf, 'purchased_units_min': 0, 'purchased_units_min_systemwide': 0, 'sink_unit': 'absolute', 'sink_use_equals': nan, 'sink_use_max': inf, 'sink_use_min': 0, 'source_cap': inf, 'source_cap_equals_flow_cap': False, 'source_cap_max': inf, 'source_cap_min': 0, 'source_eff': 1.0, 'source_unit': 'absolute', 'source_use_equals': nan, 'source_use_max': inf, 'source_use_min': 0, 'storage_cap': inf, 'storage_cap_max': inf, 'storage_cap_min': 0, 'storage_cap_per_unit': nan, 'storage_discharge_depth': 0, 'storage_initial': 0, 'storage_loss': 0}
- allow_operate_mode :
- 1
- config :
- {'build': {'backend': 'pyomo', 'ensure_feasibility': True, 'mode': 'plan', 'objective': 'min_cost_optimisation', 'operate_use_cap_results': False}, 'solve': {'save_logs': None, 'solver': 'cbc', 'solver_io': None, 'solver_options': None, 'spores_number': 3, 'spores_save_per_spore': False, 'spores_score_cost_class': 'spores_score', 'spores_skip_cost_op': False, 'zero_threshold': 1e-10}}
- applied_custom_math :
- ['custom_math.yaml']
- math :
- {'constraints': {'flow_capacity_per_storage_capacity_min': {'description': 'Set the lower bound of storage flow capacity relative to its storage capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'storage_cap AND flow_cap_per_storage_cap_min', 'equations': [{'expression': 'flow_cap >= storage_cap * flow_cap_per_storage_cap_min'}]}, 'flow_capacity_per_storage_capacity_max': {'description': 'Set the upper bound of storage flow capacity relative to its storage capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'storage_cap AND flow_cap_per_storage_cap_max', 'equations': [{'expression': 'flow_cap <= storage_cap * flow_cap_per_storage_cap_max'}]}, 'source_capacity_equals_flow_capacity': {'description': "Set a `supply` technology's flow capacity to equal its source capacity.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'source_cap AND source_cap_equals_flow_cap=True', 'equations': [{'expression': 'source_cap == flow_cap'}]}, 'force_zero_area_use': {'description': "Set a technology's area use to zero if its flow capacity upper bound is zero.", 'foreach': ['nodes', 'techs'], 'where': 'area_use AND flow_cap_max=0', 'equations': [{'expression': 'area_use == 0'}]}, 'area_use_per_flow_capacity': {'description': "Set a fixed relationship between a technology's flow capacity and its area use.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'area_use AND area_use_per_flow_cap', 'equations': [{'expression': 'area_use == flow_cap * area_use_per_flow_cap'}]}, 'area_use_capacity_per_loc': {'description': 'Set an upper bound on the total area that all technologies with `area_use` can occupy at a given node.', 'foreach': ['nodes'], 'where': 'area_use AND available_area', 'equations': [{'expression': 'sum(area_use, over=techs) <= available_area'}]}, 'flow_capacity_systemwide_max': {'description': 'Set an upper bound on flow capacity of a technology across all nodes in which the technology exists.', 'foreach': ['techs', 'carriers'], 'where': 'flow_cap_max_systemwide', 'equations': [{'expression': 'sum(flow_cap, over=nodes) <= flow_cap_max_systemwide'}]}, 'flow_capacity_systemwide_min': {'description': 'Set a lower bound on flow capacity of a technology across all nodes in which the technology exists.', 'foreach': ['techs', 'carriers'], 'where': 'flow_cap_min_systemwide', 'equations': [{'expression': 'sum(flow_cap, over=nodes) >= flow_cap_min_systemwide'}]}, 'balance_conversion': {'description': "Fix the relationship between a `conversion` technology's outflow and consumption.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'base_tech=conversion AND NOT include_storage=true', 'equations': [{'where': 'NOT [chp] in techs', 'expression': 'sum(flow_out_inc_eff, over=carriers) == sum(flow_in_inc_eff, over=carriers)'}, {'where': '[chp] in techs', 'expression': 'flow_out_inc_eff[carriers=electricity] == sum(flow_in_inc_eff, over=carriers)'}]}, 'flow_out_max': {'description': "Set the upper bound of a technology's outflow.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_out AND NOT operating_units', 'equations': [{'expression': 'flow_out <= flow_cap * timestep_resolution * flow_out_parasitic_eff'}]}, 'flow_out_min': {'description': "Set the lower bound of a technology's outflow.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out_min_relative AND NOT operating_units', 'equations': [{'expression': 'flow_out >= flow_cap * timestep_resolution * flow_out_min_relative'}]}, 'flow_in_max': {'description': "Set the upper bound of a technology's inflow.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_in AND NOT operating_units', 'equations': [{'expression': 'flow_in <= flow_cap * timestep_resolution'}]}, 'source_max': {'description': "Set the upper bound of a `supply` technology's source consumption.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'source_cap', 'equations': [{'expression': 'source_use <= timestep_resolution * source_cap'}]}, 'storage_max': {'description': 'Set the upper bound of the amount of carrier a technology can store.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'storage', 'equations': [{'expression': 'storage <= storage_cap'}]}, 'storage_discharge_depth_limit': {'description': 'Set the lower bound of the stored carrier a technology must keep in reserve at all times.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'storage AND storage_discharge_depth', 'equations': [{'expression': 'storage - storage_discharge_depth * storage_cap >= 0'}]}, 'system_balance': {'description': 'Set the global carrier balance of the optimisation problem by fixing the total production of a given carrier to equal the total consumption of that carrier at every node in every timestep.', 'foreach': ['nodes', 'carriers', 'timesteps'], 'equations': [{'expression': 'sum(flow_out, over=techs) - sum(flow_in, over=techs) - $flow_export + $unmet_demand_and_unused_supply == 0'}], 'sub_expressions': {'flow_export': [{'where': 'any(carrier_export, over=techs)', 'expression': 'sum(flow_export, over=techs)'}, {'where': 'NOT any(carrier_export, over=techs)', 'expression': '0'}], 'unmet_demand_and_unused_supply': [{'where': 'config.ensure_feasibility=True', 'expression': 'unmet_demand + unused_supply'}, {'where': 'NOT config.ensure_feasibility=True', 'expression': '0'}]}}, 'balance_demand': {'description': 'Set the upper bound on, or a fixed total of, that a demand technology must dump to its sink in each timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'base_tech=demand', 'equations': [{'where': 'sink_use_equals', 'expression': 'flow_in_inc_eff == sink_use_equals * $sink_scaler'}, {'where': 'NOT sink_use_equals AND sink_use_max', 'expression': 'flow_in_inc_eff <= sink_use_max * $sink_scaler'}], 'sub_expressions': {'sink_scaler': [{'where': 'sink_unit=per_area', 'expression': 'area_use'}, {'where': 'sink_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'sink_unit=absolute', 'expression': '1'}]}}, 'balance_demand_min_use': {'description': 'Set the lower bound on the quantity of flow a `demand` technology must dump to its sink in each timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'sink_use_min AND NOT sink_use_equals AND base_tech=demand', 'equations': [{'expression': 'flow_in_inc_eff >= sink_use_min * $sink_scaler'}], 'sub_expressions': {'sink_scaler': [{'where': 'sink_unit=per_area', 'expression': 'area_use'}, {'where': 'sink_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'sink_unit=absolute', 'expression': '1'}]}}, 'balance_supply_no_storage': {'description': 'Fix the outflow of a `supply` technology to its consumption of the available source.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'base_tech=supply AND NOT include_storage=True', 'equations': [{'expression': 'flow_out_inc_eff == source_use * source_eff'}]}, 'balance_supply_with_storage': {'description': 'Fix the outflow of a `supply` technology to its consumption of the available source, with a storage buffer to temporally offset the outflow from source consumption.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'storage AND base_tech=supply', 'equations': [{'expression': 'storage == $storage_previous_step + source_use * source_eff - flow_out_inc_eff'}], 'sub_expressions': {'storage_previous_step': [{'where': 'timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True', 'expression': 'storage_initial * storage_cap'}, {'where': '(\n (timesteps=get_val_at_index(timesteps=0) AND cyclic_storage=True)\n OR NOT timesteps=get_val_at_index(timesteps=0)\n) AND NOT lookup_cluster_first_timestep=True', 'expression': '(1 - storage_loss) ** roll(timestep_resolution, timesteps=1) * roll(storage, timesteps=1)'}, {'where': 'lookup_cluster_first_timestep=True AND NOT (timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True)', 'expression': '(1 - storage_loss) ** select_from_lookup_arrays(timestep_resolution, timesteps=lookup_cluster_last_timestep) * select_from_lookup_arrays(storage, timesteps=lookup_cluster_last_timestep)'}]}}, 'source_availability_supply': {'description': "Set the upper bound on, or a fixed total of, a `supply` technology's ability to consume its available resource.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'source_use AND (source_use_equals OR source_use_max)', 'equations': [{'where': 'source_use_equals', 'expression': 'source_use == source_use_equals * $source_scaler'}, {'where': 'NOT source_use_equals AND source_use_max', 'expression': 'source_use <= source_use_max * $source_scaler'}], 'sub_expressions': {'source_scaler': [{'where': 'source_unit=per_area', 'expression': 'area_use'}, {'where': 'source_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'source_unit=absolute', 'expression': '1'}]}}, 'balance_supply_min_use': {'description': 'Set the lower bound on the quantity of its source a `supply` technology must use in each timestep.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'source_use_min AND NOT source_use_equals AND base_tech=supply', 'equations': [{'expression': 'source_use >= source_use_min * $source_scaler'}], 'sub_expressions': {'source_scaler': [{'where': 'source_unit=per_area', 'expression': 'area_use'}, {'where': 'source_unit=per_cap', 'expression': 'sum(flow_cap, over=carriers)'}, {'where': 'source_unit=absolute', 'expression': '1'}]}}, 'balance_storage': {'description': 'Fix the quantity of carrier stored in a `storage` technology at the end of each timestep based on the net flow of carrier charged and discharged and the quantity of carrier stored at the start of the timestep.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '(include_storage=true or base_tech=storage) AND NOT (base_tech=supply OR base_tech=demand)', 'equations': [{'expression': 'storage == $storage_previous_step -\n sum(flow_out_inc_eff, over=carriers) + sum(flow_in_inc_eff, over=carriers)'}], 'sub_expressions': {'storage_previous_step': [{'where': 'timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True', 'expression': 'storage_initial * storage_cap'}, {'where': '(\n (timesteps=get_val_at_index(timesteps=0) AND cyclic_storage=True)\n OR NOT timesteps=get_val_at_index(timesteps=0)\n) AND NOT lookup_cluster_first_timestep=True', 'expression': '(1 - storage_loss) ** roll(timestep_resolution, timesteps=1) * roll(storage, timesteps=1)'}, {'where': 'lookup_cluster_first_timestep=True AND NOT (timesteps=get_val_at_index(timesteps=0) AND NOT cyclic_storage=True)', 'expression': '(1 - storage_loss) ** select_from_lookup_arrays(timestep_resolution, timesteps=lookup_cluster_last_timestep) * select_from_lookup_arrays(storage, timesteps=lookup_cluster_last_timestep)'}]}}, 'set_storage_initial': {'description': 'Fix the relationship between carrier stored in a `storage` technology at the start and end of the whole model period.', 'foreach': ['nodes', 'techs'], 'where': 'storage AND storage_initial AND cyclic_storage=True', 'equations': [{'expression': 'storage[timesteps=$final_step] * (\n (1 - storage_loss) ** timestep_resolution[timesteps=$final_step]\n) == storage_initial * storage_cap'}], 'slices': {'final_step': [{'expression': 'get_val_at_index(timesteps=-1)'}]}, 'active': True}, 'balance_transmission': {'description': 'Fix the relationship between between carrier flowing into and out of a `transmission` link in each timestep.', 'foreach': ['techs', 'timesteps'], 'where': 'base_tech=transmission', 'equations': [{'expression': 'sum(flow_out_inc_eff, over=[nodes, carriers]) == sum(flow_in_inc_eff, over=[nodes, carriers])'}]}, 'symmetric_transmission': {'description': 'Fix the flow capacity of two `transmission` technologies representing the same link in the system.', 'foreach': ['nodes', 'techs'], 'where': 'base_tech=transmission', 'equations': [{'expression': 'sum(flow_cap, over=carriers) == link_flow_cap'}]}, 'export_balance': {'description': "Set the lower bound of a technology's outflow to a technology's carrier export, for any technologies that can export carriers out of the system.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_export', 'equations': [{'expression': 'flow_out >= flow_export'}]}, 'flow_export_max': {'description': "Set the upper bound of a technology's carrier export, for any technologies that can export carriers out of the system.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_export AND export_max', 'equations': [{'where': 'operating_units', 'expression': 'flow_export <= export_max * operating_units'}, {'where': 'NOT operating_units', 'expression': 'flow_export <= export_max'}]}, 'unit_commitment_milp': {'description': 'Set the upper bound of the number of integer units of technology that can exist, for any technology using integer units to define its capacity.', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'operating_units AND purchased_units', 'equations': [{'expression': 'operating_units <= purchased_units'}]}, 'available_flow_cap_binary': {'description': 'Limit flow capacity to zero if the technology is not operating in a given timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'available_flow_cap', 'equations': [{'expression': 'available_flow_cap <= flow_cap_max * operating_units'}]}, 'available_flow_cap_continuous': {'description': 'Limit flow capacity to the value of the `flow_cap` decision variable when the technology is operating in a given timestep.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'available_flow_cap', 'equations': [{'expression': 'available_flow_cap <= flow_cap'}]}, 'available_flow_cap_max_binary_continuous_switch': {'description': 'Force flow capacity to equal the value of the `flow_cap` decision variable if the technology is operating in a given timestep, zero otherwise.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'available_flow_cap', 'equations': [{'expression': 'available_flow_cap >= flow_cap + ((operating_units - purchased_units) * flow_cap_max)'}]}, 'flow_out_max_milp': {'description': "Set the upper bound of a technology's ability to produce carriers, for any technology using integer units to define its capacity.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out AND operating_units AND flow_cap_per_unit', 'equations': [{'expression': 'flow_out <= operating_units * timestep_resolution * flow_cap_per_unit * flow_out_parasitic_eff'}]}, 'flow_in_max_milp': {'description': "Set the upper bound of a technology's ability to consume carriers, for any technology using integer units to define its capacity.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in AND operating_units AND flow_cap_per_unit', 'equations': [{'expression': 'flow_in <= operating_units * timestep_resolution * flow_cap_per_unit'}]}, 'flow_out_min_milp': {'description': "Set the lower bound of a technology's ability to produce carriers, for any technology using integer units to define its capacity.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out AND operating_units AND flow_out_min_relative', 'equations': [{'where': 'flow_cap_per_unit', 'expression': 'flow_out >= operating_units * timestep_resolution * flow_cap_per_unit * flow_out_min_relative'}, {'where': 'available_flow_cap', 'expression': 'flow_out >= available_flow_cap * timestep_resolution * flow_out_min_relative'}]}, 'storage_capacity_units_milp': {'description': 'Fix the storage capacity of any technology using integer units to define its capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'storage AND purchased_units AND storage_cap_per_unit', 'equations': [{'expression': 'storage_cap == purchased_units * storage_cap_per_unit'}]}, 'flow_capacity_units_milp': {'description': 'Fix the flow capacity of any technology using integer units to define its capacity.', 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'operating_units', 'equations': [{'where': 'flow_cap_per_unit', 'expression': 'flow_cap == purchased_units * flow_cap_per_unit'}, {'where': 'NOT flow_cap_per_unit', 'expression': 'flow_cap <= purchased_units * bigM'}]}, 'flow_capacity_max_purchase_milp': {'description': "Set the upper bound on a technology's flow capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'purchased_units AND flow_cap_max', 'equations': [{'expression': 'flow_cap <= flow_cap_max * purchased_units'}]}, 'flow_capacity_min_purchase_milp': {'description': "Set the lower bound on a technology's flow capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs', 'carriers'], 'where': 'purchased_units AND flow_cap_min', 'equations': [{'expression': 'flow_cap >= flow_cap_min * purchased_units'}]}, 'storage_capacity_max_purchase_milp': {'description': "Set the upper bound on a technology's storage capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs'], 'where': 'purchased_units AND storage_cap_max', 'equations': [{'expression': 'storage_cap <= storage_cap_max * purchased_units'}]}, 'storage_capacity_min_purchase_milp': {'description': "Set the lower bound on a technology's storage capacity, for any technology with integer capacity purchasing.", 'foreach': ['nodes', 'techs'], 'where': 'purchased_units AND storage_cap_min', 'equations': [{'expression': 'storage_cap >= storage_cap_min * purchased_units'}]}, 'unit_capacity_max_systemwide_milp': {'description': 'Set the upper bound on the total number of units of a technology that can be purchased across all nodes where the technology can exist, for any technology using integer units to define its capacity.', 'foreach': ['techs'], 'where': 'purchased_units AND purchased_units_max_systemwide', 'equations': [{'expression': 'sum(purchased_units, over=nodes) <= purchased_units_max_systemwide'}]}, 'unit_capacity_min_systemwide_milp': {'description': 'Set the lower bound on the total number of units of a technology that can be purchased across all nodes where the technology can exist, for any technology using integer units to define its capacity.', 'foreach': ['techs'], 'where': 'purchased_units AND purchased_units_max_systemwide', 'equations': [{'expression': 'sum(purchased_units, over=nodes) >= purchased_units_min_systemwide'}]}, 'async_flow_in_milp': {'description': "Set a technology's ability to have inflow in the same timestep that it has outflow, for any technology using the asynchronous flow binary switch.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'async_flow_switch', 'equations': [{'expression': 'sum(flow_in, over=carriers) <= (1 - async_flow_switch) * bigM'}]}, 'async_flow_out_milp': {'description': "Set a technology's ability to have outflow in the same timestep that it has inflow, for any technology using the asynchronous flow binary switch.", 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'async_flow_switch', 'equations': [{'expression': 'sum(flow_out, over=carriers) <= async_flow_switch * bigM'}]}, 'ramping_up': {'description': "Set the upper bound on a technology's ability to ramp outflow up beyond a certain percentage compared to the previous timestep.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_ramping AND NOT timesteps=get_val_at_index(timesteps=0)', 'equations': [{'expression': '$flow - roll($flow, timesteps=1) <= flow_ramping * flow_cap'}], 'sub_expressions': {'flow': [{'where': 'carrier_out AND NOT carrier_in', 'expression': 'flow_out / timestep_resolution'}, {'where': 'carrier_in AND NOT carrier_out', 'expression': 'flow_in / timestep_resolution'}, {'where': 'carrier_in AND carrier_out', 'expression': '(flow_out - flow_in) / timestep_resolution'}]}}, 'ramping_down': {'description': "Set the upper bound on a technology's ability to ramp outflow down beyond a certain percentage compared to the previous timestep.", 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_ramping AND NOT timesteps=get_val_at_index(timesteps=0)', 'equations': [{'expression': '-1 * flow_ramping * flow_cap <= $flow - roll($flow, timesteps=1)'}], 'sub_expressions': {'flow': [{'where': 'carrier_out AND NOT carrier_in', 'expression': 'flow_out / timestep_resolution'}, {'where': 'carrier_in AND NOT carrier_out', 'expression': 'flow_in / timestep_resolution'}, {'where': 'carrier_in AND carrier_out', 'expression': '(flow_out - flow_in) / timestep_resolution'}]}}, 'link_chp_outputs': {'description': 'Fix the relationship between heat and electricity output', 'equations': [{'expression': 'flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]'}], 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '[chp] in techs'}}, 'variables': {'flow_cap': {'description': "A technology's flow capacity, also known as its nominal or nameplate capacity.", 'unit': 'power', 'foreach': ['nodes', 'techs', 'carriers'], 'bounds': {'min': 'flow_cap_min', 'max': 'flow_cap_max'}}, 'link_flow_cap': {'description': "A transmission technology's flow capacity, also known as its nominal or nameplate capacity.", 'unit': 'power', 'foreach': ['techs'], 'where': 'base_tech=transmission', 'bounds': {'min': 0, 'max': inf}}, 'flow_out': {'description': 'The outflow of a technology per timestep, also known as the flow discharged (from `storage` technologies) or the flow received (by `transmission` technologies) on a link.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_out', 'bounds': {'min': 0, 'max': inf}}, 'flow_in': {'description': 'The inflow to a technology per timestep, also known as the flow consumed (by `storage` technologies) or the flow sent (by `transmission` technologies) on a link.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_in', 'bounds': {'min': 0, 'max': inf}}, 'flow_export': {'description': 'The flow of a carrier exported outside the system boundaries by a technology per timestep.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'carrier_export', 'bounds': {'min': 0, 'max': inf}}, 'area_use': {'description': 'The area in space utilised directly (e.g., solar PV panels) or indirectly (e.g., biofuel crops) by a technology.', 'unit': 'area', 'foreach': ['nodes', 'techs'], 'where': '(area_use_min OR area_use_max OR area_use_per_flow_cap OR sink_unit=per_area OR source_unit=per_area)', 'bounds': {'min': 'area_use_min', 'max': 'area_use_max'}}, 'source_use': {'description': 'The carrier flow consumed from outside the system boundaries by a `supply` technology.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'base_tech=supply', 'bounds': {'min': 0, 'max': inf}}, 'source_cap': {'description': 'The upper limit on a flow that can be consumed from outside the system boundaries by a `supply` technology in each timestep.', 'unit': 'power', 'foreach': ['nodes', 'techs'], 'where': 'base_tech=supply', 'bounds': {'min': 'source_cap_min', 'max': 'source_cap_max'}}, 'storage_cap': {'description': 'The upper limit on a carrier that can be stored by a technology in any timestep.', 'unit': 'energy', 'foreach': ['nodes', 'techs'], 'where': 'include_storage=True OR base_tech=storage', 'domain': 'real', 'bounds': {'min': 'storage_cap_min', 'max': 'storage_cap_max'}, 'active': True}, 'storage': {'description': 'The carrier stored by a `storage` technology in each timestep.', 'unit': 'energy', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'include_storage=True OR base_tech=storage', 'bounds': {'min': 0, 'max': inf}}, 'purchased_units': {'description': 'Integer number of a technology that has been purchased,\nfor any technology set to require integer capacity purchasing.\nThis is used to allow installation of fixed capacity units of technologies (\nif `flow_cap_max` == `flow_cap_min`) and/or to set a fixed cost for a technology,\nirrespective of its installed capacity.\nOn top of a fixed technology cost,\na continuous cost for the quantity of installed capacity can still be applied.\n\nSince technology capacity is no longer a continuous decision variable,\nit is possible for these technologies to have a lower bound set on outflow/consumption\nwhich will only be enforced in those timesteps that the technology is operating.\nOtherwise, the same lower bound forces the technology to produce/consume\nthat minimum amount of carrier in *every* timestep.\n', 'unit': 'integer', 'foreach': ['nodes', 'techs'], 'where': 'cap_method=integer', 'domain': 'integer', 'bounds': {'min': 'purchased_units_min', 'max': 'purchased_units_max'}}, 'operating_units': {'description': 'Integer number of a technology that is operating in each timestep, for any technology set to require integer capacity purchasing.', 'unit': 'integer', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'integer_dispatch=True AND cap_method=integer', 'domain': 'integer', 'bounds': {'min': 0, 'max': inf}}, 'available_flow_cap': {'description': 'Flow capacity that will be set to zero if the technology is not operating in a given timestep and will be set to the value of the decision variable `flow_cap` otherwise.', 'unit': 'power', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'integer_dispatch=True AND flow_cap_max AND NOT flow_cap_per_unit', 'bounds': {'min': 0, 'max': inf}}, 'async_flow_switch': {'description': 'Binary switch to force asynchronous outflow/consumption of technologies with both `flow_in` and `flow_out` defined. This ensures that a technology with carrier flow efficiencies < 100% cannot produce and consume a flow simultaneously to remove unwanted carrier from the system.', 'unit': 'integer', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': 'force_async_flow=True', 'domain': 'integer', 'bounds': {'min': 0, 'max': 1}}, 'unmet_demand': {'description': 'Virtual source of carrier flow to ensure model feasibility. This should only be considered a debugging rather than a modelling tool as it may distort the model in other ways due to the large impact it has on the objective function value. When present in a model in which it has been requested, it indicates an inability for technologies in the model to reach a sufficient combined supply capacity to meet demand.', 'unit': 'energy', 'foreach': ['nodes', 'carriers', 'timesteps'], 'where': 'config.ensure_feasibility=True', 'bounds': {'min': 0, 'max': inf}}, 'unused_supply': {'description': 'Virtual sink of carrier flow to ensure model feasibility. This should only be considered a debugging rather than a modelling tool as it may distort the model in other ways due to the large impact it has on the objective function value. In model results, the negation of this variable is combined with `unmet_demand` and presented as only one variable: `unmet_demand`. When present in a model in which it has been requested, it indicates an inability for technologies in the model to reach a sufficient combined consumption capacity to meet required outflow (e.g. from renewables without the possibility of curtailment).', 'unit': 'energy', 'foreach': ['nodes', 'carriers', 'timesteps'], 'where': 'config.ensure_feasibility=True', 'bounds': {'min': -inf, 'max': 0}}}, 'objectives': {'min_cost_optimisation': {'description': 'Minimise the total cost of installing and operating all technologies in the system. If multiple cost classes are present (e.g., monetary and co2 emissions), the weighted sum of total costs is minimised. Cost class weights can be defined in the indexed parameter `objective_cost_weights`.', 'equations': [{'where': 'any(cost, over=[nodes, techs, costs])', 'expression': 'sum(\n sum(cost, over=[nodes, techs])\n * objective_cost_weights,\n over=costs\n) + $unmet_demand'}, {'where': 'NOT any(cost, over=[nodes, techs, costs])', 'expression': '$unmet_demand'}], 'sub_expressions': {'unmet_demand': [{'where': 'config.ensure_feasibility=True', 'expression': 'sum(\n sum(unmet_demand - unused_supply, over=[carriers, nodes])\n * timestep_weights,\n over=timesteps\n) * bigM'}, {'where': 'NOT config.ensure_feasibility=True', 'expression': '0'}]}, 'sense': 'minimise', 'active': True}}, 'global_expressions': {'flow_out_inc_eff': {'description': 'Outflows after taking efficiency losses into account.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_out', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_out / (\n flow_out_eff * flow_out_parasitic_eff *\n flow_out_eff_per_distance ** default_if_empty(distance, 1)\n)'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_out / (flow_out_eff * flow_out_parasitic_eff)'}]}, 'flow_in_inc_eff': {'description': 'Inflows after taking efficiency losses into account.', 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_in * flow_in_eff * flow_in_eff_per_distance ** default_if_empty(distance, 1)'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_in * flow_in_eff'}]}, 'cost_var': {'description': 'The operating costs per timestep of a technology.', 'unit': 'cost_per_time', 'foreach': ['nodes', 'techs', 'costs', 'timesteps'], 'where': 'cost_export OR cost_flow_in OR cost_flow_out', 'equations': [{'expression': 'timestep_weights * ($cost_export + $cost_flow_out + $cost_flow_in)'}], 'sub_expressions': {'cost_export': [{'where': 'flow_export', 'expression': 'sum(cost_export * default_if_empty(flow_export, 0), over=carriers)'}, {'where': 'NOT flow_export', 'expression': '0'}], 'cost_flow_in': [{'where': 'base_tech=supply', 'expression': 'cost_flow_in * source_use'}, {'where': 'NOT base_tech=supply', 'expression': 'sum(cost_flow_in * default_if_empty(flow_in, 0), over=carriers)'}], 'cost_flow_out': [{'expression': 'sum(cost_flow_out * default_if_empty(flow_out, 0), over=carriers)'}]}}, 'cost_investment_flow_cap': {'description': 'The investment costs associated with the nominal/rated capacity of a technology.', 'foreach': ['nodes', 'techs', 'carriers', 'costs'], 'where': 'flow_cap AND (cost_flow_cap OR cost_flow_cap_per_distance)', 'equations': [{'expression': '$cost_sum * flow_cap'}], 'sub_expressions': {'cost_sum': [{'where': 'base_tech=transmission', 'expression': '(cost_flow_cap + cost_flow_cap_per_distance * default_if_empty(distance, 0)) * 0.5'}, {'where': 'NOT base_tech=transmission', 'expression': 'cost_flow_cap'}]}}, 'cost_investment_storage_cap': {'description': 'The investment costs associated with the storage capacity of a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_storage_cap AND storage_cap', 'equations': [{'expression': 'cost_storage_cap * storage_cap'}]}, 'cost_investment_source_cap': {'description': 'The investment costs associated with the source consumption capacity of a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_source_cap AND source_cap', 'equations': [{'expression': 'cost_source_cap * source_cap'}]}, 'cost_investment_area_use': {'description': 'The investment costs associated with the area used by a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_area_use AND area_use', 'equations': [{'expression': 'cost_area_use * area_use'}]}, 'cost_investment_purchase': {'description': 'The investment costs associated with the binary purchase of a technology.', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_purchase AND purchased_units', 'equations': [{'where': 'base_tech=transmission', 'expression': '(cost_purchase + cost_purchase_per_distance * default_if_empty(distance, 0)) * purchased_units * 0.5'}, {'where': 'NOT base_tech=transmission', 'expression': 'cost_purchase * purchased_units'}]}, 'cost_investment': {'description': 'The installation costs of a technology, including annualised investment costs and annual maintenance costs.', 'unit': 'cost', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_investment_flow_cap OR cost_investment_storage_cap OR cost_investment_source_cap OR cost_investment_area_use OR cost_investment_purchase', 'equations': [{'expression': '$annualisation_weight * (\n $depreciation_rate * (\n sum(default_if_empty(cost_investment_flow_cap, 0), over=carriers) +\n default_if_empty(cost_investment_storage_cap, 0) +\n default_if_empty(cost_investment_source_cap, 0) +\n default_if_empty(cost_investment_area_use, 0) +\n default_if_empty(cost_investment_purchase, 0)\n ) * (1 + cost_om_annual_investment_fraction)\n + sum(cost_om_annual * default_if_empty(flow_cap, 0), over=carriers)\n)\n'}], 'sub_expressions': {'annualisation_weight': [{'expression': 'sum(timestep_resolution * timestep_weights, over=timesteps) / 8760'}], 'depreciation_rate': [{'where': 'cost_depreciation_rate', 'expression': 'cost_depreciation_rate'}, {'where': 'NOT cost_depreciation_rate AND cost_interest_rate=0', 'expression': '1 / lifetime'}, {'where': 'NOT cost_depreciation_rate AND cost_interest_rate>0', 'expression': '(cost_interest_rate * ((1 + cost_interest_rate) ** lifetime)) / (((1 + cost_interest_rate) ** lifetime) - 1)'}]}}, 'cost': {'description': 'The total annualised costs of a technology, including installation and operation costs.', 'unit': 'cost', 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_investment OR cost_var', 'equations': [{'expression': '$cost_investment + $cost_var_sum'}], 'sub_expressions': {'cost_investment': [{'where': 'cost_investment', 'expression': 'cost_investment'}, {'where': 'NOT cost_investment', 'expression': '0'}], 'cost_var_sum': [{'where': 'cost_var', 'expression': 'sum(cost_var, over=timesteps)'}, {'where': 'NOT cost_var', 'expression': '0'}]}, 'active': True}}}
- name :
- Urban-scale example model
We can find the same PV flow_cap_max
data as seen in m._model_run
m._model_data.flow_cap_max.sel(techs="pv").to_series().dropna()
carriers nodes electricity X1 250.0 X2 250.0 X3 50.0 Name: flow_cap_max, dtype: float64
Building and checking the optimisation problem¶
Calling m.build
allows us to build the optimisation problem, which creates arrays of Python objects from the YAML math formulation.
m.build()
[2024-01-27 14:23:56] INFO Optimisation Model | parameters | Generated.
[2024-01-27 14:23:57] INFO Optimisation Model | variables | Generated.
[2024-01-27 14:23:58] INFO Optimisation Model | global_expressions | Generated.
[2024-01-27 14:23:59] INFO Optimisation Model | constraints | Generated.
[2024-01-27 14:24:00] INFO Optimisation Model | objectives | Generated.
As with the calliope Model
, the backend has its own dataset containing all the arrays of backend objects
m.backend._dataset
<xarray.Dataset> Dimensions: (costs: 1, techs: 12, carriers: 3, nodes: 4, timesteps: 48) Coordinates: * costs (costs) object 'monetary' * techs (techs) object 'N1_to_X2' ... 'supply... * carriers (carriers) object 'electricity' ... '... * nodes (nodes) object 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 2005-07-01... Data variables: (12/109) objective_cost_weights (costs) object parameters[objective_c... bigM object parameters[bigM][0] base_tech (techs) object parameters[base_tech][... carrier_in (nodes, techs, carriers) object nan .... carrier_out (nodes, techs, carriers) object nan .... color (techs) object parameters[color][0] .... ... ... source_availability_supply (nodes, techs, timesteps) object nan ... balance_transmission (techs, timesteps) object constraints... symmetric_transmission (nodes, techs) object constraints[sym... export_balance (nodes, techs, carriers, timesteps) object ... link_chp_outputs (nodes, techs, timesteps) object nan ... min_cost_optimisation object objectives[min_cost_optimisati...
- costs: 1
- techs: 12
- carriers: 3
- nodes: 4
- timesteps: 48
- costs(costs)object'monetary'
array(['monetary'], dtype=object)
- techs(techs)object'N1_to_X2' ... 'supply_grid_power'
array(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype=object)
- carriers(carriers)object'electricity' 'gas' 'heat'
array(['electricity', 'gas', 'heat'], dtype=object)
- nodes(nodes)object'N1' 'X1' 'X2' 'X3'
array(['N1', 'X1', 'X2', 'X3'], dtype=object)
- timesteps(timesteps)datetime64[ns]2005-07-01 ... 2005-07-02T23:00:00
array(['2005-07-01T00:00:00.000000000', '2005-07-01T01:00:00.000000000', '2005-07-01T02:00:00.000000000', '2005-07-01T03:00:00.000000000', '2005-07-01T04:00:00.000000000', '2005-07-01T05:00:00.000000000', '2005-07-01T06:00:00.000000000', '2005-07-01T07:00:00.000000000', '2005-07-01T08:00:00.000000000', '2005-07-01T09:00:00.000000000', '2005-07-01T10:00:00.000000000', '2005-07-01T11:00:00.000000000', '2005-07-01T12:00:00.000000000', '2005-07-01T13:00:00.000000000', '2005-07-01T14:00:00.000000000', '2005-07-01T15:00:00.000000000', '2005-07-01T16:00:00.000000000', '2005-07-01T17:00:00.000000000', '2005-07-01T18:00:00.000000000', '2005-07-01T19:00:00.000000000', '2005-07-01T20:00:00.000000000', '2005-07-01T21:00:00.000000000', '2005-07-01T22:00:00.000000000', '2005-07-01T23:00:00.000000000', '2005-07-02T00:00:00.000000000', '2005-07-02T01:00:00.000000000', '2005-07-02T02:00:00.000000000', '2005-07-02T03:00:00.000000000', '2005-07-02T04:00:00.000000000', '2005-07-02T05:00:00.000000000', '2005-07-02T06:00:00.000000000', '2005-07-02T07:00:00.000000000', '2005-07-02T08:00:00.000000000', '2005-07-02T09:00:00.000000000', '2005-07-02T10:00:00.000000000', '2005-07-02T11:00:00.000000000', '2005-07-02T12:00:00.000000000', '2005-07-02T13:00:00.000000000', '2005-07-02T14:00:00.000000000', '2005-07-02T15:00:00.000000000', '2005-07-02T16:00:00.000000000', '2005-07-02T17:00:00.000000000', '2005-07-02T18:00:00.000000000', '2005-07-02T19:00:00.000000000', '2005-07-02T20:00:00.000000000', '2005-07-02T21:00:00.000000000', '2005-07-02T22:00:00.000000000', '2005-07-02T23:00:00.000000000'], dtype='datetime64[ns]')
- objective_cost_weights(costs)objectparameters[objective_cost_weight...
- is_result :
- False
- default :
- 1
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'min_cost_optimisation'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c266c0>], dtype=object)
- bigM()objectparameters[bigM][0]
- is_result :
- False
- default :
- 1000000000.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'min_cost_optimisation'}
- coords_in_name :
- False
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c26490>, dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c26fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c270c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c271b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c272a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c272f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27340>], dtype=object)
- carrier_in(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27930>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c279d0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27a70>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27ac0>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27a20>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27700>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c277f0>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27570>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27c00>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]]], dtype=object)
- carrier_out(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc370>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc410>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc500>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc550>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc4b0>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc050>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc5f0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc190>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc320>, nan], [nan, nan, nan]]], dtype=object)
- color(techs)objectparameters[color][0] ... paramet...
- is_result :
- False
- default :
- nan
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c26f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c273e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc8c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc460>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc6e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdccd0>], dtype=object)
- cost_flow_cap_per_distance(techs, costs)objectparameters[cost_flow_cap_per_dis...
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment_flow_cap'}
- coords_in_name :
- False
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcb90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdca50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcaa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdceb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdce10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd270>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd360>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd3b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd400>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd450>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd180>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd4f0>]], dtype=object)
- cost_interest_rate(techs, costs)objectparameters[cost_interest_rate][0...
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment'}
- coords_in_name :
- False
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd090>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd1d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd220>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcfa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcbe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcb40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdc7d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd680>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd5e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd770>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd9f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdda90>]], dtype=object)
- distance(techs)objectparameters[distance][0] ... nan
- is_result :
- False
- default :
- nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_inc_eff', 'cost_investment_flow_cap', 'flow_out_inc_eff'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd8b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdcdc0>, nan, nan, nan, nan, nan, nan, nan], dtype=object)
- flow_cap_max(techs, carriers, nodes)objectparameters[flow_cap_max][0] ... ...
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_cap'}
- coords_in_name :
- False
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cddc70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cddea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd7c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdee90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cde800>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdffc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdfd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cde710>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0050>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cddbd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdd540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cde350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cde3a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf1b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf250>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdfde0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdfe30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0c30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0c80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0d20>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdefd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdf0c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdfe80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdfed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdff20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdff70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0d70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0dc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0e60>]]], dtype=object)
- flow_out_eff_per_distance(techs)objectparameters[flow_out_eff_per_dist...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_out_inc_eff'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cde1c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdde00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cddd10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cddef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cdddb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c278e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c27d90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d10e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d0ff0>], dtype=object)
- lifetime(techs)objectparameters[lifetime][0] ... para...
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d11d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d14f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d18b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d19a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1b80>], dtype=object)
- name(techs)objectparameters[name][0] ... paramete...
- is_result :
- False
- default :
- nan
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d20d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2120>], dtype=object)
- techs_inheritance(techs)objectparameters[techs_inheritance][0]...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d17c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d16d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d21c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1770>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d26c0>], dtype=object)
- carrier_export(techs, carriers)objectnan nan nan nan ... nan nan nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([[nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d24e0>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2300>, nan, nan], [nan, nan, nan], [nan, nan, nan]], dtype=object)
- cost_flow_cap(nodes, techs, costs, carriers)objectparameters[cost_flow_cap][0] ......
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment_flow_cap'}
- coords_in_name :
- False
array([[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3d90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4a00>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d1d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4d70>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3f20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4f50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5090>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d32a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c51d0>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c46e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5590>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d38e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c47d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5770>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c58b0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3bb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4af0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5a40>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d3d40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c4be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5b30>]]]], dtype=object)
- cost_flow_out(techs, costs, carriers, nodes)objectparameters[cost_flow_out][0] ......
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_var'}
- coords_in_name :
- False
array([[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d12c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d29e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d28f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2800>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c70c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c77a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cc050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cc0a0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64cde080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c5e00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6ee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7110>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7e30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccd70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccb90>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6e40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6f80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7f20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7f70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7fc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c7ed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cce60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccf50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccfa0>]]]], dtype=object)
- flow_out_eff(techs, carriers)objectparameters[flow_out_eff][0] ... ...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_out_inc_eff'}
- coords_in_name :
- False
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c60d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdb30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c6030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdb80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd7c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdbd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2e40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdc20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659d2d00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdc70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cc410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdcc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd8b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdd10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdd60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdae0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cddb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ccff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd9f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cde50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cceb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cda40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdea0>]], dtype=object)
- heat_to_power_ratio(techs)objectnan nan nan nan ... nan nan nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'link_chp_outputs'}
- coords_in_name :
- False
array([nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd5e0>, nan, nan, nan, nan, nan], dtype=object)
- area_use_max(techs)objectparameters[area_use_max][0] ... ...
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'area_use'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce1c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd6d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd3b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cd680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce710>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce7b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce850>], dtype=object)
- area_use_per_flow_cap(techs)objectnan nan nan ... nan nan
- is_result :
- False
- default :
- nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'area_use_per_flow_capacity'}
- coords_in_name :
- False
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce5d0>, nan, nan], dtype=object)
- flow_out_parasitic_eff(techs)objectparameters[flow_out_parasitic_ef...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_out_inc_eff', 'flow_out_max'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce3f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdf40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cdfe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cefd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf0c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf160>], dtype=object)
- source_unit(techs)objectparameters[source_unit][0] ... p...
- is_result :
- False
- default :
- absolute
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cebc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cec60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cecb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf5c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf750>], dtype=object)
- cost_flow_in(techs, costs)objectparameters[cost_flow_in][0] ... ...
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_var'}
- coords_in_name :
- False
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ceda0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cda90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ceee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf7f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce260>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cee90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659ce0d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfc00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfcf0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfa70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfd40>]], dtype=object)
- source_use_max(techs)objectparameters[source_use_max][0] .....
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf340>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf2a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfd90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf2f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cff20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cff70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cef80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c12260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c12bc0>], dtype=object)
- cost_export(nodes, techs, costs, carriers, timesteps)objectparameters[cost_export][0] ... p...
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_var'}
- coords_in_name :
- False
array([[[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfb60>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c1130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c1180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c11d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65049180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650491d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65049220>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65049f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65049fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6504a030>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509a440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509a490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509a4e0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509b250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509b2a0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65048320>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65049090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650490e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65049130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65099540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65099590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650995e0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509a350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509a3a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6509a3f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eea800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eea850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eea8a0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb6b0>]]]]], dtype=object)
- cost_om_annual(nodes, techs, costs)objectparameters[cost_om_annual][0] .....
- is_result :
- False
- default :
- 0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment'}
- coords_in_name :
- False
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64bfcaf0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c12580>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cfe80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb750>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb930>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650102d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010410>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010550>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010690>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650107d0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c12da0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cf8e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb9d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb840>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eebf20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650100a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650101e0>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010230>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010370>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650104b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650105f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010730>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010870>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64c13a20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659cffc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb7a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eeb8e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eebfc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010280>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650103c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010500>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010640>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650108c0>]]], dtype=object)
- latitude(nodes)objectparameters[latitude][0] ... para...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eebc00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eebb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c0140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a659c0320>], dtype=object)
- longitude(nodes)objectparameters[longitude][0] ... par...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010dc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010d20>], dtype=object)
- available_area(nodes)objectparameters[available_area][0] .....
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'area_use_capacity_per_loc'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650111d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65010af0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650109b0>], dtype=object)
- source_use_equals(techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_availability_supply'}
- coords_in_name :
- False
array([[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650123a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650123f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650124e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012530>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650125d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650126c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012710>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]], dtype=object)
- sink_use_equals(timesteps, techs, nodes)objectnan nan nan nan ... nan nan nan nan
- is_result :
- False
- default :
- nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'balance_demand'}
- coords_in_name :
- False
array([[[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., ... ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]], [[nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan], ..., [nan, nan, nan, nan], [nan, nan, nan, nan], [nan, nan, nan, nan]]], dtype=object)
- definition_matrix(nodes, techs, carriers)objectparameters[definition_matrix][0]...
- is_result :
- False
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65011a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650114a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650117c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65011950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eebde0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64eebca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec730>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec5a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecb90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecbe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecc30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eccd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecd20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ecd70>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eee90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eeee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eef30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eef80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eefd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef0c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef160>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef1b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef250>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef2a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef2f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef340>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef430>]]], dtype=object)
- timestep_resolution(timesteps)objectparameters[timestep_resolution][...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_max', 'cost_investment', 'flow_in_max', 'flow_out_max'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a650129e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eca00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec8c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ec910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef5c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efc00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efc50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efcf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658efd40>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c0f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c190>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c1e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c2d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c3c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c460>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c5a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593c640>], dtype=object)
- timestep_weights(timesteps)objectparameters[timestep_weights][0] ...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment', 'cost_var', 'min_cost_optimisation'}
- coords_in_name :
- False
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a65012800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593ca00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cb90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cbe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cc30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593ccd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cd20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cd70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593ce60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593ceb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cf50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593cff0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d3b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d4f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d5e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d6d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d7c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593d8b0>], dtype=object)
- area_use_min()objectparameters[area_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'area_use'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593e710>, dtype=object)
- cap_method()objectparameters[cap_method][0]
- original_dtype :
- <U10
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593e2b0>, dtype=object)
- cost_area_use()objectparameters[cost_area_use][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593ed00>, dtype=object)
- cost_depreciation_rate()objectparameters[cost_depreciation_rat...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593f480>, dtype=object)
- cost_om_annual_investment_fraction()objectparameters[cost_om_annual_invest...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'cost_investment'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593fc50>, dtype=object)
- cost_purchase()objectparameters[cost_purchase][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593f610>, dtype=object)
- cost_purchase_per_distance()objectparameters[cost_purchase_per_dis...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593dae0>, dtype=object)
- cost_source_cap()objectparameters[cost_source_cap][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ef9d0>, dtype=object)
- cost_storage_cap()objectparameters[cost_storage_cap][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eb6b0>, dtype=object)
- cyclic_storage()objectparameters[cyclic_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593e620>, dtype=object)
- export_max()objectparameters[export_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593f390>, dtype=object)
- flow_cap_max_systemwide()objectparameters[flow_cap_max_systemwi...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ea300>, dtype=object)
- flow_cap_min()objectparameters[flow_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'flow_cap'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a6593f570>, dtype=object)
- flow_cap_min_systemwide()objectparameters[flow_cap_min_systemwi...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e99f0>, dtype=object)
- flow_cap_per_storage_cap_max()objectparameters[flow_cap_per_storage_...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e9e00>, dtype=object)
- flow_cap_per_storage_cap_min()objectparameters[flow_cap_per_storage_...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eada0>, dtype=object)
- flow_cap_per_unit()float64nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(nan)
- flow_in_eff()objectparameters[flow_in_eff][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_inc_eff'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e9810>, dtype=object)
- flow_in_eff_per_distance()objectparameters[flow_in_eff_per_dista...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_inc_eff'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e8370>, dtype=object)
- flow_out_min_relative()objectparameters[flow_out_min_relative...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ebe30>, dtype=object)
- flow_ramping()objectparameters[flow_ramping][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e9900>, dtype=object)
- force_async_flow()objectparameters[force_async_flow][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e80f0>, dtype=object)
- include_storage()objectparameters[include_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e88c0>, dtype=object)
- integer_dispatch()objectparameters[integer_dispatch][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e9180>, dtype=object)
- one_way()objectparameters[one_way][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658ea760>, dtype=object)
- purchased_units_max()objectparameters[purchased_units_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eb480>, dtype=object)
- purchased_units_max_systemwide()objectparameters[purchased_units_max_s...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64f040f0>, dtype=object)
- purchased_units_min()objectparameters[purchased_units_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e8f00>, dtype=object)
- purchased_units_min_systemwide()objectparameters[purchased_units_min_s...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e8e60>, dtype=object)
- sink_unit()objectparameters[sink_unit][0]
- original_dtype :
- <U8
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64f06260>, dtype=object)
- sink_use_max()objectparameters[sink_use_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64f05d10>, dtype=object)
- sink_use_min()objectparameters[sink_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658eb520>, dtype=object)
- source_cap_equals_flow_cap()objectparameters[source_cap_equals_flo...
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64f05860>, dtype=object)
- source_cap_max()objectparameters[source_cap_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_cap'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64f065d0>, dtype=object)
- source_cap_min()objectparameters[source_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'source_cap'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a658e85f0>, dtype=object)
- source_eff()objectparameters[source_eff][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'balance_supply_no_storage'}
- coords_in_name :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7f4a64f05630>, dtype=object)
- source_use_min()objectparameters[source_use_min][0]