%matplotlib inline
import dependencies
import numpy as np
from IPython.display import display, HTML
from hvac.components import Radiator
from nummath import graphing, interpolation
We beschouwen opnieuw dezelfde ruimte en dezelfde twee radiatoren uit DE RADIATOR | DEEL I. In dat Jupyter Notebook werd vooreerst berekend welk volumedebiet verwarmingswater met een zekere aanvoertemperatuur door de radiator moet stromen om de ontwerpbelasting te dekken, t.t.z. om de gewenste ruimtetemperatuur te handhaven bij de mogelijke minimale buitentemperatuur. Vervolgens is nagegaan welk volumedebiet verwarmingswater met dezelfde wateraanvoertemperatuur nodig is om de gewenste ruimtetemperatuur te handhaven bij verschillende buitentemperaturen groter dan de minimale buitentemperatuur. Tot slot is er ook nog berekend welke ruimtetemperatuur zich in stationair regime zou instellen bij een zekere buitentemperatuur voor verschillende volumedebieten van het verwarmingswater door de radiator.
Maar in plaats van het volumedebiet van het verwarmingswater aan te passen i.f.v. de belasting is het evengoed mogelijk om de aanvoertemperatuur van het verwarmingswater aan te passen. Dit wordt in dit tweede deel over de radiator behandeld.
STAP 1: Opgave van de ontwerpcondities
Eerst moeten we de geselecteerde radiator opnieuw invoeren in het computerprogramma. Vervolgens geven we de gekende ontwerpcondities in, laten het programma daarmee het vereiste volumedebiet onder ontwerpcondities berekenen en bepalen we de globale warmtedoorgangscoëfficiënt van de ruimte.
# definieer de radiator (in de ruimte zijn 2 identieke radiatoren)
radiator = Radiator(
Qe_nom=2514.0,
Twe_nom=75.0,
Twl_nom=65.0,
Tr_nom=20.0,
n=1.3473
)
Qe_d = 5000.0 # warmteverlies van de ruimte onder ontwerpcondities [W]
To_d = -10.0 # ontwerp-buitentemperatuur [°C]
Twe_d = 75.0 # ontwerp-wateraanvoertemperatuur [°C]
Tr_d = 22.0 # gewenste ruimtetemperatuur [°C]
# vereist volumedebiet verwarmingswater door 1 radiator onder ontwerpcondities [m^3/s]
Vw_d = radiator.calc_Vw(Qe=2500.0, Twe=Twe_d, Tr=Tr_d)
# globale warmtedoorgangscoëfficiënt van de ruimte [W/K]
K = Qe_d / (Tr_d - To_d)
STAP 2: Bepaling van de vereiste warmteafgifte per radiator bij deelbelasting
Om de vereiste wateraanvoertemperatuur te kunnen bepalen bij verschillende buitentemperaturen dienen we eerst te berekenen welke warmteafgifte van de radiatoren wordt gevraagd bij die buitentemperaturen, teneinde de gewenste ruimtetemperatuur te kunnen handhaven.
# array van buitentemperaturen tussen minimale buitentemperatuur en gewenste ruimtetemperatuur
To_array = np.arange(To_d, Tr_d + 0.5, 0.5)
# vereiste warmteafgifte van 1 radiator bij de verschillende buitentemperaturen [W]
Qe_array = np.array([K * (Tr_d - To_i) for To_i in To_array]) / 2.0
De resultaten kunnen in een grafiek worden voorgesteld. De grafiek geeft weer welke warmteafgifte van 1 radiator vereist is bij een zekere buitentemperatuur om de gewenste ruimtetemperatuur te kunnen handhaven.
graph_Qe = graphing.Graph(fig_size=[8.0, 8.0], 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()
STAP 3: Bepaling van de vereiste wateraanvoertemperatuur bij deelbelasting
M.b.v. de in stap 2 berekende benodigde warmteafgifte per radiator i.f.v. de buitentemperatuur, het gekende volumedebiet verwarmingswater per radiator, nl. hetzelfde volumedebiet dat in stap 1 werd berekend om aan de ontwerpcondities te voldoen, en de gewenste ruimtetemperatuur kunnen we nu uitrekenen welke wateraanvoertemperatuur is vereist i.f.v. de buitentemperatuur.
Twe_array = np.array([radiator.calc_Twe(Qe_i, Vw_d, Tr_d) for Qe_i in Qe_array])
In een grafiek kunnen we nu langs de x-as de buitentemperatuur To_array
uitzetten en langs de y-as de corresponderende vereiste wateraanvoertemperatuur Twe_array
, opdat de radiator de vereiste warmteafgifte Qe_array
zou afgeven, teneinde de gewenste ruimtetemperatuur te handhaven.
graph_Twe = graphing.Graph(fig_size=[8.0, 8.0], dpi=96)
graph_Twe.add_data_set('Twe', To_array, Twe_array)
graph_Twe.set_axis_titles('To (°C)', 'Twe (°C)')
graph_Twe.turn_grid_on()
graph_Twe.draw_graph()
graph_Twe.show_graph()
De grafiek toont ons dat de vereiste wateraanvoertemperatuur om de gewenste ruimtetemperatuur te kunnen handhaven, waarbij het volumedebiet verwarmingswater door de radiator onveranderd blijft, bijna lineair afneemt met toenemende buitentemperatuur.
M.b.v. een driewegmengklep kan 'primair' verwarmingswater afkomstig van de verwarmingsketel, waarvan de temperatuur gelijk blijft aan de ontwerp-wateraanvoertemperatuur, worden gemengd met retourwater afkomstig van de radiator, teneinde de vereiste wateraanvoertemperatuur naar de radiator te bekomen. Bij deelbelasting blijft dan door de radiator een constant volumedebiet verwarmingswater stromen dat steeds gelijk blijft aan het berekende volumedebiet onder ontwerpcondities, ongeacht de belasting.
Eerst berekenen we de retourwatertemperatuur aan de uitgang van de radiator i.f.v. de vereiste warmteafgifte. De vereiste wateraanvoertemperatuur i.f.v. de vereiste warmteafgifte werd hierboven reeds berekend.
rho_w = radiator.water['rho'] # massadichtheid van het verwarmingswater (default waarde = 1000 kg/m^3)
c_w = radiator.water['c'] # specifieke warmtecapaciteit van het verwarmingswater (default waarde = 4186 J/(kg.K))
# berekening van de waterretourtemperaturen i.f.v. de belasting
Twl_array = Twe_array - Qe_array / (rho_w * c_w * Vw_d)
Uit de wet van behoud van energie en de wet van behoud van massa in het mengpunt volgt een uitdrukking voor het vereist volumedebiet primair verwarmingswater (zie document DE RADIATOR, par. V voor meer toelichting).
# berekening van de vereiste primaire volumedebieten i.f.v. de belasting
Vw_prim_array = (Twe_array - Twl_array) / (Twe_d - Twl_array) * Vw_d
Wanneer het vereist volumedebiet primair verwarmingswater naar het mengpunt gekend is, volgt het vereist volumedebiet retourwater naar het mengpunt uit:
# berekening van de overeenkomstige volumedebieten in de bypass-leiding naar de mengklep i.f.v. de belasting
Vw_ret_array = Vw_d - Vw_prim_array
De grafiek hieronder geeft het verloop weer van het primair volumedebiet verwarmingswater naar de driemengklep van de radiatorkring en van het bypass-volumedebiet retourwater naar de driewegmengklep i.f.v. de buitentemperatuur, teneinde aan de uitgang van de driewegmengklep de vereiste aanvoertemperatuur te bekomen van het verwarmingswater dat naar de radiator stroomt.
graph_Vw = graphing.Graph(fig_size=[8.0, 8.0], dpi=96)
graph_Vw.add_data_set('Vw primair', To_array, Vw_prim_array * 1000.0 * 60.0)
graph_Vw.add_data_set('Vw retour', To_array, Vw_ret_array * 1000.0 * 60.0)
graph_Vw.add_legend()
graph_Vw.set_axis_titles('To (°C)', 'Vw (L/min)')
graph_Vw.turn_grid_on()
graph_Vw.draw_graph()
graph_Vw.show_graph()