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-02-16 08:29:15] INFO Model: initialising
[2024-02-16 08:29:15] INFO Model: preprocessing stage 1 (model_run)
[2024-02-16 08:29:18] INFO Model: preprocessing stage 2 (model_data)
[2024-02-16 08:29:18] 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.dev3 applied_overrides: scenario: None defaults: {'available_area': inf, 'bigM': 1000000000... allow_operate_mode: 1 config: {'build': {'backend': 'pyomo', 'ensure_fea... applied_additional_math: ['additional_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 :
- 1.0
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.dev3
- 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': 1.0, '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_additional_math :
- ['additional_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 AND flow_cap_per_unit', 'equations': [{'expression': 'flow_cap == purchased_units * flow_cap_per_unit'}]}, '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', 'equations': [{'where': 'flow_cap_max', 'expression': 'flow_cap <= flow_cap_max * purchased_units'}, {'where': 'NOT flow_cap_max', 'expression': 'flow_cap <= bigM * 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.", 'default': 0, '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.", 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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).', 'default': 0, '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.', 'default': 0, '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 ** distance\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.', 'default': 0, 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_in * flow_in_eff * flow_in_eff_per_distance ** distance'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_in * flow_in_eff'}]}, 'cost_var': {'description': 'The operating costs per timestep of a technology.', 'default': 0, '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 * flow_export, 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 * flow_in, over=carriers)'}], 'cost_flow_out': [{'expression': 'sum(cost_flow_out * flow_out, over=carriers)'}]}}, 'cost_investment_flow_cap': {'description': 'The investment costs associated with the nominal/rated capacity of a technology.', 'default': 0, '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 * distance) * 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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_purchase AND purchased_units', 'equations': [{'where': 'base_tech=transmission', 'expression': '(cost_purchase + cost_purchase_per_distance * distance) * 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.', 'default': 0, '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 * flow_cap, 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.', 'default': 0, '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.dev3 applied_overrides: scenario: None defaults: {'available_area': inf, 'bigM': 1000000000... allow_operate_mode: 1 config: {'build': {'backend': 'pyomo', 'ensure_fea... applied_additional_math: ['additional_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 :
- 1.0
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.dev3
- 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': 1.0, '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_additional_math :
- ['additional_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 AND flow_cap_per_unit', 'equations': [{'expression': 'flow_cap == purchased_units * flow_cap_per_unit'}]}, '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', 'equations': [{'where': 'flow_cap_max', 'expression': 'flow_cap <= flow_cap_max * purchased_units'}, {'where': 'NOT flow_cap_max', 'expression': 'flow_cap <= bigM * 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.", 'default': 0, '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.", 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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).', 'default': 0, '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.', 'default': 0, '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 ** distance\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.', 'default': 0, 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_in * flow_in_eff * flow_in_eff_per_distance ** distance'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_in * flow_in_eff'}]}, 'cost_var': {'description': 'The operating costs per timestep of a technology.', 'default': 0, '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 * flow_export, 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 * flow_in, over=carriers)'}], 'cost_flow_out': [{'expression': 'sum(cost_flow_out * flow_out, over=carriers)'}]}}, 'cost_investment_flow_cap': {'description': 'The investment costs associated with the nominal/rated capacity of a technology.', 'default': 0, '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 * distance) * 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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_purchase AND purchased_units', 'equations': [{'where': 'base_tech=transmission', 'expression': '(cost_purchase + cost_purchase_per_distance * distance) * 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.', 'default': 0, '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 * flow_cap, 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.', 'default': 0, '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-02-16 08:29:19] INFO Optimisation Model | parameters | Generated.
[2024-02-16 08:29:19] INFO Optimisation Model | variables | Generated.
[2024-02-16 08:29:20] INFO Optimisation Model | global_expressions | Generated.
[2024-02-16 08:29:21] INFO Optimisation Model | constraints | Generated.
[2024-02-16 08:29:22] 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
- description :
- Weightings for cost classes to apply in the objective function.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2850>], 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
- description :
- BigM is a large value used to define certain optimisation problems. See https://en.wikipedia.org/wiki/Big_M_method for more information. This value should be larger than the largest values that any decision variables can take, but should not be **too** large (i.e., do not set it greater than 3 orders of magnitude above the numeric range of the model). If too large, numerical problems may arise in the optimisation.
- unit :
- None
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2df0>, dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'cost_var', 'flow_out_inc_eff', 'source_cap', 'balance_supply_no_storage', 'cost_investment_flow_cap', 'balance_conversion', 'link_flow_cap', 'balance_transmission', 'flow_in_inc_eff', 'symmetric_transmission', 'balance_demand', 'source_use'}
- coords_in_name :
- False
- description :
- Should be the name of one of the abstract base classes, from which some initial parameter defaults will be derived and with which certain base math will be triggered.
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b30c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b31b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b28f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b32a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3340>], dtype=object)
- carrier_in(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in', 'flow_in_max'}
- coords_in_name :
- False
- description :
- Carrier(s) consumed by this technology. Only `transmission`, `conversion`, `storage`, and `demand` technologies can define this parameter
- unit :
- None
- default :
- nan
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3a20>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3ac0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3b10>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff92a5b3930>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3980>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3520>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3890>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3750>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3bb0>], [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 :
- {'flow_out_max', 'flow_out'}
- coords_in_name :
- False
- description :
- Carrier(s) produced by this technology. Only `transmission`, `conversion`, `storage`, and `supply` technologies can define this parameter
- unit :
- None
- default :
- nan
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654410>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6544b0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6543c0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff92a654550>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654500>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6540a0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6545a0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6541e0>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654320>, 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
- description :
- Color that can be used when plotting results.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b33e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6546e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654e60>], 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
- description :
- Cost per unit of the decision variable `flow_cap` and per unit distance of a transmission link. Applied to transmission links only.
- unit :
- $(\text{power}\times\text{distance})^{-1}$
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654d70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6547d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654b40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654ff0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654f00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6552c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655310>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655360>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6553b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655400>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6554a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6554f0>]], 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
- description :
- Used when computing levelized costs and technology depreciation_rate (relative to lifetime).
- unit :
- fraction
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6551d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655270>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655090>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654dc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654c80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6548c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655630>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655590>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655720>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655a90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655ae0>]], dtype=object)
- distance(techs)objectparameters[distance][0] ... para...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_inc_eff', 'flow_out_inc_eff', 'cost_investment_flow_cap'}
- coords_in_name :
- False
- description :
- Used for `..._per_distance` constraints. If not defined, it will be automatically derived from latitude/longitude of nodes in a link.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6555e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6559f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655bd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6560d0>], 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
- description :
- Limits `flow_cap` to a maximum.
- unit :
- power.
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655770>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6572a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6573e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6681e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6682d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668320>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6561c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6565d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656670>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6574d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657520>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656120>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668f50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6572f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657340>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6680a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6680f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6690e0>]]], 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
- description :
- Total link efficiency will be calculated as $\text{flow\_out\_eff}\times{}\text{flow\_out\_eff\_per\_distance}^\text{distance}$. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b07d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6693b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6691d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669220>], 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
- description :
- Must be defined if fixed capital costs are defined. A reasonable value for many technologies is around 20-25 years.
- unit :
- years.
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6694a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6694f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669b80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669d10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668ff0>], 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
- description :
- Long name of technology, which can be used in post-processing (e.g., plotting).
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6697c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6696d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6692c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a1c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a2b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a3a0>], dtype=object)
- techs_inheritance(techs)objectparameters[techs_inheritance][0]...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6699f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6698b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6699a0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a940>], dtype=object)
- carrier_export(techs, carriers)objectnan nan nan nan ... nan nan nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_export'}
- coords_in_name :
- False
- description :
- Carrier(s) produced by this technology that can be exported out of the system boundaries without having to go to a pre-defined `sink` (i.e., via a `demand` technology). Must be a subset of `carrier_out`.
- unit :
- None
- default :
- nan
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 0x7ff92a66a760>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a300>, 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
- description :
- Cost per unit of the decision variable `flow_cap`.
- unit :
- $\text{power}^{-1}$.
array([[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66ad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bf20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678e60>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678f50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6780f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679040>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6782d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679220>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6792c0>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6797c0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b9d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679950>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678b40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679a90>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679b80>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679cc0>]]]], 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
- description :
- Cost per unit of `flow_in` in each timestep.
- unit :
- $\text{energy}^{-1}$.
array([[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66ac10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66aa30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67afd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b0c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67c0f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67c140>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66ab70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67a080>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b1b0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67bf20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cf50>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67aee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67af30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ad50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67af80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67bf70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67bfc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67be80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67be30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d090>]]]], 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
- description :
- Conversion efficiency from the technology to `sink`/`flow_out` (tech dependent). Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67a300>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dd10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67a210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67da40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ddb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d6d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66aee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d9f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67de00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67da90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ceb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67de50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67db30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dea0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67db80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67def0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dc20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67df90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d0e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dc70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dfe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dcc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e030>]], 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
- description :
- None
- unit :
- None
- default :
- nan
array([nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d7c0>, 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
- description :
- If set to a finite value, limits the upper bound of the `area_use` decision variable to this value.
- unit :
- $\text{area}^{2}$.
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d8b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d4f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e8a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ea30>], 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', 'area_use_per_flow_capacity'}
- coords_in_name :
- False
- description :
- If set, forces `area_use` to follow `flow_cap` with the given numerical ratio (e.g. setting to 1.5 means that `area_use == 1.5 * flow_cap`).
- unit :
- $\frac{\text{area}^{2}}{\text{power}}$.
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e7b0>, 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
- description :
- Additional losses as flow gets transferred from the plant to the carrier, e.g. due to plant parasitic consumption. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ebc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e3f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e0d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e120>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f1b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67efd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f2a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f340>], dtype=object)
- source_unit(techs)objectparameters[source_unit][0] ... p...
- is_result :
- False
- default :
- absolute
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'area_use', 'source_availability_supply'}
- coords_in_name :
- False
- description :
- Sets the unit of `Source` to either `absolute` (e.g. kWh), `per_area` (e.g. kWh/m2), or `per_cap` (e.g. kWh/kW). `per_area` uses the `area_use` decision variable to scale the source while `per_cap` uses the `flow_cap` decision variable.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67edf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ec10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ee40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ec60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67eda0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f7a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f890>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f8e0>], 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
- description :
- Cost per unit of `flow_in` in each timestep.
- unit :
- $\text{energy}^{-1}$.
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e300>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f160>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f930>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e4e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e210>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fd40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fd90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fde0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fe30>]], dtype=object)
- source_use_max(techs)objectparameters[source_use_max][0] .....
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_availability_supply'}
- coords_in_name :
- False
- description :
- Maximum sink use to remove a carrier from the system (e.g., biofuel, coal, rainfall, wind flow). Unit dictated by `source_unit`.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f9d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f4d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ff70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6703c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670410>], 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
- description :
- Cost per unit of `flow_export` in each timestep. Usually used in the negative sense, as a subsidy.
- unit :
- $\text{energy}^{-1}$.
array([[[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6700a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670230>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6716d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a671720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a671770>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c16d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1720>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c2490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c24e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c2530>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a9e0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0b750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0b7a0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c0820>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c15e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1630>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c09a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c09a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c09ae0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a8a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a8f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5ad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5ad50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5ada0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bbb0>]]]]], 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
- description :
- Annual costs applied per unit `flow_cap`. These costs are not subject to being recalculated relative to technology lifetime, only scaled to reflect the fraction of one year that the model represents (e.g., 7 days ~= 0.02 of a year).
- unit :
- $\text{power}^{-1}$.
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670910>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bd40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67df40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec460>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec5a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec6e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec820>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec960>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecaa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecbe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecd20>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bf20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bcf0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fc50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec4b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec5f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec730>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec8c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eca00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecb40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecc80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecdc0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670280>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bc50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5be30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fb60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec550>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec690>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec7d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec910>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eca50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecb90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eccd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ece10>]]], dtype=object)
- latitude(nodes)objectparameters[latitude][0] ... para...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec3c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec1e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec0a0>], dtype=object)
- longitude(nodes)objectparameters[longitude][0] ... par...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec230>], 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
- description :
- None
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed3b0>], 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
- description :
- Required amount of carrier removal from the system (e.g., biofuel, coal, rainfall, wind flow). Unit dictated by `source_unit`.
- unit :
- None
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 0x7ff92a4ee8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ee940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ee990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ee9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eea30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eea80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eeb20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eeb70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eebc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eec10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eec60>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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
- description :
- Required amount of carrier removal from the system (e.g., electricity demand, transport distance). Unit dictated by `source_unit`.
- unit :
- None
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
- description :
- None
- unit :
- None
- default :
- nan
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ef110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edf90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eda40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edd10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edf40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530d70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530c80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530b40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530af0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5310e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5311d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531220>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5312c0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5333e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5334d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5335c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5336b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5337a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5337f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533890>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5338e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533980>]]], dtype=object)
- timestep_resolution(timesteps)objectparameters[timestep_resolution][...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment', 'flow_out_max', 'flow_in_max', 'source_max'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533ca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5339d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533b10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533ac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eed50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eee90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eecb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eef80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eef30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b800f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80190>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b801e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b802d0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b805f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b806e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b807d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b808c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b809b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80aa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80af0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80b40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80b90>], 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
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b810e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b811d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b812c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b813b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b814a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b814f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81540>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b818b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b819a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b819f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81ae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81b80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81bd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81d10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81e00>], dtype=object)
- area_use_min()objectparameters[area_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'area_use'}
- coords_in_name :
- False
- description :
- Limits the lower bound of the `area_use` decision variable to this value.
- unit :
- $\text{area}^{2}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82b70>, dtype=object)
- cap_method()objectparameters[cap_method][0]
- original_dtype :
- <U10
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- One of 'continuous' (LP model) or 'integer' (integer/binary unit capacity).
- unit :
- None
- default :
- continuous
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82710>, dtype=object)
- cost_area_use()objectparameters[cost_area_use][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost per unit `area_use`.
- unit :
- $\text{area}^{-2}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83160>, dtype=object)
- cost_depreciation_rate()objectparameters[cost_depreciation_rat...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'cost_investment'}
- coords_in_name :
- False
- description :
- Applied to "annualise" investment costs so they are comparable to variable costs. If not provided, this will be calculated using technology `lifetime` and `cost_interest_rate`.
- unit :
- fraction.
- default :
- 1
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83930>, 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
- description :
- Add an additional cost to total investment costs (except `cost_om_annual`) that is a fraction of that total.
- unit :
- fraction / total investment.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83f70>, dtype=object)
- cost_purchase()objectparameters[cost_purchase][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost applied to the variable `purchased_units`. Requires the parameter `cap_method` to be `integer`.
- unit :
- $\text{purchased\_unit}^{-1}$
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82530>, dtype=object)
- cost_purchase_per_distance()objectparameters[cost_purchase_per_dis...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost applied if the binary variable `purchased` is 1 or per unit of the integer variable `units`. Requires the parameter `cap_method` to be `integer`.
- unit :
- $(\text{purchased\_units}\times\text{distance})^{-1}$
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82c10>, dtype=object)
- cost_source_cap()objectparameters[cost_source_cap][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost per unit `source_cap`.
- unit :
- $\text{power}^{-1}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6e8f0>, dtype=object)
- cost_storage_cap()objectparameters[cost_storage_cap][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost per unit `storage_cap`, i.e., the maximum available capacity of the storage technology's "reservoir".
- unit :
- $\text{energy}^{-1}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ed00>, dtype=object)
- cyclic_storage()objectparameters[cyclic_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If true, link storage levels in the last model timestep with the first model timestep. `inter_cluster_storage` custom math must be included if using time clustering and setting this to `true`. This must be set to `false` if using `operate` mode.
- unit :
- boolean.
- default :
- True
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83cf0>, dtype=object)
- export_max()objectparameters[export_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If `carrier_export` is defined, limit the allowed export of produced carrier for a technology.
- unit :
- power.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ead0>, dtype=object)
- flow_cap_max_systemwide()objectparameters[flow_cap_max_systemwi...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the sum of `flow_cap` over all nodes in the model to a maximum. If `cap_method=integer`, this will be scaled by the number of integer units of a technology purchased.
- unit :
- power or $\frac{\text{power}}{\text{unit}}$.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6f3e0>, dtype=object)
- flow_cap_min()objectparameters[flow_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'flow_cap'}
- coords_in_name :
- False
- description :
- Limits `flow_cap` to a minimum. NOTE: this will _force_ `flow_cap` to a minimum value unless `cap_method` is set to `integer`. If `cap_method=integer`, this will be scaled by the number of integer units of a technology purchased.
- unit :
- power or $\frac{\text{power}}{\text{unit}}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82210>, dtype=object)
- flow_cap_min_systemwide()objectparameters[flow_cap_min_systemwi...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the sum of `flow_cap` over all nodes in the model to a minimum. NOTE: this will _force_ the sum of `flow_cap` to a minimum value unless `cap_method` is set to `integer`.
- unit :
- power.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6e990>, 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
- description :
- ratio of maximum charge/discharge (kW) for a given storage capacity (kWh).
- unit :
- $\text{hour}^{-1}$
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6fac0>, 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
- description :
- ratio of minimum charge/discharge (kW) for a given storage capacity (kWh).
- unit :
- $\text{hour}^{-1}$
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6c410>, dtype=object)
- flow_cap_per_unit()float64nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set the capacity of each integer unit of a technology purchased, if `cap_method` is `integer`.
- unit :
- $\frac{\text{power}}{\text{unit}}$.
- default :
- nan
- 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
- description :
- Conversion efficiency from `source`/`flow_in` (tech dependent) into the technology. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6c140>, 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
- description :
- Total link efficiency will be calculated as $\text{flow\_in\_eff}\times{}\text{flow\_in\_eff\_per\_distance}^\text{distance}$. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- None
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6c9b0>, dtype=object)
- flow_out_min_relative()objectparameters[flow_out_min_relative...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set to a value between 0 and 1 to force minimum `flow_out` as a fraction of the technology rated capacity. If non-zero and `cap_method` is `continuous`, this will force the technology to operate above its minimum value at every timestep.
- unit :
- fraction.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d4f0>, dtype=object)
- flow_ramping()objectparameters[flow_ramping][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- limit maximum outflow / inflow / outflow - inflow (technology base class dependent) to a fraction of maximum capacity, which increases by that fraction at each timestep.
- unit :
- $\frac{\text{fraction}}{\text{hour}}$.
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d2c0>, dtype=object)
- force_async_flow()objectparameters[force_async_flow][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If True, non-zero `flow_out` and `flow_in` cannot both occur in the same timestep.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ca00>, dtype=object)
- include_storage()objectparameters[include_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- {'balance_conversion', 'balance_supply_no_storage'}
- coords_in_name :
- False
- description :
- When true, math will be triggered to allow discontinuous carrier inflow and outflows across timesteps.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d8b0>, dtype=object)
- integer_dispatch()objectparameters[integer_dispatch][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- When true, will limit per-timestep out/inflows relative to the number of units of a technology that are in operation. Requires `cap_method=integer`.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6e170>, dtype=object)
- one_way()objectparameters[one_way][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Forces a transmission technology to only move flow in one direction on the link, i.e. from `from` to `to`.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d950>, dtype=object)
- purchased_units_max()objectparameters[purchased_units_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the upper bound of units purchased if `cap_method` is `integer`. If set to `1`, will effectively set the `purchased_units` to a binary decision variable.
- unit :
- integer.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b837f0>, dtype=object)
- purchased_units_max_systemwide()objectparameters[purchased_units_max_s...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- sets the upper bound of the sum across all nodes of the decision variable `units` for a particular technology.
- unit :
- integer.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a080>, dtype=object)
- purchased_units_min()objectparameters[purchased_units_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the lower bound of units purchased if `cap_method` is `integer`.
- unit :
- integer.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6f7f0>, dtype=object)
- purchased_units_min_systemwide()objectparameters[purchased_units_min_s...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- sets the lower bound of the sum across all nodes of the decision variable `units` for a particular technology.
- unit :
- integer.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6fe30>, dtype=object)
- sink_unit()objectparameters[sink_unit][0]
- original_dtype :
- <U8
- obj_type :
- parameters
- references :
- {'area_use', 'balance_demand'}
- coords_in_name :
- False
- description :
- Sets the unit of `Sink` to either `absolute` x-unit: energy), `per_area` x-unit: energy/area), or `per_cap` x-unit: energy/power). `per_area` uses the `area_use` decision variable to scale the sink while `per_cap` uses the `flow_cap` decision variable.
- unit :
- None
- default :
- absolute
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c69bd0>, dtype=object)
- sink_use_max()objectparameters[sink_use_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'balance_demand'}
- coords_in_name :
- False
- description :
- Maximum sink use to remove a carrier from the system (e.g., electricity demand, transport distance). Unit dictated by `source_unit`.
- unit :
- None
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a6c0>, dtype=object)
- sink_use_min()objectparameters[sink_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Minimum sink use to remove a carrier from the system (e.g., electricity demand, transport distance). Unit dictated by `source_unit`.
- unit :
- None
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6dfe0>, dtype=object)
- source_cap_equals_flow_cap()objectparameters[source_cap_equals_flo...
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If true, the decision variables `source_cap` and `flow_cap` are forced to equal one another.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a170>, dtype=object)
- source_cap_max()objectparameters[source_cap_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_cap'}
- coords_in_name :
- False
- description :
- Upper limit on `source_cap` decision variable.
- unit :
- power.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6b570>, dtype=object)
- source_cap_min()objectparameters[source_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'source_cap'}
- coords_in_name :
- False
- description :
- Lower limit on `source_cap` decision variable.
- unit :
- power.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6de00>, dtype=object)
- source_eff()objectparameters[source_eff][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'balance_supply_no_storage'}
- coords_in_name :
- False
- description :
- Conversion efficiency from the technology from `source`. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a3f0>, dtype=object)
- source_use_min()objectparameters[source_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Minimum source use to add a carrier from the system (e.g., biofuel, coal, rainfall, wind flow). Unit dictated by `source_unit`.
- unit :
- None
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ba70>, dtype=object)
- storage_cap_max()objectparameters[storage_cap_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limit upper bound of `storage_cap` decision variable.
- unit :
- energy.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6b930>, dtype=object)
- storage_cap_min()objectparameters[storage_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limit lower bound of `storage_cap` decision variable.
- unit :
- energy.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6bd40>, dtype=object)
- storage_cap_per_unit()float64nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set the storage capacity of each integer unit of a technology purchased.
- unit :
- $\frac{\text{energy}}{\text{unit}}$.
- default :
- nan
- is_result :
- 0
array(nan)
- storage_discharge_depth()objectparameters[storage_discharge_dep...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Defines the minimum level of storage state of charge, as a fraction of total storage capacity.
- unit :
- fraction.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6bbb0>, dtype=object)
- storage_initial()objectparameters[storage_initial][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set stored flow in device at the first timestep, as a fraction of total storage capacity.
- unit :
- fraction.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c688c0>, dtype=object)
- storage_loss()objectparameters[storage_loss][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Rate of storage loss per hour, used to calculate lost stored flow as `(1 - storage_loss)^hours_per_timestep`.
- unit :
- $\frac{\text{fraction}}{\text{hour}}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c68780>, dtype=object)
- flow_cap(nodes, techs, carriers)objectnan nan ... nan nan
- obj_type :
- variables
- references :
- {'cost_investment', 'flow_out_max', 'flow_in_max', 'symmetric_transmission', 'area_use_per_flow_capacity', 'cost_investment_flow_cap'}
- coords_in_name :
- False
- description :
- A technology's flow capacity, also known as its nominal or nameplate capacity.
- unit :
- power
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers bounds: min: flow_cap_min max: flow_cap_max
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a523a50>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a520b50>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a521550>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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.ObjVariable object at 0x7ff92a521250>], ... [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a522350>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a521850>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5208d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a522050>], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5221d0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a523e50>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a520dd0>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5201d0>, nan], [nan, nan, nan]]], dtype=object)
- link_flow_cap(techs)objectvariables[link_flow_cap][0] ... nan
- obj_type :
- variables
- references :
- {'symmetric_transmission'}
- coords_in_name :
- False
- description :
- A transmission technology's flow capacity, also known as its nominal or nameplate capacity.
- unit :
- power
- default :
- 0
- yaml_snippet :
- foreach: - techs where: base_tech=transmission bounds: min: 0 max: .inf
array([<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89c50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89ad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89bd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89dd0>, nan, nan, nan, nan, nan, nan, nan], dtype=object)
- flow_out(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'cost_var', 'flow_out_inc_eff', 'flow_out_max', 'link_chp_outputs', 'export_balance', 'system_balance'}
- coords_in_name :
- False
- 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
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_out bounds: min: 0 max: .inf
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a897d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a88050>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5205d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8b350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8b3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8b450>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8b4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8b550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8b5d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928adcbd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928adcc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928adccd0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af7ed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af7f50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af8050>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af80d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af8150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af81d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af9750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af97d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928af9850>], [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)
- flow_in(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'cost_var', 'flow_in_inc_eff', 'system_balance', 'flow_in_max'}
- coords_in_name :
- False
- 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
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_in bounds: min: 0 max: .inf
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afa7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afa0d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a88b50>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afbad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afbb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afbbd0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afbc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afbcd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928afbd50>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b31350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b313d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b31450>]], ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b4ce50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b4ced0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- flow_export(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'cost_var', 'system_balance', 'export_balance'}
- coords_in_name :
- False
- description :
- The flow of a carrier exported outside the system boundaries by a technology per timestep.
- unit :
- energy
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_export bounds: min: 0 max: .inf
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], ... ..., [[<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b667d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b66850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b668d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b67e50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b67ed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928b67f50>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- area_use(nodes, techs)objectnan nan nan ... nan nan
- obj_type :
- variables
- references :
- {'area_use_capacity_per_loc', 'area_use_per_flow_capacity', 'source_availability_supply'}
- coords_in_name :
- False
- description :
- The area in space utilised directly (e.g., solar PV panels) or indirectly (e.g., biofuel crops) by a technology.
- unit :
- area
- default :
- 0
- yaml_snippet :
- 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
array([[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.ObjVariable object at 0x7ff928aaa7d0>, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928aaa150>, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928aaa9d0>, nan, nan]], dtype=object)
- source_use(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'cost_var', 'source_max', 'balance_supply_no_storage', 'source_availability_supply'}
- coords_in_name :
- False
- description :
- The carrier flow consumed from outside the system boundaries by a `supply` technology.
- unit :
- energy
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - timesteps where: base_tech=supply bounds: min: 0 max: .inf
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], ..., [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928aaa450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928aaac50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928aab4d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289b4cd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289b4d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289b4dd0>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289b4e50>, ... [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289badd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bae50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289baed0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bc4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bc550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bc5d0>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bc650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bc6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bc750>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bdcd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bdd50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bddd0>], [nan, nan, nan, ..., nan, nan, nan]]], dtype=object)
- source_cap(nodes, techs)objectnan nan ... nan
- obj_type :
- variables
- references :
- {'source_max'}
- coords_in_name :
- False
- 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
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs where: base_tech=supply bounds: min: source_cap_min max: source_cap_max
array([[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.ObjVariable object at 0x7ff928a881d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92b9c7cd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a891d0>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a88d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5488d0>, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5617d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5622d0>, nan]], dtype=object)
- unmet_demand(nodes, carriers, timesteps)objectnan ... variables[unmet_demand][...
- obj_type :
- variables
- references :
- {'system_balance', 'min_cost_optimisation'}
- coords_in_name :
- False
- 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
- default :
- 0
- yaml_snippet :
- foreach: - nodes - carriers - timesteps where: config.ensure_feasibility=True bounds: min: 0 max: .inf
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], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be8d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289beb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bded0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bdf50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289bed50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289becd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff9289be750>, ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2cf50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2cfd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d050>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d0d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d1d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d250>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d2d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a2d850>]]], dtype=object)
- unused_supply(nodes, carriers, timesteps)objectnan ... variables[unused_supply]...
- obj_type :
- variables
- references :
- {'system_balance', 'min_cost_optimisation'}
- coords_in_name :
- False
- 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
- default :
- 0
- yaml_snippet :
- foreach: - nodes - carriers - timesteps where: config.ensure_feasibility=True bounds: min: -.inf max: 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], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a88750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8a3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92a5203d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a88f50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8a150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a8a1d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89a50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a89950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92b9c7450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92b9c78d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92b9c73d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff92b9c6dd0>, ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a760d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a761d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76250>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a762d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a763d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a764d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a765d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a766d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a767d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a768d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a76950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff928a769d0>]]], dtype=object)
- flow_out_inc_eff(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- global_expressions
- references :
- {'balance_transmission', 'balance_conversion', 'balance_supply_no_storage'}
- coords_in_name :
- False
- description :
- Outflows after taking efficiency losses into account.
- default :
- 0
- yaml_snippet :
- 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 ** distance\n)" - where: NOT base_tech=transmission expression: flow_out / (flow_out_eff * flow_out_parasitic_eff)
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b3c00>, <pyomo.core.kernel.expression.expression object at 0x7ff928b1c280>, <pyomo.core.kernel.expression.expression object at 0x7ff928b1d9f0>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff928ad0fa0>, <pyomo.core.kernel.expression.expression object at 0x7ff928ad1f90>, <pyomo.core.kernel.expression.expression object at 0x7ff928ad37a0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928ad1270>, <pyomo.core.kernel.expression.expression object at 0x7ff928ad3750>, <pyomo.core.kernel.expression.expression object at 0x7ff928ad3ed0>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff928ad2f80>, <pyomo.core.kernel.expression.expression object at 0x7ff928ad3430>, <pyomo.core.kernel.expression.expression object at 0x7ff928ad3340>]], ... ..., <pyomo.core.kernel.expression.expression object at 0x7ff92a5bd6d0>, <pyomo.core.kernel.expression.expression object at 0x7ff92a5bd810>, <pyomo.core.kernel.expression.expression object at 0x7ff92a5bcdc0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5bce10>, <pyomo.core.kernel.expression.expression object at 0x7ff92a5bcb40>, <pyomo.core.kernel.expression.expression object at 0x7ff92a5be210>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff92a593a20>, <pyomo.core.kernel.expression.expression object at 0x7ff92a591770>, <pyomo.core.kernel.expression.expression object at 0x7ff92a5905f0>], [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)
- flow_in_inc_eff(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- global_expressions
- references :
- {'balance_transmission', 'balance_conversion', 'balance_demand'}
- coords_in_name :
- False
- description :
- Inflows after taking efficiency losses into account.
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: flow_in equations: - where: base_tech=transmission expression: flow_in * flow_in_eff * flow_in_eff_per_distance ** distance - where: NOT base_tech=transmission expression: flow_in * flow_in_eff
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a524be0>, <pyomo.core.kernel.expression.expression object at 0x7ff92a5256d0>, <pyomo.core.kernel.expression.expression object at 0x7ff92a524a00>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff92a525e00>, <pyomo.core.kernel.expression.expression object at 0x7ff92a525e50>, <pyomo.core.kernel.expression.expression object at 0x7ff92a525ea0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a525ef0>, <pyomo.core.kernel.expression.expression object at 0x7ff92a525f40>, <pyomo.core.kernel.expression.expression object at 0x7ff92a525f90>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff92a526d00>, <pyomo.core.kernel.expression.expression object at 0x7ff92a526d50>, <pyomo.core.kernel.expression.expression object at 0x7ff92a526da0>]], ... <pyomo.core.kernel.expression.expression object at 0x7ff9289cd6d0>, <pyomo.core.kernel.expression.expression object at 0x7ff9289cd720>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- cost_var(nodes, techs, costs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- global_expressions
- references :
- {'cost'}
- coords_in_name :
- False
- description :
- The operating costs per timestep of a technology.
- unit :
- cost_per_time
- default :
- 0
- yaml_snippet :
- 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 * flow_export, 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 * flow_in, over=carriers) cost_flow_out: - expression: sum(cost_flow_out * flow_out, over=carriers)
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]], [[<pyomo.core.kernel.expression.expression object at 0x7ff928b11ef0>, <pyomo.core.kernel.expression.expression object at 0x7ff928b12350>, <pyomo.core.kernel.expression.expression object at 0x7ff928b12670>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff928781130>, <pyomo.core.kernel.expression.expression object at 0x7ff928781180>, <pyomo.core.kernel.expression.expression object at 0x7ff9287811d0>]], [[nan, nan, nan, ..., nan, nan, nan]]]], dtype=object)
- cost_investment_flow_cap(nodes, techs, carriers, costs)objectnan nan ... nan nan
- obj_type :
- global_expressions
- references :
- {'cost_investment'}
- coords_in_name :
- False
- description :
- The investment costs associated with the nominal/rated capacity of a technology.
- default :
- 0
- yaml_snippet :
- 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 * distance) * 0.5 - where: NOT base_tech=transmission expression: cost_flow_cap
array([[[[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928801ea0>]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928802c60>]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928802440>]], [[nan], [nan], [nan]], [[nan], [nan], [nan]], ... [[nan], [nan], [nan]], [[nan], [nan], [nan]], [[<pyomo.core.kernel.expression.expression object at 0x7ff92868dc20>], [nan], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92868d2c0>], [nan]], [[nan], [nan], [nan]]]], dtype=object)
- cost_investment(nodes, techs, costs)objectglobal_expressions[cost_investme...
- obj_type :
- global_expressions
- references :
- {'cost'}
- coords_in_name :
- False
- description :
- The installation costs of a technology, including annualised investment costs and annual maintenance costs.
- unit :
- cost
- default :
- 0
- yaml_snippet :
- 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 * flow_cap, 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)
array([[[<pyomo.core.kernel.expression.expression object at 0x7ff928b1c1e0>], [<pyomo.core.kernel.expression.expression object at 0x7ff92a756760>], [<pyomo.core.kernel.expression.expression object at 0x7ff92a756e40>], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a7558b0>], [<pyomo.core.kernel.expression.expression object at 0x7ff9288db610>], [<pyomo.core.kernel.expression.expression object at 0x7ff928c6dcc0>], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928c6d360>], ... [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b6300>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b63f0>], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b4550>], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a772940>], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a773390>], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b0640>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b0d70>], [<pyomo.core.kernel.expression.expression object at 0x7ff92a5b2b20>], [nan]]], dtype=object)
- cost(nodes, techs, costs)objectglobal_expressions[cost][8] ... nan
- obj_type :
- global_expressions
- references :
- {'min_cost_optimisation'}
- coords_in_name :
- False
- description :
- The total annualised costs of a technology, including installation and operation costs.
- unit :
- cost
- default :
- 0
- yaml_snippet :
- 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
array([[[<pyomo.core.kernel.expression.expression object at 0x7ff928ac9a90>], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac8500>], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac90e0>], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac9b80>], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac9360>], [<pyomo.core.kernel.expression.expression object at 0x7ff928aca3a0>], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928acb430>], ... [<pyomo.core.kernel.expression.expression object at 0x7ff928aca850>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928acbbb0>], [<pyomo.core.kernel.expression.expression object at 0x7ff928acbed0>], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac9860>], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac9130>], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac8be0>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac81e0>], [<pyomo.core.kernel.expression.expression object at 0x7ff928ac8e60>], [nan]]], dtype=object)
- area_use_per_flow_capacity(nodes, techs, carriers)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set a fixed relationship between a technology's flow capacity and its area use.
- yaml_snippet :
- foreach: - nodes - techs - carriers where: area_use AND area_use_per_flow_cap equations: - expression: area_use == flow_cap * area_use_per_flow_cap
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], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a53bc40>, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [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.ObjConstraint object at 0x7ff92a497cb0>, nan, nan], [nan, nan, nan], [nan, nan, nan]]], dtype=object)
- area_use_capacity_per_loc(nodes)objectnan ... constraints[area_use_cap...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set an upper bound on the total area that all technologies with `area_use` can occupy at a given node.
- yaml_snippet :
- foreach: - nodes where: area_use AND available_area equations: - expression: sum(area_use, over=techs) <= available_area
array([nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286ad2b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4979a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a497d90>], dtype=object)
- balance_conversion(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the relationship between a `conversion` technology's outflow and consumption.
- yaml_snippet :
- 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)
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]]], dtype=object)
- flow_out_max(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound of a technology's outflow.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_out AND NOT operating_units equations: - expression: flow_out <= flow_cap * timestep_resolution * flow_out_parasitic_eff
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a738980>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a739860>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a738910>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a494980>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a497bd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4946e0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a494440>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4955c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4974d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a495160>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a496c10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a494de0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488c90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488d70>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488de0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488e50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488ec0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48a190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48a200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48a270>], [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)
- flow_in_max(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound of a technology's inflow.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_in AND NOT operating_units equations: - expression: flow_in <= flow_cap * timestep_resolution
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284b9d30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a496ac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a538de0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18a60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18ad0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18b40>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18bb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18c90>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b19f60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b19fd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b1a040>]], ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289e6c10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289e6c80>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- source_max(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound of a `supply` technology's source consumption.
- yaml_snippet :
- foreach: - nodes - techs - timesteps where: source_cap equations: - expression: source_use <= timestep_resolution * source_cap
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], ..., [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48aba0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870b40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9288709f0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928872900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928872970>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9288729e0>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928872a50>, ... [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b27ee0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b27f50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928788050>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789320>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789400>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789470>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287894e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789550>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878a820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878a890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878a900>], [nan, nan, nan, ..., nan, nan, nan]]], dtype=object)
- system_balance(nodes, carriers, timesteps)objectnan ... constraints[system_balan...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- 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.
- yaml_snippet :
- 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'
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], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9288719b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871240>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870440>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870ec0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871860>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878e190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878df60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878c210>, ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775780>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287757f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775860>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287758d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287759b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775a20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775a90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775b00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775b70>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775be0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775cc0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775d30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775da0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775e10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775e80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775ef0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775f60>]]], dtype=object)
- balance_demand(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound on, or a fixed total of, that a demand technology must dump to its sink in each timestep.
- yaml_snippet :
- 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'
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]]]], dtype=object)
- balance_supply_no_storage(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the outflow of a `supply` technology to its consumption of the available source.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: base_tech=supply AND NOT include_storage=True equations: - expression: flow_out_inc_eff == source_use * source_eff
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], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286feac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286feb30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286feba0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286fec10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286fec80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286fecf0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0050>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b00c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0130>], [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)
- source_availability_supply(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound on, or a fixed total of, a `supply` technology's ability to consume its available resource.
- yaml_snippet :
- 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'
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], ..., [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0fa0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b20b0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928950f30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928950fa0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928951010>], [nan, nan, nan, ..., nan, nan, nan], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928952430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289524a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928952510>], [nan, nan, nan, ..., nan, nan, nan], [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.ObjConstraint object at 0x7ff928952580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289525f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928952660>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0b40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b38c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2190>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=object)
- balance_transmission(techs, timesteps)objectconstraints[balance_transmission...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the relationship between between carrier flowing into and out of a `transmission` link in each timestep.
- yaml_snippet :
- 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])
array([[<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928776f90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287775b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953620>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289539a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953d90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953930>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953cb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953a10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289537e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953540>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878c910>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878c520>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2c10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b29e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0e50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2c80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2660>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0c90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2b30>, ... [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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)
- symmetric_transmission(nodes, techs)objectconstraints[symmetric_transmissi...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the flow capacity of two `transmission` technologies representing the same link in the system.
- yaml_snippet :
- foreach: - nodes - techs where: base_tech=transmission equations: - expression: sum(flow_cap, over=carriers) == link_flow_cap
array([[<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928777150>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873c980>, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873c600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873ce50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873c0c0>, nan, nan, nan, nan, nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a47c0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a4910>, nan, nan, nan, nan, nan, nan, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a48a0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a4830>, nan, nan, nan, nan, nan, nan, nan]], dtype=object)
- export_balance(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- 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.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: flow_export equations: - expression: flow_out >= flow_export
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], ... ..., [[<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a7ee0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a7f50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928394050>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928395320>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928395390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928395400>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- link_chp_outputs(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the relationship between heat and electricity output
- yaml_snippet :
- equations: - expression: flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat] foreach: - nodes - techs - timesteps where: '[chp] in techs'
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]]], dtype=object)
- min_cost_optimisation()objectobjectives[min_cost_optimisation...
- obj_type :
- objectives
- references :
- set()
- coords_in_name :
- False
- 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`.
- yaml_snippet :
- 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
array(<pyomo.core.kernel.objective.objective object at 0x7ff928312990>, dtype=object)
- 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))
There is then a public API to access filtered views on this dataset, e.g. input parameters...
m.backend.parameters
<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... * carriers (carriers) object 'electricity' ... '... * nodes (nodes) object 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 2005-07-01... Data variables: (12/78) 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] .... ... ... storage_cap_max object parameters[storage_cap_max][0] storage_cap_min object parameters[storage_cap_min][0] storage_cap_per_unit float64 nan storage_discharge_depth object parameters[storage_discharge_d... storage_initial object parameters[storage_initial][0] storage_loss object parameters[storage_loss][0]
- 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)objectparameters[objective_cost_weight...
- is_result :
- False
- default :
- 1
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'min_cost_optimisation'}
- coords_in_name :
- False
- description :
- Weightings for cost classes to apply in the objective function.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2850>], 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
- description :
- BigM is a large value used to define certain optimisation problems. See https://en.wikipedia.org/wiki/Big_M_method for more information. This value should be larger than the largest values that any decision variables can take, but should not be **too** large (i.e., do not set it greater than 3 orders of magnitude above the numeric range of the model). If too large, numerical problems may arise in the optimisation.
- unit :
- None
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2df0>, dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'cost_var', 'flow_out_inc_eff', 'source_cap', 'balance_supply_no_storage', 'cost_investment_flow_cap', 'balance_conversion', 'link_flow_cap', 'balance_transmission', 'flow_in_inc_eff', 'symmetric_transmission', 'balance_demand', 'source_use'}
- coords_in_name :
- False
- description :
- Should be the name of one of the abstract base classes, from which some initial parameter defaults will be derived and with which certain base math will be triggered.
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b30c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b31b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b28f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b32a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3340>], dtype=object)
- carrier_in(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in', 'flow_in_max'}
- coords_in_name :
- False
- description :
- Carrier(s) consumed by this technology. Only `transmission`, `conversion`, `storage`, and `demand` technologies can define this parameter
- unit :
- None
- default :
- nan
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3a20>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3ac0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3b10>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff92a5b3930>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3980>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3520>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3890>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3750>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3bb0>], [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 :
- {'flow_out_max', 'flow_out'}
- coords_in_name :
- False
- description :
- Carrier(s) produced by this technology. Only `transmission`, `conversion`, `storage`, and `supply` technologies can define this parameter
- unit :
- None
- default :
- nan
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654410>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6544b0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6543c0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff92a654550>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654500>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6540a0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6545a0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6541e0>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654320>, 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
- description :
- Color that can be used when plotting results.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b2f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b33e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6546e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654e60>], 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
- description :
- Cost per unit of the decision variable `flow_cap` and per unit distance of a transmission link. Applied to transmission links only.
- unit :
- $(\text{power}\times\text{distance})^{-1}$
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654d70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6547d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654b40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654ff0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654f00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6552c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655310>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655360>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6553b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655400>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6554a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6554f0>]], 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
- description :
- Used when computing levelized costs and technology depreciation_rate (relative to lifetime).
- unit :
- fraction
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6551d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655270>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655090>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654dc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a654c80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6548c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655630>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655590>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655720>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655a90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655ae0>]], dtype=object)
- distance(techs)objectparameters[distance][0] ... para...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_inc_eff', 'flow_out_inc_eff', 'cost_investment_flow_cap'}
- coords_in_name :
- False
- description :
- Used for `..._per_distance` constraints. If not defined, it will be automatically derived from latitude/longitude of nodes in a link.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6555e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6559f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655bd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6560d0>], 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
- description :
- Limits `flow_cap` to a maximum.
- unit :
- power.
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655770>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6572a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6573e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6681e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6682d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668320>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6561c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6565d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656670>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6574d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657520>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656120>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668f50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6572f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a657340>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6680a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6680f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6690e0>]]], 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
- description :
- Total link efficiency will be calculated as $\text{flow\_out\_eff}\times{}\text{flow\_out\_eff\_per\_distance}^\text{distance}$. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a655db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b07d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5b3e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6693b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6691d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669220>], 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
- description :
- Must be defined if fixed capital costs are defined. A reasonable value for many technologies is around 20-25 years.
- unit :
- years.
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6694a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6694f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669b80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669d10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a668ff0>], 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
- description :
- Long name of technology, which can be used in post-processing (e.g., plotting).
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6697c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6696d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6692c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a1c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a2b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a3a0>], dtype=object)
- techs_inheritance(techs)objectparameters[techs_inheritance][0]...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6699f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6698b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6699a0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a940>], dtype=object)
- carrier_export(techs, carriers)objectnan nan nan nan ... nan nan nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_export'}
- coords_in_name :
- False
- description :
- Carrier(s) produced by this technology that can be exported out of the system boundaries without having to go to a pre-defined `sink` (i.e., via a `demand` technology). Must be a subset of `carrier_out`.
- unit :
- None
- default :
- nan
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 0x7ff92a66a760>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a300>, 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
- description :
- Cost per unit of the decision variable `flow_cap`.
- unit :
- $\text{power}^{-1}$.
array([[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66ad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bf20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678e60>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678f50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6780f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679040>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6782d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679220>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6792c0>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6797c0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b9d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679950>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678b40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679a90>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679b80>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66bed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a678e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679cc0>]]]], 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
- description :
- Cost per unit of `flow_in` in each timestep.
- unit :
- $\text{energy}^{-1}$.
array([[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66a030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66ac10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a669e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66aa30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67afd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b0c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67c0f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67c140>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66ab70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a656350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a679fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67a080>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67b1b0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67bf20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cf50>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67aee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67af30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ad50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67af80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67bf70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67bfc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67be80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67be30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d090>]]]], 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
- description :
- Conversion efficiency from the technology to `sink`/`flow_out` (tech dependent). Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67a300>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dd10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67a210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67da40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ddb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66b020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d6d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a66aee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d9f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67de00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67da90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ceb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67de50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67db30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dea0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67db80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67def0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dc20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67df90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d0e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dc70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dfe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67dcc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e030>]], 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
- description :
- None
- unit :
- None
- default :
- nan
array([nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d7c0>, 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
- description :
- If set to a finite value, limits the upper bound of the `area_use` decision variable to this value.
- unit :
- $\text{area}^{2}$.
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d8b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d4f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67d860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e8a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ea30>], 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', 'area_use_per_flow_capacity'}
- coords_in_name :
- False
- description :
- If set, forces `area_use` to follow `flow_cap` with the given numerical ratio (e.g. setting to 1.5 means that `area_use == 1.5 * flow_cap`).
- unit :
- $\frac{\text{area}^{2}}{\text{power}}$.
array([nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e7b0>, 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
- description :
- Additional losses as flow gets transferred from the plant to the carrier, e.g. due to plant parasitic consumption. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ebc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e3f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e0d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e120>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f1b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67efd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f2a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f340>], dtype=object)
- source_unit(techs)objectparameters[source_unit][0] ... p...
- is_result :
- False
- default :
- absolute
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'area_use', 'source_availability_supply'}
- coords_in_name :
- False
- description :
- Sets the unit of `Source` to either `absolute` (e.g. kWh), `per_area` (e.g. kWh/m2), or `per_cap` (e.g. kWh/kW). `per_area` uses the `area_use` decision variable to scale the source while `per_cap` uses the `flow_cap` decision variable.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67edf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ec10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ee40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ec60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67eda0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f7a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f890>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f8e0>], 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
- description :
- Cost per unit of `flow_in` in each timestep.
- unit :
- $\text{energy}^{-1}$.
array([[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e300>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f160>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f930>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e4e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67e210>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fd40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fd90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fde0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fe30>]], dtype=object)
- source_use_max(techs)objectparameters[source_use_max][0] .....
- is_result :
- False
- default :
- inf
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_availability_supply'}
- coords_in_name :
- False
- description :
- Maximum sink use to remove a carrier from the system (e.g., biofuel, coal, rainfall, wind flow). Unit dictated by `source_unit`.
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f9d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f4d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67ff70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67f430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6703c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670410>], 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
- description :
- Cost per unit of `flow_export` in each timestep. Usually used in the negative sense, as a subsidy.
- unit :
- $\text{energy}^{-1}$.
array([[[[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6700a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670230>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a6716d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a671720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a671770>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c16d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1720>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c2490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c24e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c2530>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a9e0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0b750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0b7a0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c0820>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c15e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4c1630>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c09a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c09a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c09ae0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a8a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c0a8f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5ad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5ad50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5ada0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bbb0>]]]]], 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
- description :
- Annual costs applied per unit `flow_cap`. These costs are not subject to being recalculated relative to technology lifetime, only scaled to reflect the fraction of one year that the model represents (e.g., 7 days ~= 0.02 of a year).
- unit :
- $\text{power}^{-1}$.
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670910>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bd40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67df40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec460>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec5a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec6e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec820>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec960>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecaa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecbe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecd20>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bf20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bcf0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fc50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec4b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec5f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec730>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec8c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eca00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecb40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecc80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecdc0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a670280>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5bc50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c5be30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a67fb60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec550>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec690>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec7d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec910>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eca50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecb90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eccd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ece10>]]], dtype=object)
- latitude(nodes)objectparameters[latitude][0] ... para...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec3c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec1e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec0a0>], dtype=object)
- longitude(nodes)objectparameters[longitude][0] ... par...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ec230>], 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
- description :
- None
- unit :
- None
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ecf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed3b0>], 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
- description :
- Required amount of carrier removal from the system (e.g., biofuel, coal, rainfall, wind flow). Unit dictated by `source_unit`.
- unit :
- None
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 0x7ff92a4ee8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ee940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ee990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ee9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eea30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eea80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eeb20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eeb70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eebc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eec10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eec60>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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
- description :
- Required amount of carrier removal from the system (e.g., electricity demand, transport distance). Unit dictated by `source_unit`.
- unit :
- None
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
- description :
- None
- unit :
- None
- default :
- nan
array([[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ef110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edf90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eda40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edd10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edf40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4edea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530d70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530c80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530b40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530af0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5310e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5311d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531220>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a531270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5312c0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5333e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533430>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5334d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5335c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5336b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5337a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5337f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533890>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5338e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533980>]]], dtype=object)
- timestep_resolution(timesteps)objectparameters[timestep_resolution][...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment', 'flow_out_max', 'flow_in_max', 'source_max'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533ca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a5339d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533b10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a533ac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4ed1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eed50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eee90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eecb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eef80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a4eef30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b800f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80190>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b801e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b802d0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b805f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b806e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b807d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b808c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b809b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80aa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80af0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80b40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80b90>], 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
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff92a530eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b80f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b810e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b811d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b812c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b813b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b814a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b814f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81540>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b818b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81950>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b819a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b819f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81ae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81b80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81bd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81cc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81d10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b81e00>], dtype=object)
- area_use_min()objectparameters[area_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'area_use'}
- coords_in_name :
- False
- description :
- Limits the lower bound of the `area_use` decision variable to this value.
- unit :
- $\text{area}^{2}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82b70>, dtype=object)
- cap_method()objectparameters[cap_method][0]
- original_dtype :
- <U10
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- One of 'continuous' (LP model) or 'integer' (integer/binary unit capacity).
- unit :
- None
- default :
- continuous
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82710>, dtype=object)
- cost_area_use()objectparameters[cost_area_use][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost per unit `area_use`.
- unit :
- $\text{area}^{-2}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83160>, dtype=object)
- cost_depreciation_rate()objectparameters[cost_depreciation_rat...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'cost_investment'}
- coords_in_name :
- False
- description :
- Applied to "annualise" investment costs so they are comparable to variable costs. If not provided, this will be calculated using technology `lifetime` and `cost_interest_rate`.
- unit :
- fraction.
- default :
- 1
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83930>, 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
- description :
- Add an additional cost to total investment costs (except `cost_om_annual`) that is a fraction of that total.
- unit :
- fraction / total investment.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83f70>, dtype=object)
- cost_purchase()objectparameters[cost_purchase][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost applied to the variable `purchased_units`. Requires the parameter `cap_method` to be `integer`.
- unit :
- $\text{purchased\_unit}^{-1}$
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82530>, dtype=object)
- cost_purchase_per_distance()objectparameters[cost_purchase_per_dis...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost applied if the binary variable `purchased` is 1 or per unit of the integer variable `units`. Requires the parameter `cap_method` to be `integer`.
- unit :
- $(\text{purchased\_units}\times\text{distance})^{-1}$
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82c10>, dtype=object)
- cost_source_cap()objectparameters[cost_source_cap][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost per unit `source_cap`.
- unit :
- $\text{power}^{-1}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6e8f0>, dtype=object)
- cost_storage_cap()objectparameters[cost_storage_cap][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Cost per unit `storage_cap`, i.e., the maximum available capacity of the storage technology's "reservoir".
- unit :
- $\text{energy}^{-1}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ed00>, dtype=object)
- cyclic_storage()objectparameters[cyclic_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If true, link storage levels in the last model timestep with the first model timestep. `inter_cluster_storage` custom math must be included if using time clustering and setting this to `true`. This must be set to `false` if using `operate` mode.
- unit :
- boolean.
- default :
- True
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b83cf0>, dtype=object)
- export_max()objectparameters[export_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If `carrier_export` is defined, limit the allowed export of produced carrier for a technology.
- unit :
- power.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ead0>, dtype=object)
- flow_cap_max_systemwide()objectparameters[flow_cap_max_systemwi...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the sum of `flow_cap` over all nodes in the model to a maximum. If `cap_method=integer`, this will be scaled by the number of integer units of a technology purchased.
- unit :
- power or $\frac{\text{power}}{\text{unit}}$.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6f3e0>, dtype=object)
- flow_cap_min()objectparameters[flow_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'flow_cap'}
- coords_in_name :
- False
- description :
- Limits `flow_cap` to a minimum. NOTE: this will _force_ `flow_cap` to a minimum value unless `cap_method` is set to `integer`. If `cap_method=integer`, this will be scaled by the number of integer units of a technology purchased.
- unit :
- power or $\frac{\text{power}}{\text{unit}}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b82210>, dtype=object)
- flow_cap_min_systemwide()objectparameters[flow_cap_min_systemwi...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the sum of `flow_cap` over all nodes in the model to a minimum. NOTE: this will _force_ the sum of `flow_cap` to a minimum value unless `cap_method` is set to `integer`.
- unit :
- power.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6e990>, 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
- description :
- ratio of maximum charge/discharge (kW) for a given storage capacity (kWh).
- unit :
- $\text{hour}^{-1}$
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6fac0>, 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
- description :
- ratio of minimum charge/discharge (kW) for a given storage capacity (kWh).
- unit :
- $\text{hour}^{-1}$
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6c410>, dtype=object)
- flow_cap_per_unit()float64nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set the capacity of each integer unit of a technology purchased, if `cap_method` is `integer`.
- unit :
- $\frac{\text{power}}{\text{unit}}$.
- default :
- nan
- 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
- description :
- Conversion efficiency from `source`/`flow_in` (tech dependent) into the technology. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6c140>, 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
- description :
- Total link efficiency will be calculated as $\text{flow\_in\_eff}\times{}\text{flow\_in\_eff\_per\_distance}^\text{distance}$. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- None
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6c9b0>, dtype=object)
- flow_out_min_relative()objectparameters[flow_out_min_relative...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set to a value between 0 and 1 to force minimum `flow_out` as a fraction of the technology rated capacity. If non-zero and `cap_method` is `continuous`, this will force the technology to operate above its minimum value at every timestep.
- unit :
- fraction.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d4f0>, dtype=object)
- flow_ramping()objectparameters[flow_ramping][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- limit maximum outflow / inflow / outflow - inflow (technology base class dependent) to a fraction of maximum capacity, which increases by that fraction at each timestep.
- unit :
- $\frac{\text{fraction}}{\text{hour}}$.
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d2c0>, dtype=object)
- force_async_flow()objectparameters[force_async_flow][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If True, non-zero `flow_out` and `flow_in` cannot both occur in the same timestep.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ca00>, dtype=object)
- include_storage()objectparameters[include_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- {'balance_conversion', 'balance_supply_no_storage'}
- coords_in_name :
- False
- description :
- When true, math will be triggered to allow discontinuous carrier inflow and outflows across timesteps.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d8b0>, dtype=object)
- integer_dispatch()objectparameters[integer_dispatch][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- When true, will limit per-timestep out/inflows relative to the number of units of a technology that are in operation. Requires `cap_method=integer`.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6e170>, dtype=object)
- one_way()objectparameters[one_way][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Forces a transmission technology to only move flow in one direction on the link, i.e. from `from` to `to`.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6d950>, dtype=object)
- purchased_units_max()objectparameters[purchased_units_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the upper bound of units purchased if `cap_method` is `integer`. If set to `1`, will effectively set the `purchased_units` to a binary decision variable.
- unit :
- integer.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928b837f0>, dtype=object)
- purchased_units_max_systemwide()objectparameters[purchased_units_max_s...
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- sets the upper bound of the sum across all nodes of the decision variable `units` for a particular technology.
- unit :
- integer.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a080>, dtype=object)
- purchased_units_min()objectparameters[purchased_units_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limits the lower bound of units purchased if `cap_method` is `integer`.
- unit :
- integer.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6f7f0>, dtype=object)
- purchased_units_min_systemwide()objectparameters[purchased_units_min_s...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- sets the lower bound of the sum across all nodes of the decision variable `units` for a particular technology.
- unit :
- integer.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6fe30>, dtype=object)
- sink_unit()objectparameters[sink_unit][0]
- original_dtype :
- <U8
- obj_type :
- parameters
- references :
- {'area_use', 'balance_demand'}
- coords_in_name :
- False
- description :
- Sets the unit of `Sink` to either `absolute` x-unit: energy), `per_area` x-unit: energy/area), or `per_cap` x-unit: energy/power). `per_area` uses the `area_use` decision variable to scale the sink while `per_cap` uses the `flow_cap` decision variable.
- unit :
- None
- default :
- absolute
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c69bd0>, dtype=object)
- sink_use_max()objectparameters[sink_use_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'balance_demand'}
- coords_in_name :
- False
- description :
- Maximum sink use to remove a carrier from the system (e.g., electricity demand, transport distance). Unit dictated by `source_unit`.
- unit :
- None
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a6c0>, dtype=object)
- sink_use_min()objectparameters[sink_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Minimum sink use to remove a carrier from the system (e.g., electricity demand, transport distance). Unit dictated by `source_unit`.
- unit :
- None
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6dfe0>, dtype=object)
- source_cap_equals_flow_cap()objectparameters[source_cap_equals_flo...
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- If true, the decision variables `source_cap` and `flow_cap` are forced to equal one another.
- unit :
- None
- default :
- False
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a170>, dtype=object)
- source_cap_max()objectparameters[source_cap_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_cap'}
- coords_in_name :
- False
- description :
- Upper limit on `source_cap` decision variable.
- unit :
- power.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6b570>, dtype=object)
- source_cap_min()objectparameters[source_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- {'source_cap'}
- coords_in_name :
- False
- description :
- Lower limit on `source_cap` decision variable.
- unit :
- power.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6de00>, dtype=object)
- source_eff()objectparameters[source_eff][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'balance_supply_no_storage'}
- coords_in_name :
- False
- description :
- Conversion efficiency from the technology from `source`. Set as value between 1 (no loss) and 0 (all lost).
- unit :
- fraction.
- default :
- 1.0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6a3f0>, dtype=object)
- source_use_min()objectparameters[source_use_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Minimum source use to add a carrier from the system (e.g., biofuel, coal, rainfall, wind flow). Unit dictated by `source_unit`.
- unit :
- None
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6ba70>, dtype=object)
- storage_cap_max()objectparameters[storage_cap_max][0]
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limit upper bound of `storage_cap` decision variable.
- unit :
- energy.
- default :
- inf
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6b930>, dtype=object)
- storage_cap_min()objectparameters[storage_cap_min][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Limit lower bound of `storage_cap` decision variable.
- unit :
- energy.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6bd40>, dtype=object)
- storage_cap_per_unit()float64nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set the storage capacity of each integer unit of a technology purchased.
- unit :
- $\frac{\text{energy}}{\text{unit}}$.
- default :
- nan
- is_result :
- 0
array(nan)
- storage_discharge_depth()objectparameters[storage_discharge_dep...
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Defines the minimum level of storage state of charge, as a fraction of total storage capacity.
- unit :
- fraction.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c6bbb0>, dtype=object)
- storage_initial()objectparameters[storage_initial][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Set stored flow in device at the first timestep, as a fraction of total storage capacity.
- unit :
- fraction.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c688c0>, dtype=object)
- storage_loss()objectparameters[storage_loss][0]
- original_dtype :
- int64
- obj_type :
- parameters
- references :
- set()
- coords_in_name :
- False
- description :
- Rate of storage loss per hour, used to calculate lost stored flow as `(1 - storage_loss)^hours_per_timestep`.
- unit :
- $\frac{\text{fraction}}{\text{hour}}$.
- default :
- 0
- is_result :
- 0
array(<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff928c68780>, dtype=object)
- 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))
... or constraints
m.backend.constraints
<xarray.Dataset> Dimensions: (nodes: 4, techs: 12, carriers: 3, timesteps: 48) Coordinates: * 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/14) area_use_per_flow_capacity (nodes, techs, carriers) object nan nan ... nan area_use_capacity_per_loc (nodes) object nan ... constraints[area_use_c... balance_conversion (nodes, techs, timesteps) object nan nan ... nan flow_out_max (nodes, techs, carriers, timesteps) object na... flow_in_max (nodes, techs, carriers, timesteps) object na... source_max (nodes, techs, timesteps) object nan nan ... nan ... ... balance_supply_no_storage (nodes, techs, carriers, timesteps) object na... source_availability_supply (nodes, techs, timesteps) object nan nan ... nan balance_transmission (techs, timesteps) object constraints[balance... symmetric_transmission (nodes, techs) object constraints[symmetric_t... export_balance (nodes, techs, carriers, timesteps) object na... link_chp_outputs (nodes, techs, timesteps) object nan nan ... nan
- nodes: 4
- techs: 12
- carriers: 3
- timesteps: 48
- 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]')
- area_use_per_flow_capacity(nodes, techs, carriers)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set a fixed relationship between a technology's flow capacity and its area use.
- yaml_snippet :
- foreach: - nodes - techs - carriers where: area_use AND area_use_per_flow_cap equations: - expression: area_use == flow_cap * area_use_per_flow_cap
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], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a53bc40>, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [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.ObjConstraint object at 0x7ff92a497cb0>, nan, nan], [nan, nan, nan], [nan, nan, nan]]], dtype=object)
- area_use_capacity_per_loc(nodes)objectnan ... constraints[area_use_cap...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set an upper bound on the total area that all technologies with `area_use` can occupy at a given node.
- yaml_snippet :
- foreach: - nodes where: area_use AND available_area equations: - expression: sum(area_use, over=techs) <= available_area
array([nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286ad2b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4979a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a497d90>], dtype=object)
- balance_conversion(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the relationship between a `conversion` technology's outflow and consumption.
- yaml_snippet :
- 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)
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]]], dtype=object)
- flow_out_max(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound of a technology's outflow.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_out AND NOT operating_units equations: - expression: flow_out <= flow_cap * timestep_resolution * flow_out_parasitic_eff
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a738980>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a739860>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a738910>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a494980>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a497bd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4946e0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a494440>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4955c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a4974d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a495160>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a496c10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a494de0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488c90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488d70>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488de0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488e50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a488ec0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48a190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48a200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48a270>], [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)
- flow_in_max(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound of a technology's inflow.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_in AND NOT operating_units equations: - expression: flow_in <= flow_cap * timestep_resolution
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284b9d30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a496ac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a538de0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18a60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18ad0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18b40>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18bb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b18c90>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b19f60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b19fd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b1a040>]], ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289e6c10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289e6c80>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- source_max(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound of a `supply` technology's source consumption.
- yaml_snippet :
- foreach: - nodes - techs - timesteps where: source_cap equations: - expression: source_use <= timestep_resolution * source_cap
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], ..., [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92a48aba0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870b40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9288709f0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928872900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928872970>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9288729e0>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928872a50>, ... [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b27ee0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928b27f50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928788050>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789320>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789400>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789470>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287894e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928789550>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878a820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878a890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878a900>], [nan, nan, nan, ..., nan, nan, nan]]], dtype=object)
- system_balance(nodes, carriers, timesteps)objectnan ... constraints[system_balan...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- 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.
- yaml_snippet :
- 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'
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], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9288719b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871240>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870440>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928870ec0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928871860>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878e190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878df60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878c210>, ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775780>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287757f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775860>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287758d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287759b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775a20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775a90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775b00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775b70>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775be0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775cc0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775d30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775da0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775e10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775e80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775ef0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928775f60>]]], dtype=object)
- balance_demand(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound on, or a fixed total of, that a demand technology must dump to its sink in each timestep.
- yaml_snippet :
- 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'
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]]]], dtype=object)
- balance_supply_no_storage(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the outflow of a `supply` technology to its consumption of the available source.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: base_tech=supply AND NOT include_storage=True equations: - expression: flow_out_inc_eff == source_use * source_eff
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], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286feac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286feb30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286feba0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286fec10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286fec80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286fecf0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0050>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b00c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0130>], [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)
- source_availability_supply(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Set the upper bound on, or a fixed total of, a `supply` technology's ability to consume its available resource.
- yaml_snippet :
- 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'
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], ..., [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0fa0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b20b0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928950f30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928950fa0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928951010>], [nan, nan, nan, ..., nan, nan, nan], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928952430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289524a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928952510>], [nan, nan, nan, ..., nan, nan, nan], [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.ObjConstraint object at 0x7ff928952580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289525f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928952660>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0b40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b38c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2190>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=object)
- balance_transmission(techs, timesteps)objectconstraints[balance_transmission...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the relationship between between carrier flowing into and out of a `transmission` link in each timestep.
- yaml_snippet :
- 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])
array([[<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928776f90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9287775b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953620>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289539a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953d90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953930>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953cb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953a10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9289537e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928953540>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878c910>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92878c520>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2c10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b29e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0e50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2c80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2660>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0c90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b2b30>, ... [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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)
- symmetric_transmission(nodes, techs)objectconstraints[symmetric_transmissi...
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the flow capacity of two `transmission` technologies representing the same link in the system.
- yaml_snippet :
- foreach: - nodes - techs where: base_tech=transmission equations: - expression: sum(flow_cap, over=carriers) == link_flow_cap
array([[<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9286b0d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928777150>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873c980>, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873c600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873ce50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff92873c0c0>, nan, nan, nan, nan, nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a47c0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a4910>, nan, nan, nan, nan, nan, nan, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a48a0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a4830>, nan, nan, nan, nan, nan, nan, nan]], dtype=object)
- export_balance(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- 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.
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: flow_export equations: - expression: flow_out >= flow_export
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], ... ..., [[<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a7ee0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff9284a7f50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928394050>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928395320>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928395390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff928395400>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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)
- link_chp_outputs(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- constraints
- references :
- set()
- coords_in_name :
- False
- description :
- Fix the relationship between heat and electricity output
- yaml_snippet :
- equations: - expression: flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat] foreach: - nodes - techs - timesteps where: '[chp] in techs'
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]]], dtype=object)
- 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))
You can also access backend arrays in text format, to debug the problem:
m.backend.get_constraint(
"area_use_capacity_per_loc", as_backend_objs=False
).to_pandas().dropna(how="all", axis=0)
lb | body | ub | |
---|---|---|---|
nodes | |||
X1 | None | variables[area_use][0] | 500.0 |
X2 | None | variables[area_use][1] | 1300.0 |
X3 | None | variables[area_use][2] | 900.0 |
We can increase the verbosity of the constraint/global expression "body" by calling the backend method verbose_strings
.
We do not do this automatically as it entails a memory/time overhead on building the model and is only necessary for debugging your optimisation problem.
m.backend.verbose_strings()
m.backend.get_constraint(
"area_use_capacity_per_loc", as_backend_objs=False
).to_pandas().dropna(how="all", axis=0)
lb | body | ub | |
---|---|---|---|
nodes | |||
X1 | None | variables[area_use][X1, pv] | 500.0 |
X2 | None | variables[area_use][X2, pv] | 1300.0 |
X3 | None | variables[area_use][X3, pv] | 900.0 |
Updating the optimisation problem in-place¶
If we want to update a parameter value or fix a decision variable, we can do so now that we have built the optimisation problem
m.backend.update_parameter("flow_cap_max", m.inputs.flow_cap_max * 2)
m.backend.get_parameter("flow_cap_max", as_backend_objs=False).sel(
techs="pv"
).to_series().dropna()
carriers nodes electricity N1 inf X1 500.0 X2 500.0 X3 100.0 gas N1 inf X1 inf X2 inf X3 inf heat N1 inf X1 inf X2 inf X3 inf Name: flow_cap_max, dtype: float64
Solve the optimisation problem¶
Once we have all of our optimisation problem components set up as we desire, we can solve the problem.
m.solve()
[2024-02-16 08:29:22] INFO Optimisation model | starting model in plan mode.
[2024-02-16 08:29:22] INFO Backend: solver finished running. Time since start of solving optimisation problem: 0:00:00.413543
[2024-02-16 08:29:22] INFO Postprocessing: started
[2024-02-16 08:29:23] INFO Postprocessing: zero threshold of 1e-10 not required
[2024-02-16 08:29:23] INFO Postprocessing: ended. Time since start of solving optimisation problem: 0:00:00.557358
[2024-02-16 08:29:23] INFO Model: loaded model_data
The results are stored in m._model_data
and can be accessed by the public property m.results
m.results
<xarray.Dataset> Dimensions: (nodes: 4, techs: 12, carriers: 3, timesteps: 48, costs: 1) Coordinates: * techs (techs) object 'N1_to_X2' ... 'supply_grid_po... * carriers (carriers) <U11 'electricity' 'gas' 'heat' * nodes (nodes) object 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 2005-07-01 ... 200... * costs (costs) object 'monetary' Data variables: (12/19) flow_cap (nodes, techs, carriers) float64 nan nan ... nan link_flow_cap (techs) float64 189.9 10.38 567.7 ... nan nan flow_out (nodes, techs, carriers, timesteps) float64 n... flow_in (nodes, techs, carriers, timesteps) float64 n... flow_export (nodes, techs, carriers, timesteps) float64 n... area_use (nodes, techs) float64 nan nan nan ... nan nan ... ... cost_investment (nodes, techs, costs) float64 0.05158 ... nan cost (nodes, techs, costs) float64 0.05158 ... nan capacity_factor (nodes, techs, carriers, timesteps) float64 0... systemwide_capacity_factor (techs, carriers) float64 0.0 0.0 ... 0.0 0.0 systemwide_levelised_cost (carriers, techs, costs) float64 nan nan ... nan total_levelised_cost (carriers, costs) float64 0.08043 ... 0.09471 Attributes: termination_condition: optimal calliope_version_defined: 0.7.0 calliope_version_initialised: 0.7.0.dev3 applied_overrides: scenario: None defaults: {'available_area': inf, 'bigM': 1000000000... allow_operate_mode: 1 config: {'build': {'backend': 'pyomo', 'ensure_fea... applied_additional_math: ['additional_math.yaml'] math: {'constraints': {'flow_capacity_per_storag... name: Urban-scale example model
- nodes: 4
- techs: 12
- carriers: 3
- timesteps: 48
- costs: 1
- 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)<U11'electricity' 'gas' 'heat'
array(['electricity', 'gas', 'heat'], dtype='<U11')
- 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]')
- costs(costs)object'monetary'
array(['monetary'], dtype=object)
- flow_cap(nodes, techs, carriers)float64nan nan 189.9 nan ... nan nan nan
- description :
- A technology's flow capacity, also known as its nominal or nameplate capacity.
- unit :
- power
- default :
- 0
- is_result :
- 1
array([[[ nan, nan, 1.8987211e+02], [ nan, nan, 1.0382599e+01], [ nan, nan, 5.6770227e+02], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, 5.6770227e+02], [2.7476645e+02, nan, nan], [4.7452088e+01, nan, nan], [ nan, nan, nan], [2.6044701e+02, 6.4307904e+02, 2.0835761e+02], ... [ nan, 2.2726339e+02, 1.9317388e+02], [ nan, nan, nan], [2.6934435e+02, nan, nan], [ nan, nan, 3.6513767e+02], [1.4358886e+01, nan, nan], [ nan, 2.2726339e+02, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, 1.0382599e+01], [ nan, nan, nan], [ nan, nan, nan], [4.7452088e+01, nan, nan], [ nan, 1.8352941e-02, 1.5600000e-02], [ nan, nan, nan], [6.4927357e+01, nan, nan], [ nan, nan, 9.3982291e+00], [1.0000000e+02, nan, nan], [ nan, 1.8352941e-02, nan], [ nan, nan, nan]]])
- link_flow_cap(techs)float64189.9 10.38 567.7 ... nan nan nan
- description :
- A transmission technology's flow capacity, also known as its nominal or nameplate capacity.
- unit :
- power
- default :
- 0
- is_result :
- 1
array([189.87211 , 10.382599, 567.70227 , 274.76645 , 47.452088, nan, nan, nan, nan, nan, nan, nan])
- flow_out(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- 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
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [5.2469889e+01, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [8.3685615e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [8.5869798e+01, 7.2541074e+01, 7.2915564e+01, ..., 1.6303621e+02, 1.1680008e+02, 9.2852036e+01]], ... [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [0.0000000e+00, 1.8352941e-02, 1.8352941e-02, ..., 1.8352941e-02, 1.8352941e-02, 1.8352941e-02], [ 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_in(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- 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
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [136.32565 , 71.606325 , 72.915564 , ..., 162.10148 , 116.80008 , 91.917322 ]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 10.382599 , 0.93474975, 0. , ..., 0.93472555, 0. , 0.93471415]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 0. , 0. , 0. , ..., 0. , 0. , 0. ]], ... [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 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_export(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The flow of a carrier exported outside the system boundaries by a technology per timestep.
- unit :
- energy
- default :
- 0
- is_result :
- 1
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]], ..., [[ 0., 0., 0., ..., 0., 0., 0.], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]]])
- area_use(nodes, techs)float64nan nan nan nan ... 700.0 nan nan
- description :
- The area in space utilised directly (e.g., solar PV panels) or indirectly (e.g., biofuel crops) by a technology.
- unit :
- area
- default :
- 0
- is_result :
- 1
array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 0. , nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 100.5122, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 700. , nan, nan]])
- source_use(nodes, techs, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The carrier flow consumed from outside the system boundaries by a `supply` technology.
- unit :
- energy
- default :
- 0
- is_result :
- 1
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], ... [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00], [-0.0000000e+00, 4.8052305e+00, 1.1306472e+01, ..., 1.0563477e+02, 4.1552015e+01, 1.0442145e+00], [ 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.0000000e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00], [-0.0000000e+00, 1.8352941e-02, 1.8352941e-02, ..., 1.8352941e-02, 1.8352941e-02, 1.8352941e-02], [ nan, nan, nan, ..., nan, nan, nan]]])
- source_cap(nodes, techs)float64nan nan nan ... 77.9 0.01835 nan
- 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
- default :
- 0
- is_result :
- 1
array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 0.0000000e+00, 6.4307904e+02, 3.4114372e+01], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 1.1185572e+01, 2.2726339e+02, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 7.7900000e+01, 1.8352941e-02, nan]])
- unmet_demand(nodes, carriers, timesteps)float64nan nan nan nan ... 0.0 0.0 0.0 0.0
- is_result :
- 1
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], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], [[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., ... 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], [[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]])
- flow_out_inc_eff(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- Outflows after taking efficiency losses into account.
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [5.66104098e+01, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [9.26045550e+00, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [9.26459831e+01, 7.82654586e+01, 7.86695004e+01, ..., 1.75901776e+02, 1.26017045e+02, 1.00179206e+02]], ... [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [0.00000000e+00, 1.83529410e-02, 1.83529410e-02, ..., 1.83529410e-02, 1.83529410e-02, 1.83529410e-02], [ 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_in_inc_eff(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- Inflows after taking efficiency losses into account.
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [136.32565 , 71.606325 , 72.915564 , ..., 162.10148 , 116.80008 , 91.917322 ]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 10.382599 , 0.93474975, 0. , ..., 0.93472555, 0. , 0.93471415]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 0. , 0. , 0. , ..., 0. , 0. , 0. ]], ... [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 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_var(nodes, techs, costs, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The operating costs per timestep of a technology.
- unit :
- cost_per_time
- default :
- 0
- is_result :
- 1
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]], [[0.00000000e+00, 4.58823525e-04, 4.58823525e-04, ..., 4.58823525e-04, 4.58823525e-04, 4.58823525e-04]], [[ nan, nan, nan, ..., nan, nan, nan]]]])
- cost_investment_flow_cap(nodes, techs, carriers, costs)float64nan nan 85.44 nan ... nan nan nan
- description :
- The investment costs associated with the nominal/rated capacity of a technology.
- default :
- 0
- is_result :
- 1
array([[[[ nan], [ nan], [8.54424495e+01]], [[ nan], [ nan], [6.22955940e+00]], [[ nan], [ nan], [2.55466021e+02]], [[ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan]], ... [[ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan]], [[1.35000000e+05], [ nan], [ nan]], [[ nan], [1.83529410e-02], [ nan]], [[ nan], [ nan], [ nan]]]])
- cost_investment(nodes, techs, costs)float640.05158 0.003761 ... 1.108e-05 nan
- description :
- The installation costs of a technology, including annualised investment costs and annual maintenance costs.
- unit :
- cost
- default :
- 0
- is_result :
- 1
array([[[5.15782463e-02], [3.76054000e-03], [1.54214790e-01], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [1.54214790e-01], [8.29328496e-03], [7.16123980e-04], [ nan], [1.17916212e+02], ... [5.02595452e+00], [ nan], [ nan], [ nan], [1.17016579e+01], [1.37189970e-01], [ nan]], [[ nan], [3.76054000e-03], [ nan], [ nan], [7.16123980e-04], [7.34534303e-04], [ nan], [ nan], [ nan], [3.73846013e+01], [1.10789487e-05], [ nan]]])
- cost(nodes, techs, costs)float640.05158 0.003761 ... 0.01148 nan
- description :
- The total annualised costs of a technology, including installation and operation costs.
- unit :
- cost
- default :
- 0
- is_result :
- 1
array([[[5.15782463e-02], [3.76054000e-03], [1.54214790e-01], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [1.54214790e-01], [8.29328496e-03], [7.16123980e-04], [ nan], [1.53478246e+02], ... [1.20827193e+01], [ nan], [ nan], [ nan], [6.56781029e+00], [4.42419697e+01], [ nan]], [[ nan], [3.76054000e-03], [ nan], [ nan], [7.16123980e-04], [2.56982840e-03], [ nan], [ nan], [ nan], [3.73846013e+01], [1.14816671e-02], [ nan]]])
- capacity_factor(nodes, techs, carriers, timesteps)float640.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- is_result :
- 1
array([[[[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0.27634332, 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0.80601798, 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0.15125851, 0.12778014, 0.1284398 , ..., 0.28718612, 0.20574179, 0.16355763]], ... [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 1. , 1. , ..., 1. , 1. , 1. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ]]]])
- systemwide_capacity_factor(techs, carriers)float640.0 0.0 0.4178 ... 0.0799 0.0 0.0
- is_result :
- 1
array([[0. , 0. , 0.41781733], [0. , 0. , 0.39070121], [0. , 0. , 0.20989428], [0.33000724, 0. , 0. ], [0.17785253, 0. , 0. ], [0. , 0. , 0.16175317], [0.72767514, 0. , 0.72767514], [0. , 0. , 0. ], [0. , 0. , 0. ], [0.20185729, 0. , 0. ], [0. , 0.57989306, 0. ], [0.07990226, 0. , 0. ]])
- systemwide_levelised_cost(carriers, techs, costs)float64nan nan nan ... nan nan nan
- is_result :
- 1
array([[[ nan], [ nan], [ nan], [1.90545276e-06], [1.76779380e-06], [ nan], [1.68713049e-02], [ nan], [ nan], [3.96667954e-02], [ nan], [1.15739560e-01]], [[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [2.50216872e-02], [ nan]], [[1.35449594e-05], [1.93133737e-05], [2.69627104e-05], [ nan], [ nan], [8.05711442e-03], [2.10891310e-02], [ nan], [ nan], [ nan], [ nan], [ nan]]])
- total_levelised_cost(carriers, costs)float640.08043 0.03431 0.09471
- is_result :
- 1
array([[0.08042675], [0.03431306], [0.09470535]])
- 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))
- costsPandasIndex
PandasIndex(Index(['monetary'], dtype='object', name='costs'))
- termination_condition :
- optimal
- calliope_version_defined :
- 0.7.0
- calliope_version_initialised :
- 0.7.0.dev3
- 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': 1.0, '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_additional_math :
- ['additional_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 AND flow_cap_per_unit', 'equations': [{'expression': 'flow_cap == purchased_units * flow_cap_per_unit'}]}, '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', 'equations': [{'where': 'flow_cap_max', 'expression': 'flow_cap <= flow_cap_max * purchased_units'}, {'where': 'NOT flow_cap_max', 'expression': 'flow_cap <= bigM * 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.", 'default': 0, '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.", 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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).', 'default': 0, '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.', 'default': 0, '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 ** distance\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.', 'default': 0, 'foreach': ['nodes', 'techs', 'carriers', 'timesteps'], 'where': 'flow_in', 'equations': [{'where': 'base_tech=transmission', 'expression': 'flow_in * flow_in_eff * flow_in_eff_per_distance ** distance'}, {'where': 'NOT base_tech=transmission', 'expression': 'flow_in * flow_in_eff'}]}, 'cost_var': {'description': 'The operating costs per timestep of a technology.', 'default': 0, '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 * flow_export, 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 * flow_in, over=carriers)'}], 'cost_flow_out': [{'expression': 'sum(cost_flow_out * flow_out, over=carriers)'}]}}, 'cost_investment_flow_cap': {'description': 'The investment costs associated with the nominal/rated capacity of a technology.', 'default': 0, '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 * distance) * 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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, '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.', 'default': 0, 'foreach': ['nodes', 'techs', 'costs'], 'where': 'cost_purchase AND purchased_units', 'equations': [{'where': 'base_tech=transmission', 'expression': '(cost_purchase + cost_purchase_per_distance * distance) * 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.', 'default': 0, '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 * flow_cap, 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.', 'default': 0, '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 also view the data within the backend directly
m.backend.get_variable("flow_cap", as_backend_objs=False).to_series().dropna()
nodes techs carriers N1 N1_to_X2 heat 189.87211 N1_to_X3 heat 10.382599 X1_to_N1 heat 567.70227 X1 X1_to_N1 heat 567.70227 X1_to_X2 electricity 274.76645 X1_to_X3 electricity 47.452088 chp electricity 260.44701 gas 643.07904 heat 208.35761 demand_electricity electricity 1.307938 demand_heat heat 1.719711 pv electricity 0.0 supply_gas gas 643.07904 supply_grid_power electricity 34.114372 X2 N1_to_X2 heat 189.87211 X1_to_X2 electricity 274.76645 boiler gas 227.26339 heat 193.17388 demand_electricity electricity 269.34435 demand_heat heat 365.13767 pv electricity 14.358886 supply_gas gas 227.26339 X3 N1_to_X3 heat 10.382599 X1_to_X3 electricity 47.452088 boiler gas 0.018353 heat 0.0156 demand_electricity electricity 64.927357 demand_heat heat 9.398229 pv electricity 100.0 supply_gas gas 0.018353 Name: flow_cap, dtype: object
Save¶
# We can save at any point, which will dump the entire m._model_data to file.
# NetCDF is recommended, as it retains most of the data and can be reloaded into a Calliope model at a later date.
output_path = Path(".") / "outputs" / "4_calliope_model_object"
output_path.mkdir(parents=True, exist_ok=True)
m.to_netcdf(output_path / "example.nc") # Saves a single file
m.to_csv(
output_path / "csv_files", allow_overwrite=True
) # Saves a file for each xarray DataArray