modelParallelCircuitsSlab
Extends from Buildings.Fluid.Interfaces.PartialTwoPort (Partial component with two ports), Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Slab (Base class for radiant slab), Buildings.Fluid.Interfaces.LumpedVolumeDeclarations (Declarations for lumped volumes), Buildings.Fluid.Interfaces.TwoPortFlowResistanceParameters (Parameters for flow resistance for models with two ports).
Information
This is a model of a radiant slab with pipes or a capillary heat exchanger embedded in the construction. The model is a composition of multiple models of Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab that are arranged in a parallel.
The parameter nCir declares the number of parallel flow circuits.
Each circuit will have the same mass flow rate, and it is exposed to the same
port variables for the heat port at the two surfaces, and for the flow inlet and outlet.
A typical model application is as follows: Suppose a large room has a radiant slab with two parallel circuits with the same pipe spacing and pipe length. Then, rather than using two instances of Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab, this system can be modeled using one instance of this model in order to reduce computing effort. See Buildings.Fluid.HeatExchangers.RadiantSlabs.Examples.SingleCircuitMultipleCircuitEpsilonNTU for an example that shows that the models give identical results.
Since this model is a parallel arrangment of nCir models of
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab,
we refer to
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab
for the model documentation.
See the user's guide for more information.
Implementation
To allow a better comment for the nominal mass flow rate, i.e., to specify that its value is for all circuits combined, this model does not inherit Buildings.Fluid.Interfaces.PartialTwoPortInterface.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType | sysTyp (from Slab) | Radiant system type | |
| Modelica.Units.SI.Distance | disPip (from Slab) | Pipe distance | |
| Buildings.Fluid.Data.Pipes.Generic | pipe (from Slab) | Record for pipe geometry and material | |
| Boolean | homotopyInitialization | true | = true, use homotopy method |
| Integer | nCir | 1 | Number of parallel circuits |
| Integer | nSeg | if heatTransfer == Types.HeatTransfer.EpsilonNTU then 1 else 5 | Number of volume segments in each circuit (along flow path) |
| Modelica.Units.SI.Length | length | A/disPip/nCir | Length of the pipe of a single circuit |
| Modelica.Units.SI.Velocity | v_nominal | 4*m_flow_nominal/pipe.dIn^2/Modelica.Constants.pi/rho_default/nCir | Velocity at m_flow_nominal |
| Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.HeatTransfer | heatTransfer | Types.HeatTransfer.EpsilonNTU | Model for heat transfer between fluid and slab |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Construction | |||
| HeatTransfer.Data.OpaqueConstructions.Generic | layers (from Slab) | Definition of the construction, which must have at least two material layers | |
| Integer | iLayPip (from Slab) | Number of the interface layer in which the pipes are located | |
| Modelica.Units.SI.Area | A | Surface area of radiant slab (all circuits combined) | |
| Initialization › Construction | |||
| Boolean | steadyStateInitial (from Slab) | 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 |
| Modelica.Units.SI.Temperature | T_a_start (from Slab) | 293.15 | Initial temperature at surf_a, used if steadyStateInitial = false |
| Modelica.Units.SI.Temperature | T_b_start (from Slab) | 293.15 | Initial temperature at surf_b, used if steadyStateInitial = false |
| Dynamics | |||
| Boolean | stateAtSurface_a (from Slab) | true | =true, a state will be at the surface a |
| Boolean | stateAtSurface_b (from Slab) | true | =true, a state will be at the surface b |
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start value of mass fractions m_i/m |
| Medium.ExtraProperty[Medium.nC] | C_start (from LumpedVolumeDeclarations) | fill(0, Medium.nC) | Start value of trace substances |
| Medium.ExtraProperty[Medium.nC] | C_nominal (from LumpedVolumeDeclarations) | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
| Flow resistance | |||
| Boolean | computeFlowResistance (from TwoPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp (from TwoPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n (from TwoPortFlowResistanceParameters) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Boolean | linearizeFlowResistance (from TwoPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM (from TwoPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Nominal condition | |||
| Modelica.Units.SI.PressureDifference | dp_nominal (from TwoPortFlowResistanceParameters) | Pressure difference | |
| Modelica.Units.SI.MassFlowRate | m_flow_nominal | Nominal mass flow rate of all circuits combined | |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate of all circuits combined for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T | false | = true, if actual temperature at port is computed |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | surf_a (from Slab) | Heat port at construction surface | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | surf_b (from Slab) | Heat port at construction surface |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) for all circuits combined |
| Modelica.Units.SI.PressureDifference | dp | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a | if homotopyInitialization then Medium.setState_phX(port_a.p, homotopy(actual = noEvent(actualStream(port_a.h_outflow)), simplified = inStream(port_a.h_outflow)), homotopy(actual = noEvent(actualStream(port_a.Xi_outflow)), simplified = inStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b | if homotopyInitialization then Medium.setState_phX(port_b.p, homotopy(actual = noEvent(actualStream(port_b.h_outflow)), simplified = port_b.h_outflow), homotopy(actual = noEvent(actualStream(port_b.Xi_outflow)), simplified = port_b.Xi_outflow)) else Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) | Medium properties in port_b |
| Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab | sla | Single parallel circuit of the radiant slab |
Revisions
-
April 14, 2020, by Michael Wetter:
ChangedhomotopyInitializationto a constant.
This is for IBPSA, #1341. -
January 22, 2016, by Michael Wetter:
Corrected type declaration of pressure difference. This is for #404. -
June 9, 2015 by Michael Wetter:
Changed base class from Modelica.Fluid.Interfaces.PartialTwoPort to Buildings.Fluid.Interfaces.PartialTwoPort. -
October 10, 2013 by Michael Wetter:
AddednoEventto the computation of the states at the port. This is correct, because the states are only used for reporting, but not to compute any other variable. Use of the states to compute other variables would violate the Modelica language, as conditionally removed variables must not be used in any equation. -
October 8, 2013, by Michael Wetter:
Removed parametershow_V_flow. -
September 14, 2013, by Michael Wetter:
Corrected assignment of start value for pressure atport_aandport_b, which usedMedium.p_defaultinstead of the parameterp_start. -
June 27, 2012, by Michael Wetter:
First implementation.