Hydrogen Gas to Power

Hydrogen Gas to Power All

Dolphyn.h2_g2p_allMethod
h2_g2p_all(EP::Model, inputs::Dict, setup::Dict)

The hydrogen to power module creates decision variables, expressions, and constraints related to hydrogen generation infrastructure

The variable defined in this file named after vH2G2P covers .

Constraints on generation discharge capacity

One cannot retire more capacity than existing capacity.

\[\begin{equation*} 0 \leq y_{g, z}^{\textrm{\textrm{H,G2P,retired}} \leq y_{g, z}^{\textrm{\textrm{H,G2P,existing}} \quad \forall g \in \mathcal{G}, z \in \mathcal{Z} \end{equation*}\]

For resources where upper bound $\overline{y_{g}^{\textrm{\textrm{H,G2P}}}}$ and lower bound $\underline{y_{g}^{\textrm{\textrm{H,G2P}}}}$ of capacity is defined, then we impose constraints on minimum and maximum power capacity.

```math \begin{equation} \underline{y}{g, z}^{\textrm{\textrm{H,G2P}}} \leq y{g, z}^{\textrm{\textrm{H,G2P}} \leq \overline{y}_{g, z}^{\textrm{\textrm{H,G2P}} \quad \forall g \in \mathcal{G}, z \in \mathcal{Z} \end{equation}

Hydrogen Gas to Power Commitment

Dolphyn.h2_g2p_commitMethod
h2_g2p_commit(EP::Model, inputs::Dict, setup::Dict)

This module creates decision variables, expressions, and constraints related to various hydrogen to power technologies with unit commitment constraints (e.g. natural gas reforming etc.)

G2P Unit commitment decision variables:

This module defines the commitment state variable $n_{k,z,t}^{\textrm{H,G2P}}$ of generator cluster $k$ in zone $z$ at time $t$ $\forall k \in \mathcal{K}, z \in \mathcal{Z}, t \in \mathcal{T}$.

This module defines the number of startup decision variable $n_{k,z,t}^{\textrm{H,G2P,UP}}$ of generator cluster $k$ in zone $z$ at time $t$ $\forall k \in \mathcal{K}, z \in \mathcal{Z}, t \in \mathcal{T}$.

This module defines the number of shutdown decision variable $n_{k,z,t}^{\textrm{H,G2P,DN}}$ of generator cluster $k$ in zone $z$ at time $t$ $\forall k \in \mathcal{K}, z \in \mathcal{Z}, t \in \mathcal{T}$.

The variable defined in this file named after vH2G2PCOMMIT covers $\n_{k,z,t}^{\textrm{H,G2P}}$.

The variable defined in this file named after vH2G2PSTART covers $\n_{k,z,t}^{\textrm{H,G2P,UP}}$.

The variable defined in this file named after vH2G2PSHUT covers $\n_{k,z,t}^{\textrm{H,G2P,DN}}$.

Cost expressions:

The total cost of start-ups across g2p generators subject to unit commitment ($h \in UC$) and all time periods, t is expressed as:

\[\begin{equation*} \textrm{C}^{\textrm{H,G2P,start}} = \sum_{k \in \mathcal{UC}} \sum_{t \in \mathcal{T}} \omega_t \times \textrm{c}_{k}^{\textrm{H,G2P,start}} \times n_{k,z,t}^{\textrm{H,G2P,UP}} \end{equation*}\]

Startup and shutdown events (thermal plant cycling)

Capacitated limits on g2p unit commitment decision variables

Hydrogen to power resources subject to unit commitment ($k \in \mathcal{UC}$) adhere to the following constraints on commitment states, startup events, and shutdown events, which limit each decision to be no greater than the maximum number of discrete units installed (as per the following three constraints):

\[\begin{equation*} n_{k,z,t}^{\textrm{H,G2P}} \leq \frac{y_{k,z}^{\textrm{H,G2P}}}{\Omega_{k,z}^{\textrm{H,G2P,size}}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{aligned} n_{k,z,t}^{\textrm{H,G2P,UP}} \leq \frac{y_{k,z}^{\textrm{H,G2P}}}{\Omega_{k,z}^{\textrm{H,G2P,size}}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{aligned}\]

\[\begin{aligned} n_{k,z,t}^{\textrm{H,G2P,DN}} \leq \frac{y_{k,z}^{\textrm{H,G2P}}}{\Omega_{k,z}^{\textrm{H,G2P,size}}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{aligned}\]

where decision $n_{k,z,t}^{\textrm{H,G2P}}$ designates the commitment state of generator cluster $k$ in zone $z$ at time $t$, decision $n_{k,z,t}^{\textrm{H,G2P,UP}}$ represents number of startup decisions, decision $n_{k,z,t}^{\textrm{H,G2P,DN}}$ represents number of shutdown decisions, $y_{k,z}^{\textrm{H,G2P}}$ is the total installed capacity, and parameter $\Omega_{k,z}^{\textrm{H,G2P,size}}$ is the unit size. (See Constraints 1-3 in the code)

Hydrogen to power commitment state constraint linking start-up and shut-down decisions

Additionally, the following constarint maintains the commitment state variable across time, $n_{k,z,t}^{\textrm{H,G2P}}$, as the sum of the commitment state in the prior, $n_{k,z,t-1}^{\textrm{H,G2P}}$, period plus the number of units started in the current period, $n_{k,z,t}^{\textrm{H,G2P,UP}}$, minus the number of units shut down in the current period, $n_{k,z,t}^{\textrm{H,G2P,DN}}$:

\[\begin{aligned} n_{k,z,t}^{\textrm{H,G2P}} &= n_{k,z,t-1}^{\textrm{H,G2P}} + n_{k,z,t}^{\textrm{H,G2P,UP}} - n_{k,z,t}^{\textrm{H,G2P,DN}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T}^{interior} \\ n_{k,z,t}^{\textrm{H,G2P}} &= n_{k,z,t +\tau^{period}-1}^{\textrm{H,G2P}} + n_{k,z,t}^{\textrm{H,G2P,UP}} - n_{k,z,t}^{\textrm{H,G2P,DN}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T}^{start} \end{aligned}\]

(See Constraint 4 in the code)

Like other time-coupling constraints, this constraint wraps around to link the commitment state in the first time step of the year (or each representative period), $t \in \mathcal{T}^{start}$, to the last time step of the year (or each representative period), $t+\tau^{period}-1$.

Ramping constraints

Thermal resources subject to unit commitment ($k \in \mathcal{UC}$) adhere to the following ramping constraints on hourly changes in power output:

\[\begin{aligned} x_{k,z,t-1}^{\textrm{H,G2P}} - x_{k,z,t}^{\textrm{H,G2P}} &\leq \kappa_{k,z}^{\textrm{H,G2P,DN}} \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times \left(n_{k,z,t}^{\textrm{H,G2P,UP}} - n_{k,z,t}^{\textrm{H,G2P,DN}}\right) \\ \qquad &- \underline{\rho_{k,z,t}^{\textrm{H,G2P}}} \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times n_{k,z,t}^{\textrm{H,G2P,DN}} \\ \qquad &+ \text{min}(\overline{\rho_{k,z,t}^{\textrm{H,G2P}}}}, \text{max}(\underline{\rho_{k,z,t}^{\textrm{H,G2P}}}, \kappa_{k,z}^{\textrm{H,G2P}})) \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times n_{k,z,t}^{\textrm{H,G2P,DN}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{aligned}\]

\[\begin{aligned} x_{k,z,t}^{\textrm{H,G2P}} - x_{k,z,t-1}^{\textrm{H,G2P}} &\leq \kappa_{k,z}^{\textrm{H,G2P,UP}} \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times \left(n_{k,z,t}^{\textrm{H,G2P,UP}} - n_{k,z,t}^{\textrm{H,G2P,DN}}\right) \\ \qquad &+ \text{min}(\overline{\rho}_{k,z,t}^{\textrm{H,G2P}}, \text{max}(\underline{\rho}_{k,z,t}^{\textrm{H,G2P}}, \kappa_{k,z}^{\textrm{H,G2P,UP}})) \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times n_{k,z,t}^{\textrm{H,G2P,DN}} \\ \qquad &- \underline{\rho}_{k,z,t}^{\textrm{H,G2P}} \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times n_{k,z,t}^{\textrm{H,G2P,DN}} \quad \forall k \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{aligned}\]

(See Constraints 5-6 in the code)

Minimum and maximum power output

If not modeling regulation and spinning reserves, hydrogen to power resources subject to unit commitment adhere to the following constraints that ensure power output does not exceed minimum and maximum feasible levels:

\[\begin{equation*} x_{k,z,t}^{\textrm{H,G2P}} \geq \underline{\rho}_{k,z,t}^{\textrm{H,G2P}} \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times n_{k,z,t}^{\textrm{H,G2P,UP}} \quad \forall y \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} x_{k,z,t}^{\textrm{H,G2P}} \geq \overline{\rho}_{k,z}^{\textrm{H,G2P}} \times \Omega_{k,z}^{\textrm{H,G2P,size}} \times n_{k,z,t}^{\textrm{H,G2P,UP}} \quad \forall y \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

(See Constraints 7-8 the code)

Minimum and maximum up and down time

Hydrogen to power resources subject to unit commitment adhere to the following constraints on the minimum time steps after start-up before a unit can shutdown again (minimum up time) and the minimum time steps after shut-down before a unit can start-up again (minimum down time):

\[\begin{equation*} n_{k,z,t}^{\textrm{H,G2P}} \geq \displaystyle \sum_{\tau = t-\tau_{k,z}^{\textrm{H,G2P,UP}}}^t n_{k,z,\tau}^{\textrm{H,G2P,UP}} \quad \forall y \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} \frac{y_{k,z}^{\textrm{H,G2P}}}{\Omega_{k,z}^{\textrm{H,G2P,size}}} - n_{k,z,t}^{\textrm{H,G2P,UP}} \geq \displaystyle \sum_{\tau = t-\tau_{k,z}^{\textrm{H,G2P,DN}}}^t n_{k,z,\tau}^{\textrm{H,G2P,DN}} \quad \forall y \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

(See Constraints 9-10 in the code)

where $\tau_{k,z}^{\textrm{H,G2P,UP}}$ and $\tau_{k,z}^{DN}$ is the minimum up or down time for units in generating cluster $k$ in zone $z$.

Like with the ramping constraints, the minimum up and down constraint time also wrap around from the start of each time period to the end of each period. It is recommended that users of DOLPHYN must use longer subperiods than the longest min up/down time if modeling UC. Otherwise, the model will report error.

Hydrogen Gas to Power Discharge

Dolphyn.h2_g2p_dischargeMethod
h2_g2p_discharge(EP::Model, inputs::Dict, setup::Dict)

This module defines the power generation decision variable $x_{k,z,t}^{\textrm{H,G2P}} \forall k \in \mathcal{K}, z\in \mathcal{Z}, t \in \mathcal{T}$, representing energy injected into the grid by hydrogen to power resource $k$ in zone $z$ at time period $t$.

The variable defined in this file named after vP covers all variables $x_{k,z,t}^{\textrm{E,THE}}, x_{r,z,t}^{\textrm{E,VRE}}, x_{s,z,t}^{\textrm{E,DIS}}$.

Cost expressions

This module additionally defines contributions to the objective function from variable costs of generation (variable O&M plus fuel cost) from all generation resources $g \in \mathcal{G}$ (thermal, renewable, storage, DR, flexible demand resources and hydro) over all time periods $t \in \mathcal{T}$:

\[\begin{equation*} \textrm{C}^{\textrm{H,G2P,o}} = \sum_{g \in \mathcal{G}} \sum_{t \in \mathcal{T}} \omega_t \times \left(\textrm{c}_{g}^{\textrm{H,VOM}} + \textrm{c}_{g}^{\textrm{H,FUEL}}\right) \times x_{g,z,t}^{\textrm{H,G2P}} \end{equation*}\]

Hydrogen Gas to Power Investment

Dolphyn.h2_g2p_investmentMethod
h2_g2p_investment(EP::Model, inputs::Dict, setup::Dict)

This function defines the expressions and constraints keeping track of total available hydrogen to power generation capacity $y_{k}^{\textrm{H,G2P}}$ as well as constraints on capacity retirements.

The total capacity of hydrogen to power generation is defined as the sum of the existing capacity plus the newly invested capacity minus any retired capacity.

\[\begin{equation*} \begin{split} y_{g, z}^{\textrm{H,G2P}} &= y_{g, z}^{\textrm{H,G2P},total} \\ & = y_{g, z}^{\textrm{H,G2P,existing}}+y_{g, z}^{\textrm{H,G2P,new}}-y_{g, z}^{\textrm{H,G2P,retired}} \end{split} \quad \forall g \in \mathcal{G}, z \in \mathcal{Z} \end{equation*}\]

Cost expressions

This module additionally defines contributions to the objective function from investment costs of generation (fixed OM plus investment costs) from all generation resources $g \in \mathcal{G}$ (thermal, renewable, storage, DR, flexible demand resources and hydro):

\[\begin{equation*} C^{\textrm{H,G2P},c} = \sum_{g \in \mathcal{G}} \sum_{z \in \mathcal{Z}} y_{g, z}^{\textrm{H,G2P,new}}\times \textrm{c}_{g}^{\textrm{E,INV}} + \sum_{g \in \mathcal{G}} y_{g, z}^{\textrm{H,G2P,total}}\times \textrm{c}_{g}^{E,FOM} \end{equation*}\]

Hydrogen Gas to Power No Commitment

Dolphyn.h2_g2p_no_commitMethod
h2_g2p_no_commit(EP::Model, inputs::Dict,setup::Dict)

This module creates decision variables, expressions, and constraints related to various hydrogen to power technologies without unit commitment constraints

Hydrogen balance expressions

Contributions to the power balance expression from each thermal resources without unit commitment $k \in \mathcal{THE} \setminus \mathcal{UC}$ are also defined as:

\[\begin{equation*} HydrogenBal_{G2P} = \sum_{k \in \mathcal{K}} x_{k,z,t}^{\textrm{H,G2P}} \quad \forall k \in \mathcal{G2P} \setminus \mathcal{UC} \end{equation*}\]

Thermal resources not subject to unit commitment $k \in \mathcal{THE} \setminus \mathcal{UC}$ adhere instead to the following ramping limits on hourly changes in power output:

\[\begin{equation*} x_{k,z,t-1}^{\textrm{H,G2P}} - x_{k,z,t}^{\textrm{H,G2P}} \leq \kappa_{k,z}^{\textrm{G2P,DN}} y_{k,z}^{\textrm{H,G2P}} \quad \forall k \in \mathcal{THE} \setminus \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} x_{k,z,t}^{\textrm{H,G2P}} - x_{k,z,t-1}^{\textrm{H,G2P}} \leq \kappa_{k,z}^{\textrm{G2P,UP}} y_{k,z}^{\textrm{H,G2P}} \quad \forall k \in \mathcal{THE} \setminus \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

(See Constraints 1-2 in the code)

Minimum and maximum power output

When not modeling regulation and reserves, hydrogen units not subject to unit commitment decisions are bound by the following limits on maximum and minimum power output:

\[\begin{equation*} x_{k,z,t}^{\textrm{H,G2P}} \geq \underline{\textrm{R}}_{k,z}^{\textrm{H,G2P}}} \times y_{k,z}^{\textrm{H,G2P}} \quad \forall k \in \mathcal{THE} \setminus \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} x_{k,z,t}^{\textrm{H,G2P}} \leq \overline{\textrm{R}}_{k,z}^{\textrm{H,G2P}}} \times y_{k,z}^{\textrm{H,G2P}} \quad \forall y \in \mathcal{THE} \setminus \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

(See Constraints 3-4 in the code)

Hydrogen Gas to Power

Dolphyn.h2_g2pMethod
h2_g2p(EP::Model, inputs::Dict, setup::Dict)

This module creates decision variables, expressions, and constraints related to various hydrogen to power technologies as well as carbon emission policy constraints.

This module uses the following 'helper' functions in separate files: h2_g2p_commit() for thermal resources subject to unit commitment decisions and constraints (if any) and h2_g2p_no_commit() for thermal resources not subject to unit commitment (if any).