modelThermalZone
Extends from AixLib.ThermalZones.ReducedOrder.ThermalZone.BaseClasses.PartialThermalZone (Partial model for thermal zone models).
Information
Overview
Comprehensive ready-to-use model for thermal zones, combining caclulation core, handling of solar radiation and internal gains. Core model is a AixLib.ThermalZones.ReducedOrder.RC.FiveElements model. Conditional removals of the core model are passed-through and related models on thermal zone level are as well conditional. All models for solar radiation are part of IBPSA library. Internal gains are part of AixLib.
Models for infiltration and natural ventilation, moisture and CO2 balance are conditional and can be activated by setting the parameters true. Moisture is considered in internal gains.
Typical use and important parameters
All parameters are collected in one AixLib.DataBase.ThermalZones.ZoneBaseRecord record. Further parameters for medium, initialization and dynamics originate from AixLib.Fluid.Interfaces.LumpedVolumeDeclarations. A typical use case is a single thermal zone connected via heat ports and fluid ports to a heating system. The thermal zone model serves as boundary condition for the heating system and calculates the room's reaction to external and internal heat sources. The model is used as thermal zone core model in AixLib.ThermalZones.ReducedOrder.Multizone.BaseClasses.PartialMultizone
Dependent on the paramter internalGainsMode different models for internal gains by humans will be used. For a correct moisture balance the paramter should be set to 3. Otherwise no moisture gain from persons will be considered. Using CO2 balance trace substances in the media package must be activated. For example AixLib.Media.Air(extraPropertiesNames={"C_Flow"}) can be used.
Assumptions
There is no moisture exchange through the walls or windows. Only moisture exchange is realized by the internal gains, through the fluid ports and over the ventilation moisture. This leads to a steady increase of moisture in the room, when there is no ventilation.
The moisture balance was formulated considering the latent heat with the aim, that the temperature is not influenced by the moisture.For this reason every humidity source is assumed to be in gaseous state.
Accuracy
Due to usage of constant heat capacaty for steam and constant heat of evaporation, the temperature is slightly influenced. Comparing the ThermalZone with dry air to the ThermalZone with moist air, the maximum difference between the simulated air temperature in the zone is 0.07 K for weather data from San Francisco and using the zoneParam for office buildings. See therefore: ExampleComparisonMoistAndDryAir
References
For automatic generation of thermal zone and multizone models as well as for datasets, see https://github.com/RWTH-EBC/TEASER
- German Association of Engineers: Guideline VDI 6007-1, March 2012: Calculation of transient thermal response of rooms and buildings - Modelling of rooms.
- Lauster, M.; Teichmann, J.; Fuchs, M.; Streblow, R.; Mueller, D. (2014): Low order thermal network models for dynamic simulations of buildings on city district scale. In: Building and Environment 73, p. 223–231. DOI: 10.1016/j.buildenv.2013.12.016.
Examples
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| DataBase.ThermalZones.ZoneBaseRecord | zoneParam (from PartialThermalZone) | Choose setup for this zone | |
| Integer | internalGainsMode | 1 | decides which internal gains model for persons is used |
| Boolean | use_MechanicalAirExchange | false | Consider mechanical ventilation by setting true |
| Boolean | use_NaturalAirExchange | use_MechanicalAirExchange | Consider natural infiltration and ventilation by setting true |
| 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.) |
| Dynamics | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| General › Ports | |||
| Integer | nPorts (from PartialThermalZone) | 0 | Number of fluid ports |
| Integer | nPortsROM (from PartialThermalZone) | if use_pools then nPorts + 2 else nPorts | Number of fluid ports |
| Moisture › Pools | |||
| Boolean | use_pools (from PartialThermalZone) | false | If true, pool model and corresponding connections are enabled |
| Integer | nPools | 1 | Number of pools in thermal zone |
| AixLib.DataBase.Pools.IndoorSwimmingPoolBaseDataDefinition[nPools] | poolParam | fill(DataBase.Pools.IndoorSwimmingPoolDummy(), nPools) | Setup for swimming pools |
| AixLib.DataBase.Walls.WallBaseDataDefinition[nPools] | poolWallParam | fill(DataBase.Walls.ASHRAE140.DummyDefinition(), nPools) | Setup for swimming pool walls |
| CO2 | |||
| Boolean | use_C_flow (from PartialThermalZone) | false | Set to true to enable input connector for trace substance |
| Modelica.Units.SI.MassFraction | XCO2_amb | 6.12157E-4 | Massfraction of CO2 in atmosphere (equals 403ppm) |
| Modelica.Units.SI.Area | areaBod | 1.8 | Body surface area source SIA 2024:2015 |
| Modelica.Units.SI.DensityOfHeatFlowRate | metOnePerSit | 58 | Metabolic rate of a relaxed seated person [1 Met = 58 W/m^2] |
| Moisture | |||
| Boolean | use_moisture_balance (from PartialThermalZone) | false | If true, input connector QLat_flow is enabled and room air computes moisture balance |
| IdealHeaterCooler › Modes | |||
| Boolean | recOrSep | true | Use record or seperate parameters |
| IdealHeaterCooler › Heater | |||
| Boolean | Heater_on | true | Activates the heater |
| Real | h_heater | 0 | Upper limit controller output of the heater |
| Real | l_heater | 0 | Lower limit controller output of the heater |
| Real | KR_heater | 1000 | Gain of the heating controller |
| Modelica.Units.SI.Time | TN_heater | 1 | Time constant of the heating controller |
| IdealHeaterCooler › Cooler | |||
| Boolean | Cooler_on | true | Activates the cooler |
| Real | h_cooler | 0 | Upper limit controller output of the cooler |
| Real | l_cooler | 0 | Lower limit controller output of the cooler |
| Real | KR_cooler | 1000 | Gain of the cooling controller |
| Modelica.Units.SI.Time | TN_cooler | 1 | Time constant of the cooling controller |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Blocks.Interfaces.RealInput[3] | intGains (from PartialThermalZone) | Input profiles for internal gains persons, machines, light | |
| Modelica.Blocks.Interfaces.RealOutput | TAir (from PartialThermalZone) | Indoor air temperature | |
| Modelica.Blocks.Interfaces.RealOutput | TRad (from PartialThermalZone) | Mean indoor radiation temperature | |
| BoundaryConditions.WeatherData.Bus | weaBus (from PartialThermalZone) | Weather data bus | |
| Modelica.Fluid.Vessels.BaseClasses.VesselFluidPorts_b[nPorts] | ports (from PartialThermalZone) | Auxilliary fluid inlets and outlets to indoor air volume | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | intGainsConv (from PartialThermalZone) | Convective internal gains | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | intGainsRad (from PartialThermalZone) | Radiative internal gains | |
| Modelica.Blocks.Interfaces.RealInput | TSetCool | Set point for cooler | |
| Modelica.Blocks.Interfaces.RealInput | TSetHeat | Set point for heater | |
| Modelica.Blocks.Interfaces.RealOutput | PHeater | Power for heating | |
| Modelica.Blocks.Interfaces.RealOutput | PCooler | Power for cooling | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a[zoneParam.nIze] | izeHeaFlow | surface heat port for nz borders - inner surface if zone index is higher than index of other zone, outer if lower | |
| Modelica.Blocks.Interfaces.RealInput | ventTemp | Ventilation and infiltration temperature | |
| Modelica.Blocks.Interfaces.RealInput | ventRate | Ventilation and infiltration rate | |
| Modelica.Blocks.Interfaces.RealOutput | X_w | Humidity output | |
| Modelica.Blocks.Interfaces.RealInput | ventHum | Ventilation and infiltration humidity | |
| Modelica.Blocks.Interfaces.RealOutput | CO2Con | CO2 concentration in the thermal zone in ppm | |
| Modelica.Blocks.Interfaces.RealOutput[3] | QIntGains_flow | Heat flow based on internal gains from lights[1], machines[2], and persons[3] | |
| Modelica.Blocks.Interfaces.RealInput | timeOpe | Input profiles for opening hours for pools |
Components
Contents
| Name | Description |
|---|---|
| Medium in the component |
Revisions
- April 20, 2023, by Philip Groesdonk:
Added five element RC model (for heat exchange with neighboured zones) and an option choice for set temperatures of soil, i.e. floor element outdoor surface temperatures. This is for issue 1080. - November 20, 2020, by Katharina Breuer:
Combine thermal zone models - August 27, 2020, by Katharina Breuer:
Add co2 balance - January 09, 2020, by David Jansen:
Integration of ideal heater and cooler into the thermal zone. - July 10, 2019, by David Jansen and Martin Kremer:
Integration of changeable internal gain models for humans. - April, 2019, by Martin Kremer:
Add moisture balance - March 01, 2019, by Niklas Huelsenbeck:
Integration of new Internal Gains models, HumanSensibleHeatAreaSpecific and MachinesAreaSpecific - September 27, 2016, by Moritz Lauster:
Reimplementation based on Annex60 and MSL models. - March, 2012, by Moritz Lauster:
First implementation.