Skip to content

Support ThreeWindingTransformer outages in NetworkModification#289

Draft
Copilot wants to merge 3 commits intomainfrom
copilot/support-three-winding-transformer-outages
Draft

Support ThreeWindingTransformer outages in NetworkModification#289
Copilot wants to merge 3 commits intomainfrom
copilot/support-three-winding-transformer-outages

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 14, 2026

Passing a PSY.ThreeWindingTransformer directly as an outage component errored, requiring users to manually construct internal ThreeWindingTransformerWinding objects. This PR auto-decomposes 3WT components into their winding arcs.

Description

Core changes (src/network_modification.jl)

  • _classify_outage_component! for PSY.ThreeWindingTransformer: Replace error with automatic decomposition into available winding arcs (skips unavailable windings)
  • NetworkModification(mat, ::PSY.ThreeWindingTransformer): New constructor for full transformer outage
  • _classify_branch_modification for PSY.ThreeWindingTransformer: New method decomposing into per-winding classification
  • Separate :transformer3w from :direct in arc classification: Compute Ybus delta directly via ybus_branch_entries(tr) instead of routing through _compute_arc_ybus_delta, which fails due to BA-matrix susceptance vs raw winding susceptance mismatch
  • Use get_name instead of PSY.get_name in classification info messages and the ACTransmission constructor — ThreeWindingTransformerWinding lacks a name field so PSY.get_name errors; PNM.get_name dispatches correctly for both regular branches and windings

Usage

sys = build_system(PSITestSystems, "case10_radial_series_reductions")
trf = first(get_components(ThreeWindingTransformer, sys))
vptdf = VirtualPTDF(sys)

# Full 3WT outage — previously errored
mod = NetworkModification(vptdf, trf)  # 3 arc modifications

# Single winding trip (partial outage)
w1 = ThreeWindingTransformerWinding(trf, 1)
mod_w1 = NetworkModification(vptdf, w1)  # 1 arc modification

# Via Outage supplemental attribute
outage = GeometricDistributionForcedOutage(; ...)
add_supplemental_attribute!(sys, trf, outage)
mod = NetworkModification(vptdf, sys, outage)  # works

Tests (test/test_network_modification.jl)

Four new test sets: full 3WT outage, single winding outage, partial outage with disabled winding, and outage via PSY.Outage supplemental attribute.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/FluxML/MacroTools.jl/tarball/1e0228a030642014fe5cfe68c2c0a818f9e3f522
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Blosc_jll.jl/tarball/535c80f1c0847a4c967ea945fca21becc9de1522
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/HDF5_jll.jl/tarball/45337643a2d97262d5fe72ce1f13e8a662d13d62
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Hwloc_jll.jl/tarball/baaaebd42ed9ee1bd9173cfd56910e55a8622ee1
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/IntelOpenMP_jll.jl/tarball/ec1debd61c300961f98064cfb21287613ad7f303
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Libiconv_jll.jl/tarball/be484f5c92fad0bd8acfef35fe017900b0b73809
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Lz4_jll.jl/tarball/191686b1ac1ea9c89fc52e996ad15d1d241d1e33
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MKL_jll.jl/tarball/282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MPIABI_jll.jl/tarball/fdc0f7ca9e7e645d1114b93c9eee98f352b59a0c
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MPICH_jll.jl/tarball/07dbec8aab01696edc0151a401a6cdfe95b9b885
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MPItrampoline_jll.jl/tarball/36c2d142e7d45fb98b5f83925213feb3292ca348
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/MicrosoftMPI_jll.jl/tarball/bc95bf4149bf535c09602e3acdf950d9b4376227
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenMPI_jll.jl/tarball/2f3d05e419b6125ffe06e55784102e99325bdbe2
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/SQLite_jll.jl/tarball/0b5f220f90642566b65ba86549d1ee4118ab2579
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/XML2_jll.jl/tarball/80d3930c6347cfce7ccf96bd3bafdf079d9c0390
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Xorg_libpciaccess_jll.jl/tarball/4909eb8f1cbf6bd4b1c30dd18b2ead9019ef2fad
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Zstd_jll.jl/tarball/446b23e73536f84e8037f5dce465e92275f6a308
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_auth_jll.jl/tarball/8cab83c96af80a1be968251ce1a0548a7545484d
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_cal_jll.jl/tarball/22c0f42f4a1f0dc5dcfa8fd267c4ac407c455e7a
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_common_jll.jl/tarball/a759cb9bf456ad792cc7898a81ae333cce9ef02a
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_compression_jll.jl/tarball/7910c72f45f44afd297c39fe43b99c56d5ed22ec
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_http_jll.jl/tarball/e358d5a001ef7afbd4f8c5225322512819cda2f2
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_io_jll.jl/tarball/7e481d474b2087ee8bbf55b81bf9119f21e396d9
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_s3_jll.jl/tarball/3e9917ab25114feba657e71be41cad068b9f6595
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_c_sdkutils_jll.jl/tarball/c43dfba2c1ab9ea9f02f2c80e86fa16f6460244e
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/aws_checksums_jll.jl/tarball/2570c8e23f4771a087b12a47edcaaa670ac05a01
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/dlfcn_win32_jll.jl/tarball/e141d67ffe550eadfb5af1bdbdaf138031e4805f
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/libaec_jll.jl/tarball/1411bc34c180946d3cef591de1384012afa6edee
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/mpif_jll.jl/tarball/653ea50df05f4df3913bc3c51f895127ae391b03
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/oneTBB_jll.jl/tarball/1350188a69a6e46f799d3945beef36435ed7262f
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/s2n_tls_jll.jl/tarball/6b99e06a3863de281da6ff0e193a5b3706349054
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/AbstractTrees.jl/tarball/2d9c9a55f9c93e8887ad391fbae72f8ef55e1177
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/DataStructures.jl/tarball/e86f4a2805f7f19bec5129bc9150c38208e5dc23
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/LeftChildRightSiblingTrees.jl/tarball/95ba48564903b43b2462318aa243ee79d81135ff
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/OrderedCollections.jl/tarball/05868e21324cede2207c6f0f466b4bfef6d5e7ee
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/SortingAlgorithms.jl/tarball/64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/CSV.jl/tarball/8d8e0b0f350b8e1c91420b5e64e5de774c2f0f4d
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/DataAPI.jl/tarball/abe83f3a2f1b857aac70ef8b269080af17764bbe
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/DataFrames.jl/tarball/5fab31e2e01e70ad66e3e24c968c264d1cf166d6
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/DataFramesMeta.jl/tarball/b0652fb7f3c094cf453bf22e699712a0bed9fc83
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/DelimitedFiles.jl/tarball/9e2f36d3c96a820c678f2f1f1782582fcf685bae
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/InvertedIndices.jl/tarball/6da3c4316095de0f5ee2ebd875df8721e7e0bdbe
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/Missings.jl/tarball/ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/Parsers.jl/tarball/7d2f8f21da5db6a806faf7b9b292296da42b2810
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/PooledArrays.jl/tarball/36d8b4b899628fb92c2749eb488d884a926614d3
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/SentinelArrays.jl/tarball/ebe7e59b37c400f694f52b58c93d26201387da70
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/StructTypes.jl/tarball/159331b30e94d7b11379037feeb9b690950cace8
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/TableMetadataTools.jl/tarball/c0405d3f8189bb9a9755e429c6ea2138fca7e31f
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/Tables.jl/tarball/f2c1efbc8f3a609aadf318094f8fc5204bdaf344
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/WeakRefStrings.jl/tarball/b1be2855ed9ed8eac54e5caff2afcdb442d52c23
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/YAML.jl/tarball/a1c0c7585346251353cddede21f180b96388c403
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDatabases/DBInterface.jl/tarball/a444404b3f94deaa43ca2a58e18153a82695282b
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDatabases/SQLite.jl/tarball/87b47a05946c50f44531b447b1f24968345316a4
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDocs/DocStringExtensions.jl/tarball/7442a5dfe1ebb773c29cc2962a8980f47221d76c
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaIO/Blosc.jl/tarball/310b77648d38c223d947ff3f50f511d08690b8d5
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaIO/CodecZlib.jl/tarball/962834c22b66e32aa10f7611c08c8ca4e20749a9
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaIO/HDF5.jl/tarball/491ea627ac824619f34168e29a0427a9e00e3e40
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaIO/HDF5.jl/tarball/d778420e524bcf56066e8c63c7aa315ae7269da2
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaIO/TranscodingStreams.jl/tarball/0c45878dcfdcfa8480052b6ab162cdd138781742
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaLang/Compat.jl/tarball/9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaLang/PrecompileTools.jl/tarball/07a921781cab75691315adc645096ed5e370cb77
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaLogging/ProgressLogging.jl/tarball/f0803bc1171e455a04124affa9c21bba5ac4db32
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaLogging/TerminalLoggers.jl/tarball/f133fab380933d042f6796eda4e130272ba520ca
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPackaging/JLLWrappers.jl/tarball/0533e564aae234aff59ab625543145446d8b6ec2
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPackaging/Preferences.jl/tarball/8b770b60760d4451834fe79dd483e318eee709c4
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPackaging/Requires.jl/tarball/62389eeff14780bfe55195b7204c0d8738436d64
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaParallel/MPI.jl/tarball/8e98d5d80b87403c311fd51e8455d4546ba7a5f8
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPhysics/Unitful.jl/tarball/57e1b2c9de4bd6f40ecb9de4ac1797b81970d008
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPlots/Plots.jl/tarball/5c3d09cc4f31f5fc6af001c250bf1278733100ff
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaServices/WorkerUtilities.jl/tarball/cd1659ba0d57b71a464a29e64dbc67cfe83d54e7
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaSparse/KLU.jl/tarball/07649c499349dad9f08dde4243a4c597064663e9
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaSparse/Pardiso.jl/tarball/eb95d6bbd64c54ebb506cdb09826f82d06bee92c
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/JuliaStats/Statistics.jl/tarball/ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/TimeSeries.jl/tarball/e1235a1906d1e6d27c30c35daa91fcf6fc271f08
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStrings/InlineStrings.jl/tarball/8f3d257792a522b4601c24a577954b0a8cd7334d
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStrings/LaTeXStrings.jl/tarball/dda21b8cbd6a6c40d9d02a73230f9d70fed6918c
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStrings/StringEncodings.jl/tarball/b765e46ba27ecf6b44faf70df40c57aa3a547dcb
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaTesting/Aqua.jl/tarball/d57fd255a8932b6509baf43284c416fc44d0b903
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/JuliaTesting/ExprTools.jl/tarball/27415f162e6028e81c72b82ef756bf321213b6ec
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaTesting/ReTest.jl/tarball/9a5136d157d1d6a2a56ff77bef1dc324e1313193
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/JuliaTesting/ReTest.jl/tarball/daf0743879904f0ad645ca6594e1479685f158a2
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/KristofferC/Crayons.jl/tarball/249fe38abf76d48563e2f4556bebd215aa317e15
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/KristofferC/TimerOutputs.jl/tarball/3748bd928e68c7c346b52125cf41fff0de6937d0
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/NREL-Sienna/InfrastructureSystems.jl/tarball/5c29a2a358755bceeb3233a7d8be778692a7e6c6
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/NREL-Sienna/PowerSystemCaseBuilder.jl/tarball/ab9a5d728e749ec85ced41617ae2014fdda59765
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (http block)
  • https://api.github.com/repos/NREL-Sienna/PowerSystems.jl/tarball/354c56b72404bfd2e4c1f364277512f9f549ce65
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/jkrumbiegel/Chain.jl/tarball/765487f32aeece2cf28aa7038e29c31060cb5a69
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/joshday/StringTemplates.jl/tarball/d78012ad7c6c22aba229a6363ec83ebc9ce5c135
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/jverzani/Mustache.jl/tarball/3cbd5dda543bc59f2e482607ccf84b633724fc32
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/nickrobinson251/PowerFlowData.jl/tarball/54d48d25e7d7511bbc8eb0ecff9e32f38c6f267c
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/queryverse/DataValueInterfaces.jl/tarball/bfc1187b79289637fa0ef6d4436ebdfe6905cbd6
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/queryverse/IteratorInterfaceExtensions.jl/tarball/a3f24677c21f5bbe9d2a714f95dcd58337fb2856
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/queryverse/TableTraits.jl/tarball/c06b2f539df1c6efa794486abfb6ed2022561a39
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/quinnj/JSON3.jl/tarball/411eccfe8aba0814ffa0fdf4860913ed09c34975
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/rofinn/FilePathsBase.jl/tarball/3bab2c5aa25e7840a4b065805c0cdfc01f3068d2
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/ronisbr/PrettyTables.jl/tarball/624de6279ab7d94fc9f672f0068107eb6619732c
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/ronisbr/StringManipulation.jl/tarball/d05693d339e37d6ab134c5ab53c29fce5ee5d7d5
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/simonster/Reexport.jl/tarball/45e428421666073eab6f2da5c9d310d99bb12f9b
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (http block)
  • pkg.julialang.org
    • Triggering command: /usr/bin/julia julia --project -e using Pkg; Pkg.instantiate() (dns block)
    • Triggering command: /usr/bin/julia julia --project=test -e using Pkg; Pkg.develop(path="."); Pkg.instantiate() --warn-overwrite=yes --color=auto - (dns block)
    • Triggering command: /usr/local/julia1.12.5/bin/julia /usr/local/julia1.12.5/bin/julia -C native -J/usr/local/julia1.12.5/lib/julia/sys.so -g1 --output-o /home/REDACTED/.julia/compiled/v1.12/MKL_jll/jl_kiOVxm --output-ji /home/REDACTED/.julia/compiled/v1.12/MKL_jll/jl_VotWNw --output-incremental=yes --startup-file=no --history-file=no --warn-overwrite=yes --color=auto - (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI and others added 2 commits April 14, 2026 19:23
- Replace error in _classify_outage_component! for PSY.ThreeWindingTransformer
  with automatic decomposition into available winding arcs
- Add NetworkModification(mat, branch::PSY.ThreeWindingTransformer) constructor
- Add _classify_branch_modification for PSY.ThreeWindingTransformer
- Handle 3WT Ybus delta directly via ybus_branch_entries to avoid
  BA-matrix vs winding susceptance mismatch
- Use get_name instead of PSY.get_name for ThreeWindingTransformerWinding compat

Agent-Logs-Url: https://github.com/NREL-Sienna/PowerNetworkMatrices.jl/sessions/7950c45a-eba1-4cd1-a6d6-3e4d6238e999

Co-authored-by: jd-lara <16385323+jd-lara@users.noreply.github.com>
Copilot AI changed the title [WIP] Add support for ThreeWindingTransformer in NetworkModification Support ThreeWindingTransformer outages in NetworkModification Apr 14, 2026
Copilot AI requested a review from jd-lara April 14, 2026 19:36
Comment on lines +273 to +277
push!(direct_mods, ArcModification(
arc_idx, -b_arc,
YBUS_ELTYPE(-Y11), YBUS_ELTYPE(-Y12),
YBUS_ELTYPE(-Y21), YBUS_ELTYPE(-Y22),
))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[JuliaFormatter] reported by reviewdog 🐶

Suggested change
push!(direct_mods, ArcModification(
arc_idx, -b_arc,
YBUS_ELTYPE(-Y11), YBUS_ELTYPE(-Y12),
YBUS_ELTYPE(-Y21), YBUS_ELTYPE(-Y22),
))
push!(
direct_mods,
ArcModification(
arc_idx, -b_arc,
YBUS_ELTYPE(-Y11), YBUS_ELTYPE(-Y12),
YBUS_ELTYPE(-Y21), YBUS_ELTYPE(-Y22),
),
)

if !get_equivalent_available(winding)
continue
end
append!(mods, _classify_branch_modification(nr, arc_lookup, arc_susceptances, winding))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[JuliaFormatter] reported by reviewdog 🐶

Suggested change
append!(mods, _classify_branch_modification(nr, arc_lookup, arc_susceptances, winding))
append!(
mods,
_classify_branch_modification(nr, arc_lookup, arc_susceptances, winding),
)

Comment on lines +445 to +449
return [ArcModification(
arc_idx, -b_arc,
YBUS_ELTYPE(-Y11), YBUS_ELTYPE(-Y12),
YBUS_ELTYPE(-Y21), YBUS_ELTYPE(-Y22),
)]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[JuliaFormatter] reported by reviewdog 🐶

Suggested change
return [ArcModification(
arc_idx, -b_arc,
YBUS_ELTYPE(-Y11), YBUS_ELTYPE(-Y12),
YBUS_ELTYPE(-Y21), YBUS_ELTYPE(-Y22),
)]
return [
ArcModification(
arc_idx, -b_arc,
YBUS_ELTYPE(-Y11), YBUS_ELTYPE(-Y12),
YBUS_ELTYPE(-Y21), YBUS_ELTYPE(-Y22),
),
]

@github-actions
Copy link
Copy Markdown
Contributor

Performance Results

Precompile Time

Main This Branch Delta
2.091 s 2.135 s +2.1%

Execution Time

Test Main This Branch Delta
matpower_ACTIVSg2000_sys-Build PTDF First 2.122 s 2.114 s -0.4%
matpower_ACTIVSg2000_sys-Build PTDF Second 114.5 ms 77.9 ms -32.0%
matpower_ACTIVSg2000_sys-Build Ybus First 13.6 ms 16.8 ms +23.9%
matpower_ACTIVSg2000_sys-Build Ybus Second 11.9 ms 12.9 ms +8.8%
matpower_ACTIVSg2000_sys-Build LODF First 154.1 ms 181.9 ms +18.1%
matpower_ACTIVSg2000_sys-Build LODF Second 216.8 ms 230.3 ms +6.2%
matpower_ACTIVSg2000_sys-Build VirtualMODF First 3.955 s 4.893 s +23.7%
matpower_ACTIVSg2000_sys-Build VirtualMODF Second 211.3 ms 763.8 ms +261.5%
matpower_ACTIVSg2000_sys-VirtualMODF Query 10 rows 477.9 ms 472.2 ms -1.2%
matpower_ACTIVSg2000_sys-Radial network reduction First 573.1 ms 565.6 ms -1.3%
matpower_ACTIVSg2000_sys-Radial network reduction Second 6.7 ms 7.9 ms +18.6%
matpower_ACTIVSg2000_sys-Degree two network reduction First 1.961 s 1.927 s -1.7%
matpower_ACTIVSg2000_sys-Degree two network reduction Second 1.2 ms 1.1 ms -6.7%
Base_Eastern_Interconnect_515GW-Build Ybus First 3.762 s 3.68 s -2.2%
Base_Eastern_Interconnect_515GW-Build Ybus Second 3.491 s 3.704 s +6.1%
Base_Eastern_Interconnect_515GW-Radial network reduction First 8.513 s 8.463 s -0.6%
Base_Eastern_Interconnect_515GW-Radial network reduction Second 8.497 s 8.451 s -0.5%
Base_Eastern_Interconnect_515GW-Degree two network reduction First 381.4 ms 351.8 ms -7.8%
Base_Eastern_Interconnect_515GW-Degree two network reduction Second 48.1 ms 41.8 ms -13.0%

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 14, 2026

Codecov Report

❌ Patch coverage is 92.30769% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 79.67%. Comparing base (abede1d) to head (bcfc2a4).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
src/network_modification.jl 92.30% 3 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##            main     #289       +/-   ##
==========================================
+ Coverage   0.07%   79.67%   +79.59%     
==========================================
  Files         38       38               
  Lines       3778     3794       +16     
==========================================
+ Hits           3     3023     +3020     
+ Misses      3775      771     -3004     
Flag Coverage Δ
unittests 79.67% <92.30%> (+79.59%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/network_modification.jl 83.09% <92.30%> (+83.09%) ⬆️

... and 35 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support ThreeWindingTransformer outages in NetworkModification

2 participants