Allam Cycle

GenX.allamcycle_commit!Method
allamcycle_commit!(EP::Model, inputs::Dict, setup::Dict)

This function defines the operating constraints for allam cycle power plants subject to unit commitment constraints on power plant start-ups and shut-down decision ($y \in UC$). The capacity investment decisions and commitment and cycling (start-up, shut-down) of ASU and sCO2 turbine in allam cycle power systems are similar to constraints defined in thermal_commit.jl Operaional constraints include start-up, max ramping up/donw, max up/down time, min power level, and operational reserves.

source
GenX.allamcycle_no_commit!Method
allamcycle_no_commit!(EP::Model, inputs::Dict, setup::Dict)

This function defines the operating constraints for allam cycle power plants subject to unit commitment constraints on power plant start-ups and shut-down decision ($y \in UC$). The capacity investment decisions and commitment and cycling (start-up, shut-down) of ASU and sCO2 turbine in allam cycle power systems are similar to constraints defined in thermalnocommit.jl Operaional constraints include max ramping up/donw, min power level, and operational reserves.

source
GenX.allamcyclelox!Method
allamcyclelox!(EP::Model, inputs::Dict, setup::Dict)

This module models the Allam cycle with or without liquid oxygen storage (LOX) tank. In this module, the key components of Allam cycle w/ LOX are break down into mutiple components with independent capacity decisions.

Important expressions

Power balance within an Allam Cycle resource

Consumption of electricity by Air Seperation Unit (ASU) $y, asu$ in time $t$, denoted by $\Pi_{y,asu,t}$, and auxiliary load, denoted by $\Pi_{y,aux,t}$, is subtracted from power generation from the sCO2 turbines, denoted by $\Pi_{y,sco2turbine,t}$

Power balance between an Allam Cycle resource and the grid

Net power output from Allam Cycle $y$ in time $t$ (net generation - electricity charged from the grid, denoted by $\Theta_{y,z}$), denoted by $\Pi_{y,z}^{net}$, is added to power balance expression ePowerBalance

\[\begin{aligned} \Pi_{y,z}^{net} = \Pi_{y,sco2turbine,t} - \Pi_{y,asu,t} - \Pi_{y,aux,t} - \Theta_{y,t} \end{aligned}\]

Important constraints

Liquid oxygen storage mass balance

The state of the liquid oxygen storage at hour $h$ is determined by the state of the liquid oxygen storage at hour $h-1$, and of the production and consumption of liquid oxygen at hour $h$.

\[\begin{aligned} \Gamma_{y,t} = \Gamma_{y,t-1} + \Pi_{y,asu,t} \cdot {O2\_production\_rate_{y}} - \frac{\Pi_{y,sco2turbine,t}}{O2\_consumption\_rate_{y}} \end{aligned}\]

Power consumption by ASU

When the electricity prices are low, ASU can also use electricity from the grid ($\Theta_{y,z}$) to produce oxygen and the energy consumption ($\Pi_{y,aux,z}$) by ASU has to be equal or greater than $\Theta_{y,z}$.

\[\begin{aligned} \Pi_{y,aux,t} \geq \Theta_{y,t} \end{aligned}\]

Maximum power output

All the allam cycle output should be less than the capacity

\[\begin{aligned} \Pi_{y,sco2turbine,t} &\leq \Omega_{y,sco2turbine} \\ \Pi_{y,aux,t} &\leq \Omega_{y,aux} \\ \Theta_{y,lox,t}^{in} &\leq \Omega_{y,lox} \\ \Theta_{y,lox,t}^{out} &\leq \Omega_{y,lox} \end{aligned}\]

Charging and discharging rate of LOX

Charging and discharging rate of LOX is determined by the capacity ($\omega_{y,lox}$) and duration ($Duration_{y}$) of LOX

\[\begin{aligned} \frac{\Omega_{y,lox}}{Duration_{y}} \geq \Theta_{y,lox,t}^{in} \\ \frac{\Omega_{y,lox}}{Duration_{y}} \geq \Theta_{y,lox,t}^{out} \end{aligned}\]

Note: Check allamcycle_commit!(EP, inputs, setup) and allamcycle_commit!(EP, inputs, setup) for specific investment and operational constraints related to unit commitment.

source
GenX.write_allam_capacityMethod
write_allam_capacity(path::AbstractString, inputs::Dict, setup::Dict, EP::Model)

This function writes the different capacities for the Allam Cycle LOX technologies (starting capacities or, existing capacities, retired capacities, and new-built capacities) to the capacity_allam_cycle_lox.csv file.

source
GenX.write_allam_outputMethod
write_allam_output(path::AbstractString, inputs::Dict, setup::Dict, EP::Model)

This function writes the power output from each component of an Allam Cycle LOX resource to the output_allam_cycle_lox.csv file.

source