@@ -28,6 +28,8 @@ const pmd_ravens_asset_types = String[
2828]
2929
3030
31+
32+
3133function transform_data_model_ravens (
3234 data:: Dict{String,<:Any} ;
3335 kron_reduce:: Bool = true ,
@@ -53,6 +55,8 @@ function transform_data_model_ravens(
5355
5456 correct_network_data && correct_network_data! (data_math; make_pu= make_pu, make_pu_extensions= make_pu_extensions)
5557
58+ data_math[" switch_close_actions_ub" ] = Inf
59+
5660 return data_math
5761
5862end
@@ -74,12 +78,13 @@ function _map_ravens2math(
7478 add_base_voltages! (_data_ravens; overwrite= false )
7579
7680 # TODO : Add settings (defaults)
77- basemva = 1
81+ basemva = 100
7882 _settings = Dict (" sbase_default" => basemva * 1e3 ,
7983 " voltage_scale_factor" => 1e3 ,
80- " power_scale_factor" => 1e3 ,
84+ " power_scale_factor" => 1000 ,
8185 " base_frequency" => get (_data_ravens, " BaseFrequency" , 60.0 ),
8286 " vbases_default" => Dict {String,Real} (),
87+ " vnom_kv" => Dict {String,Real} ()
8388 )
8489
8590 # Multinetwork
@@ -92,6 +97,7 @@ function _map_ravens2math(
9297 )
9398
9499 if haskey (data_ravens, " BasicIntervalSchedule" )
100+ # ("yes it has BasicIntervalSchedule")
95101 schdls = get (data_ravens, " BasicIntervalSchedule" , Dict {String,Any} ()) # Get schedules/timeseries
96102
97103 # Check for shortest timeseries. Use that length for mn
@@ -126,6 +132,7 @@ function _map_ravens2math(
126132 " time_elapsed" => get (_data_ravens, " time_elapsed" , 1.0 ),
127133 )
128134 )
135+
129136
130137 # Store nw dict in vector
131138 nws_vect[n] = nw_dict
@@ -284,7 +291,12 @@ function _map_ravens2math_conductor!(data_math::Dict{String,<:Any}, data_ravens:
284291
285292 for (name, ravens_obj) in get (conductors, " ACLineSegment" , Dict {Any,Dict{String,Any}} ())
286293 math_obj = _init_math_obj_ravens (" ACLineSegment" , name, ravens_obj, length (data_math[" branch" ]) + 1 ; pass_props= pass_props)
287- nconds = length (ravens_obj[" ACLineSegment.ACLineSegmentPhase" ]) # number of conductors/wires
294+ nconds = 0
295+ try
296+ nconds = length (ravens_obj[" ACLineSegment.ACLineSegmentPhase" ]) # number of conductors/wires
297+ catch
298+ nconds = 1
299+ end
288300 nphases = 0 # init number of phases
289301 terminals = ravens_obj[" ConductingEquipment.Terminals" ]
290302
@@ -330,6 +342,7 @@ function _map_ravens2math_conductor!(data_math::Dict{String,<:Any}, data_ravens:
330342
331343 math_obj[" br_r" ] = _impedance_conversion_ravens (impedance_data, ravens_obj, " PhaseImpedanceData.r" )
332344 math_obj[" br_x" ] = _impedance_conversion_ravens (impedance_data, ravens_obj, " PhaseImpedanceData.x" )
345+ # println("br_r = ", math_obj["br_r"])
333346
334347 for (key, param) in [(" b_fr" , " PhaseImpedanceData.b" ), (" b_to" , " PhaseImpedanceData.b" ), (" g_fr" , " PhaseImpedanceData.g" ), (" g_to" , " PhaseImpedanceData.g" )]
335348 math_obj[key] = _admittance_conversion_ravens (impedance_data, ravens_obj, param)
@@ -360,7 +373,7 @@ function _map_ravens2math_conductor!(data_math::Dict{String,<:Any}, data_ravens:
360373
361374 # angular frequency
362375 ω = 2 π * base_freq
363- ω₀ = 2 π * base_freq
376+ ω_θ = 2 π * base_freq
364377
365378 # Get data for each specific ACLineSegmentPhase
366379 segmentphase_data = ravens_obj[" ACLineSegment.ACLineSegmentPhase" ]
@@ -462,7 +475,7 @@ function _map_ravens2math_conductor!(data_math::Dict{String,<:Any}, data_ravens:
462475 nconds,
463476 earth_model,
464477 rac,
465- ω₀ ,
478+ ω_θ ,
466479 rdc,
467480 rho,
468481 nphases,
@@ -1274,9 +1287,11 @@ function _map_ravens2math_energy_consumer!(data_math::Dict{String,<:Any}, data_r
12741287 if nphases >= 3
12751288 math_obj[" vnom_kv" ] = (base_voltage / voltage_scale_factor_sqrt3)
12761289 else
1277- math_obj[" vnom_kv" ] = (base_voltage / voltage_scale_factor)
1290+ math_obj[" vnom_kv" ] = (base_voltage / voltage_scale_factor)
12781291 end
12791292
1293+ println (" vnom_kv = " , math_obj[" vnom_kv" ])
1294+
12801295 # Set p and q (w/ multinetwork support)
12811296 if nw== 0
12821297 math_obj[" pd" ] = fill (get (ravens_obj, " EnergyConsumer.p" , 0.0 ) / (power_scale_factor* nphases), nphases)
@@ -1296,8 +1311,8 @@ function _map_ravens2math_energy_consumer!(data_math::Dict{String,<:Any}, data_r
12961311 reactive_power[id] = get (phase_info, " EnergyConsumerPhase.q" , 0.0 )
12971312 end
12981313 else
1299- active_power = fill (get (ravens_obj, " EnergyConsumer.p" , 0.0 ) / (power_scale_factor * nphases), nphases)
1300- reactive_power = fill (get (ravens_obj, " EnergyConsumer.q" , 0.0 ) / (power_scale_factor * nphases), nphases)
1314+ active_power = fill (get (ravens_obj, " EnergyConsumer.p" , 0.0 ) / (nphases), nphases)
1315+ reactive_power = fill (get (ravens_obj, " EnergyConsumer.q" , 0.0 ) / (nphases), nphases)
13011316 end
13021317
13031318 schdl_name = _extract_name (ravens_obj[" EnergyConsumer.LoadProfile" ])
@@ -1340,9 +1355,10 @@ function _map_ravens2math_energy_consumer!(data_math::Dict{String,<:Any}, data_r
13401355
13411356 # Multipliers instead of actual values
13421357 if haskey (schdl, " BasicIntervalSchedule.value1Unit" )
1343- math_obj[" pd" ] = get (schdl[" EnergyConsumerSchedule.RegularTimePoints" ][nw], " RegularTimePoint.value1" , 1.0 ) .* active_power ./ power_scale_factor
1344- math_obj[" qd" ] = get (schdl[" EnergyConsumerSchedule.RegularTimePoints" ][nw], " RegularTimePoint.value1" , 1.0 ) .* reactive_power ./ power_scale_factor
1358+ math_obj[" pd" ] = Float64 .( get (schdl[" EnergyConsumerSchedule.RegularTimePoints" ][nw], " RegularTimePoint.value1" , 1.0 ) .* active_power ./ power_scale_factor)
1359+ math_obj[" qd" ] = Float64 .( get (schdl[" EnergyConsumerSchedule.RegularTimePoints" ][nw], " RegularTimePoint.value1" , 1.0 ) .* reactive_power ./ power_scale_factor)
13451360 end
1361+ # println(math_obj["pd"], "... ...", math_obj["qd"])
13461362
13471363 else
13481364 @error (" No timeseries, load forecast or multinetwork information found!" )
@@ -1394,6 +1410,8 @@ function _map_ravens2math_energy_consumer!(data_math::Dict{String,<:Any}, data_r
13941410 " to" => " load.$(math_obj[" index" ]) " ,
13951411 " unmap_function" => " _map_math2eng_load!" ,
13961412 ))
1413+ push! (data_math[" settings" ][" vnom_kv" ], string (math_obj[" load_bus" ]) => math_obj[" vnom_kv" ])
1414+
13971415 end
13981416end
13991417
@@ -1458,9 +1476,11 @@ function _map_ravens2math_energy_source!(data_math::Dict{String,<:Any}, data_rav
14581476 if haskey (ravens_obj, " ConductingEquipment.BaseVoltage" )
14591477 base_voltage_ref = _extract_name (ravens_obj[" ConductingEquipment.BaseVoltage" ])
14601478 vnom = data_ravens[" BaseVoltage" ][base_voltage_ref][" BaseVoltage.nominalVoltage" ] / sqrt (nconductors)
1479+ println (" vnom = " , vnom)
14611480 data_math[" settings" ][" vbases_default" ][connectivity_node] = vnom / voltage_scale_factor
14621481 else
14631482 vnom = ravens_obj[" EnergySource.nominalVoltage" ] / sqrt (nconductors)
1483+ println (" vnom = " , vnom)
14641484 data_math[" settings" ][" vbases_default" ][connectivity_node] = vnom / voltage_scale_factor
14651485 end
14661486
@@ -1489,6 +1509,7 @@ function _map_ravens2math_energy_source!(data_math::Dict{String,<:Any}, data_rav
14891509 # Check for impedance and adjust bus type if necessary
14901510 map_to = " gen.$(math_obj[" index" ]) "
14911511 if ! all (isapprox .(rs, 0 )) && ! all (isapprox .(xs, 0 ))
1512+ # if 2>1
14921513 bus_conn[" bus_type" ] = 1 # Virtual bus becomes the new slack bus
14931514
14941515 bus_obj = Dict (
@@ -1557,7 +1578,9 @@ function _map_ravens2math_energy_source!(data_math::Dict{String,<:Any}, data_rav
15571578 " to" => map_to,
15581579 " unmap_function" => " _map_math2eng_voltage_source!" ,
15591580 ))
1581+ push! (data_math[" settings" ][" vnom_kv" ], string (math_obj[" gen_bus" ]) => vnom / voltage_scale_factor_sqrt3)
15601582 end
1583+
15611584end
15621585
15631586
@@ -1663,6 +1686,7 @@ function _map_ravens2math_rotating_machine!(data_math::Dict{String,<:Any}, data_
16631686 " to" => " gen.$(math_obj[" index" ]) " ,
16641687 " unmap_function" => " _map_math2eng_generator!" ,
16651688 ))
1689+ push! (data_math[" settings" ][" vnom_kv" ], string (math_obj[" gen_bus" ]) => math_obj[" vbase" ])
16661690 end
16671691
16681692 end
0 commit comments