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)
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
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.retrofit!
— Functionretrofit!(ret::Retrofit, newgen) -> ::AbstractDict
This function should change newgen
to have the properties of the retrofit. newgen
is a Dict
containing all the properties of the original generator, but with the the following fields already changed:
year_retrofit
- set to the year to be retrofittedretrofit_original_gen_idx
- set to the index of the gen table for the original generatorcapex
- set to 0 to avoid double-paying capex for the already-built generator. Capex added tonewgen
should only be the capital costs for the retrofit itself. E4ST should already be accounting capex inpast_capex
for the original generator.pcap0
- set to 0transmission_capex
- set to 0build_status
- set tounretrofitted
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.25
- (between 0 and 1) the percent reduction in NOₓ emissions (default is midpoint of 0% and 50% reduction)reduce_so2_percent = 0.985
- (between 0 and 1) the percent reduction in SO₂ emissions (default is midpoint of 97% and 100% reduction)reduce_pm25_percent = 0.33
- (between 0 and 1) the percent reduction in PM2.5 emissions (default is midpoint of -4% and 70% reduction)econ_life = 12.0
- the assumed economic life of the retrofit. Moves out the planned yearshutdown to be at the end of the retrofit economic lifetime if yearshutdown is earlier than the end of the econ life.
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.