Archive

Modelling of technologies

Here the framework’s representations of technologies are shown

VRE-units

frameworks/archive/images/balmorel_VRE.png

Used in: Balmorel

frameworks/archive/images/vre_unit_genesys2.png

Used in: GENESYS_2

Balmorel

The related equation for this technology is (TO BE UPDATED):

\[{v^{gen}_{y,a,g,t}} = (v^{inv,capa}_{y,a,g}+\kappa^{capa}_{y,a,g})\cdot \gamma^{in,gen}_{g,t} \quad \forall y \in Y, a\in A, g\in G, t\in T\]

Note - the full load hour is used to generate the profile (the resulting profile here called \(\gamma^{in,gen}_{g,t}\)) so that it can be scaled according to expected future hours of sun while sticking to the same profile with respect to relative changes.

Urbs

Uses generic process equations. Only difference is that additionally the input depends on the timeseries of the corresponding commodity input/maxinput ratio.

\[\begin{split}&v^{\text{in}}_{t,y,r,g,c}=\kk_{y,r,g}\cdot \gamma^{\text{supim}}_{r,c,y,t}\cdot \Delta t \\ &\forall t \in T_m, ~y \in Y, ~r \in R, ~g \in G, ~c \in C^{\text{supIm}}\end{split}\]

GENESYS-2

Capacity factor (CF) ist used to calculate generation of VRE-units. Delta t always equals one hour.

\[{v^{gen}_{y,r,g,t}} = v^{capa}_{y,r,g} \cdot CF^{in,gen}_{y,r,g,t} \cdot \Delta t \quad \forall y \in Y, r\in R, g\in G, t\in T\]

Electricity-only units

frameworks/archive/images/balmorel_elec.png

Used in: Balmorel

frameworks/archive/images/electricity_only_unit_genesys2.png

Used in: GENESYS_2

Balmorel

The related equation for this technology is:

\[{\vu_{y,a,g,t}} = \frac{\vg_{y,a,g,t}}{\gi_{g}} \quad \forall y \in Y, a\in A, g\in G, t\in T\]

Urbs

Uses generic process equations.

GENESYS-2

Generation is calculated by using overall plant efficiencies, that are time-independent. Delta t always equals one hour.

\[{v^{gen}_{y,r,g,t}} = v^{fuse}_{y,r,g,t} \cdot \gamma^{total,gen}_{g} \cdot \Delta t \quad \forall y \in Y, r\in R, g\in G, t\in T\]

Heat-only units

frameworks/archive/images/balmorel_heat.png

Used in: Balmorel

Balmorel

The related equation for this technology is:

\[{\vu_{y,a,g,t}} = \frac{\vh_{y,a,g,t}}{\gi_{g}} \quad \forall y \in Y, a\in A, g\in G, t\in T\]

Urbs

Uses generic process equations.

GENESYS-2

Currently not modelled with this framework.

CHP units: backpressure

frameworks/archive/images/balmorel_chpbp.png

Used in: Balmorel

Balmorel

The related equation for this technology is:

The related equations for this technology is:

  1. Fuel usage
\[ \begin{align}\begin{aligned}& {\vu_{y,a,g,t}} = \frac{\vg_{y,a,g,t} + \gV_g \cdot \vh_{y,a,g,t}}{\gi_{g}}\\& \forall y \in Y, a\in A, g\in G, t\in T\end{aligned}\end{align} \]
  1. Limited by Cb-line:
\[\vg_{y,a,g,t} = \vh_{y,a,g,t} \cdot \gB_g \quad \forall y \in Y, a\in A, g\in G, t\in T\]

Urbs

Not modeled in urbs.

GENESYS-2

Currently not modelled with this framework.

CHP units: extraction

frameworks/archive/images/balmorel_chpext.png

Used in: Balmorel

Balmorel

The related equations for this technology is:

  1. Fuel usage
\[ \begin{align}\begin{aligned}& {\vu_{y,a,g,t}} = \frac{\vg_{y,a,g,t} + \gV_g \cdot \vh_{y,a,g,t}}{\gi_{g}}\\& \forall y \in Y, a\in A, g\in G, t\in T\end{aligned}\end{align} \]
  1. Limited by Cb-line:
\[\vg_{y,a,g,t} \geq \vh_{y,a,g,t} \cdot \gB_g \quad \forall y \in Y, a\in A, g\in G, t\in T\]
  1. Limited by Cv-line:
\[\vg_{y,a,g,t} \leq \kk_{y,a,g} + v^{capa}_{y,a,g} - \vh_{y,a,g,t} \cdot \gV_g \quad \forall y \in Y, a\in A, g\in G, t\in T\]

Urbs

Not modeled in urbs.

GENESYS-2

Currently not modelled with this framework.

Storages

frameworks/archive/images/balmorel_sto.png

Used in: Balmorel

frameworks/archive/images/storage_unit_genesys2.png

Used in: GENESYS_2

Balmorel

The necessary equation for this technology is:

\[ \begin{align}\begin{aligned}& \vsv_{y,a,g,t+1} = \vsv_{y,a,g,t}\cdot \gt_{g} + \vsl_{y,a,g,t}\cdot \gi_{g} - \vg_{y,a,g,t} \cdot \go_{g}\\& \forall y \in Y, a\in A, g\in G, t\in T\end{aligned}\end{align} \]

urbs

\[\begin{split}&\vsv_{t,y,r,s,c}=\vsv_{(t-1),y,r,s,c}\cdot (1-\gL_{y,r,s,c})^{\Delta t}+\gi_{y,r,s,c}\cdot \vsl_{t,y,r,s,c}- \frac{\vsu_{t,y,r,s,c}}{\go_{y,r,s,c}}\\ &\forall t\in T_m,~y\in Y,~r\in R,~s\in S,~c\in C\end{split}\]

GENeSYS-MOD

Do I understand it correct with Balmorel that vsv refers to the amount of energy in a storage at a given time? Then I will use it this way here as well.

\[\begin{split}&\vsv_{g,r,t,y} = \vsv_{g,r,t-1,y} + \vsl_{g,r,t-1,y}\cdot \gamma^{in}_{g,y} - \frac{\vsu_{g,r,t-1,y}}{\gamma^{in}_{g,y}} \quad \forall g \in G, r \in R, t \in T, y \in Y\\\end{split}\]

oemof.tabular

\[\begin{split}& \epsilon^{con}_{y,r,g,t} = \epsilon^{con}_{y,r,g,t-1} \cdot (1 - \gL_{r,g}) - \frac{\epsilon^{out}_{y,r,g,t}}{\gamma^{out}_{r,g}} + \epsilon^{in}_{y,r,g,t} \cdot \gamma^{in}_{y,r,g} \\ & {\epsilon^{con}_{y,r,g,t_0} = \epsilon^{con}_{y,r,g,t_{\infty}}} \\ & t_0, t_{\infty} \in T \\ & \forall y \in Y, r\in R, g\in G, t\in T\setminus\{t_0\}\end{split}\]

GENESYS-2

Generally, storages in GENESYS-2 always require a storage unit connected to a charger/discharger unit. Charger and discharger can either be one unit called ‘Bicharger’ or can be modelled seperately with diffrent efficiencies.

initial storage level
\[\begin{split}{v^{sto,vol}_{y,r,g,t=0}} = 0 \quad \forall y \in Y, r\in R, g\in G, t\in T \\\end{split}\]
charge/discharge processes
\[\begin{split}{v^{gen,load}_{y,r,g,t}} = v^{sto,charge}_{y,r,g,t} \cdot \gamma^{in,gen}_{y,r,g,t} \cdot \Delta t \quad \forall y \in Y, r\in R, g\in G, t\in T \\ {v^{gen,unload}_{y,r,g,t}} = v^{sto,discharge}_{y,r,g,t} \cdot \gamma^{out,gen}_{y,r,g,t} \cdot \Delta t \quad \forall y \in Y, r\in R, g\in G, t\in T \\ Condition: v^{gen,load}_{y,r,g,t} >= 0 + v^{gen,unload}_{y,r,g,t} > 0 = 1\end{split}\]
storage level
\[\begin{split}{v^{sto,vol}_{y,r,g,t}} = v^{sto,vol}_{y,r,g,t-1} + v^{gen,load}_{y,r,g,t} - v^{gen,unload}_{y,r,g,t} \cdot (1+\gamma^{total,gen,sto}_{y,r,g,t}) \quad \forall y \in Y, r\in R, g\in G, t\in T \\\end{split}\]
total losses
\[\begin{split}{\gamma^{loss,con}_{y,r,g,t}} = v^{sto,charge}_{y,r,g,t} \cdot (1 - \gamma^{in,gen}_{y,r,g,t}) + v^{sto,discharge}_{y,r,g,t} \cdot (1 - \gamma^{out,gen}_{y,r,g,t}) + v^{gen,load}_{y,r,g,t} \cdot (1 - \gamma^{total,gen,sto}_{y,r,g,t}) \quad \forall y \in Y, r\in R, g\in G, t\in T \\\end{split}\]

Generation

oemof.tabular

Dispatchable
\[\begin{split}& {0 <= \vg_{y,r,g,t} <= \kk_{r,g}} \\ & \yrgt\end{split}\]
Conversion
\[\begin{split}& {\vu_{y,r,g,t}} = \frac{1}{\go_{r,g}}{\vg_{y,r,g,t}} \\ & \yrgt\end{split}\]
Volatile
\[\begin{split}& {\vg_{y,r,g,t} = \kk_{r,g} \cdot \gamma^{capa}_{y,r,g,t}} \\ & \yrgt\end{split}\]

Consumption

oemof.tabular

Load
\[\begin{split}& {E^{gen}_{y,r,g,t} = E^{capa}_{y,r,g,t}} \\ & \yrgt\end{split}\]

Bus

oemof.tabular

Bus
\[\begin{split}& {v^{in}_{y,r,g,t} = \vg_{y,r,g,t}} \\ & \yrgt\end{split}\]

Grid

oemof.tabular

urbs

\[\begin{split}& v^{\text{trans,out}}_{t,y,r_{in},r_{out},x,c}= v^{\text{trans,in}}_{t,y,r_{in},r_{out},x,c}\cdot \gamma^{\text{trans}}_{y,r_{in},r_{out},x,c}\\ &\forall t\in T_m,~y\in Y,~r_{in}\in R,~r_{out}\in R,~x\in X,~c\in C\end{split}\]

GENESYS-2

\[\begin{split}& v^{\text{trans,out}}_{t,y,r_{in},r_{out},x,c}= v^{\text{trans,in}}_{t,y,r_{in},r_{out},x,c}\cdot \gamma^{\text{trans}}_{y,r_{in},r_{out},x,c}\\ &\forall t\in T_m,~y\in Y,~r_{in}\in R,~r_{out}\in R,~x\in X,~c\in C\end{split}\]

Generic processes

urbs

Every generic process is described by the following equations:

\[\begin{split}&v^{\text{in}}_{t,y,r,g,c}=\gi_{y,g,c} \cdot \tau_{t,y,r,g} \\ &\vg_{t,y,r,g,c}=\go_{y,g,c} \cdot \tau_{t,y,r,g} \\ &\tau_{t,y,r,g}\leq \Delta t \cdot \kk_{y,r,g} \\ &\forall t \in T_m, y \in Y, ~r \in R, ~g \in G, ~c \in C\end{split}\]

Processes can also have a maximum change in throughput in a single time step, which is modeled by:

\[\begin{split}&\tau_{t-1,y,r,g} - \kk_{y,r,g} \cdot \gamma^{\Delta\tau^{max}}_{y,r,g} \cdot \Delta t \leq \tau_{t,y,r,g} \\ &\tau_{t-1,y,r,g} + \kk_{y,r,g} \cdot \gamma^{\Delta\tau^{max}}_{y,r,g} \cdot \Delta t \geq \tau_{t,y,r,g} \\ &\forall t \in T_m, y \in Y, ~r \in R, ~g \in G, ~c \in C\end{split}\]

Some processes also have a minimum throughput ratio (minimum throughput/maximum throughput) for operation and a different efficieny when operating with less than maximum throughput:

\[\begin{split}&\tau_{t,y,r,g} \geq \kk_{y,r,g} \cdot \gamma^{\text{min}}_{y,r,g} \cdot \Delta t \\ &v^{\text{in}}_{t,y,r,g,c}=\Delta t \cdot \kk_{y,r,g} \cdot \frac{\gamma^{\text{min}}_{y,r,g} \cdot (\gamma^{\text{in,gen,min}}_{y,g,c}-\gi_{y,g,c})}{1-\gamma^{\text{min}}_{y,r,g}} + \tau_{t,y,r,g} \cdot \frac{\gi_{y,g,c}-\gamma^{\text{min}}_{y,r,g} \cdot \gamma^{\text{in,gen,min}}_{y,g,c}}{1-\gamma^{\text{min}}_{y,r,g}}\\ &\vg_{t,y,r,g,c}=\Delta t \cdot \kk_{y,r,g} \cdot \frac{\gamma^{\text{min}}_{y,r,g} \cdot (\gamma^{\text{out,gen,min}}_{y,g,c}-\go_{y,g,c})}{1-\gamma^{\text{min}}_{y,r,g}} + \tau_{t,y,r,g} \cdot \frac{\go_{y,g,c}-\gamma^{\text{min}}_{y,r,g} \cdot \gamma^{\text{out,gen,min}}_{y,g,c}}{1-\gamma^{\text{min}}_{y,r,g}}\\ &\forall t \in T_m, y \in Y, ~r \in R, ~g \in G, ~c \in C\end{split}\]

GENeSYS-MOD

frameworks/archive/images/genesysmod_generic.png

This equation counts for all processes, no matter how many input or output fuels are required.

\[\begin{split}&\frac{{v^{gen}_{f,g,m,r,t,y}}}{\gamma^{out_gen}_{f,g,m,r,y}} = \sum_{f\in F} v^{fuse}_{f,g,m,r,t,y} \cdot \gamma^{in_gen}_{f,g,m,r,y} \quad \forall f \in F, g \in G, m \in M, r \in R, t \in T, y \in Y\\\end{split}\]

intertemporal

How are costs handled in intertemporal models (investments and also other types of costs

GENESYS-2

\[\pi^{intertemporal,year1,year2,yearX} = \pi^{anuity,capa,gen,year1} + \pi^{anuity,capa,gen,year2} + \pi^{anuity,capa,gen,yearX}\]

Balmorel

On this page, the most important equations like the objective function and constraints are stated.

Objective function

I have added input and output to the OM costs as we have it divided.

Our fuel use is in MWh and we use the fuel price in Euro/Mwh (Open_MODEX terminology: euro/EJ) - this should be made clear here.

\[ \begin{align}\begin{aligned}{{\pi}} & = \sum_{y\in Y} ( {\color{red}{{IDISCOUNTFACTOR}}_{y}} \cdot {\color{red}{{IWEIGHTY}}_{y}} \cdot (\\& \sum_{a\in A, g\in G, f\in F(g)} ( \pi^{fuel}_{y, a, f} \cdot \sum_{t\in T} ( v^{fuse}_{y,a,g,t} ) )\\& + \sum_{a\in A, g\in G^{elec} } ( \pi^{omv,gen,out}_{a,g} \cdot \sum_{t\in T} ( v^{gen}_{y,a,g,t} ) )\\& + \sum_{a\in A, g\in G } ( \pi^{omv,gen,in}_{a, g} \cdot \sum_{t\in T} ( v^{fuse}_{y,a,g,t} ) )\\& + \sum_{a\in A, g\in G} ( ( {\color{red}{{VGKNACCUMNET}}_{y, a, g}} + \kappa^{capa}_{y,a,g} ) \cdot \pi^{omf,capa}_{a,g} )\\& + \sum_{r\in R, r'\in R } ( \sum_{t\in T} ( ( v^{trans}_{y,r,r',t} \cdot \pi^{omv,trans}_{r,r'} ) ) )\\& + \sum_{a\in A, g\in G} ( v^{inv,capa}_{y,a,g} \cdot \pi^{inv,capa}_{a, g} \cdot \sum_{c \in C(a)}{{\color{red}{ANNUITYCG}}}_{c, g} \cdot \sum_{y' | ( {{y'}} = {{y}} ) }{{\color{red}{IYHASANNUITYG}}}_{y, y', g} )\\& + \sum_{y'\in Y, a\in A, g\in G | {{y'}} < {{y}} } ( v^{inv,capa}_{y',a,g} \cdot \pi^{inv,capa}_{a, g} \cdot \sum_{c \in C(a)}{{\color{red}{ANNUITYCG}}}_{c, g} \cdot {{\color{red}{IYHASANNUITYG}}}_{y', y, g} )\\& + \sum_{r \in R, r'\in R} ( \frac{1}{2} \cdot v^{inv,xcapa}_{y,r,r'} \cdot \pi^{inv,xcapa}_{y,r,r'} \cdot ( \frac{1}{2} \cdot ( \sum_{c \in C(r)}{{\color{red}{ANNUITYCX}}}_{c} + \sum_{c \in C(r')}{{\color{red}{ANNUITYCX}}}_{c} ) ) \cdot \sum_{y' | ( {{y'}} = {{y}} ) }{{\color{red}{IYHASANNUITYX}}}_{y', y} )\\& + \sum_{y'\in Y, r \in R, r'\in R | {{y'}} < {{y}} } ( \frac{1}{2} \cdot v^{inv,xcapa}_{y',r,r'} \cdot \pi^{inv,xcapa}_{y',r,r'} \cdot ( \frac{1}{2} \cdot ( \sum_{c \in C(r)}{{\color{red}{ANNUITYCX}}}_{c} + \sum_{c \in C(r')}{{\color{red}{ANNUITYCX}}}_{c} ) ) \cdot {{\color{red}{IYHASANNUITYX}}}_{y', y} )\\& + \sum_{c\in C} ( \sum_{a\in A(c), g \in G} ( \sum_{t\in T} ( \frac{3.6}{1000} \cdot \psi^{emi}_{g,CO2} \cdot v^{fuse}_{y,a,g,t} ) \cdot \pi^{emi}_{y,c,CO2} ) )\\& + \sum_{c\in C} ( \sum_{a\in A(c), g \in G} ( \sum_{t\in T} ( \frac{3.6}{1000} \cdot \psi^{emi}_{g,SO2} \cdot v^{fuse}_{y,a,g,t} ) \cdot \pi^{emi}_{y,c,SO2} ) )\\& + \sum_{c\in C} ( \sum_{a\in A(c), g \in G} ( \sum_{t\in T} ( \frac{3.6}{1000} \cdot \psi^{emi}_{g,NOx} \cdot v^{fuse}_{y,a,g,t} ) \cdot \pi^{emi}_{y,c,NOx} ) )\\& ) )\end{aligned}\end{align} \]

Marked in red: things that are not in the terminology. All of these are explained in the following table:

Name Domains Type Description
IDISCOUNTFACTOR y Parameter Discount factor for weighting future years relative to the first year in Y (~)
IWEIGHTY y Parameter Relative weight of the individual years in Y
ANNUITYCG c, g Parameter Transforms investment in technologies into annual payment (fraction)
ANNUITYCX c Parameter Transforms investment in transmission lines into annual payment (fraction)
IYHASANNUITYG y, y’, g Parameter Binary parameter to establish whether the annuity of an investment of a technology made in Y (first index) should be paid in the time period Y (second index) (0,1)
IYHASANNUITYX y, y’ Parameter Binary parameter to establish whether the annuity of an investment of a transmission line investment made in Y (first index) should be paid in the time period Y (second index) (0,1)
VGKNACCUMNET y, a, g Variable Accumulated new investments at end of (ULTimo) previous (i.e., start of current) year (MW)

Not relevant for Open_MODEX scenario runs

Heat

\[+ \sum_{a\in A, g\in G^{heat} } ( \pi^{omv,gen,out}_{a,g} \cdot \sum_{t\in T} ( {\color{blue}\gamma^{CV}_g} \cdot v^{gen,heat}_{y,a,g,t} ) )\]

Hydro price profiles

\[+ \sum_{a\in A, g\in G^{hyrs}} ( \sum_{t\in T} ( {{HYPPROFILS}}_{a, IS3} \cdot v^{gen,elec}_{y,a,g,t} ) )\]

Constraints

QEEQ: Electricity generation equals demand (MW)

\[ \begin{align}\begin{aligned}&\sum_{a\in A(r)} \sum_{g\in G^{elec}} {v^{gen}_{y,a,g,t}} + \sum_{r\in R} {v^{trans}_{y,r,r',t}} (1-{\gamma^{trans}_{r,r'}})\\& - \sum_{a\in A(r)} \sum_{g\in G^{storage}} {\color{red}{{VESTOLOADT}}_{y,a,g,t}} - \sum_{a\in A(r)} \sum_{g\in G^{storage}} {\color{red}{{VESTOLOADTS}}_{y,a,g,t}}\\&= {\color{red}{{IX3FX\_T}}_{y,r,t}} +\sum_{r\in R} {v^{trans}_{y,r,r',t}}\\&+ \frac{\sum_{\color{red}{DEUSER}}\frac{{{\color{red}{DE}}_{y,r,\color{red}{DEUSER}}} \cdot {\epsilon^{gen}_{r,\color{red}{DEUSER},t}} }{{\color{red}{{IDE\_SUMST}}_{r,DEUSER}}}[\color{red}{IDE\_SUMST}_{r,\color{red}{DEUSER}>0}]}{(1-{\color{red}{{DISLOSS\_E}}_{r}})},\\&\forall y \in Y, r\in R, t\in T\end{aligned}\end{align} \]

Marked in red: things that are not in the terminology. All of these are explained in the following table:

Name Domains Type Description
DEUSER DEUSER Set Electricity demand user groups
DE y,r,DEUSER Parameter Annual electricity consumption (MWh)
IDE_SUMST r,DEUSER Parameter Annual amount of nominal electricity demand (MWh)
DISLOSS_E r Parameter Loss in electricity distribution (fraction)
IX3FX_T y,r,t Parameter Fixed export to third countries for each time segment (MW)
VESTOLOADT y,a,g,t Variable (positive) Intra-seasonal electricity storage loading (MW)
VESTOLOADTS y,a,g,t Variable (positive) Inter-seasonal electricity storage loading (MW)

Not relevant for Open_MODEX scenario runs

Heat (left side of equation)

\[- \sum_{a\in A(r)} {\sum_{g\in G^{heat}} v^{gen}_{y,a,g,t}}\]

QGFEQ: Calculate fuel consumption, existing units (MW)

\[ \begin{align}\begin{aligned}&{v^{fuse}_{y,a,g,t}} = ( ( \frac{v^{gen}_{y,a,g,t}}{\gamma^{total,gen}_{g}[1$(NOT {\color{red}{GEFFRATE}}_{a,g})+\color{red}{GEFFRATE}_{a,g}]})$[g\in G^{elec}\setminus \color{red}{GSET}]\\&+ (\frac{{\color{blue}\gamma^{CV}_g}\cdot v^{gen,heat}_{y,a,g,t}}{\gamma^{total,gen}_{g}[1$(NOT \color{red}{GEFFRATE}_{a,g})+\color{red}{GEFFRATE}_{a,g}]})$[g\in G^{heat}] )$[NOT \color{red}{IGBYPASS}_g]\\& + ( {\color{blue}\gamma^{CB}_g} \frac{(\frac{ \color{red}{GDBYPASSC}_{g} \cdot v^{gen,heat}_{y,a,g,t} + v^{gen}_{y,a,g,t}}{{\color{blue}\gamma^{CB}_g}+\color{red}{GDBYPASSC}_{g}})}{{\gamma^{total,gen}_{g}}[1$(NOT \color{red}{GEFFRATE}_{a,g})+\color{red}{GEFFRATE}_{a,g}]}\\& + {\color{blue}\gamma^{CV}_g}\frac{(\frac{ \color{red}{GDBYPASSC}_{g} \cdot v^{gen,heat}_{y,a,g,t} + v^{gen}_{y,a,g,t}}{{\color{blue}\gamma^{CB}_g}+\color{red}{GDBYPASSC}_{g}})}{{\gamma^{total,gen}_{g}}[1$(NOT \color{red}{GEFFRATE}_{a,g})+\color{red}{GEFFRATE}_{a,g}]} )$(\color{red}{IGBYPASS}_g)\\& \forall y \in Y, r\in R, g\in G, t\in T\end{aligned}\end{align} \]

Marked in red: things that are not in the terminology. All of these are explained in the following table:

Name Domains Type Description
GSET g Set Electric heaters, heat pumps,electrolysis plants
gamma^{total,gen}_{g} g Parameter Fuel efficiency (GDATA(G,’GDFE’))
GDBYPASSC g Parameter ramp-down limit (% of capacity/h) (GDATA(G,’GDBYPASSC’) )
GEFFRATE a,g Parameter Fuel efficiency rating (strictly positive, typically close to 1; default/1/, use eps for 0)
IGBYPASS g Set Technologies that may apply turbine bypass mode (subject to option bypass)
color{blue}gamma^{CV} g Parameter Cb-value for CHP (GDATA(G,’GDCB’))
color{blue}gamma^{CV} g Parameter Cv-value for CHP-Ext (GDATA(G,’GDCV’))

oemof.tabular

Objective function

The objective function is constructed initializing the model and depends on the objects used to define the energy system. For the most part the objective function is determined by which classes were used to represent flows on edges in an energy system graph representation. The following terms representing energy system relevant concepts found in the modex scenarios can be implemented and be part of an objective function. This description adhering to the modex terminology is not considered to be complete or exhaustive as of yet.

\[ \begin{align}\begin{aligned}\pi^{obj} =\\& \sum_{r\in R, g\in G, f\in F(g)} ( \pi^{fuel}_{r, f} \cdot \sum_{t\in T} ( v^{fuse}_{r, t, g} ) )\\& + \sum_{r\in R, g\in G} ( \pi^{omf, gen}_{g, r} \cdot \sum_{t\in T} ( v^{gen}_{r, t, g} ) )\\& + \sum_{r\in R, rr\in RR, t\in T } ( \pi^{omv, trans}_{r, rr} \cdot \sum_{t\in T} ( v^{trans}_{r,rr,t} ) )\\& + \sum_{r\in R, f\in F(g)} ( \pi^{emi}_{f, r} \cdot \sum_{t\in T} ( v^{fuse}_{r, t, g} \cdot \psi^{emi}_{g, CO2} ) )\\& + \sum_{r\in R, g\in G} ( v^{inv, capa}_{r, g} \cdot ( \pi^{inv, capa}_{r, g} + \pi^{omf, capa}_{r, g} ) )\end{aligned}\end{align} \]

Constraints

Storages

The storage balance is given by:

\[\begin{split}\epsilon(t) = \\ \epsilon(t-1) \cdot (1 - \gamma^{frac}(t))^{ \Delta t(t)/(t_u)} \\ - \gamma^{fix}(t)\cdot (\epsilon_{exist} + \epsilon_{invest}) \cdot {\Delta t(t) /(t_u)}\\ - \gamma^{abs}(t) \cdot {\Delta t(t) /(t_u)}\\ - \frac{\epsilon^{out}(t)}{\gamma_{out}(t)} \cdot \Delta t(t)\\ + \epsilon_{in}(t) \cdot \gamma_{in}(t) \cdot \Delta t(t)\end{split}\]
symbol explanation
\(\epsilon(t)\) energy currently stored
\(\epsilon_{nom}\) nominal capacity of the energy storage
\(c(-1)\) state before initial time step
\(c_{min}(t)\) minimum allowed storage
\(c_{max}(t)\) maximum allowed storage
\(\gamma^{frac}(t)\) fraction of lost energy as share of \(E(t)\) per time unit
\(\gamma^{fix}(t)\) fixed loss of energy relative to \(E_{nom}\) per time unit
\(\gamma^{abs}(t)\) absolute fixed loss of energy per time unit
\(\dot{E}_i(t)\) energy flowing in
\(\dot{E}_o(t)\) energy flowing out
\(\gamma_in(t)\) conversion factor(i.e. efficiency) when storing energy
\(\gamma_out(t)\) conversion factor when (i.e. efficiency) taking stored energy
\(\Delta t(t)\) duration of time step
\(t_u\) time unit of \(\gamma^{frac}, \) and timeincrement \(\tau(t)\)

Maximum invement is bounded by lower and upper bound set:

\[\epsilon_{invest, min} \le E_{invest} \le E_{invest, max}\]

The following constraints are created depending on the attributes

If an initialstorage level is given:

\[\epsilon(-1) \le \epsilon_{invest} + \epsilon_{exist}\]

if not:

\[\epsilon(-1) = (\epsilon_{invest} + \epsilon_{exist}) \cdot c(-1)\]

Possible coupling of first and last timestep

\[\epsilon(-1) = \epsilon(t_{last})\]

Possible to set C-rate of input and storage content by connecting the invest variables of the storage and the input flow:

\[\epsilon_{in,invest} + \epsilon_{in,exist} = (\epsilon_{invest} + \epsilon_{exist}) \cdot r_{cap,in}\]

and/or for generation of storage

\[\epsilon_{out,invest} + \epsilon_{out,exist} = (\epsilon_{invest} + \epsilon_{exist}) \cdot r_{cap,out}\]

If wanted connect the invest variables of the input and the output:

\[\epsilon_{in,invest} + \epsilon_{in,exist} = (\epsilon_{out,invest} + \epsilon_{out,exist}) \cdot r_{in,out}\]

Upper and lower storage level is given by:

\[\epsilon(t) \leq (\epsilon_{exist} + \epsilon_{invest}) \cdot c_{max}(t)\]
\[\epsilon(t) \geq (\epsilon_{exist} + \epsilon_{invest}) \cdot c_{min}(t)\]

CHP Extraction Turbine

\[\begin{split}v^{gen, el} \leq \kappa^{capa} \\ \kappa^{capa} \leq \overline{\kappa}^{capa}\end{split}\]
\[v^{fuse}(t) = \frac{v^{gen, el}(t) + v^{gen, th}(t) \ \cdot \beta(t)}{\gamma^{cond}(t)} \qquad \forall t \in T\]
\[v^{gen, el}(t) \geq v^{gen, th}(t) \cdot \frac{\gamma^{el}(t)}{\gamma^{th}(t)} \qquad \forall t \in T\]

where \(\gamma^{cond}\) is the electrical efficiency in full extraction mode and \(\beta\) is the power-loss index defined as:

\[\beta(t) = \frac{\gamma^{cond}(t) - \gamma^{el}(t)}{\gamma^{th}(t)} \qquad \forall t \in T\]

CHP Backpressure Turbine

Backpressure turbines are modelled based on their time dependent electrical and thermal efficiency in backpressure mode.

\[v^{fuse}(t) = \frac{v^{gen, el}(t) + v^{gen, th}(t)}{\gamma^{th}(t) + \gamma^{el}(t)} \qquad \forall t \in T\]
\[\frac{v^{gen, el}(t)}{v_{gen, th}(t)} = \frac{\gamma^{el}(t)}{\gamma^{th}(t)} \qquad \forall t \in T\]

urbs

On this page, the most important equations like the objective function and constraints are stated.

Objective function

The objective function consists of five parts:

\[\pi^\text{obj} = \pi_{\text{inv}} + \pi_{\text{fix}} + \pi_{\text{var}} + \pi_{\text{fuel}} + \pi_{\text{env}}\]

Investment costs

  • consists of investment costs for generation, transmission and storage
  • investment costs for trans and sto are calculated the same way as for gen, except sto costs are based on newly installed storage capacity and power
\[ \begin{align}\begin{aligned}\pi_{\text{inv}}= \pi_{\text{inv,gen}} + \pi_{\text{inv,trans}} + \pi_{\text{inv,sto}}\\\pi_{\text{inv,gen}} = \sum_{p \in P} {\color{red}{{INVESTFAC}}_{p}} \cdot \pi^{\text{inv, capa}}_p \cdot {\color{red}{{NEWCAPACITY}}_{p}} - \sum_{p \in P} {\color{red}{{OVRPAYFAC}}_{p}} \cdot \pi^{\text{inv, capa}}_p \cdot {\color{red}{{NEWCAPACITY}}_{p}}\end{aligned}\end{align} \]

Graphical representation and example of the calculation of total costs for an investment

frameworks/archive/images/urbs_costfac.png
frameworks/archive/images/urbs_costfac2.png

Fixed costs for operation and maintenance

  • consists of fixed costs for generation, transmission and storage
  • fixed costs for trans and sto are calculated the same way as for gen, except again sto costs are based on installed storage capacity and power
\[ \begin{align}\begin{aligned}\pi_{\text{fix}}= \pi_{\text{fix,gen}} + \pi_{\text{fix,trans}} + \pi_{\text{fix,sto}}\\\pi_{\text{fix,gen}}=\sum_{p \in P} {\color{red}{{COSTFAC}}_{p}} \cdot \pi^{\text{omf,capa}}_p \cdot \kappa^{\text{capa}}_p\end{aligned}\end{align} \]

Variable operation and maintenance costs

  • consists of fixed costs for generation, transmission and storage
  • fixed costs for trans and sto are calculated the same way as for gen, except trans costs are only based on transmission input and sto costs are based on energy content, inflow and outflow
\[ \begin{align}\begin{aligned}\pi_{\text{var}}= \pi_{\text{var,gen}} + \pi_{\text{var,trans}} + \pi_{\text{var,sto}}\\\begin{split}\pi_{\text{var,gen}}=\sum_{t \in T_m\\ p \in P} \pi^{\text{omv,gen}}_{p} \cdot {\color{red}{Weight}} \cdot {\color{red}{{COSTFAC}}_{p}} \cdot \tau_{t,p}\end{split}\end{aligned}\end{align} \]

Fuel costs

\[\begin{split}\pi_{\text{fuel}}=\sum_{t \in T_m\\ f \in F} \pi^{\text{fuel}}_{f} \cdot {\color{red}{Weight}} \cdot {\color{red}{{COSTFAC}}_{f}} \cdot v^{\text{fuse}}_{t,f}\end{split}\]

Environment costs like costs for CO_2 emissions

\[\begin{split}\pi_{\text{env}}= \sum_{t \in T_m\\ e \in E} \pi^{\text{emi}}_{e} \cdot {\color{red}{Weight}} \cdot {\color{red}{{COSTFAC}}_{e}} \cdot -{\color{red}{{CB(e,t)}}}\end{split}\]

Marked in red: things that are not in the terminology. All of these are explained in the following table:

Name Domains Type Description
P
Set Tuple including all sets describing processes (year, site, process)
F, E
Set Tuples inluding all sets describing commodities (year, site, com, com type), where e is the subset of stock and f the subset of environmental commodities
INVESTFAC p Parameter Scales the investment costs taking into account the depreciation duration, interest rate and discount rate
OVRPAYFAC p Parameter Similar to INVESTFAC but calculates the investment cost payments that fall beyond the optimization period, thus should not be considered
NEWCAPACITY p Variable Amount of new capacity of a technology
COSTFAC p, e or f Parameter Includes discount factor and relative weight of a year for intertemporal model, for single year equals one
Weight
Parameter Scales the costs to a full year
CB(e,t)
Function Balance equation returning the amount of environmental commodity created

Constraints

Process expansion constraints

The unit expansion constraints are independent of the modeled time. In case of the minimal model the are restricted to two constraints only limiting the allowed capacity expansion for each process. The total capacity of a given process is simply given by:

\[\begin{split}&\forall y \in Y, \forall g \in G:\\ &\kappa_{y,g}=K_{y,g} + \widehat{\kappa}_{y,g},\end{split}\]

where \(K_{y,g}\) is the already installed capacity of process (generator) \(g\) in year y.

Process capacity limit rule

The capacity pf each process \(g\) is limited by a maximal and minimal capacity, \(\overline{K}_g\) and \(\underline{K}_g\), respectively, which are both given to the model as parameters:

\[\begin{split}&\forall y \in Y, \forall g \in G:\\ &\underline{K}_{y,g}\leq\kappa_{y,g}\leq\overline{K}_{y,g}.\end{split}\]

All further constraints are time dependent and are determinants of the unit commitment, i.e. the time series of operation of all processes and commodity flows.

Commodity dispatch constraints

In this part the rules governing the commodity flow timeseries are shown.

Vertex rule (“Kirchhoffs current law”)

This rule is the central rule for the commodity flows and states that all commodity flows, (except for those of environmental commodities) have to be balanced in each time step. As a helper function the already mentioned commodity balance is calculated in the following way:

\[\begin{split}&\forall y \in Y, \forall d \in D,~t\in T_m:\\\\ &\text{CB}(y,d,t)= \sum_{(d,g)\in D^{\mathrm{out}}_{g}}\epsilon^{\text{in}}_{y,d,g,t}- \sum_{(d,g)\in D^{\mathrm{in}}_g}\epsilon^{\text{out}}_{y,d,g,t}.\end{split}\]

Here, the tuple sets \(D^{\mathrm{in,out}}_g\) represent all input and output commodities of process \(g\), respectively. The commodity balance thus simply calculates how much more of commodity \(d\) is emitted by than added to the system via process \(g\) in timestep \(t\). Using this term the vertex rule for the various commodity types can now be written in the following way:

\[\forall y \in Y, \forall d \in D_{\text{st}},~t \in T_m:\; \rho_{y,d,t} \geq \text{CB}(y,d,t),\]

where \(D_{\text{st}}\) is the set of stock commodities and:

\[\forall y \in Y, \forall d \in D_{\text{dem}},~ t \in T_m:\; -E_{y,d,t} \geq \text{CB}(y,d,t),\]

where \(D_{\text{dem}}\) is the set of demand commodities and \(E_{y,d,t}\) the corresponding demand for commodity \(d\) at time \(t\) at year \(y\). These two rules thus state that all stock commodities that are consumed at any time in any process must be taken from the stock and that all demands have to be fulfilled at each time step.

Stock commodity limitations

There are two rule that govern the retrieval of stock commodities from stock: The total stock and the stock per hour rule. The former limits the total amount of stock commodity that can be retrieved annually and the latter limits the same quantity per timestep. the two rules take the following form:

\[\begin{split}&\forall y \in Y, \forall d \in D_{\text{st}}:\\ &w \sum_{t\in T_{m}}\rho_{y,d,t}\leq \Lambda_{y,d}\\\\ &\forall d \in D_{\text{st}},~t\in T_m:\\ &\rho_{y,d,t}\leq \lambda_{y,d},\end{split}\]

where \(\Lambda_{y,d}\) and \(\lambda_{y,d}\) are the totally allowed annual and hourly retrieval of commodity \(d\) from the stock, respectively, in year \(y\).

Environmental commodity limitations

Similar to stock commodities, environmental commodities can also be limited per hour or per year. Both properties are assured by the following two rules:

\[\begin{split}&\forall y \in Y, \forall d \in D_{\text{env}}:\\ &-w \sum_{t\in T_{m}}\text{CB}(y,d,t)\leq \Lambda^\text{env}_{y,d}\\\\ &\forall y \in Y, \forall d \in D_{\text{env}},~t\in T_m:\\ & -\text{CB}(y,d,t)\leq \lambda^\text{env}_{y,d}\,\end{split}\]

where \(\Lambda^\text{env}_{y,d}\) and \(\lambda^\text{env}_{y,d}\) are the totally allowed annual and hourly emissions of environmental commodity \(d\) to the atmosphere, respectively, in year \(y\).

Process dispatch constraints

So far, apart from the commodity balance function, the interaction between processes and commodities have not been discussed. It is perhaps in order to start with the general idea behind the modeling of the process operation. In urbs all processes are mimo-processes, i.e., in general they in take in multiple commodities as inputs and give out multiple commodities as outputs. The respective ratios between the respective commodity flows remain normally fixed. The operational state of the process is then captured in just one variable, the process throughput \(\tau_{gt}\) and is is linked to the commodity flows via the following two rules:

\[\begin{split}&\forall y \in Y, \forall g\in G,~d\in D,~t \in T_m:\\ &\epsilon^{\text{in}}_{y,g,d,t}=r^{\text{in}}_{y,g,d}\tau_{y,g,t}\\ &\epsilon^{\text{out}}_{y,g,d,t}=r^{\text{out}}_{y,g,d}\tau_{y,g,t},\end{split}\]

where \(r^{\text{in, out}}_{y,g,d}\) are the constant factors linking the commodity flow to the operational state. The efficiency \(\eta\) of the process \(g\) for the conversion of commodity \(d_1\) into commodity \(d_2\) is then simply given by:

\[\eta=\frac{r^{\text{out}}_{y,g,d_2}}{r^{\text{in}}_{y,g,d_1}}.\]

Basic process throughput rules

The throughput \(\tau_{gt}\) of a process is limited by its installed capacity and the specified minimal operational state. Furthermore, the switching speed of a process can be limited:

\[\begin{split}&\forall y \in Y, \forall g\in G,~t\in T_m:\\ &\tau_{y,g,t}\leq \kappa_{y,g}\\ &\tau_{y,g,t}\geq \underline{P}_{y,g}\kappa_{y,g}\\ &|\tau_{y,g,t}-\tau_{y,g,(t-1)}|\leq \Delta t\overline{PG}_{y,g}\kappa_{y,g},\end{split}\]

where \(\underline{P}_{y,g}\) is the normalized, minimal operational state of the process and \(\overline{PG}_{y,g}\) the normalized, maximal gradient of the operational state in full capacity per timestep.

Intermittent supply rule

If the input commodity is of type ‘SupIm’, which means that it represents an operational state rather than a proper material flow, the operational state of the process is governed by this alone. This feature is typically used for renewable energies but can be used whenever a certain operation time series of a given process is desired

\[\begin{split}&\forall y \in Y, \forall g\in G,~d\in D_{\text{sup}},~t\in T_m:\\ &\epsilon^{\text{in}}_{y,g,d,t}=\gamma^{capa}_{y,g,t}\kappa_{y,g}.\end{split}\]

Here, \(\gamma^{capa}_{y,g,t}\) is the time series that governs the exact operation of process \(g\), leaving only its capacity \(\kappa_{y,g}\) as a free variable.

Part load behavior

Many processes show a non-trivial part-load behavior. In particular, often a nonlinear reaction of the efficiency on the operational state is given. Although urbs itself is a linear program this can with some caveats be captured in many cases. The reason for this is, that the efficiency of a process is itself not modeled but only the ratio between input and output multipliers. It is thus possible to use purely linear functions to get a nonlinear behavior of the efficiency of the form:

\[\eta=\frac{a+b\tau_{y,g,t}}{c+d\tau_{y,g,t}},\]

where a,b,c and d are some constants. Specifically, the input and output ratios can be set to vary linearly between their respective values at full load \(r^{\text{in,out}}_{y,g,d}\) and their values at the minimal allowed operational state \(\underline{P}_{y,g}\kappa_{y,g}\), which are given by \(\underline{r}^{\text{in,out}}_{y,g,d}\). This is achieved with the following equations:

\[\begin{split}&\forall y \in Y, \forall g\in G^{\text{partload}},~d\in D,~t\in T_m:\\\\ &\epsilon^{\text{in,out}}_{y,g,d,t}=\Delta t\cdot\left( \frac{\underline{r}^{\text{in,out}}_{g,d}-r^{\text{in,out}}_{y,g,d}} {1-\underline{P}_{y,g}}\cdot \underline{P}_g\cdot \kappa_{y,g}+ \frac{r^{\text{in,out}}_{y,g,d}- \underline{P}_g\underline{r}^{\text{in,out}}_{y,g,d}} {1-\underline{P}_{y,g}}\cdot \tau_{y,g,t}\right).\end{split}\]

A few restrictions have to be kept in mind when using this feature:

  • \(\underline{P}_{y,g}\) has to be set larger than 0 otherwise the feature will work but not have any effect.
  • Environmental output commodities have to mimic the behavior of the inputs by which they are generated. Otherwise the emissions per unit of input would change together with the efficiency, which is typically not the desired behavior.

Genesys2

On this page, the most important equations like the objective function and constraints are stated.

Objective function

\[ \begin{align}\begin{aligned}\pi^{\text{objective}} = C_{\text{real}}(\pi^{inv,capa,g},\pi^{omf,capa,g},\pi^{omv,gen,g}) + C_{\text{penalty}}(\varepsilon^{\text{deviation}})\\\pi^{\text{objective}} = \sum_{T_{interval}}^{} \sum_{regions}^{} \sum_{components}^{} \pi^{inv,capa,g} + \pi^{omf,capa,g} + \pi^{omv,gen,g} + \sum_{years}^{} \sum_{regions}^{} \pi^{penalty,unsupplied\_load} (\varepsilon^{\text{unsupplied}})^2 + \pi^{penalty,selsupplied\_quota} \varepsilon^{\text{selfsupply}}\\\pi^{\text{objective}} = \sum_{T_{interval}}^{} \sum_{regions}^{} \sum_{components}^{} ANF*[\pi^{inv,capa,g} + \pi^{inv,capa,g} \gamma^{inv,capa,g}] + \pi^{omv,gen,g} + \sum_{T_{interval}}^{} \sum_{regions}^{} \pi^{penalty,unsupplied\_load} (\varepsilon^{\text{unsupplied}})^2 + \pi^{penalty,selsupplied\_quota} \varepsilon^{\text{selfsupply}}\\\pi^{\text{objective}} = \sum_{T_{interval}}^{} \sum_{regions}^{} \sum_{components}^{} \frac{(1+i)^{n}i}{(1+i)^{n}-1}*[\pi^{inv,capa,g} + \pi^{inv,capa,g} \gamma^{inv,capa,g}] + [\pi^{fuel,f}+\pi^{emi,e}] \varepsilon^{gen,t} + \sum_{T_{interval}}^{} \sum_{regions}^{} \pi^{penalty,unsupplied\_load} (\varepsilon^{\text{unsupplied}})^2 + \pi^{penalty,selsupplied\_quota} \varepsilon^{\text{selfsupply}}\end{aligned}\end{align} \]

GENeSYS-MOD

On this page, the most important equations like the objective function and constraints are stated.

Objective function

\[ \begin{align}\begin{aligned}{{\pi}} & = \sum_{y\in Y} ({\color{red}{{IDISCOUNTFACTOR}}_{y}} \cdot {\color{red}{{IWEIGHTY}}_{y}} \cdot (\\& \sum_{c\in C, g\in G, m\in M, t\in T} ( \pi^{omv,gen}_{c, g, m, y} \cdot v^{gen}_{c, g, m, t, y} )\\& + \sum_{c\in C, g\in G} (\pi^{omf,capa}_{c, g, y} \cdot \kappa^{capa}_{c, g, y})\\& + \sum_{c\in C, g\in G} (\pi^{inv,capa}_{c, g, y} \cdot {\color{red}{{NEWCAPACITY}}_{c, g, y}})\\& + \sum_{c\in C, f\in F, g\in G, m\in M, t\in T} (\psi^{emi}_{f} \cdot \gamma^{in,gen}_{g, c, f, m, y} \cdot v^{gen}_{c, g, m, t, y} \cdot \pi^{emi}_{c, e})\\& + \sum_{c\in C, \color{red}{{s\in S}}} (\pi^{inv,capa}_{c, s, y} \cdot {\color{red}{{NEWCAPACITY}}_{c, s, y}})\\& + \sum_{f\in F, r,r'\in R, t\in T} (v^{trans}_{r, r', t, f, y} \cdot \pi^{omv,trans}_{f, r, r', y})\\& + \sum_{r,r'\in R, y\in Y} (\color{red}{{NEWTRADECAPACITY}}_{r, r', 'Electricity', y} \cdot \color{red}{TRADECAPACITYCOST}_{r, r', 'Electricity'})\\& ))\\& - (1-{\color{red}{{IDISCOUNTFACTOR}}_{y}} \cdot {\color{red}{{IWEIGHTY}}_{y}}) \cdot (\\& \sum_{c\in C, g\in G, t\in T, y\in Y|(y+\color{red}{{OPERLIFE}}_{c, g})>\color{red}{{MAXYEAR}}} (0.8 \cdot \pi^{inv,capa}_{c, g, y} \cdot {\color{red}{{NEWCAPACITY}}_{c, g, y}})\\& + \sum_{c\in C, \color{red}{{s\in S}}, t\in T, y\in Y|(y+\color{red}{{OPERLIFE}}_{c, s})>\color{red}{{MAXYEAR}}} (0.8 \cdot \pi^{inv,capa}_{c, s, y} \cdot {\color{red}{{NEWCAPACITY}}_{c, s, y}}\\& ) )\end{aligned}\end{align} \]

Marked in red: things that are not in the terminology. All of these are explained in the following table:

Name Domains Type Description
S
Set Storages are a distinct set in GENeSYS-MOD, similar to Technologies but with few restrictions
IDISCOUNTFACTOR y Parameter Discount factor for weighting future years relative to the first year in Y (~)
IWEIGHTY y Parameter Relative weight of the individual years in Y
NEWCAPACITY c, g or s, y Variable Amount of new capacity of a technology or storage in a region in a year. Similar to VGKNACCUMNET from Balmorel
NEWTRADECAPACITY r, r’, Electricity, y Variable Amount of new trade capacity for electricity between two regions
TRADECAPACITYCOST r, r’, Electricity Parameter Costs for expanding transmission capacity for electricity between two regions
OPERLIFE c, g or s Parameter Lifetime of a technology or storage in years
MAXYEAR
Scalar Last year of modelling period