def test_division(self): admittance_1 = Admittance(impedance=Impedance(0.16, -0.12)) admittance_2 = Admittance(g=2, b=2) admittance_1 /= admittance_2 print("") print("G = " + str(admittance_1.get_real_part())) print("B = " + str(admittance_1.get_imaginary_part()))
def test_addition(self): admittance_1 = Admittance(impedance=Impedance(5, 2)) admittance_2 = Admittance(impedance=Impedance(3, 6)) admittance_1 += admittance_2 print("") print("G = " + str(admittance_1.get_real_part())) print("B = " + str(admittance_1.get_imaginary_part()))
def test_subtraction(self): admittance_1 = Admittance(g=5, b=2) admittance_2 = Admittance(g=3, b=6) admittance_1 -= admittance_2 print("") print("G = " + str(admittance_1.get_real_part())) print("B = " + str(admittance_1.get_imaginary_part()))
def __set_line_parameters(self, line_parameters): if line_parameters: # Leitungslaenge self.__length = line_parameters['length'] # resistiver Laengswiderstand self.__resistance = line_parameters['r_l'] * self.__length # induktiver Laengswiderstand self.__inductive_reactance = line_parameters['x_l'] * self.__length # resistiver Querwiderstand self.__transverse_resistance = line_parameters[ 'g_shunt_l'] * self.__length # kapazitiver Querwiderstand self.__capacitive_reactance = line_parameters[ 'b_shunt_l'] * self.__length else: LoadFlowReporter.error_report.append( "Coudn't read line_parameters.") print(LoadFlowReporter.error_report) # Laengsimpedanz der Leitung if self.__resistance or self.__inductive_reactance: self.__impedance = Impedance(self.__resistance, self.__inductive_reactance) # Laengsadmittanz der Leitung if self.__impedance is not None: self.__admittance = Admittance(impedance=self.__impedance) # Queradmittanz der Leitung # if self.__transverse_impedance is not None: self.__transverse_admittance = Admittance( g=self.__transverse_resistance, b=self.__capacitive_reactance) # Knoten-Queradmittanz der Leitung bezogen auf einen Knoten, entspricht halben Queradmittanz-Wert if self.__transverse_admittance is not None: self.__transverse_admittance_on_node = Admittance( g=((self.__transverse_admittance.get_real_part() / 2) if self.__transverse_admittance.get_real_part() else None), b=((self.__transverse_admittance.get_imaginary_part() / 2)) if self.__transverse_admittance.get_imaginary_part() else None)
def __set_transformer_parameters(self, transformer_parameters): # resistiver Laengswiderstand der Kurzschlussimpedanz if transformer_parameters[0]: self.__r = transformer_parameters[0] if transformer_parameters[1]: self.__x = transformer_parameters[1] if transformer_parameters[2]: self.__g = transformer_parameters[2] if transformer_parameters[3]: self.__b = transformer_parameters[3] if transformer_parameters[4]: self.__tap_ratio = transformer_parameters[4] if transformer_parameters[5]: self.__phase_shift = transformer_parameters[5] if transformer_parameters[6]: self.__s_n = transformer_parameters[6] else: LoadFlowReporter.error_report.append("Transformer ERROR") print(LoadFlowReporter.error_report) # Kurzschlussimpedanz des Transformators if self.__r and self.__x: self.__sc_impedance = Impedance(self.__r, self.__x) # Kurzschlussadmittanz des Transformators if self.__sc_impedance is not None: self.__sc_admittance = Admittance(impedance=self.__sc_impedance) # Shunt-Admittanz des Transformators if self.__g and self.__b: self.__shunt_admittance = Admittance(g=self.__g, b=self.__b) # Shunt-Impedanz des Transformators if self.__shunt_admittance is not None: self.__shunt_impedance = Impedance( admittance=self.__shunt_admittance)
def __get_sum_of_grid_lines_on_node(self, node_name_i, node_name_j): """ Methode zur Aufsummierung aller Admittanzen an einem Knoten Parameter: Knotennamen, [Optional] Modus: True|False (all_admittances), Wenn True: werden alle Laengs- und Queradmittanzen aufsummiert. Wenn False: werden nur die Längsadmittanzen aufsummiert (Queradmittanzen werden igoniert) Rückgabewert: kummulierter Admittanzenwert Quelle: E. Handschin, Elektrische Energieübertragungssysteme. Teil 1: Stationaerer Betriebszustand. Heidelberg: Hueting, 1983, Seite 51 :param node_name_i: :param node_name_j: :return: """ # Summenadmittanz an Knoten i und entspricht einem Element der Knotenadmittanzmatrix (KAM) sum_admittance = Admittance(g=0, b=0) # Ist Diagonalelement ? is_diag_elem = node_name_i == node_name_j for bus_connecter in self.__bus_connecter_list: # pruefen ob das Objekt eine Leitung ist is_line = isinstance(bus_connecter, GridLine) if is_line: # echte Kopien der Längs- und Queradmittanz erzeugen bus_connecter_admittance = copy.deepcopy( bus_connecter.get_admittance()) if bus_connecter else 0 bus_connecter_transverse_admittance = copy.deepcopy( bus_connecter.get_transverse_admittance_on_node( )) if bus_connecter else 0 else: # echte Kopie der Kurzschlussimpedanz des Transformators erstellen bus_connecter_admittance = copy.deepcopy( bus_connecter.get_sc_admittance()) if bus_connecter else 0 bus_connecter_transverse_admittance = None # SPÄTER DIE SHUNT IMPEDANZ HINZUFUEGEN # bus_connecter_transverse_admittance = copy.deepcopy( # bus_connecter.get_transverse_admittance_on_node()) if bus_connecter else 0 # pruefen ob Leitung beide Knoten verbindet is_element_connecting_i_j = bus_connecter.get_node_name_i() == node_name_i and \ bus_connecter.get_node_name_j() == node_name_j or \ bus_connecter.get_node_name_i() == node_name_j and \ bus_connecter.get_node_name_j() == node_name_i # Prüfen ob Diagonalelement if is_diag_elem: # Addiere Längsadmittanz von Gridline zur Summenadmittanz sum_admittance += bus_connecter_admittance # Prüfen ob Queradmittanz in Gridline vorhanden if bus_connecter_transverse_admittance: # Addiere Knoten-Queradmittanz von Gridline zur Summenadmittanz sum_admittance += bus_connecter_transverse_admittance else: if is_element_connecting_i_j: # Addiere Längsadmittanz von Gridline zur Summenadmittanz sum_admittance += bus_connecter_admittance return sum_admittance if is_diag_elem else sum_admittance * -1
def set_transverse_admittance(self, real_part, imag_part): self.__transverse_admittance = Admittance(g=real_part, b=imag_part)
def set_admittance(self, real_part, imag_part): self.__admittance = Admittance(g=real_part, b=imag_part)