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-16 08:30:38] INFO Model: initialising
[2024-04-16 08:30:38] INFO Model: preprocessing stage 1 (model_run)
[2024-04-16 08:30:40] INFO Model: preprocessing stage 2 (model_data)
[2024-04-16 08:30:40] INFO Model: preprocessing complete
# Get information on the model
print(m.info())
[2024-04-16 08:30:40] WARNING /home/docs/checkouts/readthedocs.org/user_builds/calliope/conda/latest/lib/python3.12/site-packages/calliope/model.py:529: 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
- 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
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
- 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
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-16 08:30:41] INFO Optimisation Model | parameters | Generated.
[2024-04-16 08:30:41] INFO Optimisation Model | variables | Generated.
[2024-04-16 08:30:42] INFO Optimisation Model | global_expressions | Generated.
[2024-04-16 08:30:44] INFO Optimisation Model | constraints | Generated.
[2024-04-16 08:30:44] INFO Optimisation Model | objectives | Generated.
As with the calliope Model
, the backend has its own dataset containing all the arrays of backend objects
m.backend._dataset
<xarray.Dataset> 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 0x7fc1a4b46350>, 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 0x7fc1a4b46710>], dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'source_use', 'flow_in_inc_eff', 'link_flow_cap', 'cost_var', 'balance_transmission', 'symmetric_transmission', 'source_cap', 'balance_conversion', 'cost_investment_flow_cap', 'balance_demand', 'balance_supply_no_storage', 'flow_out_inc_eff'}
- 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 0x7fc1a4b46940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46a30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b469e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b461c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46d00>], 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 0x7fc1a4b46fd0>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47070>, 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 0x7fc1a4b47660>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47610>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46df0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7fc1a4b478e0>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47890>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47430>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47750>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b475c0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47a70>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]]], dtype=object)
- carrier_out(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_out_max', 'flow_out'}
- coords_in_name :
- False
- description :
- Carrier(s) produced by this technology. Only `transmission`, `conversion`, `storage`, and `supply` technologies can define this parameter
- unit :
- None
- default :
- nan
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b501e0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50320>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b503c0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7fc1a4b50410>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50370>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47b10>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b504b0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47a20>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50140>, 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 0x7fc1a4b47de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b472f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b472a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b505a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b502d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50be0>], 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 0x7fc1a4b50280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52d50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52e90>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b511d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b530c0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52300>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53200>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b514f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b532f0>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53890>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b539d0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53430>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53c50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53d90>]]]], 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 0x7fc1a4b50dc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b506e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52670>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39090>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39f90>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53bb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53de0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b390e0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39d60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3acb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ad50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ada0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38f50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39e50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3adf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ae40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ae90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ac10>]]]], 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 0x7fc1a4b382d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b381e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b250>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b2a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3a850>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b1b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3af80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3aee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b070>]], 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 0x7fc1a4b3b480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b7a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38410>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55846e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55855e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585680>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b383c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3bb60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55847d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584870>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55853b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585400>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55862b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586300>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55845a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55845f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584640>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55854a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55854f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585540>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55863a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55863f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586440>]]], 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 0x7fc1a4b3bb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586e90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586ee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b5c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586f30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586f80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b6b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586fd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587020>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586710>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586d00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55870c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586530>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586d50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586da0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587160>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586df0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55871b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55864e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586e40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587200>]], 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 0x7fc1a55869e0>, 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 0x7fc1a5587660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586a30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55872f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587980>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587a20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587ac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587b10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587b60>], 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 0x7fc1a5587700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55874d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ba20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b4d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c0f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c190>], 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 0x7fc1a5587840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587340>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55878e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c2d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c230>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c6e0>], 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 0x7fc1a5587f20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c460>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c5a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cbe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cc30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ccd0>], dtype=object)
- area_use_per_flow_cap(techs)objectnan nan nan ... nan nan
- is_result :
- False
- default :
- nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'area_use_per_flow_capacity', 'area_use'}
- 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 0x7fc1a556c7d0>, 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_max', 'flow_out_inc_eff'}
- 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 0x7fc1a556cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d0e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ca00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c8c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c9b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d3b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d4f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d540>], 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 0x7fc1a556d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ceb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d5e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556da40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556da90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556dae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556db30>], 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 0x7fc1a556d950>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d270>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cd70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556dbd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c3c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d220>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556df90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e030>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e080>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e0d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e120>]], 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 0x7fc1a556dcc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e1c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e2b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e300>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e6c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e710>], 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 0x7fc1a556de50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556def0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e7b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556df40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556dc20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556de00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556eb70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ec10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ec60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ecb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ed00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ed50>]], 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_in_inc_eff', 'flow_out_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 0x7fc1a556e8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e530>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556edf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e4e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556eee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ef30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f2f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f340>], 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 0x7fc1a556ea30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556eb20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e8a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f7a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f890>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f8e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f980>], 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 0x7fc1a556ef80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fa20>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5508aa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5508af0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5508b40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0ff0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb1d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb1db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb1e00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5ea0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf6c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf6c60>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb00f0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0f00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf4f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf4f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf4fa0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5d10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5db0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c461c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c46210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c46260>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c46fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47070>]]]]], 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 0x7fc1a556fd90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f520>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47390>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47200>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c478e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47a20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47b60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47ca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47de0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47f20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55100a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55101e0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fb60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f750>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c473e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c471b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47930>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47a70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47bb0>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47c00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47d40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47e80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47fc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510280>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f570>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c472f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c479d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47b10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47c50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47d90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47ed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55102d0>]]], 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 0x7fc1a4c475c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c474d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fd40>], 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 0x7fc1a5510910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55107d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510730>], 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 0x7fc1a5510be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55105f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55103c0>], 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 0x7fc1a5511db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55120d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512120>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7fc1a55125d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510eb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55111d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5523ed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5523e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c477a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47660>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a85a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a85f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a86e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8780>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa8a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa990>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaa30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaa80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aab20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aab70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aabc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aac10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aac60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aacb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aad50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aada0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aadf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aae40>]]], 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 0x7fc1a55123f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a80a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a82d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aae90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaf30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aafd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaf80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab5c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab6b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab750>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aba70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abc00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abc50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abcf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abd90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abde0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abe30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abe80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abf20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abf70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abfc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518050>], dtype=object)
- timestep_weights(timesteps)objectparameters[timestep_weights][0] ...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment', 'cost_var', 'min_cost_optimisation'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55185a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55185f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55186e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55187d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55188c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55189b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518a00>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518d20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518d70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518dc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55190e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55191d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55192c0>], 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 0x7fc1a5519bd0>, 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 0x7fc1a551a300>, 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 0x7fc1a5519c20>, 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 0x7fc1a551aa30>, 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 0x7fc1a551aee0>, 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 0x7fc1a551b390>, 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 0x7fc1a551acb0>, 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 0x7fc1a5519d60>, 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 0x7fc1a5528140>, 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 0x7fc1a552bde0>, 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 0x7fc1a551b110>, 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 0x7fc1a552bfc0>, 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 0x7fc1a5528460>, 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 0x7fc1a55193b0>, 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 0x7fc1a5528f50>, 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 0x7fc1a5519900>, 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 0x7fc1a5528320>, 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 0x7fc1a5529810>, 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 0x7fc1a5519f40>, 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 0x7fc1a5528dc0>, 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 0x7fc1a552b570>, 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 0x7fc1a552a6c0>, 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 0x7fc1a552a530>, 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 0x7fc1a5529c70>, dtype=object)
- sink_unit()objectparameters[sink_unit][0]
- original_dtype :
- <U8
- obj_type :
- parameters
- references :
- {'balance_demand', 'area_use'}
- 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 0x7fc1a552ac60>, 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 0x7fc1a5529d60>, 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 0x7fc1a551b3e0>, 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 0x7fc1a559c280>, 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 0x7fc1a559fcf0>, 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 0x7fc1a552b610>, 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 0x7fc1a559f930>, 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 0x7fc1a559c550>, 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 0x7fc1a552ad50>, 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 0x7fc1a559cbe0>, 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 0x7fc1a559fd40>, 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 0x7fc1a5528fa0>, 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 0x7fc1a559fac0>, 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 0x7fc1a559d770>, 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 0x7fc1a559d270>, 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 0x7fc1a559d4a0>, 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 0x7fc1a559ddb0>, dtype=object)
- flow_cap(nodes, techs, carriers)objectnan nan ... nan nan
- obj_type :
- variables
- references :
- {'flow_out_max', 'symmetric_transmission', 'cost_investment', 'cost_investment_flow_cap', 'flow_in_max', 'area_use_per_flow_capacity'}
- 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 0x7fc1a4b76b50>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b76e50>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b77bd0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7fc1a4b8e350>], ... [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8e2d0>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8ce50>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8c450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8e750>], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8c350>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8e150>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8f550>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8f0d0>, 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 0x7fc1a4b8fdd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8fed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8fc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8fcd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8ff50>, 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 :
- {'flow_out_max', 'flow_out_inc_eff', 'link_chp_outputs', 'cost_var', 'system_balance', 'export_balance'}
- coords_in_name :
- False
- description :
- The outflow of a technology per timestep, also known as the flow discharged (from `storage` technologies) or the flow received (by `transmission` technologies) on a link.
- unit :
- energy
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_out bounds: min: 0 max: .inf
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8df50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b8c6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b774d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c754d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c75550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c755d0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c75650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c756d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c75750>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c76cd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c76d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4c76dd0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca2050>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca20d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca2150>], [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 0x7fc1a4ca21d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca2250>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca22d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca3850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca38d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca3950>], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]]], dtype=object)
- flow_in(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'cost_var', 'flow_in_max', 'system_balance', '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 0x7fc1a4ca8250>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca83d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4b769d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca9c50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca9cd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca9d50>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca9dd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca9e50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4ca9ed0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4cab450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4cab4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4cab550>]], ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a41f6f50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a41f6fd0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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', 'cost_var', 'export_balance'}
- coords_in_name :
- False
- description :
- The flow of a carrier exported outside the system boundaries by a technology per timestep.
- unit :
- energy
- default :
- 0
- yaml_snippet :
- foreach: - nodes - techs - carriers - timesteps where: carrier_export bounds: min: 0 max: .inf
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ... ..., [[<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422a550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422a5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422a650>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422bbd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422bc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422bcd0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc1a422c950>, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422cfd0>, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422c6d0>, nan, nan]], dtype=object)
- source_use(nodes, techs, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- variables
- references :
- {'source_max', 'balance_supply_no_storage', '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 0x7fc1a422ddd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422c5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422d7d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422f350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422f3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422f450>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422f4d0>, ... [[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 0x7fc1a425d4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425d550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425d5d0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425eb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425ebd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425ec50>], [<calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425ecd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425ed50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a425edd0>, ..., <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a42603d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4260450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a42604d0>], [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 0x7fc1a4261750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4260a50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a42614d0>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a42617d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4261850>, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a42618d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a4261950>, 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 0x7fc1a422d1d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422c350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422d6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422cf50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422ca50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422d5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422c850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422dcd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422db50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422c4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422d150>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a422d9d0>, ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f2d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f350>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f3d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f450>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f8d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552f9d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552fa50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552fad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552fb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a552fbd0>]]], 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 0x7fc1a55885d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a55884d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588ad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588c50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588cd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588d50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588dd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588fd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588ed0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a5588f50>, ... <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c4d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c550>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c5d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c650>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c6d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c750>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c7d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c850>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c8d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c950>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553c9d0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553ca50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553cad0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553cb50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553cbd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553cc50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553ccd0>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553cd50>, <calliope.backend.pyomo_backend_model.ObjVariable object at 0x7fc1a553cdd0>]]], dtype=object)
- flow_out_inc_eff(nodes, techs, carriers, timesteps)objectnan nan nan nan ... nan nan nan nan
- obj_type :
- global_expressions
- references :
- {'balance_transmission', 'balance_supply_no_storage', '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 0x7fc1a4b13a20>, <pyomo.core.kernel.expression.expression object at 0x7fc1a5690be0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a5691630>, ..., <pyomo.core.kernel.expression.expression object at 0x7fc1a4ab5450>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4ab6710>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4ab5cc0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a4ab67b0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4ab6fd0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4ab6620>, ..., <pyomo.core.kernel.expression.expression object at 0x7fc1a561a3f0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a5619540>, <pyomo.core.kernel.expression.expression object at 0x7fc1a5619040>]], ... ..., <pyomo.core.kernel.expression.expression object at 0x7fc1a4219130>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4219180>, <pyomo.core.kernel.expression.expression object at 0x7fc1a42191d0>], [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 0x7fc1a4219220>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4219270>, <pyomo.core.kernel.expression.expression object at 0x7fc1a42192c0>, ..., <pyomo.core.kernel.expression.expression object at 0x7fc1a421a030>, <pyomo.core.kernel.expression.expression object at 0x7fc1a421a080>, <pyomo.core.kernel.expression.expression object at 0x7fc1a421a0d0>], [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_demand', 'balance_transmission', '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 0x7fc1a41b49b0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b4aa0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b4550>, ..., <pyomo.core.kernel.expression.expression object at 0x7fc1a41b5950>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b59a0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b59f0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a41b5a40>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b5a90>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b5ae0>, ..., <pyomo.core.kernel.expression.expression object at 0x7fc1a41b6850>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b68a0>, <pyomo.core.kernel.expression.expression object at 0x7fc1a41b68f0>]], ... <pyomo.core.kernel.expression.expression object at 0x7fc1a4139220>, <pyomo.core.kernel.expression.expression object at 0x7fc1a4139270>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc19f7e18b0>, <pyomo.core.kernel.expression.expression object at 0x7fc19f7e1900>, <pyomo.core.kernel.expression.expression object at 0x7fc19f7e1950>, ..., <pyomo.core.kernel.expression.expression object at 0x7fc19f7e26c0>, <pyomo.core.kernel.expression.expression object at 0x7fc19f7e2710>, <pyomo.core.kernel.expression.expression object at 0x7fc19f7e2760>]], [[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 0x7fc1a41279d0>]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a4101b80>]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a41005f0>]], [[nan], [nan], [nan]], [[nan], [nan], [nan]], ... [[nan], [nan], [nan]], [[nan], [nan], [nan]], [[<pyomo.core.kernel.expression.expression object at 0x7fc1a41bc820>], [nan], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a41bd360>], [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 0x7fc19f7df660>], [<pyomo.core.kernel.expression.expression object at 0x7fc1a551b570>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f7f1090>], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a4b13750>], [<pyomo.core.kernel.expression.expression object at 0x7fc1a4126ad0>], [<pyomo.core.kernel.expression.expression object at 0x7fc1a421a620>], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a559d3b0>], ... [<pyomo.core.kernel.expression.expression object at 0x7fc1a41bcaa0>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f7e80a0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f7e99f0>], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f7e9130>], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f7ea3f0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f7ea620>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc1a4c7d130>], [<pyomo.core.kernel.expression.expression object at 0x7fc1a4c7f700>], [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 0x7fc19f59f750>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59ff70>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59c1e0>], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan], [nan]], [[nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59f6b0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59c0a0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59e620>], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59edf0>], ... [<pyomo.core.kernel.expression.expression object at 0x7fc19f59d4a0>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59ceb0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59d270>], [nan]], [[nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59fb10>], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59f5c0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59d7c0>], [nan], [nan], [nan], [<pyomo.core.kernel.expression.expression object at 0x7fc19f5f45a0>], [<pyomo.core.kernel.expression.expression object at 0x7fc19f59d540>], [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 0x7fc1a55a5f60>, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [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 0x7fc1a55a6dd0>, 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 0x7fc1a40db310>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f45e190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f45cc20>], 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 0x7fc1a57a6970>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a89cf1c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a89cf150>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a71c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a7700>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a5fd0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a7000>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a64a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a4fa0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a40d9be0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a40dbd90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a40dbee0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5ded60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5dedd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5dee40>], [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 0x7fc19f5deeb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5def20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5def90>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5602f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f560360>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5603d0>], [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 0x7fc1a55a5080>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a4520>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a51d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563700>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563770>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5637e0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563850>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5638c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563930>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a413cc90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a413cd00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a413cd70>]], ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4140d70>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4140de0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc1a4113a80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a41135b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112c10>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5320>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5400>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5470>, ... [[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 0x7fc1a4b86900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b86970>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b869e0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87cb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87d20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87d90>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87e00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87e70>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87ee0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a411d240>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a411d2b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a411d320>], [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 0x7fc19f5a4050>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a4360>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a42f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a4130>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a4280>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112b30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4113c40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4113770>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4113e00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112f20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112ba0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a41137e0>, ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c61ef0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c61f60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c61fd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62040>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c620b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62120>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c622e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62350>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c623c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c624a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62510>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c625f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62660>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c626d0>]]], 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 0x7fc19f66bf50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f4050>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f40c0>], [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 0x7fc19f6f4130>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f41a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f4210>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f54e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f5550>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f55c0>], [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 0x7fc19f695fd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f5be0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f660280>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f72a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f7a10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f5fd0>], [nan, nan, nan, ..., nan, nan, nan], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c63af0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c639a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62ac0>], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc1a4c638c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62ba0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f660d00>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f662890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f662900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f662970>], [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 0x7fc19f6f7380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6601a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f663000>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6633f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f336b30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f334d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f334c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335010>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f3344b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335d30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335080>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335a20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f336580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f3346e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f3359b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335da0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f334670>, ... [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7fc19f662dd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6606e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6631c0>, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f660670>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f663380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f661010>, nan, nan, nan, nan, nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20cc20>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20dc50>, nan, nan, nan, nan, nan, nan, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20d5c0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20cc90>, 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 0x7fc19f25d710>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25d780>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25d7f0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25eac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25eb30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25eba0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc1a55bd370>, 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 0x7fc1a4b46350>, 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 0x7fc1a4b46710>], dtype=object)
- base_tech(techs)objectparameters[base_tech][0] ... par...
- is_result :
- False
- original_dtype :
- object
- obj_type :
- parameters
- references :
- {'source_use', 'flow_in_inc_eff', 'link_flow_cap', 'cost_var', 'balance_transmission', 'symmetric_transmission', 'source_cap', 'balance_conversion', 'cost_investment_flow_cap', 'balance_demand', 'balance_supply_no_storage', 'flow_out_inc_eff'}
- 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 0x7fc1a4b46940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46a30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b469e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b461c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46d00>], 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 0x7fc1a4b46fd0>, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47070>, 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 0x7fc1a4b47660>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47610>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b46df0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7fc1a4b478e0>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47890>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47430>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47750>, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b475c0>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47a70>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan]]], dtype=object)
- carrier_out(nodes, techs, carriers)objectnan nan ... nan nan
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'flow_out_max', 'flow_out'}
- coords_in_name :
- False
- description :
- Carrier(s) produced by this technology. Only `transmission`, `conversion`, `storage`, and `supply` technologies can define this parameter
- unit :
- None
- default :
- nan
array([[[nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b501e0>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50320>], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b503c0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [nan, nan, 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 0x7fc1a4b50410>], ... [nan, nan, nan]], [[nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50370>], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47b10>, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b504b0>], [nan, nan, nan], [nan, nan, nan], [nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47a20>, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50140>, 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 0x7fc1a4b47de0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b472f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b472a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b47390>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b505a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b502d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50be0>], 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 0x7fc1a4b50280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52d50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52e90>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b511d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52170>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b530c0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52300>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53200>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b514f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52440>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b532f0>]], ... [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53890>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51a90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b539d0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51c70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52a80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53430>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53c50>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b51ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53d90>]]]], 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 0x7fc1a4b50dc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50a00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b506e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b52670>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39090>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39f90>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53e30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53bb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b53de0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b390e0>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39d60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3acb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ad50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ada0>]]], [[[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38f50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39c20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b39e50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3adf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ae40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ae90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ac10>]]]], 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 0x7fc1a4b382d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b381e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b250>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b2a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3a850>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b1b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3af80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3aee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b070>]], 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 0x7fc1a4b3b480>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b7a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b38410>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55846e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584780>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585590>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55855e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585680>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b383c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3bb60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55847d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584870>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55853b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585400>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586260>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55862b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586300>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55845a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55845f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5584640>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55854a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55854f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5585540>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55863a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55863f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586440>]]], 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 0x7fc1a4b3bb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586ad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586e90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586b20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586ee0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b5c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586b70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586f30>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586bc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586f80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b6b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586fd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b50f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586c60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587020>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586710>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586cb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587070>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586760>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586d00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55870c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586530>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586d50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586670>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586da0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587160>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586df0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55871b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55864e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586e40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587200>]], 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 0x7fc1a55869e0>, 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 0x7fc1a5587660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586a30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55872f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587980>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587a20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587a70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587ac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587b10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587b60>], 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 0x7fc1a5587700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587c00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55874d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3ba20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4b3b4d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c0a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c0f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c190>], 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 0x7fc1a5587840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587340>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5587930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55878e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5586850>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c2d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c230>, nan, nan, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c5f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c6e0>], 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 0x7fc1a5587f20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c460>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c280>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c5a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cb40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cbe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cc30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cc80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ccd0>], dtype=object)
- area_use_per_flow_cap(techs)objectnan nan nan ... nan nan
- is_result :
- False
- default :
- nan
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'area_use_per_flow_capacity', 'area_use'}
- 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 0x7fc1a556c7d0>, 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_max', 'flow_out_inc_eff'}
- 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 0x7fc1a556cdc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d0e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ca00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c8c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c4b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c9b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d3b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d4a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d4f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d540>], 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 0x7fc1a556d310>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ce10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cf00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ceb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d5e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cfa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d9a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556da40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556da90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556dae0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556db30>], 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 0x7fc1a556d950>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d270>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d130>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556cd70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556dbd0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556c3c0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d220>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556df90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e030>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e080>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e0d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e120>]], 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 0x7fc1a556dcc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d860>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d770>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d720>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e1c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d900>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e2b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e300>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d630>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556d810>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e6c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e710>], 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 0x7fc1a556de50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556def0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e7b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556df40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556dc20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556de00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556eb70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ec10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ec60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ecb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ed00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ed50>]], 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_in_inc_eff', 'flow_out_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 0x7fc1a556e8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e530>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e620>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556edf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e4e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556eee0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ef30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f2f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f340>], 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 0x7fc1a556ea30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556eb20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f3e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e8a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556ead0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556e800>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f7a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f840>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f890>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f8e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f930>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f980>], 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 0x7fc1a556ef80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f250>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fa20>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5508aa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5508af0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5508b40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0ff0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb1d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb1db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb1e00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5ea0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf6c10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf6c60>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb00f0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bb0f00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf4f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf4f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf4fa0>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5d10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5d60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4bf5db0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c461c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c46210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c46260>, ..., <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c46fd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47020>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47070>]]]]], 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 0x7fc1a556fd90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f520>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47390>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47200>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c478e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47a20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47b60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47ca0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47de0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47f20>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55100a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55101e0>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fb60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f750>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c473e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c471b0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47930>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47a70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47bb0>], ... [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47c00>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47d40>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47e80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47fc0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510140>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510280>]], [[<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f570>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556f430>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47110>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c472f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c479d0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47b10>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47c50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47d90>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47ed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510050>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55102d0>]]], 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 0x7fc1a4c475c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c474d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a556fd40>], 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 0x7fc1a5510910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55107d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510730>], 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 0x7fc1a5510be0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55105f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510500>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55103c0>], 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 0x7fc1a5511db0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511e00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511e50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511ea0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511ef0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511f40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511f90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511fe0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512030>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512080>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55120d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512120>], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7fc1a55125d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511450>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5510eb0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55111d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5511360>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5523ed0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5523e80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c477a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a4c47660>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8230>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8140>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8190>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a85a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a85f0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a86e0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8780>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa8a0>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa8f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa940>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa990>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aa9e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaa30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaa80>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaad0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aab20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aab70>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aabc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aac10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aac60>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aacb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aad00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aad50>], [<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aada0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aadf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aae40>]]], 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 0x7fc1a55123f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8370>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a80a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8050>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a82d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55a8320>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab110>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab160>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aae90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaf30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aafd0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aaf80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab570>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab5c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab610>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab660>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab6b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab700>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55ab750>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55aba70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abac0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abb10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abb60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abbb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abc00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abc50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abca0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abcf0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abd40>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abd90>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abde0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abe30>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abe80>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abed0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abf20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abf70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55abfc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518050>], dtype=object)
- timestep_weights(timesteps)objectparameters[timestep_weights][0] ...
- is_result :
- False
- original_dtype :
- float64
- obj_type :
- parameters
- references :
- {'cost_investment', 'cost_var', 'min_cost_optimisation'}
- coords_in_name :
- False
- description :
- None
- unit :
- None
- default :
- nan
array([<calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512580>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512350>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5512210>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518410>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55185a0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518550>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55185f0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518640>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518690>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55186e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518730>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518780>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55187d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518820>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518870>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55188c0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518910>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518960>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55189b0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518a00>, ... <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518d20>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518d70>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518dc0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518e10>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518e60>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518eb0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518f00>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518f50>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518fa0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5518ff0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519040>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519090>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55190e0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519130>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519180>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55191d0>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519220>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a5519270>, <calliope.backend.pyomo_backend_model.ObjParameter object at 0x7fc1a55192c0>], 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 0x7fc1a5519bd0>, 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 0x7fc1a551a300>, 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 0x7fc1a5519c20>, 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 0x7fc1a551aa30>, 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 0x7fc1a551aee0>, 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 0x7fc1a551b390>, 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 0x7fc1a551acb0>, 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 0x7fc1a5519d60>, 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 0x7fc1a5528140>, 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 0x7fc1a552bde0>, 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 0x7fc1a551b110>, 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 0x7fc1a552bfc0>, 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 0x7fc1a5528460>, 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 0x7fc1a55193b0>, 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 0x7fc1a5528f50>, 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 0x7fc1a5519900>, 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 0x7fc1a5528320>, 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 0x7fc1a5529810>, 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 0x7fc1a5519f40>, 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 0x7fc1a5528dc0>, 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 0x7fc1a552b570>, 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 0x7fc1a552a6c0>, 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 0x7fc1a552a530>, 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 0x7fc1a5529c70>, dtype=object)
- sink_unit()objectparameters[sink_unit][0]
- original_dtype :
- <U8
- obj_type :
- parameters
- references :
- {'balance_demand', 'area_use'}
- 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 0x7fc1a552ac60>, 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 0x7fc1a5529d60>, 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 0x7fc1a551b3e0>, 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 0x7fc1a559c280>, 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 0x7fc1a559fcf0>, 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 0x7fc1a552b610>, 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 0x7fc1a559f930>, 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 0x7fc1a559c550>, 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 0x7fc1a552ad50>, 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 0x7fc1a559cbe0>, 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 0x7fc1a559fd40>, 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 0x7fc1a5528fa0>, 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 0x7fc1a559fac0>, 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 0x7fc1a559d770>, 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 0x7fc1a559d270>, 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 0x7fc1a559d4a0>, 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 0x7fc1a559ddb0>, 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 0x7fc1a55a5f60>, nan, nan], [nan, nan, nan], [nan, nan, nan]], [[nan, nan, nan], [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 0x7fc1a55a6dd0>, 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 0x7fc1a40db310>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f45e190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f45cc20>], 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 0x7fc1a57a6970>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a89cf1c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a89cf150>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a71c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a7700>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a5fd0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a7000>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a64a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a4fa0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a40d9be0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a40dbd90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a40dbee0>]], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5ded60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5dedd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5dee40>], [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 0x7fc19f5deeb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5def20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5def90>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5602f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f560360>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5603d0>], [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 0x7fc1a55a5080>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a4520>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a55a51d0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563700>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563770>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5637e0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563850>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5638c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f563930>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a413cc90>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a413cd00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a413cd70>]], ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4140d70>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4140de0>]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc1a4113a80>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a41135b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112c10>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5320>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5400>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a5470>, ... [[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 0x7fc1a4b86900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b86970>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b869e0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87cb0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87d20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87d90>], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87e00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87e70>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4b87ee0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a411d240>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a411d2b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a411d320>], [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 0x7fc19f5a4050>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a4360>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a42f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a4130>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f5a4280>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112b30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4113c40>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4113770>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4113e00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112f20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4112ba0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a41137e0>, ... <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c61ef0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c61f60>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c61fd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62040>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c620b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62120>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62190>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62200>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62270>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c622e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62350>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c623c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62430>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c624a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62510>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c625f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62660>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c626d0>]]], 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 0x7fc19f66bf50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f4050>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f40c0>], [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 0x7fc19f6f4130>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f41a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f4210>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f54e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f5550>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f55c0>], [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 0x7fc19f695fd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f5be0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f660280>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f72a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f7a10>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6f5fd0>], [nan, nan, nan, ..., nan, nan, nan], ... ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c63af0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c639a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62ac0>], [nan, nan, nan, ..., nan, nan, nan], [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 0x7fc1a4c638c0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc1a4c62ba0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f660d00>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f662890>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f662900>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f662970>], [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 0x7fc19f6f7380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6601a0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f663000>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6633f0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f336b30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f334d00>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335390>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f334c20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335010>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f3344b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335d30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335080>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335a20>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335940>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f336580>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f3346e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335c50>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f3359b0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f335da0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f334670>, ... [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 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 0x7fc19f662dd0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6606e0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f6631c0>, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f660670>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f663380>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f661010>, nan, nan, nan, nan, nan, nan, nan], [<calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20cc20>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20dc50>, nan, nan, nan, nan, nan, nan, nan, nan], [nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20d5c0>, nan, nan, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f20cc90>, 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 0x7fc19f25d710>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25d780>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25d7f0>, ..., <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25eac0>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25eb30>, <calliope.backend.pyomo_backend_model.ObjConstraint object at 0x7fc19f25eba0>], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [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-16 08:30:44] INFO Optimisation model | starting model in plan mode.
[2024-04-16 08:30:45] INFO Backend: solver finished running. Time since start of solving optimisation problem: 0:00:00.390400
[2024-04-16 08:30:45] INFO Postprocessing: started
[2024-04-16 08:30:45] INFO Postprocessing: zero threshold of 1e-10 not required
[2024-04-16 08:30:45] INFO Postprocessing: ended. Time since start of solving optimisation problem: 0:00:00.503642
[2024-04-16 08:30:45] INFO Model: loaded model_data
The results are stored in m._model_data
and can be accessed by the public property m.results
m.results
<xarray.Dataset> 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: 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... allow_operate_mode: 1 config: {'build': {'backend': 'pyomo', 'ensure_fea... applied_additional_math: ['additional_math.yaml'] math: {'constraints': {'flow_capacity_per_storag... name: Urban-scale example model
- nodes: 4
- techs: 12
- carriers: 3
- timesteps: 48
- costs: 1
- techs(techs)object'N1_to_X2' ... 'supply_grid_power'
array(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype=object)
- carriers(carriers)<U11'electricity' 'gas' 'heat'
array(['electricity', 'gas', 'heat'], dtype='<U11')
- nodes(nodes)object'N1' 'X1' 'X2' 'X3'
array(['N1', 'X1', 'X2', 'X3'], dtype=object)
- timesteps(timesteps)datetime64[ns]2005-07-01 ... 2005-07-02T23:00:00
array(['2005-07-01T00:00:00.000000000', '2005-07-01T01:00:00.000000000', '2005-07-01T02:00:00.000000000', '2005-07-01T03:00:00.000000000', '2005-07-01T04:00:00.000000000', '2005-07-01T05:00:00.000000000', '2005-07-01T06:00:00.000000000', '2005-07-01T07:00:00.000000000', '2005-07-01T08:00:00.000000000', '2005-07-01T09:00:00.000000000', '2005-07-01T10:00:00.000000000', '2005-07-01T11:00:00.000000000', '2005-07-01T12:00:00.000000000', '2005-07-01T13:00:00.000000000', '2005-07-01T14:00:00.000000000', '2005-07-01T15:00:00.000000000', '2005-07-01T16:00:00.000000000', '2005-07-01T17:00:00.000000000', '2005-07-01T18:00:00.000000000', '2005-07-01T19:00:00.000000000', '2005-07-01T20:00:00.000000000', '2005-07-01T21:00:00.000000000', '2005-07-01T22:00:00.000000000', '2005-07-01T23:00:00.000000000', '2005-07-02T00:00:00.000000000', '2005-07-02T01:00:00.000000000', '2005-07-02T02:00:00.000000000', '2005-07-02T03:00:00.000000000', '2005-07-02T04:00:00.000000000', '2005-07-02T05:00:00.000000000', '2005-07-02T06:00:00.000000000', '2005-07-02T07:00:00.000000000', '2005-07-02T08:00:00.000000000', '2005-07-02T09:00:00.000000000', '2005-07-02T10:00:00.000000000', '2005-07-02T11:00:00.000000000', '2005-07-02T12:00:00.000000000', '2005-07-02T13:00:00.000000000', '2005-07-02T14:00:00.000000000', '2005-07-02T15:00:00.000000000', '2005-07-02T16:00:00.000000000', '2005-07-02T17:00:00.000000000', '2005-07-02T18:00:00.000000000', '2005-07-02T19:00:00.000000000', '2005-07-02T20:00:00.000000000', '2005-07-02T21:00:00.000000000', '2005-07-02T22:00:00.000000000', '2005-07-02T23:00:00.000000000'], dtype='datetime64[ns]')
- costs(costs)object'monetary'
array(['monetary'], dtype=object)
- flow_cap(nodes, techs, carriers)float64nan nan 189.9 nan ... nan nan nan
- description :
- A technology's flow capacity, also known as its nominal or nameplate capacity.
- unit :
- power
- default :
- 0
- is_result :
- 1
array([[[ nan, nan, 1.8987211e+02], [ nan, nan, 1.0382599e+01], [ nan, nan, 5.6770227e+02], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, 5.6770227e+02], [2.7476645e+02, nan, nan], [4.7452088e+01, nan, nan], [ nan, nan, nan], [2.6044701e+02, 6.4307904e+02, 2.0835761e+02], ... [ nan, 2.2726339e+02, 1.9317388e+02], [ nan, nan, nan], [2.6934435e+02, nan, nan], [ nan, nan, 3.6513767e+02], [1.4358886e+01, nan, nan], [ nan, 2.2726339e+02, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, 1.0382599e+01], [ nan, nan, nan], [ nan, nan, nan], [4.7452088e+01, nan, nan], [ nan, 1.8352941e-02, 1.5600000e-02], [ nan, nan, nan], [6.4927357e+01, nan, nan], [ nan, nan, 9.3982291e+00], [1.0000000e+02, nan, nan], [ nan, 1.8352941e-02, nan], [ nan, nan, nan]]])
- link_flow_cap(techs)float64189.9 10.38 567.7 ... nan nan nan
- description :
- A transmission technology's flow capacity, also known as its nominal or nameplate capacity.
- unit :
- power
- default :
- 0
- is_result :
- 1
array([189.87211 , 10.382599, 567.70227 , 274.76645 , 47.452088, nan, nan, nan, nan, nan, nan, nan])
- flow_out(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The outflow of a technology per timestep, also known as the flow discharged (from `storage` technologies) or the flow received (by `transmission` technologies) on a link.
- unit :
- energy
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [5.2469889e+01, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [8.3685615e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [8.5869798e+01, 7.2541074e+01, 7.2915564e+01, ..., 1.6303621e+02, 1.1680008e+02, 9.2852036e+01]], ... [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [0.0000000e+00, 1.8352941e-02, 1.8352941e-02, ..., 1.8352941e-02, 1.8352941e-02, 1.8352941e-02], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]])
- flow_in(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The inflow to a technology per timestep, also known as the flow consumed (by `storage` technologies) or the flow sent (by `transmission` technologies) on a link.
- unit :
- energy
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [136.32565 , 71.606325 , 72.915564 , ..., 162.10148 , 116.80008 , 91.917322 ]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 10.382599 , 0.93474975, 0. , ..., 0.93472555, 0. , 0.93471415]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 0. , 0. , 0. , ..., 0. , 0. , 0. ]], ... [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]])
- flow_export(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The flow of a carrier exported outside the system boundaries by a technology per timestep.
- unit :
- energy
- default :
- 0
- is_result :
- 1
array([[[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ... [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], ..., [[ 0., 0., 0., ..., 0., 0., 0.], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]]])
- area_use(nodes, techs)float64nan nan nan nan ... 700.0 nan nan
- description :
- The area in space utilised directly (e.g., solar PV panels) or indirectly (e.g., biofuel crops) by a technology.
- unit :
- area
- default :
- 0
- is_result :
- 1
array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 0. , nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 100.5122, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 700. , nan, nan]])
- source_use(nodes, techs, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The carrier flow consumed from outside the system boundaries by a `supply` technology.
- unit :
- energy
- default :
- 0
- is_result :
- 1
array([[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ... [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00], [-0.0000000e+00, 4.8052305e+00, 1.1306472e+01, ..., 1.0563477e+02, 4.1552015e+01, 1.0442145e+00], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00], [-0.0000000e+00, 1.8352941e-02, 1.8352941e-02, ..., 1.8352941e-02, 1.8352941e-02, 1.8352941e-02], [ nan, nan, nan, ..., nan, nan, nan]]])
- source_cap(nodes, techs)float64nan nan nan ... 77.9 0.01835 nan
- description :
- The upper limit on a flow that can be consumed from outside the system boundaries by a `supply` technology in each timestep.
- unit :
- power
- default :
- 0
- is_result :
- 1
array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 0.0000000e+00, 6.4307904e+02, 3.4114372e+01], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 1.1185572e+01, 2.2726339e+02, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, 7.7900000e+01, 1.8352941e-02, nan]])
- unmet_demand(nodes, carriers, timesteps)float64nan nan nan nan ... 0.0 0.0 0.0 0.0
- is_result :
- 1
array([[[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], [[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., ... 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]], [[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]])
- flow_out_inc_eff(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- Outflows after taking efficiency losses into account.
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [5.66104098e+01, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [9.26045550e+00, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [9.26459831e+01, 7.82654586e+01, 7.86695004e+01, ..., 1.75901776e+02, 1.26017045e+02, 1.00179206e+02]], ... [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [0.00000000e+00, 1.83529410e-02, 1.83529410e-02, ..., 1.83529410e-02, 1.83529410e-02, 1.83529410e-02], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]])
- flow_in_inc_eff(nodes, techs, carriers, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- Inflows after taking efficiency losses into account.
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [136.32565 , 71.606325 , 72.915564 , ..., 162.10148 , 116.80008 , 91.917322 ]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 10.382599 , 0.93474975, 0. , ..., 0.93472555, 0. , 0.93471415]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ 0. , 0. , 0. , ..., 0. , 0. , 0. ]], ... [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]])
- cost_var(nodes, techs, costs, timesteps)float64nan nan nan nan ... nan nan nan nan
- description :
- The operating costs per timestep of a technology.
- unit :
- cost_per_time
- default :
- 0
- is_result :
- 1
array([[[[ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan]], ..., [[ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan]]], ... [[[ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan]], ..., [[ nan, nan, nan, ..., nan, nan, nan]], [[0.00000000e+00, 4.58823525e-04, 4.58823525e-04, ..., 4.58823525e-04, 4.58823525e-04, 4.58823525e-04]], [[ nan, nan, nan, ..., nan, nan, nan]]]])
- cost_investment_flow_cap(nodes, techs, carriers, costs)float64nan nan 85.44 nan ... nan nan nan
- description :
- The investment costs associated with the nominal/rated capacity of a technology.
- default :
- 0
- is_result :
- 1
array([[[[ nan], [ nan], [8.54424495e+01]], [[ nan], [ nan], [6.22955940e+00]], [[ nan], [ nan], [2.55466021e+02]], [[ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan]], ... [[ nan], [ nan], [ nan]], [[ nan], [ nan], [ nan]], [[1.35000000e+05], [ nan], [ nan]], [[ nan], [1.83529410e-02], [ nan]], [[ nan], [ nan], [ nan]]]])
- cost_investment(nodes, techs, costs)float640.05158 0.003761 ... 1.108e-05 nan
- description :
- The installation costs of a technology, including annualised investment costs and annual maintenance costs.
- unit :
- cost
- default :
- 0
- is_result :
- 1
array([[[5.15782463e-02], [3.76054000e-03], [1.54214790e-01], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [1.54214790e-01], [8.29328496e-03], [7.16123980e-04], [ nan], [1.17916212e+02], ... [5.02595452e+00], [ nan], [ nan], [ nan], [1.17016579e+01], [1.37189970e-01], [ nan]], [[ nan], [3.76054000e-03], [ nan], [ nan], [7.16123980e-04], [7.34534303e-04], [ nan], [ nan], [ nan], [3.73846013e+01], [1.10789487e-05], [ nan]]])
- cost(nodes, techs, costs)float640.05158 0.003761 ... 0.01148 nan
- description :
- The total annualised costs of a technology, including installation and operation costs.
- unit :
- cost
- default :
- 0
- is_result :
- 1
array([[[5.15782463e-02], [3.76054000e-03], [1.54214790e-01], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan]], [[ nan], [ nan], [1.54214790e-01], [8.29328496e-03], [7.16123980e-04], [ nan], [1.53478246e+02], ... [1.20827193e+01], [ nan], [ nan], [ nan], [6.56781029e+00], [4.42419697e+01], [ nan]], [[ nan], [3.76054000e-03], [ nan], [ nan], [7.16123980e-04], [2.56982840e-03], [ nan], [ nan], [ nan], [3.73846013e+01], [1.14816671e-02], [ nan]]])
- capacity_factor(nodes, techs, carriers, timesteps)float640.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- is_result :
- 1
array([[[[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0.27634332, 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0.80601798, 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0.15125851, 0.12778014, 0.1284398 , ..., 0.28718612, 0.20574179, 0.16355763]], ... [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 1. , 1. , ..., 1. , 1. , 1. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ]], [[0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ], [0. , 0. , 0. , ..., 0. , 0. , 0. ]]]])
- systemwide_capacity_factor(techs, carriers)float640.0 0.0 0.4178 ... 0.0799 0.0 0.0
- is_result :
- 1
array([[0. , 0. , 0.41781733], [0. , 0. , 0.39070121], [0. , 0. , 0.20989428], [0.33000724, 0. , 0. ], [0.17785253, 0. , 0. ], [0. , 0. , 0.16175317], [0.72767514, 0. , 0.72767514], [0. , 0. , 0. ], [0. , 0. , 0. ], [0.20185729, 0. , 0. ], [0. , 0.57989306, 0. ], [0.07990226, 0. , 0. ]])
- systemwide_levelised_cost(carriers, techs, costs)float64nan nan nan ... nan nan nan
- is_result :
- 1
array([[[ nan], [ nan], [ nan], [1.90545276e-06], [1.76779380e-06], [ nan], [1.68713049e-02], [ nan], [ nan], [3.96667954e-02], [ nan], [1.15739560e-01]], [[ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [ nan], [2.50216872e-02], [ nan]], [[1.35449594e-05], [1.93133737e-05], [2.69627104e-05], [ nan], [ nan], [8.05711442e-03], [2.10891310e-02], [ nan], [ nan], [ nan], [ nan], [ nan]]])
- total_levelised_cost(carriers, costs)float640.08043 0.03431 0.09471
- is_result :
- 1
array([[0.08042675], [0.03431306], [0.09470535]])
- techsPandasIndex
PandasIndex(Index(['N1_to_X2', 'N1_to_X3', 'X1_to_N1', 'X1_to_X2', 'X1_to_X3', 'boiler', 'chp', 'demand_electricity', 'demand_heat', 'pv', 'supply_gas', 'supply_grid_power'], dtype='object', name='techs'))
- carriersPandasIndex
PandasIndex(Index(['electricity', 'gas', 'heat'], dtype='object', name='carriers'))
- nodesPandasIndex
PandasIndex(Index(['N1', 'X1', 'X2', 'X3'], dtype='object', name='nodes'))
- timestepsPandasIndex
PandasIndex(DatetimeIndex(['2005-07-01 00:00:00', '2005-07-01 01:00:00', '2005-07-01 02:00:00', '2005-07-01 03:00:00', '2005-07-01 04:00:00', '2005-07-01 05:00:00', '2005-07-01 06:00:00', '2005-07-01 07:00:00', '2005-07-01 08:00:00', '2005-07-01 09:00:00', '2005-07-01 10:00:00', '2005-07-01 11:00:00', '2005-07-01 12:00:00', '2005-07-01 13:00:00', '2005-07-01 14:00:00', '2005-07-01 15:00:00', '2005-07-01 16:00:00', '2005-07-01 17:00:00', '2005-07-01 18:00:00', '2005-07-01 19:00:00', '2005-07-01 20:00:00', '2005-07-01 21:00:00', '2005-07-01 22:00:00', '2005-07-01 23:00:00', '2005-07-02 00:00:00', '2005-07-02 01:00:00', '2005-07-02 02:00:00', '2005-07-02 03:00:00', '2005-07-02 04:00:00', '2005-07-02 05:00:00', '2005-07-02 06:00:00', '2005-07-02 07:00:00', '2005-07-02 08:00:00', '2005-07-02 09:00:00', '2005-07-02 10:00:00', '2005-07-02 11:00:00', '2005-07-02 12:00:00', '2005-07-02 13:00:00', '2005-07-02 14:00:00', '2005-07-02 15:00:00', '2005-07-02 16:00:00', '2005-07-02 17:00:00', '2005-07-02 18:00:00', '2005-07-02 19:00:00', '2005-07-02 20:00:00', '2005-07-02 21:00:00', '2005-07-02 22:00:00', '2005-07-02 23:00:00'], dtype='datetime64[ns]', name='timesteps', freq=None))
- costsPandasIndex
PandasIndex(Index(['monetary'], dtype='object', name='costs'))
- termination_condition :
- optimal
- calliope_version_defined :
- 0.7.0
- calliope_version_initialised :
- 0.7.0.dev3
- applied_overrides :
- scenario :
- None
- defaults :
- {'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
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