Skip to content

Commit

Permalink
Merge pull request #1276 from daniel-thom/issue-1274
Browse files Browse the repository at this point in the history
Add set_bus_number!
  • Loading branch information
jd-lara authored Feb 1, 2025
2 parents 3b39831 + a12f903 commit 36e4345
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 3 deletions.
2 changes: 2 additions & 0 deletions src/PowerSystems.jl
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,8 @@ export create_poly_cost

#export make_time_series
export get_bus_numbers
export set_bus_number!
export set_number! # Remove this in v5.0.
export get_name
export set_name!
export get_component_uuids
Expand Down
22 changes: 22 additions & 0 deletions src/base.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2619,6 +2619,28 @@ function convert_component!(
remove_component!(sys, old_load)
end

"""
Set the number of a bus.
"""
function set_bus_number!(sys::System, bus::ACBus, number::Int)
if number in sys.bus_numbers
throw(ArgumentError("bus number $number is already stored in the system"))
end
bus.number = number
push!(sys.bus_numbers, number)
return
end

function set_number!(bus::ACBus, number::Int)
Base.depwarn(
"This method will be removed in v5.0 because its use breaks system consistency" *
"checks. Please call `set_bus_number!(::System, bus, number)` instead.",
:set_number!,
)
bus.number = number
return
end

# Use this function to avoid deepcopy of shared_system_references.
function _copy_internal_for_conversion(component::Component)
internal = get_internal(component)
Expand Down
3 changes: 2 additions & 1 deletion src/descriptors/power_system_structs.json
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@
"name": "number",
"comment": "A unique bus identification number (positive integer)",
"null_value": "0",
"exclude_setter": true,
"data_type": "Int"
},
{
Expand Down Expand Up @@ -17591,4 +17592,4 @@
],
"struct_validation_descriptors": [
]
}
}
2 changes: 0 additions & 2 deletions src/models/generated/ACBus.jl
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,6 @@ get_ext(value::ACBus) = value.ext
"""Get [`ACBus`](@ref) `internal`."""
get_internal(value::ACBus) = value.internal

"""Set [`ACBus`](@ref) `number`."""
set_number!(value::ACBus, val) = value.number = val
"""Set [`ACBus`](@ref) `bustype`."""
set_bustype!(value::ACBus, val) = value.bustype = val
"""Set [`ACBus`](@ref) `angle`."""
Expand Down
13 changes: 13 additions & 0 deletions test/test_system.jl
Original file line number Diff line number Diff line change
Expand Up @@ -614,3 +614,16 @@ end
device2 = first(get_components(ThermalStandard, sys2))
@test_throws ArgumentError add_service!(device2, service1, sys2)
end

@testset "Test set_bus_number!" begin
sys = PSB.build_system(PSITestSystems, "test_RTS_GMLC_sys")
buses = collect(get_components(ACBus, sys))
bus1 = buses[1]
bus2 = buses[2]
orig = get_number(bus1)
new_number = 9999999
@test orig != new_number
set_bus_number!(sys, bus1, new_number)
@test get_number(bus1) == new_number
@test_throws ArgumentError set_bus_number!(sys, bus1, get_number(bus2))
end

0 comments on commit 36e4345

Please sign in to comment.