Parsing Data

PowerSystems.jl supports the creation of a System from a variety of common data formats:

MATPOWER / PSS/e

The following code will create a System from a MATPOWER or PSS/e file:

sys = System(joinpath(data_dir, "case5.m"))

PSS/e dynamic data parsing

PSS/e's dynamic model library is extensive, we currently support parsing a limited amount of models out of the box.

Machine modelsAVR ModelsPrime MoversPSS models
GENSAEIEEET1HYGOVIEEEST
GENSALESDC1AIEEEG1
GENROEESAC1AGGOV1
GENCLSESST4B
GENROUEXAC2
EXPIC1
ESAC6A
EXAC1
SCRX
ESDC2A

Creating a Dynamic System using .RAW and .DYR data

A PowerSystems.jl system can be created using a .RAW and a .DYR file. In this example we will create the following three bus system using the following RAW file:

0, 100, 33, 0, 0, 60  / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev


     101, 'BUS 1       ',       138, 3,    1,    1, 1,           1.02,        0,  1.1,  0.9,  1.1,  0.9
     102, 'BUS 2       ',       138, 2,    1,    1, 1,           1.0142,           0,  1.1,  0.9,  1.1,  0.9
     103, 'BUS 3       ',       138, 2,    1,    1, 1,           1.0059,           0,  1.1,  0.9,  1.1,  0.9
0 / END OF BUS DATA, BEGIN LOAD DATA
     101,  1, 1,    1,    1,       100,       20, 0, 0, 0, 0, 1, 1, 0
     102,  1, 1,    1,    1,       70,       10, 0, 0, 0, 0, 1, 1, 0
     103,  1, 1,    1,    1,       50,       10, 0, 0, 0, 0, 1, 1, 0
0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
     101,  1,       20,         0,       100,      -100,    1.02, 0,     100, 0, 0, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
     102,  1,       100,         0,       100,      -100,   1.0142, 0,     100, 0, 0.7, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
     103,  1,       100,         0,       100,      -100,   1.0059, 0,     100, 0, 0.2, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
     101,      103, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
     101,      102, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
     102,      103, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA
0 / END OF TRANSFORMER DATA, BEGIN AREA DATA
0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA
0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA
0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA
0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA
0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA
0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA
0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA
0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA
0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA
0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA
0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA
0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA
0 / END OF INDUCTION MACHINE DATA
Q

This system is a three bus system with three generators, three loads and three branches. The dynamic data for the generators is provided in the DYR file:

  101 'GENROE' 1   8.000000  0.030000  0.400000  0.050000  6.500000  0.000000  1.800000
  1.700000  0.300000  0.550000  0.250000  0.200000  0.039200  0.267200  /
  101 'ESST1A' 1   1  1  0.01  99  -99  1  10  1  1  200  0  4  -4  4  -4  0  0  1  0  3  /
  102 'GENCLS' 1   0.0   0.0 /
  103 'GENCLS' 1   3.1   2.0 /

That assigns a GENROU generator and a ESST1A voltage regulator at the generator located at bus 101, while classic machine models for the generators located at bus 102 and 103.

To create the system we can do it passing both files directories:

using PowerSystems
RAW_dir = joinpath(data_dir, "PSSE_test/ThreeBusNetwork.raw")
DYR_dir = joinpath(data_dir, "PSSE_test/TestGENCLS.dyr")
dyn_system = System(RAW_dir, DYR_dir, runchecks = false)

System

Base Power: 100.0

Components

Num components: 19

10 rows × 3 columns

ConcreteTypeSuperTypesCount
StringStringInt64
1ArcTopology <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any3
2AreaAggregationTopology <: Topology <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any1
3BusTopology <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any3
4DynamicGenerator{BaseMachine, SingleMass, AVRFixed, TGFixed, PSSFixed}DynamicInjection <: Device <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any1
5DynamicGenerator{RoundRotorExponential, SingleMass, ESST1A, TGFixed, PSSFixed}DynamicInjection <: Device <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any1
6LineACBranch <: Branch <: Device <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any3
7LoadZoneAggregationTopology <: Topology <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any1
8PowerLoadStaticLoad <: ElectricLoad <: StaticInjection <: Device <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any3
9SourceStaticInjection <: Device <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any1
10ThermalStandardThermalGen <: Generator <: StaticInjection <: Device <: Component <: InfrastructureSystemsComponent <: InfrastructureSystemsType <: Any2

TimeSeriesContainer

Components with time series data: 0

Total StaticTimeSeries: 0

Total Forecasts: 0

Resolution: 0 seconds

PowerSystems Table Data

This is a custom format that allows users to define power system component data by category and column with custom names, types, and units.

Categories

Components for each category must be defined in their own CSV file. The following categories are currently supported:

  • branch.csv
  • bus.csv (required)
    • columns specifying area and zone will create a corresponding set of Area and LoadZone objects.
    • columns specifying max_active_power or max_reactive_power will create PowerLoad objects when nonzero values are encountered and will contribute to the peak_active_power and peak_reactive_power values for the
    corresponding LoadZone object.
  • dc_branch.csv
  • gen.csv
  • load.csv
  • reserves.csv
  • storage.csv

These must reside in the directory passed when constructing PowerSystemTableData.

Adding Time Series Data

PowerSystems requires a metadata file that maps components to their time series data in order to be able to automatically construct time_series from raw data files. The following fields are required for each time array:

  • simulation: User description of simulation
  • resolution: Resolution of time series in seconds
  • module: Module that defines the abstract type of the component
  • category: Type of component. Must map to abstract types defined by the "module" entry (Bus, ElectricLoad, Generator, LoadZone, Reserve)
  • component_name: Name of component
  • name: User-defined name for the time series data.
  • normalization_factor: Controls normalization of the data. Use 1.0 for pre-normalized data. Use 'Max' to divide the time series by the max value in the column. Use any float for a custom scaling factor.
  • scaling_factor_multiplier_module: Module that defines the accessor function for the

scaling factor

  • scaling_factor_multiplier: Accessor function of the scaling factor
  • data_file: Path to the time series data file

Notes:

  • The "module", "category", and "component_name" entries must be valid arguments to retrieve

a component using get_component(${module}.${category}, sys, $name).

  • The "scalingfactormultipliermodule" and the "scalingfactor_multiplier" entries must

be sufficient to return the scaling factor data using ${scaling_factor_multiplier_module}.${scaling_factor_multiplier}(component).

PowerSystems supports this metadata in either CSV or JSON formats. Refer to RTS_GMLC for an example.

Performance considerations

By default PowerSystems stores time series data in HDF5 files. It does not keep all of the data in memory. This means that every time you access a timeseries PowerSystems will have to read the data from storage, which will add latency. If you know ahead of time that all of your data will fit in memory then you can change this behavior by passing `timeseriesinmemory = true` when you create the System.

If the time series data is stored in HDF5 then PowerSystems will use the tmp filesystem by default. You can change this by passing time_series_directory = X when you create the System. This is required if the time series data is larger than the amount of tmp space available. You can also override the location by setting the environment variable SIIPTIMESERIES_DIRECTORY to another directory.

Customization

The tabular data parser in PowerSystems.jl can be customized to read a variety of datasets by configuring:

Here is an example of how to construct a System with all customizations listed in this section:

data_dir = "/data/my-data-dir"
base_power = 100.0
descriptors = "./user_descriptors.yaml"
timeseries_metadata_file = "./timeseries_pointers.json"
generator_mapping_file = "./generator_mapping.yaml"
data = PowerSystemTableData(
    data_dir,
    base_power,
    descriptors;
    timeseries_metadata_file = timeseries_metadata_file,
    generator_mapping_file = generator_mapping_file,
)
sys = System(data, time_series_in_memory = true)

Examples configuration files can be found in the RTS-GMLC repo:

CSV Data Configurations

Custom construction of generators

PowerSystems supports custom construction of subtypes of the abstract type Generator based on fuel and type. The parsing code detects these fields in the raw data and then constructs the concrete type listed in the passed generator mapping file. The default file is src/parsers/generator_mapping.yaml. You can override this behavior by specifying your own file when constructing PowerSystemTableData.

Column names

PowerSystems provides am input mapping capability that allows you to keep your own column names.

For example, when parsing raw data for a generator the code expects a column called name. If the raw data instead defines that column as GEN UID then you can change the custom_name field under the generator category to GEN UID in your YAML file.

To enable the parsing of a custom set of csv files, you can generate a configuration file (such as user_descriptors.yaml) from the defaults, which are stored in src/descriptors/power_system_inputs.json.

python ./bin/generate_config_file.py ./user_descriptors.yaml

Next, edit this file with your customizations.

Note that the user-specific customizations are stored in YAML rather than JSON to allow for easier editing. The next few sections describe changes you can make to this YAML file. Do not edit the default JSON file.

A list of PowerSystemTableData accepted columns for each CSV is available here.

Per-unit conversion

For more info on the per-unit conventions in PowerSystems.jl, refer to the per-unit section of the system documentation.

PowerSystems defines whether it expects a column value to be per-unit system base, per-unit device base, or natural units in power_system_inputs.json (see default values). If it expects a per-unit convention that differs from your values then you can set the unit_system in user_descriptors.yaml and PowerSystems will automatically convert the values. For example, if you have a max_active_power value stored in natural units (MW), but power_system_inputs.json specifies unit_system: device_base, you can enter unit_system: natural_units in user_descriptors.yaml and PowerSystems will divide the value by the value of the corresponding entry in the column identified by the base_reference field in power_system_inputs.json. You can also override the base_reference setting by adding base_reference: My Column to make device base per-unit conversion by dividing the value by the entry in My Column. System base per-unit conversions always divide the value by the system base_power value instantiated when constructing a System.

Unit conversion

PowerSystems provides a limited set of unit conversions. For example, if power_system_inputs.json indicates that a value's unit is degrees but your values are in radians then you can set unit: radian in your YAML file. Other valid unit entries include GW, GWh, MW, MWh, kW, and kWh.

PowerSystemTableData Accepted CSV Columns

The following tables describe default CSV column definitions accepted by the PowerSystemeTableData parser defined by src/descriptors/power_system_inputs.json:

using PowerSystems # hide
function create_md() # hide
    descriptor = PowerSystems._read_config_file(joinpath( # hide
        dirname(pathof(PowerSystems)), # hide
        "descriptors", # hide
        "power_system_inputs.json", # hide
    )) # hide
    columns = [ # hide
        "name", # hide
        "description", # hide
        "unit", # hide
        "unit_system", # hide
        "base_reference", # hide
        "default_value", # hide
        "value_options", # hide
        "value_range", # hide
    ] # hide
    header = "| " * join(columns, " | ") * " |\n" * repeat("|----", length(columns)) * "|\n" # hide
    s = "" # hide
    for (cat, items) in descriptor # hide
        csv = "" # hide
        for name in PowerSystems.INPUT_CATEGORY_NAMES # hide
            if name[2] == cat # hide
                csv = name[1] # hide
                break # hide
            end # hide
        end # hide
        csv == "" && continue # hide
        s = string(s, "### $csv.csv:\n\n") # hide
        s = string(s, header) # hide
        for item in items # hide
            extra_cols = setdiff(keys(item), columns) # hide
            if !isempty(extra_cols) # hide
                throw(@error "config file fields not included in header" extra_cols) # hide
            end # hide
            row = [] # hide
            for col in columns # hide
                val = string(get(item, col, " ")) # hide
                if col == "default_value" && val == " " # hide
                    val = "*REQUIRED*" # hide
                end # hide
                push!(row, val) # hide
            end # hide
            s = string(s, "|" * join(row, "|") * "|\n") # hide
        end # hide
        s = string(s, "\n") # hide
    end # hide
    s = replace(s, r"[_$]" => s"\\\g<0>"); # hide
    return s # hide
end # hide
txt = create_md(); # hide
fname = joinpath(dirname(dirname(pathof(PowerSystems))), "docs", "src", "modeler_guide", "generated_inputs_tables.md") # hide
open(fname, "w") do io # hide
      write(io, txt) # hide
end # hide
println(" "); # hide
nothing #hide
 

bus.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
bus_idNumeric Bus IDREQUIRED
nameBus name from RTS-96REQUIRED
areaarea membershipnothing
zonezone membershipnothing
base_voltageBus voltage ratingkVnatural_unitsnothing
bus_typeBus control typenothing["PQ", "PV", "REF"]
voltagevoltage magnitude setpointkVdevice_basebase_voltagenothing
anglevoltage angle setpointradiannothing
voltage_limits_minMinimum voltage setpointkVdevice_basebase_voltage0.95
voltage_limits_maxMaximum voltage setpointkVdevice_basebase_voltage1.05
max_active_powerMaximum Active Powerdevice_basebase_power0
max_reactive_powerMaximum Rective Powerdevice_basebase_power0
active_powerActive Power Setpointdevice_basebase_power0
reactive_powerRective Power Setpointdevice_basebase_power0
base_powerbase power for demandnatural_unitssystem_base_power

storage.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
nameStorage object nameREQUIRED
positionhead or tailhead
availableavailabilitytrue
generator_nameGenerator name associated with storagenothing
bus_idConnection Bus IDnothing
energy_levelEnergy Level setpointMWhdevice_base0.0
active_powerReal power injection setpointMWdevice_base0.0
reactive_powerReactive power StaticInjection setpointMVardevice_base0.0
input_active_power_limit_maxMaximum real power limit on chargingMWdevice_baseREQUIRED
input_active_power_limit_minMinimum real power limit on chargingMWdevice_base0.0
output_active_power_limit_maxMaximum real power StaticInjectionMWdevice_basenothing
output_active_power_limit_minMinimum real power StaticInjectionMWdevice_base0.0
output_reactive_power_limits_maxMaximum reactive power StaticInjectionMVARdevice_basenothing
output_reactive_power_limits_minMinimum reactive power StaticInjectionMVARdevice_basenothing
ratingApparent power injection limit ratingMVAdevice_baseREQUIRED
base_powerContinuous MW flow limitMWnatural_unitsREQUIRED
input_efficiencyStorage Input Efficiency%1.0
output_efficiencyStorage Output Efficiency%1.0
efficiencyBattery Efficiency%1.0
storage_capacityStorage CapacityMWhdevice_baseREQUIRED
min_storage_capacityStorage Capacity minimumMWhdevice_base0.0
storage_targetEnd period storage target levelMWhdevice_base0.0

branch.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
nameUnique branch IDREQUIRED
connection_points_fromFrom Bus IDREQUIRED
connection_points_toTo Bus IDREQUIRED
rBranch resistance p.u.device_baseREQUIRED
xBranch reactance p.u.device_baseREQUIRED
primary_shuntBranch line charging susceptance p.u.device_baseREQUIRED
rateContinuous MW flow limitMWSYSTEM_BASEREQUIRED
min_angle_limitsMinimum Angle Limitsradian-1.57079
max_angle_limitsMaximum endpoint angle limitsradian1.57079
active_power_flowActive power flowMWdevice_baserate0.0
reactive_power_flowReactive power flowMVArdevice_baserate0.0
tapTransformer winding ratio%1.0
is_transformerTransformer flagboolnothing

gen.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
nameUnique generator ID: Concatenated from Bus ID_Unit Type_Gen IDREQUIRED
availableAvailabilitytrue
bus_idConnection Bus IDREQUIRED
fuelUnit FuelREQUIRED
fuel_priceFuel Price$/MMBTUREQUIRED
active_powerReal power injection setpointMWdevice_basebase_mvaREQUIRED
reactive_powerReactive power StaticInjection setpointMWdevice_basebase_mva0.0
active_power_limits_maxMaximum real power StaticInjection (Unit Capacity)MWdevice_basebase_mvaREQUIRED
active_power_limits_minMinimum real power StaticInjection (Unit minimum stable level)MWdevice_basebase_mvaREQUIRED
reactive_power_limits_maxMaximum reactive power StaticInjectionMVARdevice_basebase_mvanothing
reactive_power_limits_minMinimum reactive power StaticInjectionMVARdevice_basebase_mvanothing
min_down_timeMinimum off time required before unit restarthoursREQUIRED
min_up_timeMinimum on time required before unit shutdownhoursREQUIRED
ramp_limitsMaximum ramp up and ramp down rateMW(p.u.)/Mindevice_basebase_mvanothing
ramp_upMaximum ramp up rateMW/Mindevice_basebase_mvanothing
ramp_downMaximum ramp down rateMW/Mindevice_basebase_mvanothing
startup_heat_cold_costHeat required to startup from coldMMBTUnothing
heat_rate_avg_0Heat rate Average 0 TODOnothing
heat_rate_incr_1Heat rate Incremental 1 TODOnothing
heat_rate_incr_2Heat rate Incremental 2 TODOnothing
heat_rate_incr_3Heat rate Incremental 3 TODOnothing
heat_rate_incr_4Heat rate Incremental 4 TODOnothing
heat_rate_incr_5Heat rate Incremental 5 TODOnothing
heat_rate_incr_6Heat rate Incremental 6 TODOnothing
heat_rate_incr_7Heat rate Incremental 7 TODOnothing
heat_rate_incr_8Heat rate Incremental 8 TODOnothing
heat_rate_incr_9Heat rate Incremental 9 TODOnothing
heat_rate_incr_10Heat rate Incremental 10 TODOnothing
heat_rate_incr_11Heat rate Incremental 11 TODOnothing
heat_rate_incr_12Heat rate Incremental 12 TODOnothing
cost_point_0Operating cost at output_point_0$/hrnothing
cost_point_1Operating cost at output_point_1$/hrnothing
cost_point_2Operating cost at output_point_2$/hrnothing
cost_point_3Operating cost at output_point_3$/hrnothing
cost_point_4Operating cost at output_point_4$/hrnothing
cost_point_5Operating cost at output_point_5$/hrnothing
cost_point_6Operating cost at output_point_6$/hrnothing
cost_point_7Operating cost at output_point_7$/hrnothing
cost_point_8Operating cost at output_point_8$/hrnothing
cost_point_9Operating cost at output_point_9$/hrnothing
cost_point_10Operating cost at output_point_10$/hrnothing
cost_point_11Operating cost at output_point_11$/hrnothing
cost_point_12Operating cost at output_point_12$/hrnothing
output_point_0Output point 0 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_1Output point 1 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_2Output point 2 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_3Output point 3 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_4Output point 4 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_5Output point 5 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_6Output point 6 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_7Output point 7 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_8Output point 8 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_9Output point 9 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_10Output point 10 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_11Output point 11 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
output_point_12Output point 12 on heat rate curve as a percentage of PMax%device_basebase_mvanothing
base_mvaUnit equivalent circuit base_mvaMVAnatural_unitsREQUIRED
variable_costVariable Cost of Generation$/MWnothing
fixed_costFixed Cost of Generation$/MWnothing
startup_costCost associated with Start-up$/startnothing
shutdown_costCost associated with Shutdown$/startnothing
curtailment_costCost of curtailing production$/MWnothing
power_factorPower Factor%1.0
unit_typeUnit Prime Mover TypeREQUIRED
categoryCategorynothing
cold_start_timeTime before which a Cold start is eligiblenothing
warm_start_timeTime before which a Warm start is eligiblenothing
hot_start_timeTime before which a Hot Start is eligiblenothing
startup_rampStartup ramp capabilitydevice_basebase_mvanothing
shutdown_rampShutdown ramp capabilitydevice_basebase_mvanothing
status_at_startState of the generator at the start of the simulationtrue
time_at_statusNumber of hours spent in current statenothing
cold_start_costCost for Cold start of ThermalGennothing
warm_start_costCost for Warm of ThermalGennothing
hot_start_costCost for Hot of ThermalGennothing
must_runBoolean that indicates if ThermalGen must be online alwaysfalse
pump_loadPHES Pump LoadMWdevice_basepump_ratingnothing
pump_active_power_limits_maxMaximum real power StaticInjection (Unit Capacity)MWdevice_basepump_rating1.0
pump_active_power_limits_minMinimum real power StaticInjection (Unit minimum stable level)MWdevice_basepump_rating0.0
pump_reactive_power_limits_maxMaximum reactive power StaticInjectionMVARdevice_basebase_mvanothing
pump_reactive_power_limits_minMinimum reactive power StaticInjectionMVARdevice_basebase_mvanothing
pump_min_down_timeMinimum off time required before unit restarthoursnothing
pump_min_up_timeMinimum on time required before unit shutdownhoursnothing
pump_ramp_limitsMaximum ramp up and ramp down rateMW(p.u.)/Mindevice_basebase_mvanothing
pump_ramp_upMaximum ramp up rateMW/Mindevice_basebase_mvanothing
pump_ramp_downMaximum ramp down rateMW/Mindevice_basebase_mvanothing
generator_categoryType of StructThermalStandard["HydroDispatch", "HydroEnergyReservoir", "RenewableFix", "RenewableDispatch", "ThermalStandard", "ThermalMultiStart"]

reserves.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
nameReserve product nameREQUIRED
contributing_devicesContributing Devices for reserve requirementnothing
requirementreserve requirementMWSYSTEM_BASEREQUIRED
timeframeResponse time to satisfy reserve requirementsecondsREQUIRED
eligible_device_categoriesEligible Device Categoriesnothing
eligible_device_subcategoriesEligible Device SubCategoriesnothing
eligible_regionsEligible Regionsnothing
reserve_categoryType of StructStaticReserve["StaticReserve", "VariableReserve", "Transfer"]
directionDirectionREQUIRED["Up", "Down"]

dc_branch.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
nameUnique IDREQUIRED
connection_points_fromFrom Bus IDREQUIRED
connection_points_toTo Bus IDREQUIRED
active_power_flowActive power flowdevice_baserate0.0
mw_loadPower demand (MW)device_baserate0.0
rateApparent power limit ratingMVASYSTEM_BASEsystem_base_power
rectifier_firing_angle_maxNominal maximum firing angledegreenothingAny[]
rectifier_firing_angle_minMinimum steady state firing angledegreenothingAny[]
rectifier_xrcCommutating transformer reactance/bridgedevice_basenothing
rectifier_tap_limits_maxMax tap settingnothingAny[]
rectifier_tap_limits_minMin tap settingnothingAny[]
inverter_firing_angle_maxNominal maximum firing angledegreenothingAny[]
inverter_firing_angle_minMinimum steady state firing angledegreenothingAny[]
inverter_xrcCommutating transformer reactance/bridgedevice_basenothing
inverter_tap_limits_maxMax tap settingnothingAny[]
inverter_tap_limits_minMin tap settingnothingAny[]
lossPower Losses on the Line%0.0
min_active_power_limit_fromMinimum Active Power Limitdevice_baseratenothingAny[]
max_active_power_limit_fromMaximum Active Power Limitdevice_baseratenothingAny[]
min_active_power_limit_toMinimum Active Power Limitdevice_baseratenothingAny[]
max_active_power_limit_toMaximum Active Power Limitdevice_baseratenothingAny[]
min_reactive_power_limit_fromMinimum reActive Power Limitdevice_baserate0.0Any[]
max_reactive_power_limit_fromMaximum reActive Power Limitdevice_baserate0.0Any[]
min_reactive_power_limit_toMinimum reActive Power Limitdevice_baserate0.0Any[]
max_reactive_power_limit_toMaximum reActive Power Limitdevice_baserate0.0Any[]
control_modeControl ModePower
dc_line_categoryType of StructHVDCLine["VSCDCLine", "HVDCLine"]

load.csv:

namedescriptionunitunit_systembase_referencedefault_valuevalue_optionsvalue_range
nameLoad NameREQUIRED
availableAvailabilitytrue
bus_idConnection Bus IDnothing
active_powerActive power setpointdevice_base0.0
reactive_powerReactive power setpointdevice_base0.0
base_powerbasenatural_unitssystem_base_power
max_active_powermax active powerdevice_baseREQUIRED
max_reactive_powermax reactive powerdevice_base0.0