def _recycled_powerflow(net, **kwargs): options = net["_options"] options["recycle"] = kwargs.get("recycle", None) options["init_vm_pu"] = "results" options["init_va_degree"] = "results" algorithm = options["algorithm"] ac = options["ac"] ppci = {"bus": net["_ppc"]["internal"]["bus"], "gen": net["_ppc"]["internal"]["gen"], "branch": net["_ppc"]["internal"]["branch"], "baseMVA": net["_ppc"]["internal"]["baseMVA"], "internal": net["_ppc"]["internal"], } if not ac: # DC recycle result = _run_dc_pf(ppci) _ppci_to_net(result, net) return if algorithm not in ['nr', 'iwamoto_nr'] and ac: raise ValueError("recycle is only available with Newton-Raphson power flow. Choose " "algorithm='nr'") recycle = options["recycle"] ppc = net["_ppc"] ppc["success"] = False ppc["iterations"] = 0. ppc["et"] = 0. if "bus_pq" in recycle and recycle["bus_pq"]: # update pq values in bus _calc_pq_elements_and_add_on_ppc(net, ppc) if "trafo" in recycle and recycle["trafo"]: # update trafo in branch and Ybus lookup = net._pd2ppc_lookups["branch"] if "trafo" in lookup: _calc_trafo_parameter(net, ppc) if "trafo3w" in lookup: _calc_trafo3w_parameter(net, ppc) if "gen" in recycle and recycle["gen"]: # updates the ppc["gen"] part _build_gen_ppc(net, ppc) ppc["gen"] = nan_to_num(ppc["gen"]) ppci = _ppc2ppci(ppc, net, ppci=ppci) ppci["internal"] = net["_ppc"]["internal"] net["_ppc"] = ppc # run the Newton-Raphson power flow result = _run_newton_raphson_pf(ppci, options) ppc["success"] = ppci["success"] ppc["iterations"] = ppci["iterations"] ppc["et"] = ppci["et"] if options["only_v_results"]: _ppci_bus_to_ppc(result, ppc) _ppci_other_to_ppc(result, ppc, options["mode"]) return # read the results from result (==ppci) to net _ppci_to_net(result, net)
def update_trafos(self): net = self.net ppci = self.ppci # update branch SHIFT entries for transfomers (if tap changed) lookup = net._pd2ppc_lookups["branch"] if "trafo" in lookup: _calc_trafo_parameter(net, ppci) if "trafo3w" in lookup: _calc_trafo3w_parameter(net, ppci) # update Ybus based on this options = net._options baseMVA, bus, gen, branch, ref, pv, pq, _, _, V, _ = nr_pf._get_pf_variables_from_ppci( ppci) self.ppci, self.Ybus, self.Yf, self.Yt = nr_pf._get_Y_bus( ppci, options, nr_pf.makeYbus_numba, baseMVA, bus, branch)