Hydrogen Gas to Power
Hydrogen Gas to Power All
Dolphyn.h2_g2p_all
— Methodh2_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_commit
— Methodh2_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_discharge
— Methodh2_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_investment
— Methodh2_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_commit
— Methodh2_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_g2p
— Methodh2_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).