Sieć cieplna - opis projektu

Celem projektu jest implementacja prostego symulatora sieci cieplnej. Sieć cieplna składa się ze źródła (ciepłowni), dostarczającego wodę ciepłowniczą (o temperaturze 90°C lub 120°C) do węzłów cieplnych. Każdy węzeł cieplny zainstalowany jest w bloku mieszkalnym i odpowiada za dostarczanie wody o odpowiedniej temperaturze do kaloryferów zamontowanych w całym bloku (tzw. węzeł CO). Każdy węzeł posiada swój własny zamknięty obieg wody, do którego, poprzez szczelny wymiennik ciepła, przekazywane jest ciepło z wody ciepłowniczej. Węzeł reguluje temperaturę wody w swoim wewnętrznym obiegu przy pomocy zaworu, którym zmienia przepływ wody ciepłowniczej przez wymiennik. Wychłodzona woda ciepłownicza, po przepłynięciu przez wymiennik, jest zwracana do obiegu powrotnego ciepłowni. Sposób połączenia węzłów pokazuje poniższy rysunek.

Rysunek przedstawia (od prawej): ciepłownię, trzy węzły cieplne oraz upust. Ciepłownia dostarcza do sieci wodę ciepłowniczą o ciśnieniu P_wyjściowe. Woda powraca z sieci rurociągiem powrotnym, przy czym dopływając do ciepłowni ma ciśnienie P_wejściowe. Różnica ciśnień P = (P_wy - P_we) wymusza obieg wody w sieci. W zależności od temperatury zewnętrznej t_zew, ciepłownia reguluje ilość ciepła dostarczanego do sieci sterując parametrem P. Dla uproszczenia zakładamy, że temperatura wody ciepłowniczej jest wszędzie stała.

Spadek ciśnienia
Ilość ciepła tłoczonego do sieci wyraża się parametrem P. Każdy pogrubiony na czarno odcinek rurociągu powoduje spadek ciśnienia w rurociągu o Δp. Każdy węzeł może powodować spadek ciśnienia od 0 do 20Δp. Węzeł reguluje ilość pobieranego z sieci ciepła (spadek ciśnienia na węźle) przy pomocy zaworu (oznaczony "klepsydrą"). Zawór zmienia przepływ przez wymiennik ciepła - im większy przepływ (większy spadek ciśnienia) tym więcej ciepła pobierane jest przez węzeł. Łączna ilość ciepła tłoczonego do sieci wyrażona jest przez P, wynikające z bieżącej mocy ciepłowni, także w sytuacji gdy pierwsze n węzłów spowoduje zbyt duży spadek ciśnienia, dla kolejnych może go już nie wystarczyć (nie będzie różnicy ciśnień, a więc woda ciepłownicza nie będzie tłoczona przez węzeł). Zakładamy, że w sieci znajduje się również upust, który ma na celu pochłonięcie ewentualnego nadmiaru ciśnienia - tak aby nie był on przetłaczany przez węzły, powodując przegrzanie. Każdy węzeł steruje przepływem przez swój zawór samodzielnie, nie komunikując się z pozostałymi ani z ciepłownią. Potrzebna mu ilość ciepła (spadek ciśnienia, który chcemy uzyskać na samym węźle, pomijając rurociągi) jest proporcjonalna do temperatury zewnętrznej t_zew, dla uproszczenia wyraźmy ją wzorem:
p_potrzebne = max(0, (20°C - t_zew) * Δp / 2).

Przykład 1a:
Węzeł w1 położony jest bezpośrednio przy ciepłowni. t_zew = -10°C.
Jak duży spadek ciśnienia jest mu potrzebny?
potrzebne ciepło: pw_potrz = (20°C - (-10°C)) * Δp / 2 = 15Δp

Ile ciśnienia (ciepła) jest dostępne dla węzła w1, a ile dla kolejnego węzła w2?
P = P_wy - P_we
Ciśnienie dostępne dla węzła 1: pw1_dost = P - 2Δp (spadek na rurociągu)
Cisnienie dostępne dla węzła 2: pw2_dost = pw1_dost - pw_potrz - 2Δp
itd..

Rodzaje węzłów
Celem symulacji jest pokazanie różnic w zachowaniu dwóch typów węzłów (podpowiedź: dziedziczenie i funkcje wirtualne). Pierwszy typ to tzw. węzeł pogodowy - uzależnia stopień otwarcia zaworu wyłącznie od temperatury zewnętrznej. Węzeł pogodowy pobiera całą potrzebną mu ilość ciepła z sieci, ale przy dużych spadkach temperatury zewnętrznej może okazać się, że dla dalej położonych w sieci węzłów nie starczy ciśnienia. Drugi typ węzła - "altruistyczny" - zwraca uwagę również na ciśnienie w sieci i gdy jest niskie, pobiera mniej ciepła. W ten sposób w jego bloku mieszkalnym będzie odrobinę chłodniej, ale ciepła starczy jeszcze dla kolejnych bloków (tak sterowane są w szczególności węzły, których właścicielem jest ciepłownia - pomaga to ustabilizować sieć).

Przykład 1b - węzły pogodowe:
P = 24Δp
Ciśnienie dostępne dla węzła w1: pw1_dost = P - 2Δp = 22Δp
Ciśnienie zużyte przez węzeł w1: pw1_zuz = pw_potrz = 15Δ (pobieramy całe ciśnienie potrzebne przy temperaturze t_zew = -10°C
Cisnienie dostępne dla węzła w2: pw2_dost = pw1_dost - pw1_zuz - 2Δ = 5Δp
będzie zimno...

Przykład 1c - węzły "altruistyczne":
P = 24Δp
Ciśnienie dostępne dla węzła w1: pw1_dost = P - 2Δp = 22Δp
Ciśnienie zużyte przez węzeł w1 (optymalnie): pw1_zuz = 10Δ
Cisnienie dostępne dla węzła w2: pw2_dost = pw1_dost - pw1_zuz - 2Δ = 10Δp
będzie chłodniej ale nikt nie zmarznie

Temperatura w węźle
Ilość ciepła zużyta przez węzeł przelicza się na temperaturę w bloku mieszkalnym, dla uproszczenia (przyjmujemy identyczne bloki):
t_blok = t_zew + 2 * pw_zuz

Wymagania: