Skip to content

Instantly share code, notes, and snippets.

@ayitinya
Created May 28, 2023 12:38
Show Gist options
  • Save ayitinya/c40fdb534f3e98413f17f9bf99ac7602 to your computer and use it in GitHub Desktop.
Save ayitinya/c40fdb534f3e98413f17f9bf99ac7602 to your computer and use it in GitHub Desktop.
from typing import Dict, List
def main():
bus_admittances: Dict[str, complex] = {
"1-2": 2.5 - 4j,
"1-3": 1 - 2j,
"2-3": 1.5 - 2j,
"1-0": 0.4 - 1j,
"2-0": 0.5 - 1j,
}
busses: List[str] = []
for bus in bus_admittances.keys():
bus_split: List[str] = bus.split("-")
for bus_split_item in bus_split:
if bus_split_item not in busses and bus_split_item != "0":
busses.append(bus_split_item)
admittance_matrix: List[List[complex]] = [
[0 for _ in range(len(busses))] for _ in range(len(busses))]
print(admittance_matrix)
for bus, admittance in bus_admittances.items():
bus_split: List[str] = bus.split("-")
x: int = int(bus_split[0])
y: int = int(bus_split[1])
if x != 0 and y != 0:
x -= 1
y -= 1
admittance_matrix[x][y] = -admittance
admittance_matrix[y][x] = -admittance
admittance_matrix[x][x] += admittance
admittance_matrix[y][y] += admittance
elif x == 0 and y != 0:
y -= 1
admittance_matrix[y][y] += admittance
elif x != 0 and y == 0:
x -= 1
admittance_matrix[x][x] += admittance
print(admittance_matrix)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment