modelMultizone
Extends from AixLib.ThermalZones.ReducedOrder.Multizone.BaseClasses.PartialMultizone (Partial model for multizone models).
Information
This is a ready-to-use multizone model with a variable number of thermal zones. It defines connectors and a replaceable vector of AixLib.ThermalZones.ReducedOrder.ThermalZone models. Most connectors are conditional to allow conditional modifications according to parameters or to pass-through conditional removements in AixLib.ThermalZones.ReducedOrder.ThermalZone and subsequently in AixLib.ThermalZones.ReducedOrder.RC.FourElements.
Moisture and CO2 balances are conditional submodels which can be activated by setting use_moisture_balance or use_C_flow true.
Typical use and important parameters
The model needs parameters describing general properties of the building (indoor air volume, net floor area, overall surface area) and a vector with length of number of zones containing AixLib.DataBase.ThermalZones.ZoneBaseRecord records to define zone properties. The user can redeclare the thermal zone model choosing from AixLib.ThermalZones.ReducedOrder.ThermalZone. Further parameters for medium, initialization and dynamics originate from AixLib.Fluid.Interfaces.LumpedVolumeDeclarations. A typical use case is a simulation of a multizone building for district simulations where the model is connected via heat ports and fluid ports to a heating system. The multizone model serves as boundary condition for the heating system and calculates the building's reaction to external and internal heat sources.
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 |
|---|---|---|---|
| Integer | buildingID (from PartialMultizone) | Unique identifier of the building | |
| Modelica.Units.SI.Volume | VAir (from PartialMultizone) | Indoor air volume of building | |
| Modelica.Units.SI.Area | ABuilding (from PartialMultizone) | Net floor area of building | |
| Modelica.Units.SI.Area | ASurTot (from PartialMultizone) | Total surface area of building walls and windows (including interior walls) | |
| Integer | numZones (from PartialMultizone) | Number of zones | |
| Integer | nZonCon (from PartialMultizone) | 1 | Actual number of adjacent zone connectors |
| Integer[max(nZonCon, 1),2] | zonConPaiArr (from PartialMultizone) | fill(1, max(nZonCon, 1), 2) | List of pairs of interzonal element indices to connect, each index pointing to a concatenated array of all ThermalZones' interzonal element ports |
| AixLib.DataBase.ThermalZones.ZoneBaseRecord[numZones] | zoneParam (from PartialMultizone) | Setup for zones | |
| Boolean | use_izeCon (from PartialMultizone) | false | Consider heat flow connection between interzonal elements of thermal zones by setting true |
| Boolean | use_MechanicalAirExchange (from PartialMultizone) | true | Consider mechanical ventilation by setting true |
| Boolean | use_NaturalAirExchange (from PartialMultizone) | use_MechanicalAirExchange | Consider natural ventilation and infiltration by setting true |
| Integer | internalGainsMode (from PartialMultizone) | Decides which internal gains model for persons is used | |
| 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 PartialMultizone) | 0 | Number of fluid ports |
| CO2 | |||
| Boolean | use_C_flow (from PartialMultizone) | false | Set to true to enable input connector for trace substance |
| Modelica.Units.SI.MassFraction | XCO2_amb (from PartialMultizone) | 6.12157E-4 | Massfraction of CO2 in atmosphere (equals 403ppm) |
| Modelica.Units.SI.Area | areaBod (from PartialMultizone) | 1.8 | Body surface area source SIA 2024:2015 |
| Modelica.Units.SI.DensityOfHeatFlowRate | metOnePerSit (from PartialMultizone) | 58 | Metabolic rate of a relaxed seated person [1 Met = 58 W/m^2] |
| Moisture | |||
| Boolean | use_moisture_balance (from PartialMultizone) | false | If true, input connector QLat_flow is enabled and room air computes moisture balance |
| IdealHeaterCooler › Modes | |||
| Boolean | recOrSep (from PartialMultizone) | true | Use record or seperate parameters |
| IdealHeaterCooler › Heater | |||
| Boolean | Heater_on (from PartialMultizone) | true | Activates the heater |
| Real | h_heater (from PartialMultizone) | 0 | Upper limit controller output of the heater |
| Real | l_heater (from PartialMultizone) | 0 | Lower limit controller output of the heater |
| Real | KR_heater (from PartialMultizone) | 1000 | Gain of the heating controller |
| Modelica.Units.SI.Time | TN_heater (from PartialMultizone) | 1 | Time constant of the heating controller |
| IdealHeaterCooler › Cooler | |||
| Boolean | Cooler_on (from PartialMultizone) | true | Activates the cooler |
| Real | h_cooler (from PartialMultizone) | 0 | Upper limit controller output of the cooler |
| Real | l_cooler (from PartialMultizone) | 0 | Lower limit controller output of the cooler |
| Real | KR_cooler (from PartialMultizone) | 1000 | Gain of the cooling controller |
| Modelica.Units.SI.Time | TN_cooler (from PartialMultizone) | 1 | Time constant of the cooling controller |
| Moisture › Pools | |||
| Boolean | use_pools_tot (from PartialMultizone) | false | use swimming pools within at least one zone of the multizone |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Blocks.Interfaces.RealInput[3*numZones] | intGains (from PartialMultizone) | Input profiles for internal gains persons, machines, light | |
| Modelica.Blocks.Interfaces.RealOutput[numZones] | TAir (from PartialMultizone) | Indoor air temperature | |
| Modelica.Blocks.Interfaces.RealOutput[numZones] | TRad (from PartialMultizone) | Mean indoor radiation temperature | |
| BoundaryConditions.WeatherData.Bus | weaBus (from PartialMultizone) | Weather data bus | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a[size(zone, 1)] | intGainsConv (from PartialMultizone) | Convective internal gains | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a[size(zone, 1)] | intGainsRad (from PartialMultizone) | Radiative internal gains | |
| Modelica.Blocks.Interfaces.RealInput[numZones] | TSetHeat (from PartialMultizone) | Set point for heater - used only if zoneParam[i].HeaterOn is true | |
| Modelica.Blocks.Interfaces.RealInput[numZones] | TSetCool (from PartialMultizone) | Set point for cooler - used only if zoneParam[i].CoolerOn is true | |
| Modelica.Blocks.Interfaces.RealOutput[numZones] | PHeater (from PartialMultizone) | Power for heating | |
| Modelica.Blocks.Interfaces.RealOutput[numZones] | PCooler (from PartialMultizone) | Power for cooling | |
| Modelica.Blocks.Interfaces.RealOutput[numZones,3] | QIntGains_flow (from PartialMultizone) | Heat flow based on internal gains for each zone from lights[1], machines[2], and persons[3] | |
| Modelica.Blocks.Interfaces.RealInput | timeOpe (from PartialMultizone) | Input profiles for opening hours for pools | |
| Modelica.Blocks.Interfaces.RealInput[numZones] | ventTemp | Ventilation and infiltration temperature | |
| Modelica.Blocks.Interfaces.RealInput[numZones] | ventRate | Ventilation and infiltration rate | |
| Modelica.Blocks.Interfaces.RealInput[numZones] | ventHum | Ventilation and infiltration humidity | |
| Modelica.Blocks.Interfaces.RealOutput[size(zone, 1)] | CO2Con | CO2 concentration in the thermal zone in ppm | |
| Modelica.Blocks.Interfaces.RealOutput[size(zone, 1)] | X_w | Humidity output |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| AixLib.ThermalZones.ReducedOrder.ThermalZone.ThermalZone[numZones] | zone (from PartialMultizone) | Thermal zone model | |
| AixLib.ThermalZones.ReducedOrder.Multizone.BaseClasses.FlowArrayRearranging | izeArrCon (from PartialMultizone) | Distributor for connection between adjacent zones |
Revisions
- November 20, 2020, by Katharina Breuer:
Combine thermal zone models - August 27, 2020, by Katharina Breuer:
Add co2 balance - April, 2019, by Martin Kremer:
Add moisture balance - September 27, 2016, by Moritz Lauster:
Reimplementation based on Annex60 and AixLib models. - June 22, 2015, by Moritz Lauster:
First implementation.