Symulacja modelu centrali

Symulator określony jest jako hybrydowy, ponieważ łączy symulację niezależnych obwodów liniowych, bazującą na wykorzystaniu MNA, z obsługą dynamicznych zmian topologii, inicjowanych przez zdarzenia powstające przy zwieraniu/rozwieraniu styków przekaźników. Styki przekaźników nie są modelowane na poziomie MNA.

Wykrywanie węzłów zasilających

Wykrywanie odbywa się po nazwie (sil-plus, sil-minus, od: siłownia-plus / siłownia-minus). Wykryte wezły mają ustawianą flagę RAIL_PLUS lub RAIL_MINUS.

Dystrybucja zasilania

Po odnalezieniu głównych węzłów zasilających następuje "rozpropagowanie" flagi RAIL_MINUS na wszystkie węzły, które są elektrycznie połączone z sil-minus, poprzez bezpieczniki wszystkich poziomów (główny, rzędowy, stojakowy oraz danego obwodu na poziomie ZA).

Technicznie jest to realizowane z użyciem BFS od węzła RAIL_MINUS, przez krawędzie, które są bezpiecznikami, do węzłów, od których rozpoczynają się właściwe obwody.

Rozpropagowanie RAIL_PLUS nie jest konieczne, ponieważ jest to w modelu dokładnie jeden węzeł, wspólny dla wszystkich obwodów.

Identyfikacja podobwodów (ang. subcircuits)

Lista węzłów efektywnych przeszukiwana jest liniowo. Utrzymywana jest globalna lista węzłów odwiedzonych, która jest wspólna dla etapu dystrybucji zasilania oraz dla etapu wstępnej identyfikacji podobwodów.

W pętli brane są z listy wyłacznie węzły, które nie były jeszcze odwiedzone na żadnym z wzmiankowanych etapów. Taki węzeł traktowany jest jako punkt wejścia do nowego podobwodu. Dla każdego wziętego węzła uruchamiany jest BFS, przy czym ogranicznikami dla niego są węzły z flagą RAIL_MINUS oraz RAIL_PLUS.

Efektem działania BFS jest jego przejście przez węzły i krawędzie grafu efektywnego. W wyniku tego przejścia tworzony jest obiekt SubCircuit, który zawiera listę zaangażowanych w podobwód węzłów oraz krawędzi. Odwiedzone węzły dodawane są do w/w listy węzłów odwiedzonych, co zapobiega ponownym próbom ich przeszukiwania w tym procesie.

Krawędzie (EffectiveEdge) po których odbywa się BFS, to z punktu widzenia modelu efektywnego pary: from(EffectiveNode, EffectiveTerminal) <→ to(EffectiveNode, EffectiveTerminal).

Odnalezione podobwody otrzymują swoje unikalne ID i przechowywane są w repozytorium podobwodów (SubCircuitRepo). SubCircuitRepo zajmuje się zarządzaniem obiektami podobwodów (tworzenie nowych podobwodów, usuwanie istniejących podobwodów, wyszukiwanie podobwodu dla zadanego węzła efektywnego, pilnowanie unikalności ID nadawanego nowym podobwodom).

Przed utworzeniem docelowych obiektów podobwodów przeprowadzane jest uproszczenie topologii polegające na usuwaniu gałęzi, które wchodzą w skład zidentyfikowanych obwodów, ale które aktualnie "wiszą w powietrzu" i przez które, w konsekwencji, nie płynie żaden prąd (ang. leaf pruning)

W dalszej kolejności następuje "spłaszczenie" podobwodu, na które składają się dwa etapy:

  • logiczne łaczenie ze sobą węzłów, pomiędzy którymi występują zwarte styki - wykonywane na poziomie struktury DSU, której instancja jest przechowywana w każdym podobwodzie,

  • przeindeksowanie zredukowanych węzłów na potrzeby budowania macierzy MNA (ang. MNA matrix stamping) (numeracja od zera, kolejnymi liczbami całkowitymi, oznaczającymi numer wiersza/kolumny macierzy).

Reakcja na zmiany w topologii

Zmiany w topologii mogą być wynikiem zwarcia lub rozwarcia styku.

Rozwarcie styku

Uprzednio zwarty styk, znajdujący się pomiędzy węzłami A i B zostaje w wyniku symulacji rozwarty. Do kolejki zdarzeń trafia odpowiednie zdarzenie informujące o tym.

W wyniku rozwarcia styku istniejący węzeł w podobwodzie zostaje podzielony na dwa. W zależności od tego, czy istnieją inne (równoległe) połączenia rozwartych węzłów pozostaje pojedynczy podobwód, lub jeśli takie równoległe połączenie nie istnieje, to dotychczas istniejący pojedynczy podobwód dzielony jest na dwa niezależne.

Procedura obsługi rozwarcia styku jest nastęująca (ang. Invalidate & Re-run):

  • znalezienie podobwodu dla węzła A i usunięcie go z repozytorium podobwodów.

  • uruchomienie BFS od węzła A i utorzenie pierwszego nowego podobwodu.

  • jeśli w trakcie BFS od węzła A zostanie odnaleziony węzeł B, to oznacza to, że istnieje nadal krawędź równoległa, która łączy węzły A i B, co oznacza dalej, że węzły te pozostają w ramach jednego podobwodu.

  • jeżeli węzeł B nie zostanie odnalezionoy podczas BFS dla węzła A, to uruchamiany jest dodatkowo BFS dla węzła B; efektem pracy tego BFS jest utworzenie drugiego nowego podobwodu.

W konsekwencji, w wyniku rozwarcia styku stary podobwód jest usuwany, a w zamian tworzony jest jeden, lub dwa nowe podobwody.

Po obsłużeniu zmian w topologii, nowoutworzone podobwody są "spłaszczane", wg zasady opisanej wyżej.

Zwarcie styku

Uprzednio rozwarty styk, znajdujący się pomiędzy węzłami A i B zostaje w wyniku symulacji zwarty. Do kolejki zdarzeń trafia odpowiednie zdarzenie informujące o zwarciu styku.

W wyniku zwarcia styku tworzone jest połaczenie dwóch węzłów w ramach jednego podobwodu lub dwa niezależne dotąd podobwody stają się jednym wspólnym podobwodem.

Procedura obsługi zwarcia styku jest uproszczona (ang. Fast Union) i nie wymagadodatkowych BFS. Przebiega ona wg następującego scenariusza:

  • określane są podobwody, do których należą węzły A i B

  • jeśli węzły A i B należą do tego samego podobwodu (ang. Internal Loop) to tworzy się połaczenie pomiędzy dwoma już istniejącymi węzłami:

    • dane węzłów i krawędzi (Set<EffectiveNode>, List<ComponentEdge>) z wyjściowego podobwodu są zapamiętywane,

    • wyjściowy podobwód jest usuwany,

    • nowoutworzone połączenie dodawane jest do zapamiętanej listy krawędzi,

    • tworzony jest nowy podobwód, bazujący na zmodyfikowanej liście krawędzi, i istniejącej liście węzłów,

    • nie jest wymagany BFS.

  • jeśli węzły A i B należały do różnych podobwodów (ang. Island Join)

    • dane węzłów i krawędzi (Set<EffectiveNode>, List<ComponentEdge>) z dwu wyjściowych podobwodów są zapamiętywane.

    • wyjściowe podobwody są usuwane.

    • tworzony jest nowy, współny podobwód, który zawiera sumę węzłów i sumę krawędzi z wyjściowych podowodów (z zabezpieczeniem, aby nie tworzyć zduplikowanych węzłów, np. PLUS_RAIL, MINUS_RAIL, które mogły istnieć w obu usuniętych podobwodach).

    • nie jest wymagany BFS.

Po obsłużeniu zmian w topologii, nowoutworzony podobwód jest "spłaszczany" wg zasady opisanej wyżej.

Słownik

BFS

Algorytm przeszukiwania grafu wszerz (ang. Breadth-First Search).

DSU

Struktura danych (i metody operujące na niej) pozwalająca na logiczne łączenie ze sobą zbiorów (tu: węzłów), ang. Disjoint-Set, Union/Find".

MNA

Zestaw zasad dotyczących tworzenia równań macierzowych służących do obliczania wartości napięć i prądów w obwodzie (ang. Modified Nodal Analysis).