Skip to content

Commit 2357f80

Browse files
Compile version-specific functions (#57)
1 parent 3ecca18 commit 2357f80

File tree

1 file changed

+66
-68
lines changed

1 file changed

+66
-68
lines changed

src/parsing.jl

Lines changed: 66 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -34,81 +34,79 @@ function parse_network(source; v::Union{Integer,Nothing}=nothing)
3434
@debug 1 "Set version = $version"
3535

3636
# Skip the 2 lines of comments
37-
# TODO: confirm it is always only and exactly 2 lines of comments
3837
pos = next_line(bytes, pos, len)
3938
pos = next_line(bytes, pos, len)
4039
@debug 1 "Parsed comments: pos = $pos"
41-
42-
BusesV = ifelse(is_v33, Buses33, Buses30)
43-
buses, pos = parse_records!(BusesV(len÷1000), bytes, pos, len, OPTIONS)
44-
nbuses = length(buses)
45-
@debug 1 "Parsed Buses: nrows = $nbuses, pos = $pos"
46-
47-
loads, pos = parse_records!(Loads(nbuses), bytes, pos, len, OPTIONS)
48-
@debug 1 "Parsed Loads: nrows = $(length(loads)), pos = $pos"
49-
50-
if is_v33
51-
fixed_shunts, pos = parse_records!(FixedShunts(), bytes, pos, len, OPTIONS)
52-
@debug 1 "Parsed FixedShunts: nrows = $(length(fixed_shunts)), pos = $pos"
40+
return if is_v33
41+
parse_network33(source, version, caseid, bytes, pos, len, OPTIONS)
5342
else
54-
fixed_shunts = nothing
43+
parse_network30(source, version, caseid, bytes, pos, len, OPTIONS)
5544
end
45+
end
5646

57-
gens, pos = parse_records!(Generators(nbuses÷10), bytes, pos, len, OPTIONS)
47+
function parse_network33(source, version, caseid, bytes, pos, len, options)
48+
buses, pos = parse_records!(Buses33(len÷1000), bytes, pos, len, options)
49+
nbuses = length(buses)
50+
loads, pos = parse_records!(Loads(nbuses), bytes, pos, len, options)
51+
fixed_shunts, pos = parse_records!(FixedShunts(), bytes, pos, len, options)
52+
gens, pos = parse_records!(Generators(nbuses÷10), bytes, pos, len, options)
5853
ngens = length(gens)
59-
@debug 1 "Parsed Generators: nrows = $ngens, pos = $pos"
60-
61-
BranchesV = ifelse(is_v33, Branches33, Branches30)
62-
branches, pos = parse_records!(BranchesV(nbuses), bytes, pos, len, OPTIONS)
63-
@debug 1 "Parsed Branches: nrows = $(length(branches)), pos = $pos"
64-
65-
transformers, pos = parse_records!(Transformers(ngens*2), bytes, pos, len, OPTIONS)
66-
@debug 1 "Parsed Transformers: nrows = $(length(transformers)), pos = $pos"
67-
68-
interchanges, pos = parse_records!(AreaInterchanges(), bytes, pos, len, OPTIONS)
69-
@debug 1 "Parsed AreaInterchanges: nrows = $(length(interchanges)), pos = $pos"
70-
71-
TwoTerminalV = ifelse(is_v33, TwoTerminalDCLines33, TwoTerminalDCLines30)
72-
two_terminal_dc, pos = parse_records!(TwoTerminalV(), bytes, pos, len, OPTIONS)
73-
@debug 1 "Parsed TwoTerminalDCLines: nrows = $(length(two_terminal_dc)), pos = $pos"
74-
75-
vsc_dc, pos = parse_records!(VSCDCLines(), bytes, pos, len, OPTIONS)
76-
@debug 1 "Parsed VSCDCLines: nrows = $(length(vsc_dc)), pos = $pos"
77-
78-
if !is_v33
79-
switched_shunts, pos = parse_records!(SwitchedShunts30(nbuses÷11), bytes, pos, len, OPTIONS)
80-
@debug 1 "Parsed SwitchedShunts: nrows = $(length(switched_shunts)), pos = $pos"
81-
end
82-
83-
impedance_corrections, pos = parse_records!(ImpedanceCorrections(), bytes, pos, len, OPTIONS)
84-
@debug 1 "Parsed ImpedanceCorrections: nrows = $(length(impedance_corrections)), pos = $pos"
85-
86-
I = is_v33 ? DCLineID33 : DCLineID30
87-
multi_terminal_dc, pos = parse_records!(MultiTerminalDCLines{I}(), bytes, pos, len, OPTIONS)
88-
@debug 1 "Parsed MultiTerminalDCLines: nrows = $(length(multi_terminal_dc)), pos = $pos"
89-
90-
MultiSectionLineGroupsV = is_v33 ? MultiSectionLineGroups33 : MultiSectionLineGroups30
91-
multi_section_lines, pos = parse_records!(MultiSectionLineGroupsV(), bytes, pos, len, OPTIONS)
92-
@debug 1 "Parsed MultiSectionLineGroups: nrows = $(length(multi_section_lines)), pos = $pos"
93-
94-
zones, pos = parse_records!(Zones(), bytes, pos, len, OPTIONS)
95-
@debug 1 "Parsed Zones: nrows = $(length(zones)), pos = $pos"
96-
97-
area_transfers, pos = parse_records!(InterAreaTransfers(), bytes, pos, len, OPTIONS)
98-
@debug 1 "Parsed InterAreaTransfers: nrows = $(length(area_transfers)), pos = $pos"
99-
100-
owners, pos = parse_records!(Owners(), bytes, pos, len, OPTIONS)
101-
@debug 1 "Parsed Owners: nrows = $(length(owners)), pos = $pos"
102-
103-
FACTSDevicesV = ifelse(is_v33, FACTSDevices33, FACTSDevices30)
104-
facts, pos = parse_records!(FACTSDevicesV(), bytes, pos, len, OPTIONS)
105-
@debug 1 "Parsed FACTSDevices: nrows = $(length(facts)), pos = $pos"
106-
107-
if is_v33
108-
switched_shunts, pos = parse_records!(SwitchedShunts33(nbuses÷11), bytes, pos, len, OPTIONS)
109-
@debug 1 "Parsed SwitchedShunts: nrows = $(length(switched_shunts)), pos = $pos"
110-
end
54+
branches, pos = parse_records!(Branches33(nbuses), bytes, pos, len, options)
55+
transformers, pos = parse_records!(Transformers(ngens*2), bytes, pos, len, options)
56+
interchanges, pos = parse_records!(AreaInterchanges(), bytes, pos, len, options)
57+
two_terminal_dc, pos = parse_records!(TwoTerminalDCLines33(), bytes, pos, len, options)
58+
vsc_dc, pos = parse_records!(VSCDCLines(), bytes, pos, len, options)
59+
impedance_corrections, pos = parse_records!(ImpedanceCorrections(), bytes, pos, len, options)
60+
multi_terminal_dc, pos = parse_records!(MultiTerminalDCLines{DCLineID33}(), bytes, pos, len, options)
61+
multi_section_lines, pos = parse_records!(MultiSectionLineGroups33(), bytes, pos, len, options)
62+
zones, pos = parse_records!(Zones(), bytes, pos, len, options)
63+
area_transfers, pos = parse_records!(InterAreaTransfers(), bytes, pos, len, options)
64+
owners, pos = parse_records!(Owners(), bytes, pos, len, options)
65+
facts, pos = parse_records!(FACTSDevices33(), bytes, pos, len, options)
66+
switched_shunts, pos = parse_records!(SwitchedShunts33(nbuses÷11), bytes, pos, len, options)
67+
return Network(
68+
version,
69+
caseid,
70+
buses,
71+
loads,
72+
fixed_shunts,
73+
gens,
74+
branches,
75+
transformers,
76+
interchanges,
77+
two_terminal_dc,
78+
vsc_dc,
79+
switched_shunts,
80+
impedance_corrections,
81+
multi_terminal_dc,
82+
multi_section_lines,
83+
zones,
84+
area_transfers,
85+
owners,
86+
facts,
87+
)
88+
end
11189

90+
function parse_network30(source, version, caseid, bytes, pos, len, options)
91+
buses, pos = parse_records!(Buses30(len÷1000), bytes, pos, len, options)
92+
nbuses = length(buses)
93+
loads, pos = parse_records!(Loads(nbuses), bytes, pos, len, options)
94+
fixed_shunts = nothing
95+
gens, pos = parse_records!(Generators(nbuses÷10), bytes, pos, len, options)
96+
ngens = length(gens)
97+
branches, pos = parse_records!(Branches30(nbuses), bytes, pos, len, options)
98+
transformers, pos = parse_records!(Transformers(ngens*2), bytes, pos, len, options)
99+
interchanges, pos = parse_records!(AreaInterchanges(), bytes, pos, len, options)
100+
two_terminal_dc, pos = parse_records!(TwoTerminalDCLines30(), bytes, pos, len, options)
101+
vsc_dc, pos = parse_records!(VSCDCLines(), bytes, pos, len, options)
102+
switched_shunts, pos = parse_records!(SwitchedShunts30(nbuses÷11), bytes, pos, len, options)
103+
impedance_corrections, pos = parse_records!(ImpedanceCorrections(), bytes, pos, len, options)
104+
multi_terminal_dc, pos = parse_records!(MultiTerminalDCLines{DCLineID30}(), bytes, pos, len, options)
105+
multi_section_lines, pos = parse_records!(MultiSectionLineGroups30(), bytes, pos, len, options)
106+
zones, pos = parse_records!(Zones(), bytes, pos, len, options)
107+
area_transfers, pos = parse_records!(InterAreaTransfers(), bytes, pos, len, options)
108+
owners, pos = parse_records!(Owners(), bytes, pos, len, options)
109+
facts, pos = parse_records!(FACTSDevices30(), bytes, pos, len, options)
112110
return Network(
113111
version,
114112
caseid,
@@ -129,7 +127,6 @@ function parse_network(source; v::Union{Integer,Nothing}=nothing)
129127
area_transfers,
130128
owners,
131129
facts,
132-
# gne_devices,
133130
)
134131
end
135132

@@ -144,6 +141,7 @@ function parse_records!(rec::R, bytes, pos, len, options)::Tuple{R, Int} where {
144141
_, pos = parse_row!(rec, bytes, pos, len, options)
145142
end
146143
pos = next_line(bytes, pos, len) # Move past a "0 bus" line.
144+
@debug 1 "Parsed $R: nrows = $(length(rec)), pos = $pos"
147145
return rec, pos
148146
end
149147

0 commit comments

Comments
 (0)