Retrofits
E4ST.Retrofit — TypeRetrofit <: ModificationAbstract 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 theRetrofitby 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
Dictindata[:retrofits]to keep track of the retrofits being produced for each retrofit. - Loops through the rows of the
gentable- 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_minandcons_pcap_gen_retro_max - Removes the
cons_pcap_gen_noaddconstraints 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) -> ::BoolReturns whether or not a generator row can be retrofitted.
E4ST.retrofit! — Functionretrofit!(ret::Retrofit, newgen) -> ::AbstractDictThis 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 tonewgenshould only be the capital costs for the retrofit itself. E4ST should already be accounting capex inpast_capexfor the original generator.pcap0- set to 0transmission_capex- set to 0build_status- set tounretrofitted
Coal CCS Retrofit
E4ST.CoalCCSRetrofit — TypeCoalCCSRetrofit(;kwargs...) <: RetrofitCoalCCSRetrofit 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
gentable must have aheat_ratecolumn - The
gentable must either have apcap_plant_avgcolumn, 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.
Note: If simulation includes capacity adjustments (e.g. yearly retirements via Adjust mod) make sure the adjusment comes before Retrofits so that the penalty is applied to the adjusted capacity value.