Public interface
Module
EnergyModelsCO2 — ModuleEnergyModelsCO2 is representing several technologies that are relevant within CO₂ capture, transport, utilization, and storage chains.
Node types
General nodes
EnergyModelsCO2.CO2Source — TypeCO2Source <: SourceA CO₂ Source node. Its only difference from a RefSource is that is allows for CO₂ as outlet.
Fields
idis the name/identifier of the node.cap::TimeProfileis the installed capacity.opex_var::TimeProfileis the variational operational costs per energy unit produced.opex_fixed::TimeProfileis the fixed operational costs.output::Dict{<:Resource, <:Real}are the generatedResources with conversion valueReal.data::Array{<:Data}is the additional data (e.g. for investments). The fielddatais conditional through usage of a constructor.
EnergyModelsCO2.CO2Storage — TypeCO2Storage{T} <: Storage{T}This node has an installed injection rate capacity through charge and a storage capacity level.
The storage level (accountet by the optimization variable stor_level) will increase during all strategic periods (sp), i.e., the stored resource can not be taken out of the storage.
The initial storage level in a strategic period is set to the storage level at the end of the prevoious sp. Note that the increased storage level during a sp is multiplied with the length of the sp when the initial storage level for the next sp is set.
This is achieved through the parametric input AccumulatingStrategic. This input is not a required input due to the utilization of an inner constructor.
Fields
idis the name/identifyer of the node.charge::EMB.UnionCapacityare the charging parameters of theCO2Storagenode. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.level::EMB.UnionCapacityare the level parameters of theCO2Storagenode. Depending on the chosen type, the charge parameters can include variable OPEX and/or fixed OPEX.stor_res::Resourceis the storedResource.input::Dict{<:Resource, <:Real}are the inputResources with conversion valueReal.data::Array{<:Data}is the additional data (e.g. for investments). The fielddatais conditional through usage of a constructor.
CO₂ capture retrofit nodes
EnergyModelsCO2.NetworkNodeWithRetrofit — TypeNetworkNodeWithRetrofit <:NetworkNodeAbstract supertype for allowing retrofitting CO₂ capture to a node. Its application requires the user to
- define their own node as subtype of
NetworkNodeWithRetrofitand - include a field
co2_proxyin said node or alternatively define a method forco2_proxyfor the node.
The application is best explained by RefNetworkNodeRetrofit which illustrates it for a RefNetworkNode node.
EnergyModelsCO2.RefNetworkNodeRetrofit — TypeRefNetworkNodeRetrofit <: NetworkNodeWithRetrofitThis node allows for retrofitting CO₂ capture to a NetworkNode.
It corresponds to a RefNetworkNode node in which the CO₂ is not emitted. Instead, it is transferred to a co2_proxy that is fed subsequently to a node (CCSRetroFit) in which it is either captured, or emitted.
The co2_proxy does not have to be specified as output resource.
Fields
idis the name/identifier of the node.cap::TimeProfileis the installed capacity.opex_var::TimeProfileis the variational operational costs per energy unit produced.opex_fixed::TimeProfileis the fixed operational costs.input::Dict{<:Resource, <:Real}are the inputResources with conversion valueReal.output::Dict{<:Resource, <:Real}are the generatedResources with conversion valueReal.co2_proxyis required to be included to be available to have CO₂ capture applied properly.co2_proxy::Resourceis the instance of theResourceused for calculating internally the CO₂ flow from theRefNetworkNodeRetrofitto theCCSRetroFitnode.data::Array{<:Data}is the additional data (e.g. for investments).
EnergyModelsCO2.CCSRetroFit — TypeCCSRetroFit <: NetworkThis node allows for investments into CO₂ capture retrofit to a RefNetworkNodeRetrofit node. The capture process is implemented through the variable :cap_use
The co2_proxy does not have to be specified as input resource.
Fields
idis the name/identifier of the node.cap::TimeProfileis the installed capacity.opex_var::TimeProfileis the variational operational costs per unit CO2 captured.opex_fixed::TimeProfileis the fixed operational costs.input::Dict{<:Resource, <:Real}are the inputResources with conversion valueReal.output::Dict{<:Resource, <:Real}are the generatedResources with conversion valueReal. The CO₂ instance is required to be included to be available to have CO₂ capture applied properly.co2_proxy::Resourceis the instance of theResourceused for calculating internally the CO₂ flow from theRefNetworkNodeRetrofitto theCCSRetroFitnode.data::Array{<:Data}is the additional data (e.g. for investments).
Legacy constructors
EnergyModelsCO2.NetworkCCSRetrofit — FunctionNetworkCCSRetrofit(args)Legacy constructor NetworkCCSRetrofit This type was renamed to RefNetworkNodeRetrofit while everything else remains the same.
Data types
CaptureData for CCSRetrofit
EnergyModelsCO2.CaptureFlueGas — TypeCaptureFlueGas{T} <: CaptureData{T}Capture the proxy CO₂ instance but not the energy usage related emissions and the process emissions. Does not require emissions as input, but can be supplied.
Fields
emissions::Dict{ResourceEmit, T}are the emissions per unit produced.co2_capture::Float64is the CO₂ capture rate.
Legacy constructors
EnergyModelsCO2.CaptureNone — FunctionCaptureNone(emissions::Dict{ResourceEmit,T}, co2_capture::Float64)Legacy constructor for a CaptureNone. This type was renamed to CaptureFlueGas while everything else remains the same.