modelSlabOnGround

opaque floor on ground slab

Extends from IDEAS.Buildings.Components.Interfaces.PartialOpaqueSurface (Partial component for the opaque surfaces of the building envelope).

Information

This is a floor model that should be used to simulate floors on solid ground. See IDEAS.Buildings.Components.Interfaces.PartialOpaqueSurface for equations, options, parameters, validation and dynamics that are common for all surfaces.

Typical use and important parameters

The model contains several parameters that are used to set up a simplified model of the influence of the environment on the ground temperature. The model assumes that the floor plate is connected to a (heated) zone that is surrounded by air at the ambient temperature.

References

ISO 13370: Thermal performance of buildings - Heat transfer via the ground - Calculation methods.

Parameters

TypeNameDefaultDescription
IDEAS.Buildings.Data.Interfaces.ConstructionconstructionType (from PartialOpaqueSurface)
IntegerincOpt (from PartialSurface)4Tilt angle option from simInfoManager, or custom using inc
Modelica.Units.SI.Angleinc (from PartialSurface)sim.incOpts[incOpt]Custom inclination (tilt) angle of the wall, default wall
IntegeraziOpt (from PartialSurface)5Azimuth angle option from simInfoManager, or custom using azi
Modelica.Units.SI.Angleazi (from PartialSurface)sim.aziOpts[aziOpt]Custom azimuth angle of the wall, default south
Modelica.Units.SI.AreaA (from PartialSurface)Component surface area
RealnWin (from PartialSurface)1Use this factor to scale the component to nWin identical components
Realq50_internal (from PartialSurface)Surface air tightness
Modelica.Units.SI.Lengthhzone_a (from PartialSurface)
Modelica.Units.SI.LengthhAbs_floor_a (from PartialSurface)
Modelica.Units.SI.LengthHabs_surf (from PartialSurface)hAbs_floor_a + hRelSurfBot_a + (hVertical/2)Absolute height of the middle of the surface, can be used to check the heights after initialisation
Modelica.Units.SI.LengthPWall4*sqrt(A)Total floor slab perimeter
Modelica.Units.SI.TemperatureTeAvg273.15 + 10.8Annual average outdoor temperature
Modelica.Units.SI.TemperatureTiAvg273.15 + 22Annual average indoor temperature
Modelica.Units.SI.TemperatureDifferencedTeAvg4Amplitude of variation of monthly average outdoor temperature
Modelica.Units.SI.TemperatureDifferencedTiAvg2Amplitude of variation of monthly average indoor temperature
Advanced › Design power
Modelica.Units.SI.PowerQTra_design (from PartialSurface)Design heat losses at reference temperature of the boundary space
Dynamics › Initial condition
Modelica.Units.SI.TemperatureT_start (from PartialSurface)293.15Start temperature for each of the layers
Modelica.Units.SI.Temperature[nLayGro]T_start_grofill(TeAvg, nLayGro)Initial temperatures of the ground layers (with first value = deepest layer and last value = shallowest layer
Convection
BooleanlinIntCon_a (from PartialSurface)sim.linIntCon= true, if convective heat transfer should be linearised
Modelica.Units.SI.TemperatureDifferencedT_nominal_a (from PartialSurface)1Nominal temperature difference used for linearisation, negative temperatures indicate the solid is colder
Booleanlinearisesim.lineariseDymola= true, if heat flow to ground should be linearized
Dynamics › Equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialSurface)Modelica.Fluid.Types.Dynamics.FixedInitialStatic (steady state) or transient (dynamic) thermal conduction model
Airflow › Airtightness
Booleanuse_custom_q50 (from PartialSurface)falsecheck to disable the default q50 computation and to assign a custom q50 value
Realcustom_q50 (from PartialSurface)2Surface air tightness
Vertical position (important if interZonalAirFlowType is TwoPorts)
Modelica.Units.SI.LengthhVertical (from PartialSurface)if IDEAS.Utilities.Math.Functions.isAngle(incInt, IDEAS.Types.Tilt.Floor) or IDEAS.Utilities.Math.Functions.isAngle(incInt, IDEAS.Types.Tilt.Ceiling) then 0 else hzone_aVertical surface height, height of the surface projected to the vertical (e.g. 0 for floors and ceilings)
Modelica.Units.SI.LengthhRelSurfBot_a (from PartialSurface)if IDEAS.Utilities.Math.Functions.isAngle(incInt, IDEAS.Types.Tilt.Ceiling) then hzone_a else 0Height between the lowest point of the surface (bottom) and the floor level of the zone connected at propsBus_a (e.g. 0 for walls at floor level and floors.)

Connectors

TypeNameDefaultDescription
IDEAS.Buildings.Components.Interfaces.ZoneBuspropsBus_a (from PartialSurface)If inc = Floor, then propsbus_a should be connected to the zone above this floor. If inc = ceiling, then propsbus_a should be connected to the zone below this ceiling. If component is an outerWall, porpsBus_a should be connect to the zone.
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a[constructionType.nGain]port_emb (from PartialOpaqueSurface)Port for gains by embedded active layers

Components

TypeNameDefaultDescription
IDEAS.BoundaryConditions.SimInfoManagersim (from PartialSurface)Simulation information manager for climate data
IDEAS.Buildings.Components.BaseClasses.ConvectiveHeatTransfer.InteriorConvectionintCon_a (from PartialSurface)Convective heat transfer correlation for port_a
IDEAS.Buildings.Components.BaseClasses.ConductiveHeatTransfer.MultiLayerlayMul (from PartialSurface)Multilayer component for simulating walls, windows and other surfaces
Modelica.Units.SI.MassFlowRatemBA_flow_1 (from PartialSurface)crackOrOperableDoor.m1_flowFlow outwards relative to propsBus_a, part 1
Modelica.Units.SI.MassFlowRatemBA_flow_2 (from PartialSurface)-crackOrOperableDoor.m2_flowFlow outwards relative to propsBus_a, part 2
Q50_parameterToConnectorq50_zone (from PartialSurface)
IDEAS.Airflow.Multizone.CrackOrOperableDoorcrackOrOperableDoor (from PartialSurface)
Modelica.Blocks.Sources.RealExpressionAExp (from PartialSurface)Area expression
Modelica.Blocks.Routing.BooleanPassThroughuse_custom_q50PassThrough (from PartialSurface)
Modelica.Blocks.Routing.RealPassThroughv50PassThrough (from PartialSurface)
Modelica.Units.SI.HeatFlowRateQmif not linearise then UEqui*A*(TiAvg - TeAvg) - Lpi*dTiAvg*cos(2*3.1415/12*(m - 1 + alfa)) + Lpe*dTeAvg*cos(2*3.1415/12*(m - 1 - beta)) else sum({UEqui*A*(TiAvg - TeAvg) - Lpi*dTiAvg*cos(2*3.1415/12*(i - 1 + alfa)) + Lpe*dTeAvg*cos(2*3.1415/12*(i - 1 - beta)) for i in 1:12})/12Two-dimensional correction for edge flow
Modelica.Blocks.Routing.RealPassThroughTdesGroundDesign temperature passthrough
IDEAS.Fluid.Sources.MassFlowSource_Tboundary1
IDEAS.Fluid.Sources.MassFlowSource_Tboundary2

Revisions

  • January 30, 2025, by Klaas De Jonge:
    Use TdesGround.y for calculating QTra_design to avoid causality warning. See #1402.
  • November 7, 2024, by Anna Dell'Isola and Jelger Jansen:
    Update calculation of transmission design losses. See #1337
  • May 16, 2024, by Lucas Verleyen:
    Created final and protected parameter T_start_gro for initial temperature of the ground (layGro).
    See #1292 for more information.
  • Februari 18, 2024, by Filip Jorissen:
    Modifications for supporting trickle vents and interzonal airflow.
  • April 26, 2020, by Filip Jorissen:
    Refactored SolBus to avoid many instances in PropsBus. See #1131
  • October 13, 2019, by Filip Jorissen:
    Refactored the parameter definition of inc and azi by adding the option to use radio buttons. See #1067
  • January 25, 2019, by Filip Jorissen:
    Revised initial equation implementation. See issue #971.
  • August 10, 2018 by Damien Picard:
    Set nWin final to 1 as this should only be used for windows. See #888.
  • May 14, 2018, by Filip Jorissen:
    Revised value of energyDynamics for ground layers such that unique initial conditions can be defined.
  • January 2, 2017, by Filip Jorissen:
    Added default values for parameters inc and azi.
  • October 22, 2016, by Filip Jorissen:
    Revised documentation for IDEAS 1.0.
  • December 7, 2016 by Damien Picard:
    Set placeCapacityAtSurf_b to false for the last layMul layer. This is necessary due to the initialization which is overspecified when two capacities are connected to each other without resistances between. Using dynamicFreeInitial for both the first layer of layGro and the last one of LayMul did not solve the problem.
  • September 27, 2016 by Filip Jorissen:
    Different initialisation for state between layMul and layGround for avoiding conflicting initial equations.
  • February 10, 2016, by Filip Jorissen and Damien Picard:
    Revised implementation: cleaned up connections and partials.
  • June 14, 2015, Filip Jorissen:
    Adjusted implementation for computing conservation of energy.