PowerFlows

PowerFlows.PowerFlowDataType

Structure containing all the data required for the evaluation of the power flows and angles, as well as these ones.

Arguments:

  • bus_lookup::Dict{Int, Int}: dictionary linking the system's bus number with the rows of either "powernetworkmatrix" or "auxnetworkmatrix".
  • branch_lookup::Dict{String, Int}: dictionary linking the branch name with the column name of either the "powernetworkmatrix" or "auxnetworkmatrix".
  • bus_activepower_injection::Matrix{Float64}: "(b, t)" matrix containing the bus active power injection. b: number of buses, t: number of time period.
  • bus_reactivepower_injection::Matrix{Float64}: "(b, t)" matrix containing the bus reactive power injection. b: number of buses, t: number of time period.
  • bus_activepower_withdrawals::Matrix{Float64}: "(b, t)" matrix containing the bus reactive power withdrawals. b: number of buses, t: number of time period.
  • bus_reactivepower_withdrawals::Matrix{Float64}: "(b, t)" matrix containing the bus reactive power withdrawals. b: number of buses, t: number of time period.
  • bus_reactivepower_bounds::Vector{Float64}: Upper and Lower bounds for the reactive supply at each bus.
  • bus_type::Vector{PSY.ACBusTypes}: vector containing type of buses present in the system, ordered according to "bus_lookup".
  • bus_magnitude::Matrix{Float64}: "(b, t)" matrix containing the bus magnitudes, ordered according to "bus_lookup". b: number of buses, t: number of time period.
  • bus_angles::Matrix{Float64}: "(b, t)" matrix containing the bus angles, ordered according to "bus_lookup". b: number of buses, t: number of time period.
  • branch_flow_values::Matrix{Float64}: "(br, t)" matrix containing the power flows, ordered according to "branch_lookup". br: number of branches, t: number of time period.
  • timestep_map::Dict{Int, S}: dictonary mapping the number of the time periods (corresponding to the column number of the previosly mentioned matrices) and their names.
  • valid_ix::Vector{Int}: vector containing the indeces of not slack buses
  • power_network_matrix::M: matrix used for the evaluation of either the power flows or bus angles, depending on the method considered.
  • aux_network_matrix::N: matrix used for the evaluation of either the power flows or bus angles, depending on the method considered.
  • neighbors::Vector{Set{Int}}: Vector with the sets of adjacent buses.
source
PowerFlows.PowerFlowDataMethod

Function for the definition of the PowerFlowData strucure given the System data, number of time periods to consider and their names. Calling this function will not evaluate the power flows and angles. NOTE: use it for AC power flow computations.

Arguments:

  • ::ACPowerFlow: use ACPowerFlow() to evaluate the AC PF.
  • sys::PSY.System: container storing the system data to consider in the PowerFlowData structure.
  • timesteps::Int: number of time periods to consider in the PowerFlowData structure. It defines the number of columns of the matrices used to store data. Default value = 1.
  • timestep_names::Vector{String}: names of the time periods defines by the argmunet "timesteps". Default value = String[].
  • check_connectivity::Bool: Perform connectivity check on the network matrix. Default value = true.

WARNING: functions for the evaluation of the multi-period AC PF still to be implemented.

source
PowerFlows.PowerFlowDataMethod

Function for the definition of the PowerFlowData strucure given the System data, number of time periods to consider and their names. Calling this function will not evaluate the power flows and angles. NOTE: use it for DC power flow computations.

Arguments:

  • ::DCPowerFlow: use DCPowerFlow() to store the ABA matrix as powernetworkmatrix and the BA matrix as auxnetworkmatrix.
  • sys::PSY.System: container storing the system data to consider in the PowerFlowData structure.
  • timesteps::Int: number of time periods to consider in the PowerFlowData structure. It defines the number of columns of the matrices used to store data. Default value = 1.
  • timestep_names::Vector{String}: names of the time periods defines by the argmunet "timesteps". Default value = String[].
  • check_connectivity::Bool: Perform connectivity check on the network matrix. Default value = true.
source
PowerFlows.PowerFlowDataMethod

Function for the definition of the PowerFlowData strucure given the System data, number of time periods to consider and their names. Calling this function will not evaluate the power flows and angles. NOTE: use it for DC power flow computations.

Arguments:

  • ::PTDFDCPowerFlow: use PTDFDCPowerFlow() to store the PTDF matrix as powernetworkmatrix and the ABA matrix as auxnetworkmatrix.
  • sys::PSY.System: container storing the system data to consider in the PowerFlowData structure.
  • timesteps::Int: number of time periods to consider in the PowerFlowData structure. It defines the number of columns of the matrices used to store data. Default value = 1.
  • timestep_names::Vector{String}: names of the time periods defines by the argmunet "timesteps". Default value = String[].
source
PowerFlows.PowerFlowDataMethod

Function for the definition of the PowerFlowData strucure given the System data, number of time periods to consider and their names. Calling this function will not evaluate the power flows and angles. NOTE: use it for DC power flow computations.

Arguments:

  • ::PTDFDCPowerFlow: use vPTDFDCPowerFlow() to store the Virtual PTDF matrix as powernetworkmatrix and the ABA matrix as auxnetworkmatrix.
  • sys::PSY.System: container storing the system data to consider in the PowerFlowData structure.
  • timesteps::Int: number of time periods to consider in the PowerFlowData structure. It defines the number of columns of the matrices used to store data. Default value = 1.
  • timestep_names::Vector{String}: names of the time periods defines by the argmunet "timesteps". Default value = String[].
source
PowerFlows.solve_ac_powerflow!Method

Solves a the power flow into the system and writes the solution into the relevant structs. Updates generators active and reactive power setpoints and branches active and reactive power flows (calculated in the From - To direction) (see flow_val)

Supports passing NLsolve kwargs in the args. By default shows the solver trace.

Arguments available for nlsolve:

  • get_connectivity::Bool: Checks if the network is connected. Default true
  • method : See NLSolve.jl documentation for available solvers
  • xtol: norm difference in x between two successive iterates under which convergence is declared. Default: 0.0.
  • ftol: infinite norm of residuals under which convergence is declared. Default: 1e-8.
  • iterations: maximum number of iterations. Default: 1_000.
  • store_trace: should a trace of the optimization algorithm's state be stored? Default: false.
  • show_trace: should a trace of the optimization algorithm's state be shown on STDOUT? Default: false.
  • extended_trace: should additifonal algorithm internals be added to the state trace? Default: false.

Examples

solve_ac_powerflow!(sys)
# Passing NLsolve arguments
solve_ac_powerflow!(sys, method=:newton)
source
PowerFlows.solve_powerflowMethod

Similar to solve_powerflow!(sys) but does not update the system struct with results. Returns the results in a dictionary of dataframes.

Examples

res = solve_powerflow(sys)
# Passing NLsolve arguments
res = solve_powerflow(sys, method=:newton)
source
PowerFlows.solve_powerflowMethod

Evaluates the power flows on each system's branch by means of the ABA and BA matrices. Updates the PowerFlowData structure and returns a dictionary containing a DataFrame for the single timestep considered. The DataFrame containts the flows and angles related to the information stored in the PSY.System considered as input.

Arguments:

  • ::DCPowerFlow: use DCPowerFlow() to evaluate the power flows according to the method based on the ABA and BA matrices
  • sys::PSY.System: container gathering the system data used for the evaluation of flows and angles.
source
PowerFlows.solve_powerflowMethod

Evaluates the power flows on each system's branch by means of the PTDF matrix. Updates the PowerFlowData structure and returns a dictionary containing a DataFrame for the single timestep considered. The DataFrame containts the flows and angles related to the information stored in the PSY.System considered as input.

Arguments:

  • ::PTDFDCPowerFlow: use PTDFDCPowerFlow() to evaluate the power flows according to the method based on the PTDF matrix
  • sys::PSY.System: container gathering the system data used for the evaluation of flows and angles.
source
PowerFlows.solve_powerflowMethod

Evaluates the power flows on each system's branch by means of Virtual PTDF matrices. Updates the PowerFlowData structure "data" and returns a dictionary containing a number of DataFrames equal to the numeber of timestep considered in "data". Each DataFrame containts the flows and angles.

Arguments:

  • data::PTDFPowerFlowData: PowerFlowData structure containing the system data per each timestep considered, as well as the Virtual PTDF matrix.
  • sys::PSY.System: container gathering the system data.
source
PowerFlows.solve_powerflowMethod

Evaluates the power flows on each system's branch by means of the ABA and BA matrices. Updates the PowerFlowData structure "data" and returns a dictionary containing a number of DataFrames equal to the numeber of timestep considered in "data". Each DataFrame containts the flows and angles.

Arguments:

  • data::ABAPowerFlowData: PowerFlowData structure containing the system's data per each timestep considered, as well as the ABA and BA matrices.
  • sys::PSY.System: container gathering the system data.
source
PowerFlows.solve_powerflowMethod

Evaluates the power flows on each system's branch by means of the PTDF matrix. Updates the PowerFlowData structure "data" and returns a dictionary containing a number of DataFrames equal to the numeber of timestep considered in "data". Each DataFrame containts the flows and angles.

Arguments:

  • data::PTDFPowerFlowData: PowerFlowData structure containing the system's data per each timestep considered, as well as the PTDF matrix.
  • sys::PSY.System: container gathering the system data.
source
PowerFlows.solve_powerflowMethod

Evaluates the power flows on each system's branch by means of the Virtual PTDF matrix. Updates the PowerFlowData structure "data" and returns a dictionary containing a number of DataFrames equal to the numeber of timestep considered in "data". The DataFrame containts the flows and angles related to the information stored in the PSY.System considered as input.

Arguments:

  • ::vPTDFDCPowerFlow: use vPTDFDCPowerFlow() to evaluate the power flows according to the method based on the Virtual PTDF matrix
  • sys::PSY.System: container gathering the system data used for the evaluation of flows and angles.
source
PowerFlows.write_resultsMethod

Returns a dictionary containing the AC power flow results.

Only single-period evaluation is supported at the moment for AC Power flows. Resulting dictionary will therefore feature just one key linked to one DataFrame.

Arguments:

  • ::ACPowerFlow: use ACPowerFlow() storing AC power flow results.
  • sys::PSY.System: container storing the systam information.
  • result::Vector{Float64}: vector containing the reults for one single time-period.
source
PowerFlows.write_resultsMethod

Returns a dictionary containing the DC power flow results. Each key conresponds to the name of the considered time periods, storing a DataFrame with the PF results.

Arguments:

  • data::Union{PTDFPowerFlowData, vPTDFPowerFlowData, ABAPowerFlowData}: PowerFlowData strcuture containing power flows and bus angles.
  • sys::PSY.System: container storing the systam information.
source