pydynamicestimator.system

Attributes

grid_est

grid_sim

dae_est

dae_sim

bus_init_sim

bus_unknown_est

line_sim

line_est

disturbance_sim

disturbance_est

device_list_sim

device_list_est

Classes

Grid

GridSim

GridEst

Dae

DaeSim

DaeEst

Functions

stack_volt_power(→ numpy.ndarray)

Module Contents

class pydynamicestimator.system.Grid[source]
y_adm_matrix: numpy.ndarray | None = None
z_imp_matrix: numpy.ndarray | None = None
incident_matrix: numpy.ndarray | None = None
Bsum: numpy.ndarray | None = None
Gsum: numpy.ndarray | None = None
nb: int = 0
nn: int = 0
buses: list = []
Sb: float = 100
idx_i: list = []
idx_j: list = []
idx_i_re: list = []
idx_j_re: list = []
idx_i_im: list = []
idx_j_im: list = []
yinit: dict
yf: dict
sf: dict
line: pydynamicestimator.devices.device.Line | None = None
line_is_faulted: list[bool] = []
line_is_open: list[bool] = []
line_fault_adm: list[float] = []
bus_is_faulted: list[bool] = []
bus_fault_adm: list[float] = []
idx_branch: dict[Tuple[str, str], int]
idx_bus: dict[str, int]
idx_bus_re: dict[str, int]
idx_bus_im: dict[str, int]
C_branches_forward: numpy.ndarray | None = None
C_branches_reverse: numpy.ndarray | None = None
C_branches: numpy.ndarray | None = None
save_data(dae: Dae) None[source]
Parameters:

dae (Dae)

Return type:

None

init_symbolic(dae: Dae) None[source]
Parameters:

dae (Dae)

Return type:

None

gcall(dae: Dae) None[source]
Parameters:

dae (Dae)

Return type:

None

guncall(dae: Dae) None[source]
Parameters:

dae (Dae)

Return type:

None

add_lines(line: pydynamicestimator.devices.device.Line) None[source]
Parameters:

line (pydynamicestimator.devices.device.Line)

Return type:

None

add_bus(bus: str, idx: list, idx_re: list, idx_im: list) None[source]
Parameters:
  • bus (str)

  • idx (list)

  • idx_re (list)

  • idx_im (list)

Return type:

None

build_y() None[source]
Return type:

None

get_branch_index(node1: list[str], node2: list[str]) tuple[numpy.ndarray, numpy.ndarray][source]
Parameters:
  • () (node2) – List of starting nodes

  • () – List of receiving nodes

  • node1 (list[str])

  • node2 (list[str])

Return type:

tuple[numpy.ndarray, numpy.ndarray]

Returns: The order of the given branch and the order of the opposite direction branch

get_node_index(buses: list) tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray][source]
Parameters:

buses (list)

Return type:

tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]

class pydynamicestimator.system.GridSim[source]

Bases: Grid

init_from_power_flow(dae: DaeSim, static: pydynamicestimator.devices.device.BusInit) None[source]
Parameters:
Return type:

None

print_init_power_flow(dae: DaeSim) None[source]
Parameters:

dae (DaeSim)

Return type:

None

build_Gsum() None[source]
Return type:

None

build_Bsum() None[source]
Return type:

None

build_incident_matrix() None[source]
Return type:

None

setup(dae: DaeSim, bus_init: pydynamicestimator.devices.device.BusInit) None[source]
Parameters:
Return type:

None

class pydynamicestimator.system.GridEst[source]

Bases: Grid

y_simulation = []
_init_from_simulation(other: GridSim, dae: Dae) None[source]
Parameters:
Return type:

None

_get_results(other: GridSim) None[source]
Parameters:

other (GridSim)

Return type:

None

setup(dae: DaeEst, other: GridSim) None[source]
Parameters:
Return type:

None

init_symbolic(dae: DaeEst) None[source]
Parameters:

dae (DaeEst)

Return type:

None

class pydynamicestimator.system.Dae[source]
nx: int = 0
ny: int = 0
ng: int = 0
np: int = 0
nts: int = 0
x: casadi.SX | None = None
y: casadi.SX | None = None
f: casadi.SX | None = None
g: casadi.SX | None = None
p: casadi.SX | None = None
p0: casadi.SX | None = None
s: casadi.SX | None = None
x_full: numpy.ndarray | None = None
y_full: numpy.ndarray | None = None
i_full: numpy.ndarray | None = None
T_start: float = 0.0
T_end: float = 10.0
time_steps: numpy.ndarray | None = None
Sb: float = 100
fn: Literal[50, 60] = 50
t: float = 0.02
xinit: list = []
yinit: list = []
iinit: list = []
sinit
xmin: list = []
xmax: list = []
grid: Grid | None = None
incl_lim: bool
FG: casadi.Function | None = None
__reduce__()[source]
__setstate__(state)[source]
setup(**kwargs) None[source]
Return type:

None

fgcall() None[source]
Return type:

None

init_symbolic() None[source]
Return type:

None

dist_load(p: float, q: float, bus: list) None[source]
Parameters:
  • p (float)

  • q (float)

  • bus (list)

Return type:

None

check_disturbance(dist: pydynamicestimator.devices.device.Disturbance, iter_forward: int) None[source]
Parameters:
Return type:

None

exec_dist()[source]
class pydynamicestimator.system.DaeSim[source]

Bases: Dae

int_scheme_sim = None
eigenvalues = None
t0: float
tf: float
init_symbolic() None[source]
Return type:

None

fgcall() None[source]
Return type:

None

simulate(dist: pydynamicestimator.devices.device.Disturbance) None[source]
Parameters:

dist (pydynamicestimator.devices.device.Disturbance)

Return type:

None

eigenvalue_analysis() None[source]
Return type:

None

class pydynamicestimator.system.DaeEst[source]

Bases: Dae

err_msg_est = Multiline-String
Show Value
"""Estimation failed
Possible reasons:
 - Not enough measurements specified
 - Initialization point very bad
 - Estimator diverged from true state
 - Check if the disturbance rendered system unestimable
Possible solutions:
More measurements, less noise, different disturbance, better initialization..."""
nm: int = 0
_schemes
int_scheme: str = 'backward'
kf: float = 0.0
kb: float = 1.0
filter = None
unknown = None
proc_noise_alg: float = 0.0001
proc_noise_diff: float = 0.0001
init_error_diff: float = 1.0
init_error_alg: bool = False
unknown_indices: list = []
known_indices: list = []
err_init: float = 0.001
r_meas_noise_cov_matrix: numpy.ndarray | None = None
r_meas_noise__inv_cov_matrix: numpy.ndarray | None = None
q_proc_noise_diff_cov_matrix: numpy.ndarray | None = None
q_proc_noise_alg_cov_matrix: numpy.ndarray | None = None
q_proc_noise_cov_matrix: numpy.ndarray | None = None
c_meas_matrix: numpy.ndarray | None = None
z_meas_points_matrix: numpy.ndarray | None = None
p_est_init_cov_matrix: numpy.ndarray | None = None
x0: numpy.ndarray | None = None
y0: numpy.ndarray | None = None
s0: numpy.ndarray | None = None
f_func: casadi.Function | None = None
g_func: casadi.Function | None = None
df_dxy_jac: casadi.Function | None = None
dg_dxy_jac: casadi.Function | None = None
inner_tol: float = 1e-06
cov_tol: float = 1e-10
iter_ful: numpy.ndarray | None = None
time_full: numpy.ndarray | None = None
property te
find_unknown_indices(grid: Grid) None[source]
Parameters:

grid (Grid)

Return type:

None

init_symbolic() None[source]
Return type:

None

fgcall() None[source]
Return type:

None

_init_estimate() None[source]
Return type:

None

estimate(dist: pydynamicestimator.devices.device.Disturbance, **kwargs) None[source]
Parameters:

dist (pydynamicestimator.devices.device.Disturbance)

Return type:

None

pydynamicestimator.system.grid_est
pydynamicestimator.system.grid_sim
pydynamicestimator.system.dae_est
pydynamicestimator.system.dae_sim
pydynamicestimator.system.bus_init_sim
pydynamicestimator.system.bus_unknown_est
pydynamicestimator.system.line_sim
pydynamicestimator.system.line_est
pydynamicestimator.system.disturbance_sim
pydynamicestimator.system.disturbance_est
pydynamicestimator.system.device_list_sim = []
pydynamicestimator.system.device_list_est = []
pydynamicestimator.system.stack_volt_power(vre, vim) numpy.ndarray[source]
Return type:

numpy.ndarray