zen_garden.model.carrier.carrier

Class defining a generic energy carrier.

The class takes as inputs the abstract optimization model. The class adds parameters, variables and constraints of a generic carrier and returns the abstract optimization model.

Classes

Carrier(carrier, optimization_setup)

Class defining a generic energy carrier.

CarrierRules(optimization_setup)

Rules for the Carrier class.

class zen_garden.model.carrier.carrier.Carrier(carrier: str, optimization_setup)

Class defining a generic energy carrier.

__init__(carrier: str, optimization_setup)

Initialization of a generic carrier object.

Parameters:
  • carrier – carrier that is added to the model

  • optimization_setup – The OptimizationSetup the element is part of

classmethod construct_constraints(optimization_setup)

Constructs the Constraints of the class <Carrier>.

Parameters:

optimization_setup – The OptimizationSetup the element is part of

classmethod construct_params(optimization_setup)

Constructs the pe.Params of the class <Carrier>.

Parameters:

optimization_setup – The OptimizationSetup the element is part of

classmethod construct_sets(optimization_setup)

Constructs the pe.Sets of the class <Carrier>.

Parameters:

optimization_setup – The OptimizationSetup the element is part of

classmethod construct_vars(optimization_setup)

Constructs the pe.Vars of the class <Carrier>.

Parameters:

optimization_setup – The OptimizationSetup the element is part of

overwrite_time_steps(base_time_steps)

Overwrites set_time_steps_operation.

Parameters:

base_time_steps – #TODO describe parameter/return

store_input_data()

Retrieves and stores input data for element as attributes. Each Child class overwrites method to store different attributes.

class zen_garden.model.carrier.carrier.CarrierRules(optimization_setup)

Rules for the Carrier class.

__init__(optimization_setup)

Inits the rules for a given EnergySystem.

Parameters:

optimization_setup – The OptimizationSetup the element is part of

constraint_availability_import_export()

node- and time-dependent carrier availability to import/export from outside the system boundaries.

\[\underline{U}_{c,n,t} \leq \underline{a}_{c,n,t}\]
\[\overline{U}_{c,n,t} \leq \overline{a}_{c,n,t}\]

\(\underline{U}_{c,n,t}\): flow of carrier \(c\) imported at node \(n\) and time step \(t\)

\(\overline{U}_{c,n,t}\): flow of carrier \(c\) exported at node \(n\) and time step \(t\)

\(\underline{a}_{c,n,t}\): availability of carrier \(c\) to import at node \(n\) and time step \(t\)

\(\overline{a}_{c,n,t}\): availability of carrier \(c\) to export at node \(n\) and time step \(t\)

constraint_availability_import_export_yearly()

node- and year-dependent carrier availability to import/export from outside the system boundaries.

\[\underline{a}_{c,n,y}^\mathrm{Y} \geq \sum_{t\in\mathcal{T}}\tau_t \underline{U}_{c,n,t}\]
\[\overline{a}_{c,n,y}^\mathrm{Y} \geq \sum_{t\in\mathcal{T}}\tau_t \overline{U}_{c,n,t}\]

\(\underline{a}_{c,n,y}^\mathrm{Y}\): yearly availability of carrier \(c\) to import at node \(n\)

\(\overline{a}_{c,n,y}^\mathrm{Y}\): yearly availability of carrier \(c\) to export at node \(n\)

\(\tau_t\): is the duration of time step \(t\)

\(\underline{U}_{c,n,t}\): flow of carrier \(c\) imported at node \(n\) at time step \(t\)

\(\overline{U}_{c,n,t}\): flow of carrier \(c\) exported at node \(n\) at time step \(t\)

constraint_carbon_emissions_carrier()

Carbon emissions of importing and exporting carrier.

\[\theta_{c,n,t}^{\mathrm{carrier}} = \underline{\epsilon_c} \underline{U}_{c,n,t} - \overline{\epsilon_c} \overline{U}_{c,n,t}\]

\(\theta_{c,n,t}^{\mathrm{carrier}}\): carbon emissions of importing and exporting carrier \(c\) at node \(n\) and time step \(t\)

\(\underline{\epsilon_c}\): carbon intensity of carrier import \(c\)

\(\overline{\epsilon_c}\): carbon intensity of carrier export \(c\)

\(\underline{U}_{c,n,t}\): flow of carrier \(c\) imported at node \(n\) and time step \(t\)

\(\overline{U}_{c,n,t}\): flow of carrier \(c\) exported at node \(n\) and time step \(t\)

constraint_carbon_emissions_carrier_total()

Total carbon emissions of importing and exporting carrier.

\[E_y^{\mathcal{C}} = \sum_{c\in\mathcal{C}}\sum_{n\in\mathcal{N}} \sum_{t\in\mathcal{T}} \tau_t \theta_{c,n,t}^{\mathrm{carrier}}\]

\(\theta_{c,n,t}^{\mathrm{carrier}}\): carbon emissions of importing and exporting carrier \(c\) at node \(n\) and time step \(t\)

\(\tau_t\): duration of time step \(t\)

constraint_cost_carrier()

Cost of importing and exporting carrier.

\[O_{c,n,t} = \underline{u}_{c,n,t} \underline{U}_{c,n,t} - \overline{v}_{c,n,t} \overline{U}_{c,n,t}\]

\(\underline{u}_{c,n,t}\): import price of carrier \(c\) at node \(n\) and time step \(t\)

\(\overline{v}_{c,n,t}\): export price of carrier \(c\) at node \(n\) and time step \(t\)

\(\underline{U}_{c,n,t}\): flow of carrier \(c\) imported at node \(n\) and time step \(t\)

\(\overline{U}_{c,n,t}\): flow of carrier \(c\) exported at node \(n\) and time step \(t\)

constraint_cost_carrier_total()

Total cost of importing and exporting carrier.

\[C_y^{\mathcal{C}} = \sum_{c\in\mathcal{C}}\sum_{n\in\mathcal{N}} \sum_{t\in\mathcal{T}} \tau_t (O_{c,n,t} + O_{c,n,t}^{\mathrm{shed}\ \mathrm{demand}})\]

\(O_{c,n,t}\): cost of importing and exporting carrier \(c\) at node \(n\) and time step \(t\)

\(O_{c,n,t}^{\mathrm{shed\ demand}}\): cost of shedding demand of carrier \(c\) at node \(n\) and time step \(t\)

\(\tau_t\): duration of time step \(t\)

constraint_cost_limit_shed_demand()

Cost and limit of shedding demand of carrier.

\[ \begin{align}\begin{aligned}O_{c,n,t}^{\mathrm{shed\ demand}} = D_{c,n,t} \nu_c\\D_{c,n,t} \leq d_{c,n,t}\end{aligned}\end{align} \]

\(O_{c,n,t}^{\mathrm{shed\ demand}}\): total cost of shedding demand of carrier \(c\) at node \(n\) and time step \(t\)

\(\nu_c\): price to shed demand of carrier \(c\)

\(D_{c,n,t}\): shed demand of carrier \(c\) at node \(n\) and time step \(t\)

\(d_{c,n,t}\): demand of carrier \(c\) at node \(n\) and time step \(t\)

constraint_nodal_energy_balance()

Nodal energy balance for each time step.

\[0 = -(d_{c,n,t}-D_{c,n,t}) + \sum_{i\in\mathcal{I}}(\overline{G}_{c,i,n,t} - \underline{G}_{c,i,n,t}) + \sum_{j\in\mathcal{J}}(\sum_{e\in\underline{\mathcal{E}}}(F_{j,e,t} - F^\mathrm{l}_{j,e,t}) - \sum_{e'\in\overline{\mathcal{E}}}F_{j,e',t}) + \sum_{k\in\mathcal{K}}(\overline{H}_{k,n,t} - \underline{H}_{k,n,t}) + \underline{U}_{c,n,t} - \overline{U}_{c,n,t}\]

Sources of carrier \(c\) at node \(n\) and time step \(t\):

\(\overline{G}_{c,i,n,t}\): output flow of carrier \(c\) from all conversion technologies \(i\) at node \(n\) at time step \(t\)

\(F_{j,e,t}\): transported flow of carrier \(c\) on ingoing edges \(e\) minues the losses \(F^\mathrm{l}_{j,e,t})\) of all transport technologies \(j\) at time step \(t\)

\(\overline{H}_{k,n,t}\): output flow of carrier \(c\) from all storage technologies \(k\) at node \(n\) at time step \(t\)

\(\underline{U}_{c,n,t}\): flow of carrier \(c\) imported at node \(n\) at time step \(t\)

Sinks of carrier \(c\) at node \(n\) and time step \(t\):

\(d_{c,n,t}\): demand of carrier \(c\) at node \(n\) at time step \(t\) minus the shed demand \(D_{c,n,t}\)

\(\underline{G}_{c,i,n,t}\): input flow of carrier \(c\) to all conversion technologies \(i\) at node \(n\) at time step \(t\)

\(F_{j,e',t}\): transported flow of carrier \(c\) on outgoing edges \(e'\) at time step \(t\)

\(\underline{H}_{k,n,t}\): input flow of carrier \(c\) to all storage technologies \(k\) at node \(n\) at time step \(t\)

\(\overline{U}_{c,n,t}\): flow of carrier \(c\) exported at node \(n\) at time step \(t\)