Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,6 @@ The input files required to run ABCE are as follows:

* `agent_specifications.yml`: definitions for the agents: financial parameters, starting portfolios by unit type, and mandatory retirement dates for owned units

* `C2N_project_definitions.yml`: contains project activity cost and schedule information for coal-to-nuclear projects

* `demand_data.csv`: normalized peak demand levels per simulated year (used to scale the `peak_demand` parameter)

* `unit_specs.yml`: construction and operations cost and parameter data for all possible unit types in the model
Expand Down
155 changes: 0 additions & 155 deletions inputs/C2N_project_definitions.yml

This file was deleted.

4 changes: 0 additions & 4 deletions settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ constants:
time_before_start: -1
distant_time: 9999
big_number: 999999
hours_per_year: 8760
MW2kW: 1000 # converts MW to kW

# File paths and filenames
Expand Down Expand Up @@ -99,7 +98,6 @@ system:

# Settings for demand projections
demand:
total_forecast_horizon: 10 # Number of periods in the complete forecast horizon
demand_visibility_horizon: 5
demand_projection_mode: exp_termrate # flat, exp_fitted, or exp_termrate
demand_projection_window: 5 # Total number of periods used to project demand
Expand Down Expand Up @@ -133,8 +131,6 @@ agent_opt:
profit_lamda: 1.0 # Note: only the ratio between the lamdas matters
credit_rating_lamda: 1.0
fin_metric_horizon: 4
rcdr_target_delta: 0.005
icr_floor: 3.5 # weighted sum limit
fcf_debt_floor: 0.16 # weighted sum limit
re_debt_floor: 0.115 # weighted sum limit
icr_solo_floor: 0.0 # individual
Expand Down
108 changes: 0 additions & 108 deletions src/ABCEfunctions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,8 @@ module ABCEfunctions
using ArgParse, CPLEX,
Requires, SQLite, DataFrames, CSV, JuMP, GLPK, Cbc, Logging, Tables, HiGHS, Statistics

# Use CPLEX if available
#function __init__()
# @require CPLEX = "a076750e-1247-5638-91d2-ce28b192dca0" @eval using CPLEX
#end

include("./dispatch.jl")
using .Dispatch
include("./C2N_projects.jl")
using .C2N
include("./income_statement.jl")
using .ISpf

Expand Down Expand Up @@ -104,39 +97,6 @@ function set_up_local_paths(settings, abce_abs_path)
end


function validate_project_data(db, settings, unit_specs, C2N_specs)
for unit_type in unit_specs[!, :unit_type]
if occursin("C2N", unit_type)
unit_type_data =
filter(:unit_type => x -> x == unit_type, unit_specs)[1, :]

# Dummy data for schedule retrieval
lag = 0
fc_pd = 70
current_pd = 0

capex_tl, activity_schedule = project_C2N_capex(
db,
settings,
unit_type_data,
lag,
fc_pd,
current_pd,
C2N_specs,
)

unit_specs[
(unit_specs.unit_type .== unit_type),
:construction_duration,
] .= size(capex_tl)[1]
end
end

return unit_specs

end


function set_forecast_period(unit_specs, num_lags)
# Compute forecast period as the maximum possible project horizon, based
# on the sum of maximum lead time, maximum construction duration,
Expand Down Expand Up @@ -561,7 +521,6 @@ function set_up_project_alternatives(
agent_params,
db,
current_pd,
C2N_specs,
dispatch_results,
)
PA_summaries = create_PA_summaries(settings, unit_specs, asset_counts)
Expand All @@ -579,7 +538,6 @@ function set_up_project_alternatives(
PA,
fc_pd,
current_pd,
C2N_specs,
agent_id,
agent_params,
dispatch_results,
Expand Down Expand Up @@ -704,7 +662,6 @@ function create_PA_subprojects(
PA,
fc_pd,
current_pd,
C2N_specs,
agent_id,
agent_params,
dispatch_results,
Expand All @@ -727,7 +684,6 @@ function create_PA_subprojects(
subproject,
fc_pd,
current_pd,
C2N_specs,
agent_id,
agent_params,
dispatch_results,
Expand Down Expand Up @@ -795,7 +751,6 @@ function forecast_subproject_financials(
subproject,
fc_pd,
current_pd,
C2N_specs,
agent_id,
agent_params,
dispatch_results,
Expand Down Expand Up @@ -836,7 +791,6 @@ function forecast_subproject_financials(
unit_type_data,
subproject,
current_pd,
C2N_specs,
deepcopy(subproject_fs),
)

Expand Down Expand Up @@ -896,7 +850,6 @@ function forecast_capex(
unit_type_data,
subproject,
current_pd,
C2N_specs,
fs_copy,
)
capex_per_pd = (
Expand All @@ -918,64 +871,6 @@ function forecast_capex(
end


function project_C2N_capex(
db,
settings,
unit_type_data,
lag,
fc_pd,
current_pd,
C2N_specs,
)
assumption = settings["simulation"]["C2N_assumption"]
# Set the project parameters
if occursin("C2N0", unit_type_data[:unit_type])
conversion_type = "greenfield"
if occursin("PWR", unit_type_data[:unit_type])
rxtr_type = "PWR"
elseif occursin("HTGR", unit_type_data[:unit_type])
rxtr_type = "HTGR"
else
rxtr_type = "SFR"
end

data = deepcopy(C2N_specs[conversion_type][rxtr_type])

else
if occursin("C2N1", unit_type_data[:unit_type])
conversion_type = "electrical"
rxtr_type = "PWR"
elseif occursin("C2N2", unit_type_data[:unit_type])
conversion_type = "steam_noTES"
rxtr_type = "HTGR"
else
conversion_type = "steam_TES"
rxtr_type = "SFR"
end
data = deepcopy(C2N_specs[conversion_type][assumption])
end

# Scale cost component data to match unit type specification data
for key in keys(data)
data[key]["cost_rem"] = data[key]["cost_rem"] * unit_type_data[:overnight_capital_cost]
end

# Develop the C2N capex profile
capex_tl, activity_schedule = C2N.create_C2N_capex_timeline(
db,
conversion_type,
rxtr_type,
current_pd,
lag,
fc_pd,
data,
unit_type_data,
)

return capex_tl, activity_schedule
end


function get_capex_end(fs_copy)
# Find the end of the capex accumulation period
capex_end = size(fs_copy)[1]
Expand Down Expand Up @@ -2764,11 +2659,8 @@ end
function compute_credit_indicator_scores(settings, agent_fs)
# Credit ratings indicators
# Compute retained earnings-to-debt metric column
rcdr_target = settings["agent_opt"]["re_debt_floor"] + settings["agent_opt"]["rcdr_target_delta"]
transform!(agent_fs, [:remaining_debt_principal, :retained_earnings] => ((debt, re) -> re ./ debt) => :RE_debt_ratio)

# Use excess RE over the amount needed to reach the target ratio to subsidize FCF

# Compute effective FCF: if FCF is zero but RE is greater than zero, use RE in place of FCF

# Compute ICR metric column
Expand Down
Loading