import dependencies
import numpy as np
from IPython.display import display, HTML
from hvac.components import Radiator
from hvac.process import Room
from nummath import graphing
%matplotlib inline
De warmteafgifte van een radiator is functie van 3 variabelen:
We beschouwen een ruimte met een berekend warmteverlies van 5000 W onder de volgende ontwerpcondities:
We selecteren uit een catalogus twee identieke radiatoren met de volgende nominale specificaties:
Qe_nom
= 2514 W Twe_nom
= 75 °CTwl_nom
= 65 °CTr_nom
= 20 °Cn
= 1.3473Om de verwarmingsinstallatie te dimensioneren, moeten we weten welk volumedebiet verwarmingswater naar elke radiator is vereist onder de hierboven genoemde ontwerpcondities.
STAP 1: Definitie en configuratie van de radiator
De eerste stap behelst het aanmaken en configureren van de geselecteerde radiatoren in het computerprogramma:
radiator = Radiator(
Qe_nom=2514.0,
Twe_nom=75.0,
Twl_nom=65.0,
Tr_nom=20.0,
n=1.3473
)
STAP 2: Keuze van de wateraanvoertemperatuur en doorgeven aan het programma van de gewenste ruimtetemperatuur onder ontwerpcondities
De waarde van de wateraanvoertemperatuur is een ontwerpkeuze. We kiezen dezelfde temperatuur die is opgegeven in de catalogus van de geselecteerde radiatoren. De ontwerpwaarde van de ruimtetemperatuur is een opgelegd gegeven. In casu wordt gevraagd dat bij de mogelijke minimale buitentemperatuur de verwarmingsinstallatie in staat moet zijn om een ruimtetemperatuur van 22 °C te handhaven. Dat is 2 °C meer dan er is opgegeven in de nominale specificaties van de radiatoren.
Twe_d = 75.0 # aanvoertemperatuur verwarmingswater onder ontwerpcondities
Tr_d = 22.0 # gevraagde ruimtetemperatuur te handhaven onder ontwerpcondities
STAP 3: Berekening door het programma van het vereist volumedebiet verwarmingswater per radiator onder ontwerpcondities
Noot: de vereiste warmteafgifte van 1 radiator is gelijk aan de helft van de ontwerpbelasting.
Vw_d = radiator.calc_Vw(Qe=2500.0, Twe=Twe_d, Tr=Tr_d)
display(HTML(
f"Het vereist volumedebiet onder ontwerpcondities naar de radiator bedraagt <b>{Vw_d * 1000 * 60:.3f}</b> L/min."
))
Het vereist volumedebiet verwarmingswater onder ontwerpcondities dat het programma hierboven heeft berekend, zal alleen nodig zijn op dagen dat de aangenomen minimale buitentemperatuur zich voordoet. Bij hogere buitentemperaturen en dezelfde gewenste ruimtetemperatuur zal het warmteverlies kleiner zijn dan het berekende warmteverlies onder ontwerpcondities. In hetgeen volgt willen we bepalen welk volumedebiet verwarmingswater er vereist is bij hogere buitentemperaturen dan de minimale buitentemperatuur, waarbij de wateraanvoertemperatuur ongewijzigd blijft.
STAP 1: Berekening van de globale warmtedoorgangscoëfficiënt van de ruimte
Om het vereist volumedebiet onder deelbelasting te kunnen bepalen, moeten we vooreerst beschikken over de globale thermische weerstand of de globale warmtedoorgangscoëfficënt van de ruimte. Deze kunnen uit de warmteverliesberekening van de ruimte afgeleid worden.
Qe_d = 5000.0 # ontwerpbelasting van de ruimte cf. warmteverliesberekening [W]
To_d = -10.0 # de minimale buitentemperatuur onder ontwerpcondities [°C]
R = (Tr_d - To_d) / Qe_d # globale thermische weerstand van de ruimte [K/W]
K = 1.0 / R # globale warmtedoorgangscoëfficiënt van de ruimte [W/K]
STAP 2: Berekening van de vereiste warmteafgifte van 1 radiator i.f.v. de buitentemperatuur
We stellen een reeks buitentemperaturen op die gelegen zijn tussen de minimale waarde onder ontwerpcondities en de gewenste ruimtetemperatuur. Mits het buiten beschouwing laten van interne warmtewinsten, zal het warmteverlies en derhalve de vereiste warmteafgifte van de radiatoren nul worden, wanneer de buitentemperatuur gelijk is geworden aan de gewenste ruimtetemperatuur. Voor elke buitentemperatuur in de reeks bepalen we m.b.v. de globale warmtedoorgangscoëfficiënt van de ruimte het warmteverlies bij die buitentemperatuur. Dit warmteverlies is dan tevens de vereiste warmteafgifte van de radiatoren.
# Definieer een reeks buitentemperaturen tussen de ontwerpwaarde en de gewenste ruimtetemperatuur
To_array = np.linspace(To_d, Tr_d, endpoint=True)
# Bereken de vereiste warmteafgifte van 1 radiator bij de gegeven buitentemperaturen (noot: vandaar de deling door 2)
Qe_array = K * (Tr_d - To_array) / 2.0
Het resultaat is een functie die we in een grafiek kunnen voorstellen. De x-as is de buitentemperatuur. Op de y-as lezen we de vereiste warmteafgifte van de radiator af bij de corresponderende buitentemperatuur op de x-as.
graph_Qe = graphing.Graph(fig_size=[8, 8], dpi=96)
graph_Qe.add_data_set('Qe', To_array, Qe_array)
graph_Qe.set_axis_titles('To (°C)', 'Qe (W)')
graph_Qe.turn_grid_on()
graph_Qe.draw_graph()
graph_Qe.show_graph()
De grafiek toont ons dat het warmteverlies en daarmee de vereiste warmteafgifte per radiator lineair afneemt met toenemende buitentemperatuur.
STAP 3: Berekening van het vereist volumedebiet verwarmingswater door 1 radiator i.f.v. de buitentemperatuur
Nu de vereiste warmteafgifte per radiator i.f.v. de buitentemperatuur gekend is, kan het daartoe benodigd overeenkomstig volumedebiet verwarmingswater door de radiator worden berekend. De wateraanvoertemperatuur blijft gelijk aan de ontwerpwaarde Twe_d
en de ruimtetemperatuur blijft ook gelijk aan de gewenste ontwerpwaarde Tr_d
.
Voor elke Qe
in de array Qe_array
berekenen we het vereiste volumedebiet. Het resultaat is de array Vw_array_1
.
Vw_array_1 = np.array([radiator.calc_Vw(Qe=Qe_i, Twe=Twe_d, Tr=Tr_d) for Qe_i in Qe_array])
We kunnen nu het vereist volumedebiet i.f.v. de buitentemperatuur door het programma in een grafiek laten tekenen.
graph_Vw = graphing.Graph(fig_size=[8, 8], dpi=96)
graph_Vw.add_data_set('Vw', To_array, Vw_array_1 * 1000.0 * 60.0)
graph_Vw.set_axis_titles('To (°C)', 'Vw (L/min)')
graph_Vw.turn_grid_on()
graph_Vw.draw_graph()
graph_Vw.show_graph()
Deze grafiek leert ons dat, in tegenstelling tot de warmetafgifte van de radiator, het vereist volumedebiet verwarmingswater door de radiator veeleer exponentieel afneemt met toenemende buitentemperatuur.
De vraag kan ook worden gesteld welke ruimtetemperatuur zich in stationair regime zou instellen bij een gegeven buitentemperatuur en een zeker volumedebiet verwarmingswater door de radiator.
Met de onderstaande code wordt voor een reeks volumedebieten tussen (bijna) 0% en 100% van het volumedebiet onder ontwerpcondities en een gegeven buitentemperatuur To
berekend welke ruimtetemperatuur zich zou instellen in stationair regime zonder enige tussenkomst van een temperatuurregeling.
# definieer de ruimte met de gegeven radiator
room = Room(radiator=radiator)
# de minimale buitentemperatuur onder ontwerpcondities:
room.To_des = -10.0
# globale thermische weerstand van de ruimte t.a.v. 1 radiator! (er zijn 2 radiatoren in de ruimte)
room.R = 2.0 * R
# definieer een reeks volumedebieten waarvoor de overeenkomstige ruimtetemperaturen zullen berekend worden
Vw_array_pod = np.linspace(1.0e-12, 100.0, endpoint=True) # _pod = 'percent of design value'
# array van volumedebieten tussen 0 en 100 % van het ontwerpdebiet
Vw_array_2 = (Vw_array_pod / 100.0) * Vw_d
# ingave van de buitentemperatuur waarvoor het verloop van de ruimtetemperatuur zal berekend worden
To = 10.0
# berekening van de ruimtetemperaturen bij de gegeven volumedebieten en de opgegeven buitentemperatuur
Tr_array = np.array([room.calc_static_Tr(Vw_i, Twe_d, To) for Vw_i in Vw_array_2])
Het resultaat kan in een grafiek getekend worden. In de grafiek wordt het volumedebiet verwarmingswater doorheen de radiator langs de x-as uitgedrukt in procenten van het ontwerpvolumedebiet. Op de y-as leest men de ruimtetemperatuur af die zich zal instellen bij een zeker volumedebiet.
graph_Tr = graphing.Graph(fig_size=[8, 8], dpi=96)
graph_Tr.add_data_set(f'To = {To:.1f} °C', Vw_array_pod, Tr_array)
graph_Tr.add_legend()
graph_Tr.set_axis_titles('Vw (%)', 'Tr (°C)')
graph_Tr.scale_x_axis(lim_min=0, lim_max=100, tick_step=10)
graph_Tr.turn_grid_on()
graph_Tr.draw_graph()
graph_Tr.show_graph()
De grafiek toont ons dat bij de gegeven buitentemperatuur (in casu 10 °C) en bij ongewijzigde aanvoertemperatuur van het verwarmingswater de gewenste ruimtetemperatuur reeds wordt bereikt wanneer het volumedebiet nauwelijks 10% bedraagt van het vereiste volumedebiet onder ontwerpcondities.
De maximale ruimtetemperatuur die zich bij de gegeven buitentemperatuur (10 °C) zou instellen, indien het volumedebiet verwarmingswater door de radiator gelijk zou blijven aan het ontwerpvolumedebiet Vw(%) = 100% (radiatorventiel volledig open), bedraagt:
display(HTML(f'Maximale ruimtetemperatuur = <b>{Tr_array[-1]:.1f}</b> °C (bij ontwerpvolumedebiet en buitentemperatuur {To:.1f} °C)'))