Skip to content

PF in-the-loop and convergence failure #1577

@luke-kiernan

Description

@luke-kiernan

With multi-period power flow in the loop, how should we handle non-convergence?

Right now, solve_power_flow! in power_flow_evaluation.jl sets pf_e_data.is_solved to true, even if some (or all) time steps failed to converge. PowerFlows.jl writes NaNs to certain fields when the power flow fails to converge. Side effects:

  • The NaNs in the bus_angle and bus_magnitude fields infect power flows in subsequent simulation steps: PSI re-uses the same PowerFlowData object and clear_injection_data! only zeroes out the power-related fields.
  • calculate_aux_variable_value! on the power flow related variables produces NaNs. The code fetches the values from the most recent simulation step for which is_solved == true, but that's all of them.

PSI has a single variable: pf_e_data.is_solved. PF has pf_data.converged::Vector{Bool}, with one true/false per time step. What should be the relationship between the two? is_solved = all(converged)? is_solved = any(converged)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions