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-04-30 16:05:26] INFO Model: initialising
[2024-04-30 16:05:26] INFO Model: preprocessing stage 1 (model_run)
[2024-04-30 16:05:29] INFO Model: preprocessing stage 2 (model_data)
[2024-04-30 16:05:29] INFO Model: preprocessing complete
# Get information on the model
print(m.info())
[2024-04-30 16:05:29] WARNING /home/docs/checkouts/readthedocs.org/user_builds/calliope/conda/latest/lib/python3.12/site-packages/calliope/model.py:554: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`. msize = dict(self._model_data.dims)
Model name: Urban-scale example model Model size: {'costs': 1, 'techs': 12, 'carriers': 3, 'nodes': 4, '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', 'tech_groups', 'techs', 'parameters'])
techs
hold only the information about a technology that is specific to that node
m._model_def_dict["techs"]["pv"]
{'name': 'Solar photovoltaic power', 'color': '#F9D956', 'base_tech': 'supply', 'carrier_out': 'electricity', 'inherit': 'interest_rate_setter', 'carrier_export': 'electricity', 'source_unit': 'per_area', 'area_use_per_flow_cap': 7, 'flow_out_parasitic_eff': 0.85, 'flow_cap_max': 250, 'area_use_max': 1500, 'lifetime': 25, 'cost_flow_cap': {'data': 1350, 'index': 'monetary', 'dims': 'costs'}}
nodes
hold only the information about a technology that is specific to that node
m._model_def_dict["nodes"]["X2"]["techs"]["pv"]
{'cost_flow_out': {'data': -0.0203, 'index': 'monetary', 'dims': 'costs'}, 'cost_export': {'data': -0.0491, 'index': 'monetary', 'dims': 'costs'}}
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> Size: 88kB Dimensions: (costs: 1, techs: 12, carriers: 3, nodes: 4, timesteps: 48) Coordinates: * costs (costs) object 8B 'monetary' * techs (techs) object 96B 'N1_to_X2' ... 'supply_gri... * carriers (carriers) object 24B 'electricity' 'gas' 'heat' * nodes (nodes) object 32B 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 384B 2005-07-01 ..... Data variables: (12/35) bigM float64 8B 1e+06 objective_cost_weights (costs) float64 8B 1.0 base_tech (techs) object 96B 'transmission' ... 'supply' carrier_export (techs, carriers) float64 288B nan nan ... nan carrier_in (nodes, techs, carriers) float64 1kB nan ... nan carrier_out (nodes, techs, carriers) float64 1kB nan ... nan ... ... longitude (nodes) float64 32B -0.1247 -0.1613 ... -0.1311 source_use_equals (techs, timesteps) float64 5kB nan nan ... nan sink_use_equals (timesteps, techs, nodes) float64 18kB nan ..... definition_matrix (nodes, techs, carriers) bool 144B False ... ... timestep_resolution (timesteps) float64 384B 1.0 1.0 1.0 ... 1.0 1.0 timestep_weights (timesteps) float64 384B 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: {'bigM': 1000000000.0, 'objective_cost_wei... 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 timestamp_model_creation: 1714493126.451172
- 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]')
- bigM()float641e+06
- is_result :
- False
- default :
- 1000000000.0
array(1000000.)
- objective_cost_weights(costs)float641.0
- is_result :
- False
- default :
- 1
array([1.])
- 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_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]])
- 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(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]]]])
- 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]])
- 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(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])
- 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)
- 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_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]])
- 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_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])
- 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]]])
- available_area(nodes)float64nan 500.0 1.3e+03 900.0
- is_result :
- False
- default :
- inf
array([ nan, 500., 1300., 900.])
- 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])
- 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 :
- {'bigM': 1000000000.0, 'objective_cost_weights': 1, 'color': nan, 'name': nan, 'cap_method': 'continuous', 'integer_dispatch': False, 'include_storage': False, 'force_async_flow': False, 'flow_cap_per_storage_cap_min': 0, 'flow_cap_per_storage_cap_max': inf, 'flow_cap': inf, 'flow_cap_max': inf, 'flow_cap_max_systemwide': inf, 'flow_cap_min': 0, 'flow_cap_min_systemwide': 0, 'flow_out_min_relative': 0, 'flow_cap_per_unit': nan, 'flow_in_eff': 1.0, 'flow_out_eff': 1.0, 'flow_out_parasitic_eff': 1.0, 'flow_ramping': 1.0, 'export_max': inf, 'lifetime': inf, 'area_use': inf, 'area_use_max': inf, 'area_use_min': 0, 'area_use_per_flow_cap': nan, '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, 'cyclic_storage': True, 'purchased_units_min_systemwide': 0, 'purchased_units_max_systemwide': inf, 'purchased_units': inf, 'purchased_units_min': 0, 'purchased_units_max': inf, 'sink_unit': 'absolute', 'sink_use_min': 0, 'sink_use_max': inf, 'sink_use_equals': nan, 'source_unit': 'absolute', 'source_cap_equals_flow_cap': False, 'source_eff': 1.0, 'source_use_min': 0, 'source_use_max': inf, 'source_use_equals': nan, 'source_cap': inf, 'source_cap_max': inf, 'source_cap_min': 0, 'one_way': False, 'distance': 1.0, 'flow_in_eff_per_distance': 1.0, 'flow_out_eff_per_distance': 1.0, 'cost_flow_cap_per_distance': 0, 'cost_purchase_per_distance': 0, 'cost_flow_cap': 0, 'cost_export': 0, 'cost_interest_rate': 0, 'cost_om_annual': 0, 'cost_om_annual_investment_fraction': 0, 'cost_flow_in': 0, 'cost_flow_out': 0, 'cost_purchase': 0, 'cost_area_use': 0, 'cost_source_cap': 0, 'cost_storage_cap': 0, 'cost_depreciation_rate': 1, 'available_area': inf}
- allow_operate_mode :
- 1
- config :
- {'build': {'backend': 'pyomo', 'ensure_feasibility': True, 'mode': 'plan', 'objective': 'min_cost_optimisation', 'operate_use_cap_results': False}, 'solve': {'spores_number': 3, 'spores_score_cost_class': 'spores_score', 'spores_save_per_spore': False, 'spores_skip_cost_op': False, 'save_logs': None, 'solver_io': None, 'solver_options': None, 'solver': 'cbc', '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', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '[chp] in techs', 'equations': [{'expression': 'flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]'}]}}, '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
- timestamp_model_creation :
- 1714493126.451172
Until we solve the model, inputs
is the same as _model_data
m._model_data
<xarray.Dataset> Size: 88kB Dimensions: (costs: 1, techs: 12, carriers: 3, nodes: 4, timesteps: 48) Coordinates: * costs (costs) object 8B 'monetary' * techs (techs) object 96B 'N1_to_X2' ... 'supply_gri... * carriers (carriers) object 24B 'electricity' 'gas' 'heat' * nodes (nodes) object 32B 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 384B 2005-07-01 ..... Data variables: (12/35) bigM float64 8B 1e+06 objective_cost_weights (costs) float64 8B 1.0 base_tech (techs) object 96B 'transmission' ... 'supply' carrier_export (techs, carriers) float64 288B nan nan ... nan carrier_in (nodes, techs, carriers) float64 1kB nan ... nan carrier_out (nodes, techs, carriers) float64 1kB nan ... nan ... ... longitude (nodes) float64 32B -0.1247 -0.1613 ... -0.1311 source_use_equals (techs, timesteps) float64 5kB nan nan ... nan sink_use_equals (timesteps, techs, nodes) float64 18kB nan ..... definition_matrix (nodes, techs, carriers) bool 144B False ... ... timestep_resolution (timesteps) float64 384B 1.0 1.0 1.0 ... 1.0 1.0 timestep_weights (timesteps) float64 384B 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: {'bigM': 1000000000.0, 'objective_cost_wei... 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 timestamp_model_creation: 1714493126.451172
- 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]')
- bigM()float641e+06
- is_result :
- False
- default :
- 1000000000.0
array(1000000.)
- objective_cost_weights(costs)float641.0
- is_result :
- False
- default :
- 1
array([1.])
- 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_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]])
- 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(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]]]])
- 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]])
- 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(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])
- 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)
- 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_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]])
- 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_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])
- 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]]])
- available_area(nodes)float64nan 500.0 1.3e+03 900.0
- is_result :
- False
- default :
- inf
array([ nan, 500., 1300., 900.])
- 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])
- 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 :
- {'bigM': 1000000000.0, 'objective_cost_weights': 1, 'color': nan, 'name': nan, 'cap_method': 'continuous', 'integer_dispatch': False, 'include_storage': False, 'force_async_flow': False, 'flow_cap_per_storage_cap_min': 0, 'flow_cap_per_storage_cap_max': inf, 'flow_cap': inf, 'flow_cap_max': inf, 'flow_cap_max_systemwide': inf, 'flow_cap_min': 0, 'flow_cap_min_systemwide': 0, 'flow_out_min_relative': 0, 'flow_cap_per_unit': nan, 'flow_in_eff': 1.0, 'flow_out_eff': 1.0, 'flow_out_parasitic_eff': 1.0, 'flow_ramping': 1.0, 'export_max': inf, 'lifetime': inf, 'area_use': inf, 'area_use_max': inf, 'area_use_min': 0, 'area_use_per_flow_cap': nan, '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, 'cyclic_storage': True, 'purchased_units_min_systemwide': 0, 'purchased_units_max_systemwide': inf, 'purchased_units': inf, 'purchased_units_min': 0, 'purchased_units_max': inf, 'sink_unit': 'absolute', 'sink_use_min': 0, 'sink_use_max': inf, 'sink_use_equals': nan, 'source_unit': 'absolute', 'source_cap_equals_flow_cap': False, 'source_eff': 1.0, 'source_use_min': 0, 'source_use_max': inf, 'source_use_equals': nan, 'source_cap': inf, 'source_cap_max': inf, 'source_cap_min': 0, 'one_way': False, 'distance': 1.0, 'flow_in_eff_per_distance': 1.0, 'flow_out_eff_per_distance': 1.0, 'cost_flow_cap_per_distance': 0, 'cost_purchase_per_distance': 0, 'cost_flow_cap': 0, 'cost_export': 0, 'cost_interest_rate': 0, 'cost_om_annual': 0, 'cost_om_annual_investment_fraction': 0, 'cost_flow_in': 0, 'cost_flow_out': 0, 'cost_purchase': 0, 'cost_area_use': 0, 'cost_source_cap': 0, 'cost_storage_cap': 0, 'cost_depreciation_rate': 1, 'available_area': inf}
- allow_operate_mode :
- 1
- config :
- {'build': {'backend': 'pyomo', 'ensure_feasibility': True, 'mode': 'plan', 'objective': 'min_cost_optimisation', 'operate_use_cap_results': False}, 'solve': {'spores_number': 3, 'spores_score_cost_class': 'spores_score', 'spores_save_per_spore': False, 'spores_skip_cost_op': False, 'save_logs': None, 'solver_io': None, 'solver_options': None, 'solver': 'cbc', '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', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '[chp] in techs', 'equations': [{'expression': 'flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]'}]}}, '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
- timestamp_model_creation :
- 1714493126.451172
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-04-30 16:05:29] INFO Model: backend build starting
[2024-04-30 16:05:30] INFO Optimisation Model | parameters | Generated.
[2024-04-30 16:05:30] INFO Optimisation Model | variables | Generated.
[2024-04-30 16:05:31] INFO Optimisation Model | global_expressions | Generated.
[2024-04-30 16:05:33] INFO Optimisation Model | constraints | Generated.
[2024-04-30 16:05:33] INFO Optimisation Model | objectives | Generated.
[2024-04-30 16:05:33] INFO Model: backend build complete
As with the calliope Model
, the backend has its own dataset containing all the arrays of backend objects
m.backend._dataset
<xarray.Dataset> Size: 777kB Dimensions: (costs: 1, techs: 12, carriers: 3, nodes: 4, timesteps: 48) Coordinates: * costs (costs) object 8B 'monetary' * techs (techs) object 96B 'N1_to_X2' ... 'su... * carriers (carriers) object 24B 'electricity' .... * nodes (nodes) object 32B 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 384B 2005-... Data variables: (12/109) bigM object 8B parameters[bigM][0] objective_cost_weights (costs) object 8B parameters[objectiv... base_tech (techs) object 96B parameters[base_te... carrier_export (techs, carriers) object 288B nan ...... carrier_in (nodes, techs, carriers) object 1kB n... carrier_out (nodes, techs, carriers) object 1kB n... ... ... source_availability_supply (nodes, techs, timesteps) object 18kB ... balance_transmission (techs, timesteps) object 5kB constra... symmetric_transmission (nodes, techs) object 384B constraint... export_balance (nodes, techs, carriers, timesteps) object 55kB ... link_chp_outputs (nodes, techs, timesteps) object 18kB ... min_cost_optimisation object 8B objectives[min_cost_optimis...
- 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]')
- 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 0x7ff52052a260>, dtype=object)
- 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 0x7ff52052a670>], dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'cost_var', 'balance_transmission', 'link_flow_cap', 'balance_conversion', 'flow_in_inc_eff', 'balance_supply_no_storage', 'flow_out_inc_eff', 'balance_demand', 'source_use', 'symmetric_transmission', 'cost_investment_flow_cap', 'source_cap'}
- 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 0x7ff52052a850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052aa30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052aa80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052aad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ab20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ab70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052abc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ac60>], 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 0x7ff52052af30>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052afd0>, nan, nan], [nan, nan, nan], [nan, nan, nan]], dtype=object)
- carrier_in(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_max', 'flow_in'}
- 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 0x7ff52052b660>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b700>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b4d0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff52052b7f0>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b750>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b340>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b5c0>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b430>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b930>], [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', 'flow_out_max'}
- 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 0x7ff52052bf20>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052bfc0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c140>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff52052c190>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c0f0>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b9d0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c230>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052bc50>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520529f40>, 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 0x7ff52052bbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b1b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b2f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c5a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c3c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c9b0>], 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 0x7ff52052c6e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052dc20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ecb0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ce60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ddb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052eda0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052df90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ef80>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f0c0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f250>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d6d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e710>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f7a0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f660>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f980>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052dae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052eb70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fb60>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052dbd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ea30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fca0>]]]], 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 0x7ff52052c910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fde0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205350e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205360d0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fa70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ff70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fe30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205351d0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535e50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536cb0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534fa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535bd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535f90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536d00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536d50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536da0>]]]], 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 0x7ff520534370>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534230>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205340a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205340f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205371b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536e40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536ee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536df0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536fd0>]], 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 0x7ff5205373e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205372a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205344b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205208c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520910>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205218b0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205377a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534460>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537b60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205209b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520a00>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205213b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205224e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522530>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205207d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520820>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205216d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521720>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205225d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205226c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522710>]]], 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 0x7ff520537480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205232a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522ee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205232f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523390>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205233e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205228a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052cc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523480>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205231b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205234d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205230c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523570>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205229e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205235c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523610>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205227b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523660>]], 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 0x7ff520522da0>, nan, nan, nan, nan, nan], 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 0x7ff520523a20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205239d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522df0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205237a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523ca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523d90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523ed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523f20>], 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 0x7ff520523ac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523f70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537980>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537890>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204300a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430190>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204301e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430230>], 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 0x7ff520523750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205228f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204302d0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430780>], 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 0x7ff5204cec10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204305f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204308c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430c80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430d20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430d70>], 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 0x7ff520430870>, 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 0x7ff520430e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430aa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204309b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204314f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204315e0>], dtype=object)
- source_unit(techs)objectparameters[source_unit][0] ... p...
- is_result :
- False
- default :
- absolute
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'source_availability_supply', 'area_use'}
- 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 0x7ff5204313b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431ae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431b80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431bd0>], 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 0x7ff5204319f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431310>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204311d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430e10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431c70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430460>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204312c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432030>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204320d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432120>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432170>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204321c0>]], 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 0x7ff520431d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204317c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204319a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204323a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204316d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204318b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204327b0>], 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 0x7ff520431ef0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431f90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432850>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431fe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431cc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431ea0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432c10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432cb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432d00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432d50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432da0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432df0>]], dtype=object)
- distance(techs)objectparameters[distance][0] ... para...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment_flow_cap', 'flow_out_inc_eff', 'flow_in_inc_eff'}
- 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 0x7ff520432990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204323f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204325d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204326c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204322b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204333e0>], 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 0x7ff520432ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204328a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204338e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433980>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204339d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433a20>], 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 0x7ff520433020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204332f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433ac0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203ccb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203ccb90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203ccbe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1090>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1ea0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5f40>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf6cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf6d00>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0190>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0fa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf4fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf4ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5040>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5e50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb46260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb462b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb46300>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb470c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47110>]]]]], 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 0x7ff520433e30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204335c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb472a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47980>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47ac0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47c00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47d40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47e80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47fc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4280>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433c00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204337f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47480>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47250>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb479d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47b10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47c50>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47ca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47de0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47f20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d40a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d41e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4320>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433610>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204334d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb471b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47390>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47a70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47bb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47cf0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47e30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47f70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d40f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4230>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4370>]]], 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 0x7ff51eb47660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433de0>], 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 0x7ff5203d49b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d43c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d47d0>], 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 0x7ff5203d4c80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d45a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4460>], 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 0x7ff5203d5e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d60d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6120>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d61c0>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7ff5203d6670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d54f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4f50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203e3fc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204742d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204741e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204745f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474690>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204746e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204747d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474820>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476940>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204769e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476a30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476b20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476c10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476d00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476d50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476da0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476df0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476e40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476ee0>]]], dtype=object)
- timestep_resolution(timesteps)objectparameters[timestep_resolution][...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_max', 'flow_in_max', 'flow_out_max', 'cost_investment'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204744b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204740a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204743c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204771b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204776b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204777a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204777f0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477b10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477b60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477bb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477ca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477cf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477d40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477d90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477ed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477f20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477f70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477fc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c0f0>], dtype=object)
- timestep_weights(timesteps)objectparameters[timestep_weights][0] ...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'min_cost_optimisation', 'cost_investment', 'cost_var'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d63f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d62b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c6e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c7d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c8c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c9b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ca00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ca50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046caa0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ce60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ceb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cf50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d0e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d360>], 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 0x7ff52046dae0>, 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 0x7ff52046e300>, dtype=object)
- include_storage()objectparameters[include_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- {'balance_supply_no_storage', 'balance_conversion'}
- 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 0x7ff52046e210>, 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 0x7ff52046c1e0>, 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 0x7ff52046ec10>, 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 0x7ff52046f250>, 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 0x7ff52046e8a0>, 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 0x7ff52046e3f0>, 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 0x7ff520468280>, 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 0x7ff52046bcf0>, 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 0x7ff52046ed00>, 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 0x7ff52046ae90>, 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 0x7ff52046b7f0>, 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 0x7ff52046ffc0>, 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 0x7ff520468dc0>, 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 0x7ff52046f340>, 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 0x7ff52046b2a0>, 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 0x7ff520469680>, 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 0x7ff520468870>, 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 0x7ff52046b890>, 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 0x7ff52046b390>, 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 0x7ff52046a620>, 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 0x7ff52046a3f0>, 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 0x7ff520469c20>, 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 0x7ff52046b020>, 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 0x7ff52046a710>, 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 0x7ff520469040>, 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 0x7ff5204780a0>, 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 0x7ff52047bd40>, 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 0x7ff52046ba70>, 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 0x7ff52047ba20>, 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 0x7ff520478640>, 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 0x7ff52046ea30>, 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 0x7ff5204785a0>, 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 0x7ff520478870>, 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 0x7ff52046a800>, 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 0x7ff520478730>, 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 0x7ff520479860>, 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 0x7ff5204785f0>, 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 0x7ff520478b40>, 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 0x7ff52047a210>, dtype=object)
- flow_cap(nodes, techs, carriers)objectnan nan ... nan nan
- obj_type :
- variables
- references :
- {'cost_investment', 'flow_in_max', 'area_use_per_flow_capacity', 'symmetric_transmission', 'cost_investment_flow_cap', 'flow_out_max'}
- 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 0x7ff5205539d0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520553f50>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5205529d0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff52057ced0>], ... [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057e250>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057f850>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057dd50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057f6d0>], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057c8d0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057f150>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057c4d0>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057dad0>, 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 0x7ff52057fed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb70050>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057fd50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057fdd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb700d0>, 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', 'export_balance', 'flow_out_inc_eff', 'system_balance', 'link_chp_outputs', 'flow_out_max'}
- 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 0x7ff52057d3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52057d150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52055f050>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb715d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb71650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb716d0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb71750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb717d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb71850>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb72dd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb72e50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51eb72ed0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a2150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a21d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a2250>], [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 0x7ff51e9a22d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a2350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a23d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a3950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a39d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a3a50>], [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', 'system_balance', 'flow_in_max', 'flow_in_inc_eff'}
- 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 0x7ff51e9a8350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a84d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520553350>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a9d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a9dd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a9e50>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a9ed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a9f50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9a9fd0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9ab550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9ab5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9ab650>]], ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9f7050>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51e9f70d0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 :
- {'system_balance', 'export_balance', 'cost_var'}
- 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 0x7ff51ea2a650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea2a6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea2a750>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea2bcd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea2bd50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea2bdd0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 :
- {'source_availability_supply', 'area_use_per_flow_capacity', 'area_use_capacity_per_loc'}
- 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 0x7ff51ea30650>, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea310d0>, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea308d0>, nan, nan]], dtype=object)
- source_use(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'balance_supply_no_storage', 'source_max', 'source_availability_supply', 'cost_var'}
- 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 0x7ff51ea31e50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31dd0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea333d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea33450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea334d0>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea33550>, ... [[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 0x7ff51ea5d550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5d5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5d650>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5ebd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5ec50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5ecd0>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5ed50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5edd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea5ee50>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea60450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea604d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea60550>], [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 0x7ff51ea61850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea60b50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea615d0>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea618d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea61950>, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea619d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea61a50>, 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 0x7ff51ea30950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea30a50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea319d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea312d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31bd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea316d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea305d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31c50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea31550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff51ea314d0>, ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b8d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041b9d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041ba50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041bad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041bb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041bbd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041bc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff52041bcd0>]]], 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 0x7ff5204586d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5204585d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458bd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458dd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458e50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458ed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5204590d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520458fd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff520459050>, ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc8d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fc9d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fca50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fcad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fcb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fcbd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fcc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fccd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fcd50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fcdd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fce50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7ff5203fced0>]]], dtype=object)
- flow_out_inc_eff(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- global_expressions
- references :
- {'balance_supply_no_storage', 'balance_transmission', 'balance_conversion'}
- 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 0x7ff520668730>, <pyomo.core.kernel.expression.expression object at 0x7ff52066bb60>, <pyomo.core.kernel.expression.expression object at 0x7ff52066b480>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff5206172a0>, <pyomo.core.kernel.expression.expression object at 0x7ff5206170c0>, <pyomo.core.kernel.expression.expression object at 0x7ff520617610>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff520617b60>, <pyomo.core.kernel.expression.expression object at 0x7ff520616f80>, <pyomo.core.kernel.expression.expression object at 0x7ff520617b10>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff5204b3930>, <pyomo.core.kernel.expression.expression object at 0x7ff5204b3200>, <pyomo.core.kernel.expression.expression object at 0x7ff5204b1c70>]], ... ..., <pyomo.core.kernel.expression.expression object at 0x7ff51e90d630>, <pyomo.core.kernel.expression.expression object at 0x7ff51e90d680>, <pyomo.core.kernel.expression.expression object at 0x7ff51e90d6d0>], [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 0x7ff51e90d720>, <pyomo.core.kernel.expression.expression object at 0x7ff51e90d770>, <pyomo.core.kernel.expression.expression object at 0x7ff51e90d7c0>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff51e90e530>, <pyomo.core.kernel.expression.expression object at 0x7ff51e90e580>, <pyomo.core.kernel.expression.expression object at 0x7ff51e90e5d0>], [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_demand', 'balance_conversion'}
- 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 0x7ff51e900eb0>, <pyomo.core.kernel.expression.expression object at 0x7ff51e900fa0>, <pyomo.core.kernel.expression.expression object at 0x7ff51e900af0>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff51e901e50>, <pyomo.core.kernel.expression.expression object at 0x7ff51e901ea0>, <pyomo.core.kernel.expression.expression object at 0x7ff51e901ef0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e901f40>, <pyomo.core.kernel.expression.expression object at 0x7ff51e901f90>, <pyomo.core.kernel.expression.expression object at 0x7ff51e901fe0>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff51e902d50>, <pyomo.core.kernel.expression.expression object at 0x7ff51e902da0>, <pyomo.core.kernel.expression.expression object at 0x7ff51e902df0>]], ... <pyomo.core.kernel.expression.expression object at 0x7ff51e891720>, <pyomo.core.kernel.expression.expression object at 0x7ff51e891770>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7ff51e6b7020>, <pyomo.core.kernel.expression.expression object at 0x7ff51e6b7070>, <pyomo.core.kernel.expression.expression object at 0x7ff51e6b70c0>, ..., <pyomo.core.kernel.expression.expression object at 0x7ff51e6b7e30>, <pyomo.core.kernel.expression.expression object at 0x7ff51e6b7e80>, <pyomo.core.kernel.expression.expression object at 0x7ff51e6b7ed0>]], [[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 0x7ff5204685a0>]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51eb7c730>]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51eb7d4f0>]], [[nan], [nan], [nan]], [[nan], [nan], [nan]], ... [[nan], [nan], [nan]], [[nan], [nan], [nan]], [[<pyomo.core.kernel.expression.expression object at 0x7ff51eb4c9b0>], [nan], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51eb4fa70>], [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 0x7ff52049d3b0>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e707160>], [<pyomo.core.kernel.expression.expression object at 0x7ff51eb4ea80>], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff520523520>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6a8050>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6ab2f0>], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6a9c20>], ... [<pyomo.core.kernel.expression.expression object at 0x7ff51e873f70>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e8734d0>], [<pyomo.core.kernel.expression.expression object at 0x7ff523bc1b30>], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6d8eb0>], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6d82d0>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6da6c0>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6da350>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6d89b0>], [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 0x7ff51e6776b0>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e677fc0>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6768f0>], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e677610>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e676e40>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6770c0>], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e674730>], ... [<pyomo.core.kernel.expression.expression object at 0x7ff51e676300>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6755e0>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6759f0>], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e677a70>], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e677520>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e675680>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7ff51e490500>], [<pyomo.core.kernel.expression.expression object at 0x7ff51e6748c0>], [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 0x7ff51e9639a0>, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [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 0x7ff51e961fd0>, 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 0x7ff51e9606e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e9a90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e99b0>], 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 0x7ff5205aa7b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5237073f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5237072a0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ebbd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4eb540>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4eb850>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ea200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ea9e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4eb000>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e8830>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e8600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e8360>]], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e6d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e740>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e7b0>], [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 0x7ff51e72e820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e900>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72fbd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72fc40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72fcb0>], [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 0x7ff51e4eae40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5203c6cf0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be91d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204723c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520472430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204724a0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520472510>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520472580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204725f0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204738c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520473930>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204739a0>]], ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e920600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e920670>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7ff520470280>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e90ae40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e90acf0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4c90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4d70>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4de0>, ... [[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 0x7ff51e8de270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8de2e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8de350>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df620>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df690>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df700>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df770>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df7e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df850>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a0bb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a0c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a0c90>], [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 0x7ff51e8a3070>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a15c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beb380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beb8c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be9c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be9550>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beaac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be9710>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523bea890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beb230>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ea7b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520471780>, ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba2e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba350>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba3c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba4a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba510>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba5f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba660>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba6d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba740>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba7b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba970>]]], 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 0x7ff51e3f41a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f4210>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f4280>], [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 0x7ff51e3f42f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f4360>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f43d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f56a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5710>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5780>], [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 0x7ff51e3f7d20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a48a0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a5e10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a5e80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a5ef0>], [nan, nan, nan, ..., nan, nan, nan], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a7310>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a7380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a73f0>], [nan, nan, nan, ..., nan, nan, nan], [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 0x7ff51e4a7460>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a74d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a7540>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e53d4e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e53d5c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e53d6a0>], [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 0x7ff51e3f62e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f79a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f77e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6d60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6dd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6f20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7a80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6740>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5e10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f67b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5b00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6e40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f71c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5ef0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6cf0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7690>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7700>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6b30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f59b0>, ... [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7ff51e3f70e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7620>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e589240>, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e589940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e588e50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e589630>, nan, nan, nan, nan, nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e4590>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e4600>, nan, nan, nan, nan, nan, nan, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e4980>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e49f0>, 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 0x7ff51e2e5470>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e54e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e5550>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e6820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e6890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e6900>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 :
- foreach: - nodes - techs - timesteps where: '[chp] in techs' equations: - expression: flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]
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 0x7ff51e2681d0>, 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> Size: 90kB Dimensions: (costs: 1, techs: 12, carriers: 3, nodes: 4, timesteps: 48) Coordinates: * costs (costs) object 8B 'monetary' * techs (techs) object 96B 'N1_to_X2' ... 'su... * carriers (carriers) object 24B 'electricity' .... * nodes (nodes) object 32B 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 384B 2005-... Data variables: (12/78) bigM object 8B parameters[bigM][0] objective_cost_weights (costs) object 8B parameters[objectiv... base_tech (techs) object 96B parameters[base_te... carrier_export (techs, carriers) object 288B nan ...... carrier_in (nodes, techs, carriers) object 1kB n... carrier_out (nodes, techs, carriers) object 1kB n... ... ... cost_om_annual_investment_fraction object 8B parameters[cost_om_annual_i... cost_purchase object 8B parameters[cost_purchase][0] cost_area_use object 8B parameters[cost_area_use][0] cost_source_cap object 8B parameters[cost_source_cap][0] cost_storage_cap object 8B parameters[cost_storage_cap... cost_depreciation_rate object 8B parameters[cost_depreciatio...
- 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]')
- 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 0x7ff52052a260>, dtype=object)
- 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 0x7ff52052a670>], dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'cost_var', 'balance_transmission', 'link_flow_cap', 'balance_conversion', 'flow_in_inc_eff', 'balance_supply_no_storage', 'flow_out_inc_eff', 'balance_demand', 'source_use', 'symmetric_transmission', 'cost_investment_flow_cap', 'source_cap'}
- 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 0x7ff52052a850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052aa30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052aa80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052aad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052a8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ab20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ab70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052abc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ac60>], 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 0x7ff52052af30>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052afd0>, nan, nan], [nan, nan, nan], [nan, nan, nan]], dtype=object)
- carrier_in(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_in_max', 'flow_in'}
- 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 0x7ff52052b660>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b700>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b4d0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff52052b7f0>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b750>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b340>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b5c0>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b430>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b930>], [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', 'flow_out_max'}
- 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 0x7ff52052bf20>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052bfc0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c140>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7ff52052c190>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c0f0>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b9d0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c230>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052bc50>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520529f40>, 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 0x7ff52052bbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b1b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052b2f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c5a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c3c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c9b0>], 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 0x7ff52052c6e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052dc20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ecb0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ce60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ddb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052eda0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052df90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ef80>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f0c0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f250>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d6d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e710>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f7a0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f660>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052d9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052e990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052f980>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052dae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052eb70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fb60>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052dbd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ea30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fca0>]]]], 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 0x7ff52052c910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fde0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205350e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205360d0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fa70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052ff70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052fe30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205351d0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535e50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536cb0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534fa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535bd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520535f90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536d00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536d50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536da0>]]]], 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 0x7ff520534370>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534230>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205340a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205340f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205371b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536e40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536ee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536df0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520536fd0>]], 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 0x7ff5205373e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205372a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205344b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205208c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520910>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205218b0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205377a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520534460>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537b60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205209b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520a00>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205213b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205224e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522530>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205207d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520820>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520520a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205216d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520521720>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205225d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205226c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522710>]]], 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 0x7ff520537480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205232a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522ee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205232f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523390>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537520>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205233e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205228a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52052cc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523480>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205231b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205234d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205230c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523570>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205229e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205235c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523610>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205227b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523660>]], 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 0x7ff520522da0>, nan, nan, nan, nan, nan], 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 0x7ff520523a20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205239d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522df0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205237a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520522bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523ca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523d90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523ed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523f20>], 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 0x7ff520523ac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523f70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537980>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537890>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520537750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204300a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430190>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204301e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430230>], 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 0x7ff520523750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520523c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5205228f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204302d0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430780>], 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 0x7ff5204cec10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204305f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204308c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430c80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430cd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430d20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430d70>], 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 0x7ff520430870>, 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 0x7ff520430e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430aa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204309b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430a50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204314f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431540>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204315e0>], dtype=object)
- source_unit(techs)objectparameters[source_unit][0] ... p...
- is_result :
- False
- default :
- absolute
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'source_availability_supply', 'area_use'}
- 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 0x7ff5204313b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431680>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431a40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431ae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431b30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431b80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431bd0>], 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 0x7ff5204319f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431310>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204311d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430e10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431c70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520430460>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204312c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432030>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204320d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432120>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432170>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204321c0>]], 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 0x7ff520431d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204317c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204319a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204323a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204316d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204318b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204327b0>], 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 0x7ff520431ef0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431f90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432850>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431fe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431cc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520431ea0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432c10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432cb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432d00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432d50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432da0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432df0>]], dtype=object)
- distance(techs)objectparameters[distance][0] ... para...
- is_result :
- False
- default :
- 1.0
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment_flow_cap', 'flow_out_inc_eff', 'flow_in_inc_eff'}
- 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 0x7ff520432990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204323f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204325d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204326c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432f80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204322b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204333e0>], 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 0x7ff520432ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520432b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204328a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204338e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433980>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204339d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433a20>], 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 0x7ff520433020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204332f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433ac0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203ccb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203ccb90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203ccbe0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1090>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab1ea0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5f40>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf6cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf6d00>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0190>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eab0fa0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf4fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf4ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5040>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eaf5e50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb46260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb462b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb46300>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb470c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47110>]]]]], 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 0x7ff520433e30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204335c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb472a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47980>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47ac0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47c00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47d40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47e80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47fc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4280>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433c00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204337f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47480>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47250>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb479d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47b10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47c50>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47ca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47de0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47f20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d40a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d41e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4320>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433610>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204334d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb471b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47390>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47a70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47bb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47cf0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47e30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47f70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d40f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4230>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4370>]]], 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 0x7ff51eb47660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520433de0>], 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 0x7ff5203d49b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d43c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d47d0>], 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 0x7ff5203d4c80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d45a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4460>], 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 0x7ff5203d5e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d60d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6120>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d61c0>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7ff5203d6670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d54f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d4f50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d5400>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203e3fc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff51eb47700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204742d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204741e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204745f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474690>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204746e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204747d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474820>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476940>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476990>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204769e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476a30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476b20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476c10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476d00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476d50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476da0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476df0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476e40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476e90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476ee0>]]], dtype=object)
- timestep_resolution(timesteps)objectparameters[timestep_resolution][...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'source_max', 'flow_in_max', 'flow_out_max', 'cost_investment'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6490>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204744b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204740a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520474370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204743c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204771b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477200>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476f30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520476fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477070>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204776b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477750>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204777a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5204777f0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477b10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477b60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477bb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477c50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477ca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477cf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477d40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477d90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477ed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477f20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477f70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff520477fc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c0f0>], dtype=object)
- timestep_weights(timesteps)objectparameters[timestep_weights][0] ...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'min_cost_optimisation', 'cost_investment', 'cost_var'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d6620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d63f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff5203d62b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c6e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c7d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c8c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046c9b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ca00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ca50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046caa0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ce60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046ceb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cf50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d0e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d1d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d2c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7ff52046d360>], 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 0x7ff52046dae0>, 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 0x7ff52046e300>, dtype=object)
- include_storage()objectparameters[include_storage][0]
- original_dtype :
- bool
- obj_type :
- parameters
- references :
- {'balance_supply_no_storage', 'balance_conversion'}
- 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 0x7ff52046e210>, 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 0x7ff52046c1e0>, 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 0x7ff52046ec10>, 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 0x7ff52046f250>, 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 0x7ff52046e8a0>, 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 0x7ff52046e3f0>, 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 0x7ff520468280>, 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 0x7ff52046bcf0>, 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 0x7ff52046ed00>, 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 0x7ff52046ae90>, 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 0x7ff52046b7f0>, 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 0x7ff52046ffc0>, 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 0x7ff520468dc0>, 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 0x7ff52046f340>, 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 0x7ff52046b2a0>, 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 0x7ff520469680>, 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 0x7ff520468870>, 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 0x7ff52046b890>, 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 0x7ff52046b390>, 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 0x7ff52046a620>, 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 0x7ff52046a3f0>, 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 0x7ff520469c20>, 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 0x7ff52046b020>, 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 0x7ff52046a710>, 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 0x7ff520469040>, 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 0x7ff5204780a0>, 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 0x7ff52047bd40>, 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 0x7ff52046ba70>, 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 0x7ff52047ba20>, 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 0x7ff520478640>, 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 0x7ff52046ea30>, 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 0x7ff5204785a0>, 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 0x7ff520478870>, 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 0x7ff52046a800>, 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 0x7ff520478730>, 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 0x7ff520479860>, 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 0x7ff5204785f0>, 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 0x7ff520478b40>, 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 0x7ff52047a210>, 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> Size: 362kB Dimensions: (nodes: 4, techs: 12, carriers: 3, timesteps: 48) Coordinates: * techs (techs) object 96B 'N1_to_X2' ... 'supply_gri... * carriers (carriers) object 24B 'electricity' 'gas' 'heat' * nodes (nodes) object 32B 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 384B 2005-07-01 ..... Data variables: (12/14) area_use_per_flow_capacity (nodes, techs, carriers) object 1kB nan ... nan area_use_capacity_per_loc (nodes) object 32B nan ... constraints[area_u... balance_conversion (nodes, techs, timesteps) object 18kB nan ...... flow_out_max (nodes, techs, carriers, timesteps) object 55kB ... flow_in_max (nodes, techs, carriers, timesteps) object 55kB ... source_max (nodes, techs, timesteps) object 18kB nan ...... ... ... balance_supply_no_storage (nodes, techs, carriers, timesteps) object 55kB ... source_availability_supply (nodes, techs, timesteps) object 18kB nan ...... balance_transmission (techs, timesteps) object 5kB constraints[bal... symmetric_transmission (nodes, techs) object 384B constraints[symmet... export_balance (nodes, techs, carriers, timesteps) object 55kB ... link_chp_outputs (nodes, techs, timesteps) object 18kB 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 0x7ff51e9639a0>, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [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 0x7ff51e961fd0>, 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 0x7ff51e9606e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e9a90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e99b0>], 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 0x7ff5205aa7b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5237073f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5237072a0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ebbd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4eb540>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4eb850>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ea200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ea9e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4eb000>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e8830>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e8600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4e8360>]], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e6d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e740>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e7b0>], [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 0x7ff51e72e820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72e900>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72fbd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72fc40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e72fcb0>], [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 0x7ff51e4eae40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5203c6cf0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be91d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204723c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520472430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204724a0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520472510>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520472580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204725f0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204738c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520473930>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff5204739a0>]], ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e920600>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e920670>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7ff520470280>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e90ae40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e90acf0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4c90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4d70>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8c4de0>, ... [[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 0x7ff51e8de270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8de2e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8de350>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df620>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df690>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df700>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df770>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df7e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8df850>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a0bb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a0c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a0c90>], [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 0x7ff51e8a3070>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e8a15c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beb380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beb8c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be9c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be9550>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beaac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523be9710>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523bea890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff523beb230>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4ea7b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff520471780>, ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba2e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba350>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba3c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba4a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba510>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba5f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba660>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba6d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba740>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba7b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e7ba970>]]], 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 0x7ff51e3f41a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f4210>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f4280>], [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 0x7ff51e3f42f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f4360>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f43d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f56a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5710>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5780>], [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 0x7ff51e3f7d20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a48a0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a5e10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a5e80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a5ef0>], [nan, nan, nan, ..., nan, nan, nan], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a7310>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a7380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a73f0>], [nan, nan, nan, ..., nan, nan, nan], [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 0x7ff51e4a7460>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a74d0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e4a7540>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e53d4e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e53d5c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e53d6a0>], [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 0x7ff51e3f62e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f79a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f77e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6d60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6dd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6f20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7a80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6740>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5e10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f67b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5b00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6e40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f71c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f5ef0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6cf0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7690>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7700>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f6b30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f59b0>, ... [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7ff51e3f70e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e3f7620>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e589240>, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e589940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e588e50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e589630>, nan, nan, nan, nan, nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e4590>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e4600>, nan, nan, nan, nan, nan, nan, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e4980>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e5e49f0>, 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 0x7ff51e2e5470>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e54e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e5550>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e6820>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e6890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7ff51e2e6900>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 :
- foreach: - nodes - techs - timesteps where: '[chp] in techs' equations: - expression: flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]
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-04-30 16:05:34] INFO Optimisation model | starting model in plan mode.
[2024-04-30 16:05:34] INFO Backend: solver finished running. Time since start of solving optimisation problem: 0:00:00.440353
[2024-04-30 16:05:34] INFO Postprocessing: zero threshold of 1e-10 not required
[2024-04-30 16:05:34] INFO Postprocessing: ended. Time since start of solving optimisation problem: 0:00:00.569949
[2024-04-30 16:05:34] INFO Backend: model solve completed. Time since start of solving optimisation problem: 0:00:00.574265
The results are stored in m._model_data
and can be accessed by the public property m.results
m.results
<xarray.Dataset> Size: 378kB Dimensions: (nodes: 4, techs: 12, carriers: 3, timesteps: 48, costs: 1) Coordinates: * techs (techs) object 96B 'N1_to_X2' ... 'supply_gri... * carriers (carriers) <U11 132B 'electricity' 'gas' 'heat' * nodes (nodes) object 32B 'N1' 'X1' 'X2' 'X3' * timesteps (timesteps) datetime64[ns] 384B 2005-07-01 ..... * costs (costs) object 8B 'monetary' Data variables: (12/19) flow_cap (nodes, techs, carriers) float64 1kB nan ... nan link_flow_cap (techs) float64 96B 189.9 10.38 ... nan nan flow_out (nodes, techs, carriers, timesteps) float64 55kB ... flow_in (nodes, techs, carriers, timesteps) float64 55kB ... flow_export (nodes, techs, carriers, timesteps) float64 55kB ... area_use (nodes, techs) float64 384B nan nan ... nan nan ... ... cost_investment (nodes, techs, costs) float64 384B 0.05158 ..... cost (nodes, techs, costs) float64 384B 0.05158 ..... capacity_factor (nodes, techs, carriers, timesteps) float64 55kB ... systemwide_capacity_factor (techs, carriers) float64 288B 0.0 0.0 ... 0.0 systemwide_levelised_cost (carriers, techs, costs) float64 288B nan ...... total_levelised_cost (carriers, costs) float64 24B 0.08043 ... 0.0... Attributes: (12/16) termination_condition: optimal calliope_version_defined: 0.7.0 calliope_version_initialised: 0.7.0.dev3 applied_overrides: scenario: None defaults: {'bigM': 1000000000.0, 'objective_cost_wei... ... ... name: Urban-scale example model timestamp_model_creation: 1714493126.451172 timestamp_build_start: 1714493129.682115 timestamp_build_complete: 1714493133.616556 timestamp_solve_start: 1714493134.051438 timestamp_solve_complete: 1714493134.625703
- 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 :
- {'bigM': 1000000000.0, 'objective_cost_weights': 1, 'color': nan, 'name': nan, 'cap_method': 'continuous', 'integer_dispatch': False, 'include_storage': False, 'force_async_flow': False, 'flow_cap_per_storage_cap_min': 0, 'flow_cap_per_storage_cap_max': inf, 'flow_cap': inf, 'flow_cap_max': inf, 'flow_cap_max_systemwide': inf, 'flow_cap_min': 0, 'flow_cap_min_systemwide': 0, 'flow_out_min_relative': 0, 'flow_cap_per_unit': nan, 'flow_in_eff': 1.0, 'flow_out_eff': 1.0, 'flow_out_parasitic_eff': 1.0, 'flow_ramping': 1.0, 'export_max': inf, 'lifetime': inf, 'area_use': inf, 'area_use_max': inf, 'area_use_min': 0, 'area_use_per_flow_cap': nan, '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, 'cyclic_storage': True, 'purchased_units_min_systemwide': 0, 'purchased_units_max_systemwide': inf, 'purchased_units': inf, 'purchased_units_min': 0, 'purchased_units_max': inf, 'sink_unit': 'absolute', 'sink_use_min': 0, 'sink_use_max': inf, 'sink_use_equals': nan, 'source_unit': 'absolute', 'source_cap_equals_flow_cap': False, 'source_eff': 1.0, 'source_use_min': 0, 'source_use_max': inf, 'source_use_equals': nan, 'source_cap': inf, 'source_cap_max': inf, 'source_cap_min': 0, 'one_way': False, 'distance': 1.0, 'flow_in_eff_per_distance': 1.0, 'flow_out_eff_per_distance': 1.0, 'cost_flow_cap_per_distance': 0, 'cost_purchase_per_distance': 0, 'cost_flow_cap': 0, 'cost_export': 0, 'cost_interest_rate': 0, 'cost_om_annual': 0, 'cost_om_annual_investment_fraction': 0, 'cost_flow_in': 0, 'cost_flow_out': 0, 'cost_purchase': 0, 'cost_area_use': 0, 'cost_source_cap': 0, 'cost_storage_cap': 0, 'cost_depreciation_rate': 1, 'available_area': inf}
- allow_operate_mode :
- 1
- config :
- {'build': {'backend': 'pyomo', 'ensure_feasibility': True, 'mode': 'plan', 'objective': 'min_cost_optimisation', 'operate_use_cap_results': False}, 'solve': {'spores_number': 3, 'spores_score_cost_class': 'spores_score', 'spores_save_per_spore': False, 'spores_skip_cost_op': False, 'save_logs': None, 'solver_io': None, 'solver_options': None, 'solver': 'cbc', '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', 'foreach': ['nodes', 'techs', 'timesteps'], 'where': '[chp] in techs', 'equations': [{'expression': 'flow_out[carriers=electricity] * heat_to_power_ratio == flow_out[carriers=heat]'}]}}, '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
- timestamp_model_creation :
- 1714493126.451172
- timestamp_build_start :
- 1714493129.682115
- timestamp_build_complete :
- 1714493133.616556
- timestamp_solve_start :
- 1714493134.051438
- timestamp_solve_complete :
- 1714493134.625703
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