From 6bdd3e731095637c34a95edd18e0dc8328ddca46 Mon Sep 17 00:00:00 2001 From: Jerry Potts Date: Wed, 20 Nov 2024 13:33:31 -0700 Subject: [PATCH] add crf and lifetime for supply and storage --- src/models/generated/ACTransportTechnology.jl | 4 +-- .../generated/ExistingTransportTechnology.jl | 4 +-- .../generated/HVDCTransportTechnology.jl | 4 +-- src/models/generated/StorageTechnology.jl | 26 +++++++++++++++---- src/models/generated/SupplyTechnology.jl | 26 +++++++++++++++---- src/models/generated/includes.jl | 2 ++ 6 files changed, 50 insertions(+), 16 deletions(-) diff --git a/src/models/generated/ACTransportTechnology.jl b/src/models/generated/ACTransportTechnology.jl index 276f3f0..80ef3a1 100644 --- a/src/models/generated/ACTransportTechnology.jl +++ b/src/models/generated/ACTransportTechnology.jl @@ -34,7 +34,7 @@ This file is auto-generated. Do not edit. - `start_region::Region`: Start region for transport technology - `available::Bool`: identifies whether the technology is available - `name::String`: Name -- `capital_recovery_factor::Int64`: (default: `0`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs for network transmission line expansion. +- `capital_recovery_factor::Int64`: (default: `30`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs for network transmission line expansion. - `end_region::Region`: End region for transport technology - `power_systems_type::String`: maps to a valid PowerSystems.jl for PCM modeling - `angle_limit::Float64`: (default: `0.0`) Votlage angle limit (radians) @@ -88,7 +88,7 @@ mutable struct ACTransportTechnology{T <: PSY.Device} <: Technology end -function ACTransportTechnology{T}(; base_power, capital_cost, start_region, available, name, capital_recovery_factor=0, end_region, power_systems_type, angle_limit=0.0, internal=InfrastructureSystemsInternal(), ext=Dict(), resistance=0.0, voltage=0.0, network_id, maximum_new_capacity, existing_line_capacity, wacc=0, line_loss, ) where T <: PSY.Device +function ACTransportTechnology{T}(; base_power, capital_cost, start_region, available, name, capital_recovery_factor=30, end_region, power_systems_type, angle_limit=0.0, internal=InfrastructureSystemsInternal(), ext=Dict(), resistance=0.0, voltage=0.0, network_id, maximum_new_capacity, existing_line_capacity, wacc=0, line_loss, ) where T <: PSY.Device ACTransportTechnology{T}(base_power, capital_cost, start_region, available, name, capital_recovery_factor, end_region, power_systems_type, angle_limit, internal, ext, resistance, voltage, network_id, maximum_new_capacity, existing_line_capacity, wacc, line_loss, ) end diff --git a/src/models/generated/ExistingTransportTechnology.jl b/src/models/generated/ExistingTransportTechnology.jl index 1582f9b..af2f4da 100644 --- a/src/models/generated/ExistingTransportTechnology.jl +++ b/src/models/generated/ExistingTransportTechnology.jl @@ -34,7 +34,7 @@ This file is auto-generated. Do not edit. - `start_region::Region`: Start region for transport technology - `available::Bool`: identifies whether the technology is available - `name::String`: Name -- `capital_recovery_factor::Int64`: (default: `0`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs for network transmission line expansion. +- `capital_recovery_factor::Int64`: (default: `30`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs for network transmission line expansion. - `end_region::Region`: End region for transport technology - `power_systems_type::String`: maps to a valid PowerSystems.jl for PCM modeling - `angle_limit::Float64`: (default: `0.0`) Votlage angle limit (radians) @@ -88,7 +88,7 @@ mutable struct ExistingTransportTechnology{T <: PSY.Device} <: Technology end -function ExistingTransportTechnology{T}(; base_power, capital_cost, start_region, available, name, capital_recovery_factor=0, end_region, power_systems_type, angle_limit=0.0, internal=InfrastructureSystemsInternal(), ext=Dict(), resistance=0.0, voltage=0.0, network_id, maximum_new_capacity, existing_line_capacity, wacc=0, line_loss, ) where T <: PSY.Device +function ExistingTransportTechnology{T}(; base_power, capital_cost, start_region, available, name, capital_recovery_factor=30, end_region, power_systems_type, angle_limit=0.0, internal=InfrastructureSystemsInternal(), ext=Dict(), resistance=0.0, voltage=0.0, network_id, maximum_new_capacity, existing_line_capacity, wacc=0, line_loss, ) where T <: PSY.Device ExistingTransportTechnology{T}(base_power, capital_cost, start_region, available, name, capital_recovery_factor, end_region, power_systems_type, angle_limit, internal, ext, resistance, voltage, network_id, maximum_new_capacity, existing_line_capacity, wacc, line_loss, ) end diff --git a/src/models/generated/HVDCTransportTechnology.jl b/src/models/generated/HVDCTransportTechnology.jl index a994d5d..7d84f98 100644 --- a/src/models/generated/HVDCTransportTechnology.jl +++ b/src/models/generated/HVDCTransportTechnology.jl @@ -34,7 +34,7 @@ This file is auto-generated. Do not edit. - `start_region::Region`: Start region for transport technology - `available::Bool`: identifies whether the technology is available - `name::String`: Name -- `capital_recovery_factor::Int64`: (default: `0`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs for network transmission line expansion. +- `capital_recovery_factor::Int64`: (default: `30`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs for network transmission line expansion. - `end_region::Region`: End region for transport technology - `power_systems_type::String`: maps to a valid PowerSystems.jl for PCM modeling - `angle_limit::Float64`: (default: `0.0`) Votlage angle limit (radians) @@ -88,7 +88,7 @@ mutable struct HVDCTransportTechnology{T <: PSY.Device} <: Technology end -function HVDCTransportTechnology{T}(; base_power, capital_cost, start_region, available, name, capital_recovery_factor=0, end_region, power_systems_type, angle_limit=0.0, internal=InfrastructureSystemsInternal(), ext=Dict(), resistance=0.0, voltage=0.0, network_id, maximum_new_capacity, existing_line_capacity, wacc=0, line_loss, ) where T <: PSY.Device +function HVDCTransportTechnology{T}(; base_power, capital_cost, start_region, available, name, capital_recovery_factor=30, end_region, power_systems_type, angle_limit=0.0, internal=InfrastructureSystemsInternal(), ext=Dict(), resistance=0.0, voltage=0.0, network_id, maximum_new_capacity, existing_line_capacity, wacc=0, line_loss, ) where T <: PSY.Device HVDCTransportTechnology{T}(base_power, capital_cost, start_region, available, name, capital_recovery_factor, end_region, power_systems_type, angle_limit, internal, ext, resistance, voltage, network_id, maximum_new_capacity, existing_line_capacity, wacc, line_loss, ) end diff --git a/src/models/generated/StorageTechnology.jl b/src/models/generated/StorageTechnology.jl index 8643714..6e07c0d 100644 --- a/src/models/generated/StorageTechnology.jl +++ b/src/models/generated/StorageTechnology.jl @@ -10,6 +10,7 @@ This file is auto-generated. Do not edit. om_costs_energy::PSY.OperationalCost existing_cap_energy::Float64 prime_mover_type::PrimeMovers + lifetime::Int rsv_cost::Float64 available::Bool existing_cap_power::Float64 @@ -18,6 +19,7 @@ This file is auto-generated. Do not edit. capital_costs_power::PSY.ValueCurve max_duration::Float64 unit_size_power::Float64 + capital_recovery_factor::Int64 id::Int64 min_cap_power::Float64 capital_costs_energy::PSY.ValueCurve @@ -30,7 +32,7 @@ This file is auto-generated. Do not edit. om_costs_power::PSY.OperationalCost balancing_topology::String min_cap_energy::Float64 - region::Union{Nothing, Region} + region::Union{Nothing, Region, Vector{Region}} initial_state_of_charge::Float64 unit_size_energy::Float64 eff_up::Float64 @@ -49,6 +51,7 @@ This file is auto-generated. Do not edit. - `om_costs_energy::PSY.OperationalCost`: (default: `StorageCost()`) Fixed and variable O&M costs for a technology - `existing_cap_energy::Float64`: (default: `0.0`) Pre-existing energy capacity for a technology (MWh) - `prime_mover_type::PrimeMovers`: (default: `PrimeMovers.OT`) Prime mover for generator +- `lifetime::Int`: (default: `100`) Maximum number of years a technology can be active once installed - `rsv_cost::Float64`: (default: `0.0`) Cost of providing upwards spinning or contingency reserves - `available::Bool`: identifies whether the technology is available - `existing_cap_power::Float64`: (default: `0.0`) Pre-existing power capacity for a technology (MW) @@ -57,6 +60,7 @@ This file is auto-generated. Do not edit. - `capital_costs_power::PSY.ValueCurve`: (default: `LinearCurve(0.0)`) Capital costs for investing in a technology. - `max_duration::Float64`: (default: `1000.0`) Maximum allowable durection for a storage technology - `unit_size_power::Float64`: (default: `0.0`) Used for discrete investment decisions. Size of each unit being built (MW) +- `capital_recovery_factor::Int64`: (default: `30`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs. - `id::Int64`: ID for individual generator - `min_cap_power::Float64`: (default: `0.0`) Minimum required power capacity for a storage technology - `capital_costs_energy::PSY.ValueCurve`: (default: `LinearCurve(0.0)`) Capital costs for investing in a technology. @@ -69,7 +73,7 @@ This file is auto-generated. Do not edit. - `om_costs_power::PSY.OperationalCost`: (default: `StorageCost()`) Fixed and variable O&M costs for a technology - `balancing_topology::String`: Set of balancing nodes - `min_cap_energy::Float64`: (default: `0.0`) Minimum required energy capacity for a storage technology -- `region::Union{Nothing, Region}`: (default: `nothing`) Region +- `region::Union{Nothing, Region, Vector{Region}}`: (default: `nothing`) Region - `initial_state_of_charge::Float64`: (default: `0.0`) State of charge for storage technology in the first timepoint (MWh). - `unit_size_energy::Float64`: (default: `0.0`) Used for discrete investment decisions. Size of each unit being built (MW) - `eff_up::Float64`: (default: `1.0`) Efficiency of charging storage @@ -89,6 +93,8 @@ mutable struct StorageTechnology{T <: PSY.Storage} <: Technology existing_cap_energy::Float64 "Prime mover for generator" prime_mover_type::PrimeMovers + "Maximum number of years a technology can be active once installed" + lifetime::Int "Cost of providing upwards spinning or contingency reserves" rsv_cost::Float64 "identifies whether the technology is available" @@ -105,6 +111,8 @@ mutable struct StorageTechnology{T <: PSY.Storage} <: Technology max_duration::Float64 "Used for discrete investment decisions. Size of each unit being built (MW)" unit_size_power::Float64 + "Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs." + capital_recovery_factor::Int64 "ID for individual generator" id::Int64 "Minimum required power capacity for a storage technology" @@ -130,7 +138,7 @@ mutable struct StorageTechnology{T <: PSY.Storage} <: Technology "Minimum required energy capacity for a storage technology" min_cap_energy::Float64 "Region" - region::Union{Nothing, Region} + region::Union{Nothing, Region, Vector{Region}} "State of charge for storage technology in the first timepoint (MWh)." initial_state_of_charge::Float64 "Used for discrete investment decisions. Size of each unit being built (MW)" @@ -152,8 +160,8 @@ mutable struct StorageTechnology{T <: PSY.Storage} <: Technology end -function StorageTechnology{T}(; base_power, om_costs_energy=StorageCost(), existing_cap_energy=0.0, prime_mover_type=PrimeMovers.OT, rsv_cost=0.0, available, existing_cap_power=0.0, name, storage_tech, capital_costs_power=LinearCurve(0.0), max_duration=1000.0, unit_size_power=0.0, id, min_cap_power=0.0, capital_costs_energy=LinearCurve(0.0), losses=1.0, eff_down=1.0, rsv_max=0.0, max_cap_power=1e8, power_systems_type, internal=InfrastructureSystemsInternal(), om_costs_power=StorageCost(), balancing_topology, min_cap_energy=0.0, region=nothing, initial_state_of_charge=0.0, unit_size_energy=0.0, eff_up=1.0, cluster=1, ext=Dict(), reg_cost=0.0, min_duration=0.0, max_cap_energy=1e8, reg_max=0.0, ) where T <: PSY.Storage - StorageTechnology{T}(base_power, om_costs_energy, existing_cap_energy, prime_mover_type, rsv_cost, available, existing_cap_power, name, storage_tech, capital_costs_power, max_duration, unit_size_power, id, min_cap_power, capital_costs_energy, losses, eff_down, rsv_max, max_cap_power, power_systems_type, internal, om_costs_power, balancing_topology, min_cap_energy, region, initial_state_of_charge, unit_size_energy, eff_up, cluster, ext, reg_cost, min_duration, max_cap_energy, reg_max, ) +function StorageTechnology{T}(; base_power, om_costs_energy=StorageCost(), existing_cap_energy=0.0, prime_mover_type=PrimeMovers.OT, lifetime=100, rsv_cost=0.0, available, existing_cap_power=0.0, name, storage_tech, capital_costs_power=LinearCurve(0.0), max_duration=1000.0, unit_size_power=0.0, capital_recovery_factor=30, id, min_cap_power=0.0, capital_costs_energy=LinearCurve(0.0), losses=1.0, eff_down=1.0, rsv_max=0.0, max_cap_power=1e8, power_systems_type, internal=InfrastructureSystemsInternal(), om_costs_power=StorageCost(), balancing_topology, min_cap_energy=0.0, region=nothing, initial_state_of_charge=0.0, unit_size_energy=0.0, eff_up=1.0, cluster=1, ext=Dict(), reg_cost=0.0, min_duration=0.0, max_cap_energy=1e8, reg_max=0.0, ) where T <: PSY.Storage + StorageTechnology{T}(base_power, om_costs_energy, existing_cap_energy, prime_mover_type, lifetime, rsv_cost, available, existing_cap_power, name, storage_tech, capital_costs_power, max_duration, unit_size_power, capital_recovery_factor, id, min_cap_power, capital_costs_energy, losses, eff_down, rsv_max, max_cap_power, power_systems_type, internal, om_costs_power, balancing_topology, min_cap_energy, region, initial_state_of_charge, unit_size_energy, eff_up, cluster, ext, reg_cost, min_duration, max_cap_energy, reg_max, ) end """Get [`StorageTechnology`](@ref) `base_power`.""" @@ -164,6 +172,8 @@ get_om_costs_energy(value::StorageTechnology) = value.om_costs_energy get_existing_cap_energy(value::StorageTechnology) = value.existing_cap_energy """Get [`StorageTechnology`](@ref) `prime_mover_type`.""" get_prime_mover_type(value::StorageTechnology) = value.prime_mover_type +"""Get [`StorageTechnology`](@ref) `lifetime`.""" +get_lifetime(value::StorageTechnology) = value.lifetime """Get [`StorageTechnology`](@ref) `rsv_cost`.""" get_rsv_cost(value::StorageTechnology) = value.rsv_cost """Get [`StorageTechnology`](@ref) `available`.""" @@ -180,6 +190,8 @@ get_capital_costs_power(value::StorageTechnology) = value.capital_costs_power get_max_duration(value::StorageTechnology) = value.max_duration """Get [`StorageTechnology`](@ref) `unit_size_power`.""" get_unit_size_power(value::StorageTechnology) = value.unit_size_power +"""Get [`StorageTechnology`](@ref) `capital_recovery_factor`.""" +get_capital_recovery_factor(value::StorageTechnology) = value.capital_recovery_factor """Get [`StorageTechnology`](@ref) `id`.""" get_id(value::StorageTechnology) = value.id """Get [`StorageTechnology`](@ref) `min_cap_power`.""" @@ -233,6 +245,8 @@ set_om_costs_energy!(value::StorageTechnology, val) = value.om_costs_energy = va set_existing_cap_energy!(value::StorageTechnology, val) = value.existing_cap_energy = val """Set [`StorageTechnology`](@ref) `prime_mover_type`.""" set_prime_mover_type!(value::StorageTechnology, val) = value.prime_mover_type = val +"""Set [`StorageTechnology`](@ref) `lifetime`.""" +set_lifetime!(value::StorageTechnology, val) = value.lifetime = val """Set [`StorageTechnology`](@ref) `rsv_cost`.""" set_rsv_cost!(value::StorageTechnology, val) = value.rsv_cost = val """Set [`StorageTechnology`](@ref) `available`.""" @@ -249,6 +263,8 @@ set_capital_costs_power!(value::StorageTechnology, val) = value.capital_costs_po set_max_duration!(value::StorageTechnology, val) = value.max_duration = val """Set [`StorageTechnology`](@ref) `unit_size_power`.""" set_unit_size_power!(value::StorageTechnology, val) = value.unit_size_power = val +"""Set [`StorageTechnology`](@ref) `capital_recovery_factor`.""" +set_capital_recovery_factor!(value::StorageTechnology, val) = value.capital_recovery_factor = val """Set [`StorageTechnology`](@ref) `id`.""" set_id!(value::StorageTechnology, val) = value.id = val """Set [`StorageTechnology`](@ref) `min_cap_power`.""" diff --git a/src/models/generated/SupplyTechnology.jl b/src/models/generated/SupplyTechnology.jl index 081d42c..caaf325 100644 --- a/src/models/generated/SupplyTechnology.jl +++ b/src/models/generated/SupplyTechnology.jl @@ -13,6 +13,7 @@ This file is auto-generated. Do not edit. minimum_required_capacity::Float64 cofire_level_min::Union{Nothing, Dict{ThermalFuels, Float64}} capital_costs::PSY.ValueCurve + lifetime::Int rsv_cost::Float64 cofire_start_max::Union{Nothing, Dict{ThermalFuels, Float64}} available::Bool @@ -20,6 +21,7 @@ This file is auto-generated. Do not edit. cofire_start_min::Union{Nothing, Dict{ThermalFuels, Float64}} name::String ramp_dn_percentage::Float64 + capital_recovery_factor::Int64 id::Int64 down_time::Float64 initial_capacity::Float64 @@ -32,7 +34,7 @@ This file is auto-generated. Do not edit. internal::InfrastructureSystemsInternal ext::Dict balancing_topology::String - region::Union{Nothing, Region} + region::Union{Nothing, Region, Vector{Region}} maximum_capacity::Float64 cluster::Int64 ramp_up_percentage::Float64 @@ -54,6 +56,7 @@ This file is auto-generated. Do not edit. - `minimum_required_capacity::Float64`: (default: `0.0`) Minimum required capacity for a technology - `cofire_level_min::Union{Nothing, Dict{ThermalFuels, Float64}}`: (default: `nothing`) Minimum blending level of each fuel during normal generation process for multi-fuel generator - `capital_costs::PSY.ValueCurve`: (default: `LinearCurve(0.0)`) Capital costs for investing in a technology. +- `lifetime::Int`: (default: `100`) Maximum number of years a technology can be active once installed - `rsv_cost::Float64`: (default: `0.0`) Cost of providing upwards spinning or contingency reserves - `cofire_start_max::Union{Nothing, Dict{ThermalFuels, Float64}}`: (default: `nothing`) Maximum blending level of each fuel during start-up process for multi-fuel generator - `available::Bool`: (default: `True`) identifies whether the technology is available @@ -61,6 +64,7 @@ This file is auto-generated. Do not edit. - `cofire_start_min::Union{Nothing, Dict{ThermalFuels, Float64}}`: (default: `nothing`) Minimum blending level of each fuel during start-up process for multi-fuel generator - `name::String`: The technology name - `ramp_dn_percentage::Float64`: (default: `100.0`) Maximum decrease in output between operation periods. Fraction of total capacity +- `capital_recovery_factor::Int64`: (default: `30`) Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs. - `id::Int64`: ID for individual generator - `down_time::Float64`: (default: `0.0`) Minimum amount of time a resource has to remain in the shutdown state. - `initial_capacity::Float64`: (default: `0.0`) Pre-existing capacity for a technology @@ -73,7 +77,7 @@ This file is auto-generated. Do not edit. - `internal::InfrastructureSystemsInternal`: (default: `InfrastructureSystemsInternal()`) Internal field - `ext::Dict`: (default: `Dict()`) Option for providing additional data - `balancing_topology::String`: Set of balancing nodes -- `region::Union{Nothing, Region}`: (default: `nothing`) Zone where tech operates in +- `region::Union{Nothing, Region, Vector{Region}}`: (default: `nothing`) Zone where tech operates in - `maximum_capacity::Float64`: (default: `Inf`) Maximum allowable installed capacity for a technology - `cluster::Int64`: (default: `1`) Number of the cluster when representing multiple clusters of a given technology in a given region. - `ramp_up_percentage::Float64`: (default: `100.0`) Maximum increase in output between operation periods. Fraction of total capacity @@ -99,6 +103,8 @@ mutable struct SupplyTechnology{T <: PSY.Generator} <: Technology cofire_level_min::Union{Nothing, Dict{ThermalFuels, Float64}} "Capital costs for investing in a technology." capital_costs::PSY.ValueCurve + "Maximum number of years a technology can be active once installed" + lifetime::Int "Cost of providing upwards spinning or contingency reserves" rsv_cost::Float64 "Maximum blending level of each fuel during start-up process for multi-fuel generator" @@ -113,6 +119,8 @@ mutable struct SupplyTechnology{T <: PSY.Generator} <: Technology name::String "Maximum decrease in output between operation periods. Fraction of total capacity" ramp_dn_percentage::Float64 + "Capital recovery period (in years) used for determining overnight capital costs from annualized investment costs." + capital_recovery_factor::Int64 "ID for individual generator" id::Int64 "Minimum amount of time a resource has to remain in the shutdown state." @@ -138,7 +146,7 @@ mutable struct SupplyTechnology{T <: PSY.Generator} <: Technology "Set of balancing nodes" balancing_topology::String "Zone where tech operates in" - region::Union{Nothing, Region} + region::Union{Nothing, Region, Vector{Region}} "Maximum allowable installed capacity for a technology" maximum_capacity::Float64 "Number of the cluster when representing multiple clusters of a given technology in a given region." @@ -160,8 +168,8 @@ mutable struct SupplyTechnology{T <: PSY.Generator} <: Technology end -function SupplyTechnology{T}(; base_power, heat_rate_mmbtu_per_mwh=0.0, outage_factor=1.0, prime_mover_type=PrimeMovers.OT, minimum_required_capacity=0.0, cofire_level_min=nothing, capital_costs=LinearCurve(0.0), rsv_cost=0.0, cofire_start_max=nothing, available=True, co2=0.0, cofire_start_min=nothing, name, ramp_dn_percentage=100.0, id, down_time=0.0, initial_capacity=0.0, start_fuel_mmbtu_per_mw=0.0, operation_costs=ThermalGenerationCost(), rsv_max=0.0, fuel=ThermalFuels.OTHER, power_systems_type, cofire_level_max=nothing, internal=InfrastructureSystemsInternal(), ext=Dict(), balancing_topology, region=nothing, maximum_capacity=Inf, cluster=1, ramp_up_percentage=100.0, unit_size=0.0, reg_cost=0.0, min_generation_percentage=0.0, start_cost_per_mw=0.0, reg_max=0.0, up_time=0.0, ) where T <: PSY.Generator - SupplyTechnology{T}(base_power, heat_rate_mmbtu_per_mwh, outage_factor, prime_mover_type, minimum_required_capacity, cofire_level_min, capital_costs, rsv_cost, cofire_start_max, available, co2, cofire_start_min, name, ramp_dn_percentage, id, down_time, initial_capacity, start_fuel_mmbtu_per_mw, operation_costs, rsv_max, fuel, power_systems_type, cofire_level_max, internal, ext, balancing_topology, region, maximum_capacity, cluster, ramp_up_percentage, unit_size, reg_cost, min_generation_percentage, start_cost_per_mw, reg_max, up_time, ) +function SupplyTechnology{T}(; base_power, heat_rate_mmbtu_per_mwh=0.0, outage_factor=1.0, prime_mover_type=PrimeMovers.OT, minimum_required_capacity=0.0, cofire_level_min=nothing, capital_costs=LinearCurve(0.0), lifetime=100, rsv_cost=0.0, cofire_start_max=nothing, available=True, co2=0.0, cofire_start_min=nothing, name, ramp_dn_percentage=100.0, capital_recovery_factor=30, id, down_time=0.0, initial_capacity=0.0, start_fuel_mmbtu_per_mw=0.0, operation_costs=ThermalGenerationCost(), rsv_max=0.0, fuel=ThermalFuels.OTHER, power_systems_type, cofire_level_max=nothing, internal=InfrastructureSystemsInternal(), ext=Dict(), balancing_topology, region=nothing, maximum_capacity=Inf, cluster=1, ramp_up_percentage=100.0, unit_size=0.0, reg_cost=0.0, min_generation_percentage=0.0, start_cost_per_mw=0.0, reg_max=0.0, up_time=0.0, ) where T <: PSY.Generator + SupplyTechnology{T}(base_power, heat_rate_mmbtu_per_mwh, outage_factor, prime_mover_type, minimum_required_capacity, cofire_level_min, capital_costs, lifetime, rsv_cost, cofire_start_max, available, co2, cofire_start_min, name, ramp_dn_percentage, capital_recovery_factor, id, down_time, initial_capacity, start_fuel_mmbtu_per_mw, operation_costs, rsv_max, fuel, power_systems_type, cofire_level_max, internal, ext, balancing_topology, region, maximum_capacity, cluster, ramp_up_percentage, unit_size, reg_cost, min_generation_percentage, start_cost_per_mw, reg_max, up_time, ) end """Get [`SupplyTechnology`](@ref) `base_power`.""" @@ -178,6 +186,8 @@ get_minimum_required_capacity(value::SupplyTechnology) = value.minimum_required_ get_cofire_level_min(value::SupplyTechnology) = value.cofire_level_min """Get [`SupplyTechnology`](@ref) `capital_costs`.""" get_capital_costs(value::SupplyTechnology) = value.capital_costs +"""Get [`SupplyTechnology`](@ref) `lifetime`.""" +get_lifetime(value::SupplyTechnology) = value.lifetime """Get [`SupplyTechnology`](@ref) `rsv_cost`.""" get_rsv_cost(value::SupplyTechnology) = value.rsv_cost """Get [`SupplyTechnology`](@ref) `cofire_start_max`.""" @@ -192,6 +202,8 @@ get_cofire_start_min(value::SupplyTechnology) = value.cofire_start_min get_name(value::SupplyTechnology) = value.name """Get [`SupplyTechnology`](@ref) `ramp_dn_percentage`.""" get_ramp_dn_percentage(value::SupplyTechnology) = value.ramp_dn_percentage +"""Get [`SupplyTechnology`](@ref) `capital_recovery_factor`.""" +get_capital_recovery_factor(value::SupplyTechnology) = value.capital_recovery_factor """Get [`SupplyTechnology`](@ref) `id`.""" get_id(value::SupplyTechnology) = value.id """Get [`SupplyTechnology`](@ref) `down_time`.""" @@ -251,6 +263,8 @@ set_minimum_required_capacity!(value::SupplyTechnology, val) = value.minimum_req set_cofire_level_min!(value::SupplyTechnology, val) = value.cofire_level_min = val """Set [`SupplyTechnology`](@ref) `capital_costs`.""" set_capital_costs!(value::SupplyTechnology, val) = value.capital_costs = val +"""Set [`SupplyTechnology`](@ref) `lifetime`.""" +set_lifetime!(value::SupplyTechnology, val) = value.lifetime = val """Set [`SupplyTechnology`](@ref) `rsv_cost`.""" set_rsv_cost!(value::SupplyTechnology, val) = value.rsv_cost = val """Set [`SupplyTechnology`](@ref) `cofire_start_max`.""" @@ -265,6 +279,8 @@ set_cofire_start_min!(value::SupplyTechnology, val) = value.cofire_start_min = v set_name!(value::SupplyTechnology, val) = value.name = val """Set [`SupplyTechnology`](@ref) `ramp_dn_percentage`.""" set_ramp_dn_percentage!(value::SupplyTechnology, val) = value.ramp_dn_percentage = val +"""Set [`SupplyTechnology`](@ref) `capital_recovery_factor`.""" +set_capital_recovery_factor!(value::SupplyTechnology, val) = value.capital_recovery_factor = val """Set [`SupplyTechnology`](@ref) `id`.""" set_id!(value::SupplyTechnology, val) = value.id = val """Set [`SupplyTechnology`](@ref) `down_time`.""" diff --git a/src/models/generated/includes.jl b/src/models/generated/includes.jl index 738c4c7..d7a20fa 100644 --- a/src/models/generated/includes.jl +++ b/src/models/generated/includes.jl @@ -53,6 +53,7 @@ export get_heat_rate_mmbtu_per_mwh export get_id export get_initial_capacity export get_initial_state_of_charge +export get_lifetime export get_line_loss export get_losses export get_max_cap_energy @@ -143,6 +144,7 @@ export set_heat_rate_mmbtu_per_mwh! export set_id! export set_initial_capacity! export set_initial_state_of_charge! +export set_lifetime! export set_line_loss! export set_losses! export set_max_cap_energy!