diff --git a/src/psse_exporter/compare_psse_results.jl b/src/psse_exporter/compare_psse_results.jl deleted file mode 100644 index d3a35664..00000000 --- a/src/psse_exporter/compare_psse_results.jl +++ /dev/null @@ -1,105 +0,0 @@ -# NOTE this is a standalone script -- neither a part of the library codebase nor a part of the standard test suite. -# Invoke with `include("path/to/compare_psse_results.jl")` in an appropriate environment. -# TODO remove when superseded by encapsulated utility functions and/or standard test suite. - -using Revise -using Logging -using DataFrames - -using PowerSystems -using PowerSystemCaseBuilder -using PowerFlows - -const PF = PowerFlows - -function PowerSystems.get_reactive_power_limits(gen::RenewableNonDispatch) - gen_pf = get_power_factor(gen) - - gen_q = get_max_active_power(gen) * sqrt((1 / gen_pf^2) - 1) - - return (min = 0.0, max = gen_q) -end - -# Import test cases -# sys = build_system(PSIDSystems, "WECC 240 Bus") -file_dir = joinpath(PF.DATA_DIR, "twofortybus", "Marenas") -sys = with_logger(SimpleLogger(Error)) do # Suppress system loading warnings - System(joinpath(file_dir, "system_240[32].json")) -end -set_units_base_system!(sys, UnitSystem.SYSTEM_BASE) - -# Load from .raw file (this gets written in `test_powerflow.jl`) -file_dir2 = joinpath(PF.DATA_DIR, "export", "Raw_Export", "basic", "2024") -sys2 = with_logger(SimpleLogger(Error)) do # Suppress system loading warnings - System(joinpath(file_dir2, "basic.raw")) -end -set_units_base_system!(sys2, UnitSystem.SYSTEM_BASE) - -# DC Powerflow testing -orig_results = solve_powerflow(DCPowerFlow(), sys) -old_bus_results = PF.Bus_states(sys) -old_branch_results = PF.Branch_states(sys) -orig_flow_results = - sort!(orig_results["1"]["flow_results"], [:bus_from, :bus_to, :line_name]) -orig_bus_results = orig_results["1"]["bus_results"] - -psse_bus_results = PF.Bus_states(sys2) -psse_branch_results = PF.Branch_states(sys2) -new_results = solve_powerflow(DCPowerFlow(), sys2) -new_flows = sort!(new_results["1"]["flow_results"], [:bus_from, :bus_to, :line_name]) -new_bus_results = new_results["1"]["bus_results"] - -# Getter functions compare -# @show del_Vm = old_bus_results[!, [:bus_number, :Vm]] .- psse_bus_results[!, [:bus_number, :Vm]] # e-6 -# @show del_θ = old_bus_results[!, [:bus_number, :θ]] .- psse_bus_results[!, [:bus_number, :θ]] # e-7 -# @show del_P_flow = old_branch_results[!, [:bus_from, :bus_to, :P_to_from]] .- psse_branch_results[!, [:bus_from, :bus_to, :P_to_from]] # not the same -# @show del_Q_flow = orig_flow_results[!, [:bus_from, :bus_to, :Q_to_from]] .- psse_branch_results[!, [:bus_from, :bus_to, :Q_to_from]] # same - -# DC Powerflow results compare -# @show del_Vm = orig_bus_results[!, [:bus_number, :Vm]] .- new_bus_results[!, [:bus_number, :Vm]] #e -6 -# @show del_θ = orig_bus_results[!, [:bus_number, :θ]] .- new_bus_results[!, [:bus_number, :θ]] # e-15 -# @show del_P_gen = orig_bus_results[!, [:bus_number, :P_gen]] .- new_bus_results[!, [:bus_number, :P_gen]] # e-6 -# @show del_P_load = orig_bus_results[!, [:bus_number, :P_load]] .- new_bus_results[!, [:bus_number, :P_load]] # same -# @show del_P_net = orig_bus_results[!, [:bus_number, :P_net]] .- new_bus_results[!, [:bus_number, :P_net]] # e-6 -# @show del_P_flow = orig_flow_results[!, [:bus_from, :bus_to, :P_to_from]] .- new_flows[!, [:bus_from, :bus_to, :P_to_from]] # e-12 -# @show del_Q_flow = orig_flow_results[!, [:bus_from, :bus_to, :Q_to_from]] .- new_flows[!, [:bus_from, :bus_to, :Q_to_from]] # same - -# AC Powerflow testing -orig_ac_results = solve_ac_powerflow!(sys) -orig_y_bus = - PowerFlows.PowerFlowData( - ACPowerFlow(), - sys; - check_connectivity = true, - ).power_network_matrix.data - -new_ac_results = solve_ac_powerflow!(sys2) -new_y_bus = - PowerFlows.PowerFlowData( - ACPowerFlow(), - sys2; - check_connectivity = true, - ).power_network_matrix.data - -del_y_bus = findall(orig_y_bus .!= new_y_bus) - -quant_del_y_bus = DataFrame(; Real = Float64[], Imag = Float64[]) -for i in del_y_bus - del_r = real(orig_y_bus[i] - new_y_bus[i]) - del_i = imag(orig_y_bus[i] - new_y_bus[i]) - push!(quant_del_y_bus, [del_r, del_i]) -end - -@show quant_del_y_bus - -# gen_busses = ThermalStandard_states(sys2) -# show(gen_busses, allrows=true) - -# gen_busses = sort!(append!(Generator_states(sys), Source_states(sys)), [:bus_number, :active_power]) -# show(gen_busses, allrows=true) - -available_gens = - DataFrame("gen_name" => collect(get_name.(get_components(RenewableNonDispatch, sys)))) -show(available_gens; allrows = true) - -print(get_component(Source, sys, "generator-4242-ND")) diff --git a/src/psse_exporter/support_tools.jl b/src/psse_exporter/support_tools.jl index 349fed85..4e55912c 100644 --- a/src/psse_exporter/support_tools.jl +++ b/src/psse_exporter/support_tools.jl @@ -1,3 +1,5 @@ +# Old test helper functions, soon to be deleted + function Bus_states(sys::System) buses = collect(PSY.get_components(PSY.Bus, sys)) return sort( diff --git a/src/psse_exporter/test_powerflow.jl b/src/psse_exporter/test_powerflow.jl deleted file mode 100644 index c4cade41..00000000 --- a/src/psse_exporter/test_powerflow.jl +++ /dev/null @@ -1,143 +0,0 @@ -# NOTE this is a standalone script -- neither a part of the library codebase nor a part of the standard test suite. -# Invoke with `include("path/to/test_powerflow.jl")` in an appropriate environment. -# TODO remove when superseded by encapsulated utility functions and/or standard test suite. - -using Revise -using Logging - -using PowerSystems -using PowerSystemCaseBuilder -using PowerFlows - -const PF = PowerFlows - -# Load test system -#show_systems() -# sys = build_system(PSSEParsingTestSystems, "pti_case3_sys") - -# sys = build_system(PSIDSystems, "psid_11bus_andes") -# andes_loads = collect(get_name.(get_components(StandardLoad, sys))) -# andes_load = get_component(StandardLoad, sys, "load91") - -# sys = System(joinpath(file_dir, "PSCAD_VALIDATION_RAW.raw"); bus_name_formatter = x -> strip(string(x["name"])) * "-" * string(x["index"])) -# sys = build_system(PSIDSystems, "WECC 240 Bus") - -file_dir = joinpath(PF.DATA_DIR, "twofortybus", "Marenas") -sys = with_logger(SimpleLogger(Error)) do # Suppress system loading warnings - System(joinpath(file_dir, "system_240[32].json")) -end - -set_units_base_system!(sys, UnitSystem.SYSTEM_BASE) - -tfy_therms = sort!(collect(get_name.(get_components(ThermalStandard, sys)))) -tfy_re_gen = get_component(RenewableDispatch, sys, "generator-2911-S-gfl") -#set_units_base_system!(sys, UnitSystem.NATURAL_UNITS) -tfy_therm_gen = get_component(ThermalStandard, sys, "generator-1436-C") -#set_units_base_system!(sys, UnitSystem.DEVICE_BASE) -tfy_therm_gen = get_component(ThermalStandard, sys, "generator-1431-N") -tfy_oad = get_component(StandardLoad, sys, "load12021") - -# Solve powerlfow and get results -orig_results = solve_powerflow(DCPowerFlow(), sys) -orig_flows = sort!(orig_results["1"]["flow_results"], [:bus_from, :bus_to, :line_name]) -orig_buss_results = orig_results["1"]["bus_results"] - -busses_before = PF.Bus_states(sys) -lines_before = PF.Line_states(sys) -loads_before = PF.StandardLoad_states(sys) -fixed_admit_before = PF.FixedAdmittance_states(sys) -therm_gens_before = PF.ThermalStandard_states(sys) -gens_before = - sort!( - append!(PF.Generator_states(sys), PF.Source_states(sys)), - [:bus_number, :active_power], - ) -xfmrs_before = sort!( - append!(PF.Transformer2W_states(sys), PF.TapTransformer_states(sys)), - [:from_bus, :to_bus], -) -shunt_before = PF.FixedAdmittance_states(sys) - -# Write to .raw file -PF.Write_Sienna2PSSE( - sys, - "basic", - 2024; - export_location = joinpath(PF.DATA_DIR, "export"), - v33 = true, -) - -# Load from .raw file -file_dir2 = joinpath(PF.DATA_DIR, "export", "Raw_Export", "basic", "2024") -# sys2 = System(joinpath(file_dir2, "basic.raw")) -sys2 = with_logger(SimpleLogger(Error)) do # Suppress system loading warnings - System(joinpath(file_dir2, "basic.raw")) -end -set_units_base_system!(sys, UnitSystem.SYSTEM_BASE) -# Solve popwerflpw and get new results -new_results = solve_powerflow(DCPowerFlow(), sys2) -new_flows = sort!(new_results["1"]["flow_results"], [:bus_from, :bus_to, :line_name]) -new_bus_results = new_results["1"]["bus_results"] - -busses_after = PF.Bus_states(sys2) -lines_after = PF.Line_states(sys2) -loads_after = PF.StandardLoad_states(sys2) -therm_gens_after = PF.ThermalStandard_states(sys2) -gens_after = PF.Generator_states(sys2) -xfmrs_after = sort!( - append!(PF.Transformer2W_states(sys2), PF.TapTransformer_states(sys2)), - [:from_bus, :to_bus], -) -shunt_after = PF.FixedAdmittance_states(sys2) - -# Compare results -# println("Orig:", orig_flows) -# println("New:", new_flows) - -# println("Orig Gen:", gens_before) -# println("New Gen:", gens_after) - -# println("Orig Gen:", therm_gens_before) -# println("New Gen:", therm_gens_after) - -# println("Orig Xfmr:", xfmrs_before) -# println("New Xfmr:", xfmrs_after) - -println("Orig Line:", lines_before) -println("New Lines:", lines_after) - -# println("Orig Loads:", loads_before) -# println("New Loads:", loads_after) - -# println("Orig Bus:", orig_buss_results) -# println("New Bus:", new_bus_results) - -orig_compare = PF.compare_begin_to_final(orig_flows, new_flows) -bus_compare = PF.compare_begin_to_final(orig_buss_results, new_bus_results) -line_compare = PF.compare_begin_to_final(lines_before, lines_after) -load_compare = PF.compare_begin_to_final(loads_before, loads_after) -gens_compare = PF.compare_begin_to_final(gens_before, gens_after) -# therm_gens_compare = PF.compare_begin_to_final(therm_gens_before, therm_gens_after) -# xfmr_compare = PF.compare_begin_to_final(xfmrs_before, xfmrs_after) -shunt_compare = PF.compare_begin_to_final(shunt_before, shunt_after) - -println("Flow Results:", orig_compare[!, 17:end]) #e-12 error -# println("Bus Results:", bus_compare[!, 17:end]) # e-15 error -# println("Lines:", line_compare[!, 12:end]) #!!! NO REAL AND REACTIVE POWER FLOW -# println("Loads:", load_compare[!, 15:end]) # 100% Match -# println("Gens:", gens_compare[!, 9:end]) #e-15 err -# println("Xfmrs:", xfmr_compare[!, 11:end]) # !!! NO REAL AND REACTIVE POWER FLOW -# println("Fixed Admit:", shunt_compare) # 100% Match - -#set_units_base_system!(sys, PSY.IS.UnitSystem.SYSTEM_BASE) -# set_units_base_system!(sys, PSY.IS.UnitSystem.NATURAL_UNITS) -# @show sum(collect(get_active_power.(get_available_components(Generator, sys)))) -# @show sum(collect(get_active_power.(get_available_components(Generator, sys2)))) -# @show sum(collect(get_reactive_power.(get_available_components(Generator, sys)))) -# @show sum(collect(get_reactive_power.(get_available_components(Generator, sys2)))) -# @show sum(collect(get_constant_active_power.(get_available_components(StandardLoad, sys)))) -# @show sum(collect(get_constant_active_power.(get_available_components(StandardLoad, sys2)))) -# @show sum(collect(get_constant_reactive_power.(get_available_components(StandardLoad, sys)))) -# @show sum(collect(get_constant_reactive_power.(get_available_components(StandardLoad, sys2)))) - -# @show sum(collect(get_max_active_power.(get_available_components(Generator, sys2))))