From 2ca29efe1f599c906614f3a873d3c3af97abf50e Mon Sep 17 00:00:00 2001 From: Luke Kiernan Date: Tue, 10 Mar 2026 15:42:47 -0600 Subject: [PATCH 1/2] Ensure all systems are returned in SYSTEM_BASE Closes #175 Co-Authored-By: Claude Opus 4.6 --- src/build_system.jl | 1 + src/library/psi_library.jl | 1 - test/test_unit_system.jl | 5 +++++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 test/test_unit_system.jl diff --git a/src/build_system.jl b/src/build_system.jl index 2a96908f..c3305214 100644 --- a/src/build_system.jl +++ b/src/build_system.jl @@ -95,6 +95,7 @@ function _build_system( PSY.get_runchecks(sys) # update_stats!(sys_descriptor, time() - start) end + PSY.set_units_base_system!(sys, "SYSTEM_BASE") print_stat ? print_stats(sys_descriptor) : nothing return sys end diff --git a/src/library/psi_library.jl b/src/library/psi_library.jl index 1d9269de..fef0f06a 100644 --- a/src/library/psi_library.jl +++ b/src/library/psi_library.jl @@ -489,7 +489,6 @@ function make_modified_RTS_GMLC_sys( ) sys = PSY.System(rawsys; time_series_resolution = resolution, sys_kwargs...) - PSY.set_units_base_system!(sys, "SYSTEM_BASE") res_up = PSY.get_component(PSY.VariableReserve{PSY.ReserveUp}, sys, "Flex_Up") res_dn = PSY.get_component(PSY.VariableReserve{PSY.ReserveDown}, sys, "Flex_Down") PSY.remove_component!(sys, res_dn) diff --git a/test/test_unit_system.jl b/test/test_unit_system.jl new file mode 100644 index 00000000..f7a37814 --- /dev/null +++ b/test/test_unit_system.jl @@ -0,0 +1,5 @@ +@testset "build_system returns SYSTEM_BASE" begin + # Matpower systems were previously built in DEVICE_BASE + sys = build_system(MatpowerTestSystems, "matpower_case5_sys"; force_build = true) + @test PSY.get_units_base(sys) == "SYSTEM_BASE" +end From 00f803e0c66e9d93e6e47b0d36d1bb22622c4f97 Mon Sep 17 00:00:00 2001 From: Luke Kiernan Date: Wed, 11 Mar 2026 11:22:58 -0600 Subject: [PATCH 2/2] Address review: restore set_units_base in build func, test deserialization path Co-Authored-By: Claude Opus 4.6 --- src/library/psi_library.jl | 1 + test/test_unit_system.jl | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/library/psi_library.jl b/src/library/psi_library.jl index fef0f06a..1d9269de 100644 --- a/src/library/psi_library.jl +++ b/src/library/psi_library.jl @@ -489,6 +489,7 @@ function make_modified_RTS_GMLC_sys( ) sys = PSY.System(rawsys; time_series_resolution = resolution, sys_kwargs...) + PSY.set_units_base_system!(sys, "SYSTEM_BASE") res_up = PSY.get_component(PSY.VariableReserve{PSY.ReserveUp}, sys, "Flex_Up") res_dn = PSY.get_component(PSY.VariableReserve{PSY.ReserveDown}, sys, "Flex_Down") PSY.remove_component!(sys, res_dn) diff --git a/test/test_unit_system.jl b/test/test_unit_system.jl index f7a37814..a1579792 100644 --- a/test/test_unit_system.jl +++ b/test/test_unit_system.jl @@ -2,4 +2,8 @@ # Matpower systems were previously built in DEVICE_BASE sys = build_system(MatpowerTestSystems, "matpower_case5_sys"; force_build = true) @test PSY.get_units_base(sys) == "SYSTEM_BASE" + + # Also test the deserialization path + sys2 = build_system(MatpowerTestSystems, "matpower_case5_sys"; force_build = false) + @test PSY.get_units_base(sys2) == "SYSTEM_BASE" end