pydynamicestimator.system ========================= .. py:module:: pydynamicestimator.system Attributes ---------- .. autoapisummary:: 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 Classes ------- .. autoapisummary:: pydynamicestimator.system.Grid pydynamicestimator.system.GridSim pydynamicestimator.system.GridEst pydynamicestimator.system.Dae pydynamicestimator.system.DaeSim pydynamicestimator.system.DaeEst Functions --------- .. autoapisummary:: pydynamicestimator.system.stack_volt_power Module Contents --------------- .. py:class:: Grid .. py:attribute:: y_adm_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: z_imp_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: incident_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: Bsum :type: Optional[numpy.ndarray] :value: None .. py:attribute:: Gsum :type: Optional[numpy.ndarray] :value: None .. py:attribute:: nb :type: int :value: 0 .. py:attribute:: nn :type: int :value: 0 .. py:attribute:: buses :type: list :value: [] .. py:attribute:: Sb :type: float :value: 100 .. py:attribute:: idx_i :type: list :value: [] .. py:attribute:: idx_j :type: list :value: [] .. py:attribute:: idx_i_re :type: list :value: [] .. py:attribute:: idx_j_re :type: list :value: [] .. py:attribute:: idx_i_im :type: list :value: [] .. py:attribute:: idx_j_im :type: list :value: [] .. py:attribute:: yinit :type: dict .. py:attribute:: yf :type: dict .. py:attribute:: sf :type: dict .. py:attribute:: line :type: Optional[pydynamicestimator.devices.device.Line] :value: None .. py:attribute:: line_is_faulted :type: list[bool] :value: [] .. py:attribute:: line_is_open :type: list[bool] :value: [] .. py:attribute:: line_fault_adm :type: list[float] :value: [] .. py:attribute:: bus_is_faulted :type: list[bool] :value: [] .. py:attribute:: bus_fault_adm :type: list[float] :value: [] .. py:attribute:: idx_branch :type: dict[Tuple[str, str], int] .. py:attribute:: idx_bus :type: dict[str, int] .. py:attribute:: idx_bus_re :type: dict[str, int] .. py:attribute:: idx_bus_im :type: dict[str, int] .. py:attribute:: C_branches_forward :type: Optional[numpy.ndarray] :value: None .. py:attribute:: C_branches_reverse :type: Optional[numpy.ndarray] :value: None .. py:attribute:: C_branches :type: Optional[numpy.ndarray] :value: None .. py:method:: save_data(dae: Dae) -> None .. py:method:: init_symbolic(dae: Dae) -> None .. py:method:: gcall(dae: Dae) -> None .. py:method:: guncall(dae: Dae) -> None .. py:method:: add_lines(line: pydynamicestimator.devices.device.Line) -> None .. py:method:: add_bus(bus: str, idx: list, idx_re: list, idx_im: list) -> None .. py:method:: build_y() -> None .. py:method:: get_branch_index(node1: list[str], node2: list[str]) -> tuple[numpy.ndarray, numpy.ndarray] :param node1 (): List of starting nodes :param node2 (): List of receiving nodes Returns: The order of the given branch and the order of the opposite direction branch .. py:method:: get_node_index(buses: list) -> tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray] .. py:class:: GridSim Bases: :py:obj:`Grid` .. py:method:: init_from_power_flow(dae: DaeSim, static: pydynamicestimator.devices.device.BusInit) -> None .. py:method:: print_init_power_flow(dae: DaeSim) -> None .. py:method:: build_Gsum() -> None .. py:method:: build_Bsum() -> None .. py:method:: build_incident_matrix() -> None .. py:method:: setup(dae: DaeSim, bus_init: pydynamicestimator.devices.device.BusInit) -> None .. py:class:: GridEst Bases: :py:obj:`Grid` .. py:attribute:: y_simulation :value: [] .. py:method:: _init_from_simulation(other: GridSim, dae: Dae) -> None .. py:method:: _get_results(other: GridSim) -> None .. py:method:: setup(dae: DaeEst, other: GridSim) -> None .. py:method:: init_symbolic(dae: DaeEst) -> None .. py:class:: Dae .. py:attribute:: nx :type: int :value: 0 .. py:attribute:: ny :type: int :value: 0 .. py:attribute:: ng :type: int :value: 0 .. py:attribute:: np :type: int :value: 0 .. py:attribute:: nts :type: int :value: 0 .. py:attribute:: x :type: Optional[casadi.SX] :value: None .. py:attribute:: y :type: Optional[casadi.SX] :value: None .. py:attribute:: f :type: Optional[casadi.SX] :value: None .. py:attribute:: g :type: Optional[casadi.SX] :value: None .. py:attribute:: p :type: Optional[casadi.SX] :value: None .. py:attribute:: p0 :type: Optional[casadi.SX] :value: None .. py:attribute:: s :type: Optional[casadi.SX] :value: None .. py:attribute:: x_full :type: Optional[numpy.ndarray] :value: None .. py:attribute:: y_full :type: Optional[numpy.ndarray] :value: None .. py:attribute:: i_full :type: Optional[numpy.ndarray] :value: None .. py:attribute:: T_start :type: float :value: 0.0 .. py:attribute:: T_end :type: float :value: 10.0 .. py:attribute:: time_steps :type: Optional[numpy.ndarray] :value: None .. py:attribute:: Sb :type: float :value: 100 .. py:attribute:: fn :type: Literal[50, 60] :value: 50 .. py:attribute:: t :type: float :value: 0.02 .. py:attribute:: xinit :type: list :value: [] .. py:attribute:: yinit :type: list :value: [] .. py:attribute:: iinit :type: list :value: [] .. py:attribute:: sinit .. py:attribute:: xmin :type: list :value: [] .. py:attribute:: xmax :type: list :value: [] .. py:attribute:: grid :type: Optional[Grid] :value: None .. py:attribute:: incl_lim :type: bool .. py:attribute:: FG :type: Optional[casadi.Function] :value: None .. py:method:: __reduce__() .. py:method:: __setstate__(state) .. py:method:: setup(**kwargs) -> None .. py:method:: fgcall() -> None .. py:method:: init_symbolic() -> None .. py:method:: dist_load(p: float, q: float, bus: list) -> None .. py:method:: check_disturbance(dist: pydynamicestimator.devices.device.Disturbance, iter_forward: int) -> None .. py:method:: exec_dist() .. py:class:: DaeSim Bases: :py:obj:`Dae` .. py:attribute:: int_scheme_sim :value: None .. py:attribute:: eigenvalues :value: None .. py:attribute:: t0 :type: float .. py:attribute:: tf :type: float .. py:method:: init_symbolic() -> None .. py:method:: fgcall() -> None .. py:method:: simulate(dist: pydynamicestimator.devices.device.Disturbance) -> None .. py:method:: eigenvalue_analysis() -> None .. py:class:: DaeEst Bases: :py:obj:`Dae` .. py:attribute:: err_msg_est :value: Multiline-String .. raw:: html
Show Value .. code-block:: python """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...""" .. raw:: html
.. py:attribute:: nm :type: int :value: 0 .. py:attribute:: _schemes .. py:attribute:: int_scheme :type: str :value: 'backward' .. py:attribute:: kf :type: float :value: 0.0 .. py:attribute:: kb :type: float :value: 1.0 .. py:attribute:: filter :value: None .. py:attribute:: unknown :value: None .. py:attribute:: proc_noise_alg :type: float :value: 0.0001 .. py:attribute:: proc_noise_diff :type: float :value: 0.0001 .. py:attribute:: init_error_diff :type: float :value: 1.0 .. py:attribute:: init_error_alg :type: bool :value: False .. py:attribute:: unknown_indices :type: list :value: [] .. py:attribute:: known_indices :type: list :value: [] .. py:attribute:: err_init :type: float :value: 0.001 .. py:attribute:: r_meas_noise_cov_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: r_meas_noise__inv_cov_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: q_proc_noise_diff_cov_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: q_proc_noise_alg_cov_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: q_proc_noise_cov_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: c_meas_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: z_meas_points_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: p_est_init_cov_matrix :type: Optional[numpy.ndarray] :value: None .. py:attribute:: x0 :type: Optional[numpy.ndarray] :value: None .. py:attribute:: y0 :type: Optional[numpy.ndarray] :value: None .. py:attribute:: s0 :type: Optional[numpy.ndarray] :value: None .. py:attribute:: f_func :type: Optional[casadi.Function] :value: None .. py:attribute:: g_func :type: Optional[casadi.Function] :value: None .. py:attribute:: df_dxy_jac :type: Optional[casadi.Function] :value: None .. py:attribute:: dg_dxy_jac :type: Optional[casadi.Function] :value: None .. py:attribute:: inner_tol :type: float :value: 1e-06 .. py:attribute:: cov_tol :type: float :value: 1e-10 .. py:attribute:: iter_ful :type: Optional[numpy.ndarray] :value: None .. py:attribute:: time_full :type: Optional[numpy.ndarray] :value: None .. py:property:: te .. py:method:: find_unknown_indices(grid: Grid) -> None .. py:method:: init_symbolic() -> None .. py:method:: fgcall() -> None .. py:method:: _init_estimate() -> None .. py:method:: estimate(dist: pydynamicestimator.devices.device.Disturbance, **kwargs) -> None .. py:data:: grid_est .. py:data:: grid_sim .. py:data:: dae_est .. py:data:: dae_sim .. py:data:: bus_init_sim .. py:data:: bus_unknown_est .. py:data:: line_sim .. py:data:: line_est .. py:data:: disturbance_sim .. py:data:: disturbance_est .. py:data:: device_list_sim :value: [] .. py:data:: device_list_est :value: [] .. py:function:: stack_volt_power(vre, vim) -> numpy.ndarray