Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses

Package with base classes for Buildings.Fluid.HeatExchangers.RadiantSlabs

Information

This package contains base classes that are used to construct the models in Buildings.Fluid.HeatExchangers.RadiantSlabs.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.HeatFlowRateMultiplier HeatFlowRateMultiplier Multiplies the heat flow rate
Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.MassFlowRateMultiplier MassFlowRateMultiplier Model that multiplies the mass flow rate
Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance PipeToSlabConductance Convective heat transfer in pipes and fictitious resistance to average slab temperature
Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Slab Slab Base class for radiant slab
Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Functions Functions Functions for convective heat transfer

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.HeatFlowRateMultiplier Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.HeatFlowRateMultiplier

Multiplies the heat flow rate

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.HeatFlowRateMultiplier

Information

This model multiplies the heat flow rate so that 0 = port_b.Q_flow + k * port_Q.m_flow.

The temperature remains unchanged. Therefore, this model does not conserve energy. It is used in Buildings.Fluid.HeatExchangers.RadiantSlabs.ParallelCircuitsSlab to avoid having to instanciate multiple slab models in parallel, with each having the same mass flow rate and temperatures.

Parameters

TypeNameDefaultDescription
Realk Gain for mass flow rate

Connectors

TypeNameDescription
HeatPort_aport_a 
HeatPort_bport_b 

Modelica definition

model HeatFlowRateMultiplier "Multiplies the heat flow rate" Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_a; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b port_b; parameter Real k "Gain for mass flow rate"; initial equation assert( k > Modelica.Constants.small or -k < -Modelica.Constants.small, "Gain must not be zero. Received k = " + String(k)); equation // Energy balance. (Energy is not conserved by this model!) port_b.Q_flow = -k*port_a.Q_flow; port_a.T = port_b.T; end HeatFlowRateMultiplier;

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.MassFlowRateMultiplier Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.MassFlowRateMultiplier

Model that multiplies the mass flow rate

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.MassFlowRateMultiplier

Information

This model multiplies the mass flow rate so that 0 = port_b.m_flow + k * port_a.m_flow.

The specific enthalpy, the species concentration and the trace substance concentration remains unchanged. Therefore, this model does not conserve mass or energy. It is used in Buildings.Fluid.HeatExchangers.RadiantSlabs.ParallelCircuitsSlab to avoid having to instanciate multiple slab models in parallel, with each having the same mass flow rate and temperatures.

Extends from Buildings.Fluid.Interfaces.PartialTwoPort (Partial component with two ports).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Realk Gain for mass flow rate
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)

Modelica definition

model MassFlowRateMultiplier "Model that multiplies the mass flow rate" extends Buildings.Fluid.Interfaces.PartialTwoPort; parameter Real k "Gain for mass flow rate"; initial equation assert( k > Modelica.Constants.small or -k < -Modelica.Constants.small, "Gain must not be zero. Received k = " + String(k)); equation // Pressure drop in design flow direction port_a.p = port_b.p; // Mass balance (mass is not conserved by this model!) port_b.m_flow = -k*port_a.m_flow; // Specific enthalpy flow rate port_a.h_outflow = inStream(port_b.h_outflow); port_b.h_outflow = inStream(port_a.h_outflow); // Transport of substances port_a.Xi_outflow = inStream(port_b.Xi_outflow); port_b.Xi_outflow = inStream(port_a.Xi_outflow); port_a.C_outflow = inStream(port_b.C_outflow); port_b.C_outflow = inStream(port_a.C_outflow); end MassFlowRateMultiplier;

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance

Convective heat transfer in pipes and fictitious resistance to average slab temperature

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance

Information

Model to compute the convective heat transfer inside a straight pipe. The convective heat transfer coefficient is computed as a function of the mass flow rate using the function Modelica.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall_KC.

Parameters

TypeNameDefaultDescription
replaceable package MediumModelica.Media.Interfaces.Pa...Medium in the component
HeatTransferheatTransferBuildings.Fluid.HeatExchange...Model for heat transfer between fluid and slab
AreaAPip Pipe inside surface area [m2]
kc_overall_IN_conkc_IN_con Parameters for convective heat transfer calculation
ThermalResistanceRFic Average fictitious thermal resistance between pipe surface and plane that contains pipe [K/W]
ThermalResistanceRWal Thermal resistance through the pipe wall [K/W]
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]

Connectors

TypeNameDescription
replaceable package MediumMedium in the component
input RealInputm_flowFluid mass flow rate from port_a to port_b [kg/s]
input RealInputT_aTemperature at fluid port_a [K]
input RealInputT_bTemperature at fluid port_b [K]
HeatPort_asolidHeat port at solid interface
HeatPort_bfluidHeat port at fluid interface

Modelica definition

model PipeToSlabConductance "Convective heat transfer in pipes and fictitious resistance to average slab temperature" replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component"; parameter Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.HeatTransfer heatTransfer= Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.HeatTransfer.EpsilonNTU "Model for heat transfer between fluid and slab"; parameter Modelica.SIunits.Area APip "Pipe inside surface area"; parameter kc_overall_IN_con kc_IN_con "Parameters for convective heat transfer calculation"; Modelica.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall_IN_var kc_IN_var( cp=Medium.specificHeatCapacityCp(fluSta), eta=Medium.dynamicViscosity(fluSta), lambda=Medium.thermalConductivity(fluSta), rho=Medium.density(fluSta), m_flow=m_flow) "Variables for convective heat transfer calculation"; parameter Modelica.SIunits.ThermalResistance RFic "Average fictitious thermal resistance between pipe surface and plane that contains pipe"; parameter Modelica.SIunits.ThermalResistance RWal "Thermal resistance through the pipe wall"; parameter Modelica.SIunits.MassFlowRate m_flow_nominal "Nominal mass flow rate"; Modelica.Blocks.Interfaces.RealInput m_flow(unit="kg/s") "Fluid mass flow rate from port_a to port_b"; Modelica.Blocks.Interfaces.RealInput T_a(unit="K") "Temperature at fluid port_a"; Modelica.Blocks.Interfaces.RealInput T_b(unit="K") "Temperature at fluid port_b"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a solid "Heat port at solid interface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b fluid "Heat port at fluid interface"; Modelica.SIunits.TemperatureDifference dT "= solid.T - fluid.T"; Modelica.SIunits.CoefficientOfHeatTransfer hCon "Convective heat transfer coefficient"; Modelica.SIunits.ThermalResistance RTot "Thermal resistance between the fluid and the fictious plane of heat transfer"; Modelica.SIunits.HeatFlowRate Q_flow "Heat flow rate from solid -> fluid"; // The records kc_overall_IN_con and kc_turbulent_IN_con are implemented // because in the Modelica Standard Library 3.2.2, they have a bug // that causes the pedantic model check in Dymola 2017 beta3 to fail. record kc_overall_IN_con "Input record for function kc_overall and kc_overall_KC" //choices Modelica.Fluid.Dissipation.Utilities.Types.HeatTransferBoundary target=Modelica.Fluid.Dissipation.Utilities.Types.HeatTransferBoundary.UWTuDFF "Choice of heat transfer boundary condition"; extends kc_turbulent_IN_con; end kc_overall_IN_con; protected record kc_turbulent_IN_con "Input record for function kc_turbulent and kc_turbulent_KC" extends Modelica.Fluid.Dissipation.Utilities.Records.HeatTransfer.StraightPipe; Modelica.Fluid.Dissipation.Utilities.Types.Roughness roughness=Modelica.Fluid.Dissipation.Utilities.Types.Roughness.Considered "Choice of considering surface roughness"; Modelica.SIunits.Length K=0 "Roughness (average height of surface asperities)"; end kc_turbulent_IN_con; Medium.ThermodynamicState fluSta = Medium.setState_pTX(p=Medium.p_default, T=fluid.T, X=Medium.X_default) "State of the medium"; Modelica.SIunits.SpecificHeatCapacity c_p = Medium.specificHeatCapacityCp(fluSta) "Specific heat capacity of the fluid"; equation hCon = Modelica.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall_KC( IN_con=kc_IN_con, IN_var=kc_IN_var); RTot = 1/hCon/APip + RFic + RWal; if heatTransfer == Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.HeatTransfer.EpsilonNTU then Q_flow = Functions.heatFlowRate(T_a=T_a, T_b=T_b, T_s=solid.T, T_f=fluid.T, c_p=c_p, UA=1/RTot, m_flow=m_flow, m_flow_nominal=m_flow_nominal); else Q_flow = dT/RTot; end if; dT = solid.T - fluid.T; solid.Q_flow = Q_flow; fluid.Q_flow = -Q_flow; end PipeToSlabConductance;

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Slab Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Slab

Base class for radiant slab

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Slab

Information

This partial model is used to construct radiant slab models with one circuit or with multiple parallel circuits.

Parameters

TypeNameDefaultDescription
SystemTypesysTyp Radiant system type
DistancedisPip Pipe distance [m]
Genericpipe Record for pipe geometry and material
Construction
Genericlayers Definition of the construction, which must have at least two material layers
IntegeriLayPip Number of the interface layer in which the pipes are located
Initialization
Construction
BooleansteadyStateInitialfalse=true initializes dT(0)/dt=0, false initializes T(0) at fixed temperature using T_a_start, T_c_start and T_b_start
TemperatureT_a_start293.15Initial temperature at surf_a, used if steadyStateInitial = false [K]
TemperatureT_b_start293.15Initial temperature at surf_b, used if steadyStateInitial = false [K]
Dynamics
BooleanstateAtSurface_atrue=true, a state will be at the surface a
BooleanstateAtSurface_btrue=true, a state will be at the surface b

Connectors

TypeNameDescription
HeatPort_asurf_aHeat port at construction surface
HeatPort_asurf_bHeat port at construction surface

Modelica definition

partial model Slab "Base class for radiant slab" parameter Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType sysTyp "Radiant system type"; parameter Modelica.SIunits.Distance disPip "Pipe distance"; parameter Buildings.Fluid.Data.Pipes.Generic pipe "Record for pipe geometry and material"; parameter HeatTransfer.Data.OpaqueConstructions.Generic layers(nLay(min=2)) "Definition of the construction, which must have at least two material layers"; parameter Boolean steadyStateInitial=false "=true initializes dT(0)/dt=0, false initializes T(0) at fixed temperature using T_a_start, T_c_start and T_b_start"; parameter Integer iLayPip(min=1) "Number of the interface layer in which the pipes are located"; parameter Modelica.SIunits.Temperature T_a_start=293.15 "Initial temperature at surf_a, used if steadyStateInitial = false"; parameter Modelica.SIunits.Temperature T_b_start=293.15 "Initial temperature at surf_b, used if steadyStateInitial = false"; parameter Boolean stateAtSurface_a=true "=true, a state will be at the surface a"; parameter Boolean stateAtSurface_b=true "=true, a state will be at the surface b"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a surf_a "Heat port at construction surface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a surf_b "Heat port at construction surface"; end Slab;

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance.kc_overall_IN_con Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance.kc_overall_IN_con

Input record for function kc_overall and kc_overall_KC

Information

This record is used as input record for the heat transfer function kc_overall and kc_overall_KC.

Implementation

This record is identical to Modelica.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_overall_IN_con, except that it extends from a local implementation of Modelica.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_turbulent_IN_con in order to correct the bug reported in MSL ticket 2066.

Extends from kc_turbulent_IN_con (Input record for function kc_turbulent and kc_turbulent_KC).

Parameters

TypeNameDefaultDescription
Choices
HeatTransferBoundarytargetModelica.Fluid.Dissipation.U...Choice of heat transfer boundary condition
RoughnessroughnessModelica.Fluid.Dissipation.U...Choice of considering surface roughness
Straight pipe
Diameterd_hyd0.1Hydraulic diameter [m]
LengthL1Length [m]
LengthK0Roughness (average height of surface asperities) [m]

Modelica definition

record kc_overall_IN_con "Input record for function kc_overall and kc_overall_KC" //choices Modelica.Fluid.Dissipation.Utilities.Types.HeatTransferBoundary target=Modelica.Fluid.Dissipation.Utilities.Types.HeatTransferBoundary.UWTuDFF "Choice of heat transfer boundary condition"; extends kc_turbulent_IN_con; end kc_overall_IN_con;

Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance.kc_turbulent_IN_con Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.PipeToSlabConductance.kc_turbulent_IN_con

Input record for function kc_turbulent and kc_turbulent_KC

Information

This record is used as input record for the heat transfer function kc_turbulent and kc_turbulent_KC.

Implementation

This record is identical to Modelica.Fluid.Dissipation.HeatTransfer.StraightPipe.kc_turbulent_IN_con, except that the bug reported in MSL ticket 2066.

Extends from Modelica.Fluid.Dissipation.Utilities.Records.HeatTransfer.StraightPipe (Input for straight pipe).

Parameters

TypeNameDefaultDescription
Straight pipe
Diameterd_hyd0.1Hydraulic diameter [m]
LengthL1Length [m]
LengthK0Roughness (average height of surface asperities) [m]
Choices
RoughnessroughnessModelica.Fluid.Dissipation.U...Choice of considering surface roughness

Modelica definition

record kc_turbulent_IN_con "Input record for function kc_turbulent and kc_turbulent_KC" extends Modelica.Fluid.Dissipation.Utilities.Records.HeatTransfer.StraightPipe; Modelica.Fluid.Dissipation.Utilities.Types.Roughness roughness=Modelica.Fluid.Dissipation.Utilities.Types.Roughness.Considered "Choice of considering surface roughness"; Modelica.SIunits.Length K=0 "Roughness (average height of surface asperities)"; end kc_turbulent_IN_con;