File IO
General Data Formats
PowerModels.parse_file
— Function.parse_file(file; import_all)
Parses a Matpower .m file
or PTI (PSS(R)E-v33) .raw file
into a PowerModels data structure. All fields from PTI files will be imported if import_all
is true (Default: false).
PowerModels.parse_json
— Function.Matpower Data Files
The following method is the main exported methods for parsing Matpower data files:
PowerModels.parse_matpower
— Function.We also provide the following (internal) helper methods:
parse_matpower_file
parse_matpower_string
matpower_to_powermodels
row_to_typed_dict
row_to_dict
mp_cost_data
split_loads_shunts
standardize_cost_terms
merge_generator_cost_data
merge_bus_name_data
merge_generic_data
mp2pm_branch
mp2pm_dcline
add_dcline_costs
PTI Data Files (PSS/E)
Note: This feature supports the parsing and conversion of PTI files into a PowerModels format for the following power network components: buses, loads, shunts (fixed and approximation of switched), branches, two-winding and three-winding transformers (incl. magnetizing admittance), generators, two-terminal dc lines, and voltage source converter HVDC lines.
The following method is the main exported method for parsing PSS(R)E v33 specified PTI data files:
PowerModels.parse_psse
— Function.parse_psse(pti_data)
Converts PSS(R)E-style data parsed from a PTI raw file, passed by pti_data
into a format suitable for use internally in PowerModels. Imports all remaining data from the PTI file if import_all
is true (Default: false).
Parses directly from file
The following internal helper methods are also provided:
PowerModels.parse_pti
— Function.parse_pti(filename)
Open PTI raw file given by filename
, passing the file contents as a string to the main PTI parser, returning a Dict
of all the data parsed into the proper types.
PowerModels.parse_pti_data
— Function.parse_pti_data(data_string, sections)
Parse a PTI raw file into a Dict
, given the data_string
of the file and a list of the sections
in the PTI file (typically given by default by get_pti_sections()
.
PowerModels.get_line_elements
— Function.get_line_elements(line)
Uses regular expressions to extract all separate data elements from a line of a PTI file and populate them into an Array{String}
. Comments, typically indicated at the end of a line with a '/'
character, are also extracted separately, and Array{Array{String}, String}
is returned.
PowerModels.add_section_data!
— Function.add_section_data!(pti_data, section_data, section)
Adds section_data::Dict
, which contains all parsed elements of a PTI file section given by section
, into the parent pti_data::Dict
PowerModels.parse_line_element!
— Function.parse_line_element!(data, elements, section)
Parses a single "line" of data elements from a PTI file, as given by elements
which is an array of the line, typically split at ,
. Elements are parsed into data types given by section
and saved into data::Dict
PowerModels.get_pti_dtypes
— Function.get_pti_dtypes(field_name)
Returns OrderedDict
of data types for PTI file section given by field_name
, as enumerated by PSS/E Program Operation Manual
PowerModels.get_pti_sections
— Function.get_pti_sections()
Returns Array
of the names of the sections, in the order that they appear in a PTI file, v33+
PowerModels.psse2pm_dcline!
— Function.psse2pm_dcline!(pm_data, pti_data)
Parses PSS(R)E-style Two-Terminal and VSC DC Lines data into a PowerModels compatible Dict structure by first converting them to a simple DC Line Model. For Two-Terminal DC lines, "source_id" is given by ["IPR", "IPI", "NAME"]
in the PSS(R)E Two-Terminal DC specification. For Voltage Source Converters, "source_id" is given by ["IBUS1", "IBUS2", "NAME"]
, where "IBUS1" is "IBUS" of the first converter bus, and "IBUS2" is the "IBUS" of the second converter bus, in the PSS(R)E Voltage Source Converter specification.
PowerModels.psse2pm_transformer!
— Function.psse2pm_transformer!(pm_data, pti_data)
Parses PSS(R)E-style Transformer data into a PowerModels-style Dict. "source_id" is given by ["I", "J", "K", "CKT", "winding"]
, where "winding" is 0 if transformer is two-winding, and 1, 2, or 3 for three-winding, and the remaining keys are defined in the PSS(R)E Transformer specification.
PowerModels.psse2pm_shunt!
— Function.psse2pm_shunt!(pm_data, pti_data)
Parses PSS(R)E-style Fixed and Switched Shunt data into a PowerModels-style Dict. "source_id" is given by ["I", "ID"]
for Fixed Shunts, and ["I", "SWREM"]
for Switched Shunts, as given by the PSS(R)E Fixed and Switched Shunts specifications.
PowerModels.psse2pm_load!
— Function.psse2pm_load!(pm_data, pti_data)
Parses PSS(R)E-style Load data into a PowerModels-style Dict. "source_id" is given by ["I", "ID"]
in the PSS(R)E Load specification.
PowerModels.psse2pm_bus!
— Function.psse2pm_bus!(pm_data, pti_data)
Parses PSS(R)E-style Bus data into a PowerModels-style Dict. "source_id" is given by ["I", "NAME"] in PSS(R)E Bus specification.
PowerModels.psse2pm_generator!
— Function.psse2pm_generator!(pm_data, pti_data)
Parses PSS(R)E-style Generator data in a PowerModels-style Dict. "source_id" is given by ["I", "ID"]
in PSS(R)E Generator specification.
PowerModels.psse2pm_branch!
— Function.psse2pm_branch!(pm_data, pti_data)
Parses PSS(R)E-style Branch data into a PowerModels-style Dict. "source_id" is given by ["I", "J", "CKT"]
in PSS(R)E Branch specification.
PowerModels.import_remaining!
— Function.Imports remaining keys from data_in
into data_out
, excluding keys in exclude
PowerModels.create_starbus_from_transformer
— Function.create_starbus(pm_data, transformer)
Creates a starbus from a given three-winding transformer
. "source_id" is given by ["bus_i", "name", "I", "J", "K", "CKT"]
where "bus_i" and "name" are the modified names for the starbus, and "I", "J", "K" and "CKT" come from the originating transformer, in the PSS(R)E transformer specification.
PowerModels.find_max_bus_id
— Function.find_max_bus_id(pm_data)
Returns the maximum bus id in pm_data
PowerModels.init_bus!
— Function.init_bus!(bus, id)
Initializes a bus
of id id
with default values given in the PSS(R)E specification.