@@ -193,10 +193,19 @@ function find_voltages(data::Dict{String,<:Any})::Dict{String,Any}
193193 for (i, tr) in _recursive_dict_get (data, [" PowerSystemResource" , " Equipment" , " ConductingEquipment" , " PowerTransformer" ], Dict ())
194194 info_name = match (Regex (" TransformerTankInfo::'(.*)'" ), get (get (tr, " PowerTransformer.TransformerTank" , [Dict ()])[1 ], " PowerSystemResource.AssetDatasheet" , " TransformerTankInfo::''" )). captures[1 ]
195195 trinfos = _recursive_dict_get (data, [" AssetInfo" , " PowerTransformerInfo" , info_name, " PowerTransformerInfo.TransformerTankInfos" , info_name, " TransformerTankInfo.TransformerEndInfos" ], [])
196+
197+ # Corrects voltage ratios for TransformerTanks with Single-phase Tanks datasheets
198+ voltage_ratios = ones (length (tr[" ConductingEquipment.Terminals" ]))
199+ for wdg_id in 1 : 1 : length (tr[" ConductingEquipment.Terminals" ])
200+ conns = length (_phasecode_map[tr[" ConductingEquipment.Terminals" ][wdg_id][" Terminal.phases" ]])
201+ voltage_ratios[wdg_id] = conns >= 3 ? sqrt (3 ) : 1.0
202+ end
203+
196204 rated_u = merge (
197- filter (x -> ! ismissing (x. second), Dict (get (trinfo, " TransformerEndInfo.endNumber" , n) => get (trinfo, " TransformerEndInfo.ratedU" , missing ) for (n, trinfo) in enumerate (trinfos))),
205+ filter (x -> ! ismissing (x. second), Dict (get (trinfo, " TransformerEndInfo.endNumber" , n) => get (trinfo, " TransformerEndInfo.ratedU" , missing ) * voltage_ratios[n] for (n, trinfo) in enumerate (trinfos))),
198206 filter (x -> ! ismissing (x. second), Dict (get (pte, " endNumber" , n) => get (pte, " PowerTransformerEnd.ratedU" , missing ) for (n, pte) in enumerate (get (tr, " PowerTransformer.PowerTransformerEnd" , []))))
199207 )
208+
200209 for (n, term) in enumerate (get (tr, " ConductingEquipment.Terminals" , []))
201210 voltages[match (Regex (" ConnectivityNode::'(.+)'" ), term[" Terminal.ConnectivityNode" ]). captures[1 ]] = get (rated_u, n, missing )
202211 end
0 commit comments