Retrofits
E4ST.Retrofit
— TypeRetrofit <: Modification
Abstract supertype for retrofits. Must implement the following interfaces:
- (required)
can_retrofit(ret::Retrofit, gen::DataFrameRow)
-> ::Bool
- returns whether or not a generator row can be retrofitted. - (required)
get_retrofit(ret::Retrofit, gen)
-> newgen::AbstractDict
- returns a new row to be added to the gen table. - (optional)
init!(ret::Retrofit, config, data)
- initialize data with theRetrofit
by adding any necessary columns to the gen table, etc. Defaults to do nothing.
The following methods are defined for Retrofit
, so you do not define any of the ordinary Modification
methods for any subtype of Retrofit
- only implement the above interfaces.
E4ST.modify_setup_data!
— Methodmodify_setup_data!(ret::Retrofit, config, data)
- Calls
init!(ret::Retrofit, config, data)
to initialize the data. - Makes a
Dict
indata[:retrofits]
to keep track of the retrofits being produced for each retrofit. - Loops through the rows of the
gen
table- Checks to see if the can be retrofitted via
can_retrofit(ret::Retrofit, row)
- Constructs the new retrofitted generator via
get_retrofit(ret::Retrofit, row)
- Constructs one new one for each year in the simulation.
- Checks to see if the can be retrofitted via
E4ST.modify_model!
— Methodmodify_model!(ret::Retrofit, config, data, model)
Modifies the model for retrofits. Only happens once, for all retrofits.
- Constrains the sum of the capacities of the original generators and the retrofits is less than the original max and greater than the original min by adding constraints
cons_pcap_gen_retro_min
andcons_pcap_gen_retro_max
- Removes the
cons_pcap_gen_noadd
constraints for prior to and on the retrofit year. - Fix the capacity of the new retrofit generators to 0 before the retrofit year.
E4ST.init!
— Methodinit!(ret::Retrofit, config, data)
initialize data with the Retrofit
by adding any necessary columns to the gen table, etc. Defaults to do nothing.
E4ST.can_retrofit
— Functioncan_retrofit(ret::Retrofit, row) -> ::Bool
Returns whether or not a generator row can be retrofitted.
E4ST.get_retrofit
— Functionget_retrofit(ret::Retrofit, row) -> ::AbstractDict
Returns a new retrofit based off of row
, to be added to the gen table. Note that the capex
should be included in the retrofitted generator WITHOUT the existing generator's capex. I.e. capex for the retrofit should be only the capital costs for the retrofit, not including the initial capital costs for building the generator.
Coal CCS Retrofit
E4ST.CoalCCSRetrofit
— TypeCoalCCSRetrofit(;kwargs...) <: Retrofit
CoalCCSRetrofit
represents a Retrofit
for changing coal-burning plants (gentype="coal"), to have carbon capture technology, and be changed to (gentype="coalccsusretrofit")
Keyword Arguments:
crf = 0.115642438
- the capital recovery factor (default value assumes 12 year economic lifetime)capt_co2_percent = 0.9
- (between 0 and 1) the percentage of CO₂ captured by the retrofitreduce_nox_percent = 0.5
- (between 0 and 1) the percent reduction in NOₓ emissionsreduce_so2_percent = 1.0
- (between 0 and 1) the percent reduction in SO₂ emissionsreduce_pm25_percent = 0.35
- (between 0 and 1) the percent reduction in PM2.5 emissions
Other Requirements:
- The
gen
table must have aheat_rate
column - The
gen
table must either have apcap_plant_avg
column, or it will be assumed that each generator represents a single plant. This value is used with the cost curves.
Cost adjustment values come from a regression in EPA Schedule 6 data.