Buildings.ThermalZones.Detailed.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.ThermalZones.Detailed.

Note that most validation models contain simple input data which may not be realistic, but for which the correct output can be obtained through an analytic solution. The examples plot various outputs, which have been verified against these solutions. These model outputs are stored as reference data and used for continuous validation whenever models in the library change.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.ThermalZones.Detailed.Validation.MixedAirFreeResponseSteadyState MixedAirFreeResponseSteadyState Validation model for the room model with steady state boundary conditions
Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier RoomCapacityMultiplier Validation model for room capacity multiplier
Buildings.ThermalZones.Detailed.Validation.SingleZoneFloorWithHeating SingleZoneFloorWithHeating Validation model for SingleZoneFloor with heating and control
Buildings.ThermalZones.Detailed.Validation.BESTEST BESTEST Package with models for the BESTEST validation
Buildings.ThermalZones.Detailed.Validation.Initialization Initialization Package with models that validate the initialization
Buildings.ThermalZones.Detailed.Validation.LBNL_71T LBNL_71T Validation models for LBNL 71T
Buildings.ThermalZones.Detailed.Validation.TestConditionalConstructions TestConditionalConstructions Package with models that verify whether constructions can be conditionally removed
Buildings.ThermalZones.Detailed.Validation.BaseClasses BaseClasses Package with base classes for Buildings.ThermalZones.Detailed.Validation

Buildings.ThermalZones.Detailed.Validation.MixedAirFreeResponseSteadyState Buildings.ThermalZones.Detailed.Validation.MixedAirFreeResponseSteadyState

Validation model for the room model with steady state boundary conditions

Buildings.ThermalZones.Detailed.Validation.MixedAirFreeResponseSteadyState

Information

This model validates that the detailed room model starts at and remains at exactly 20°C room air temperature if there is no solar radiation, constant outdoor conditions and no internal gains.

Extends from Examples.MixedAirFreeResponse (Free response of room model).

Parameters

TypeNameDefaultDescription
PlywoodmatWoo Wood for exterior construction
ConcretematCon Concrete
GenericmatIns Steelframe construction with insulation
GypsumBoardmatGyp Gypsum board
GypsumBoardmatGyp2 Gypsum board
PlywoodmatFur Material for furniture
PlywoodmatCarTra Wood for floor
CarpetmatCar Carpet
DoubleClearAir13ClearglaSys Data record for the glazing system
GenericconExtWal Exterior construction
GenericconIntWal Interior wall construction
GenericconFlo Floor construction (opa_a is carpet)
GenericconFur Construction for internal mass of furniture
StringweaFilModelica.Utilities.Files.loa...Weather data file
AnglelatBuildings.BoundaryConditions...Latitude [rad]
VolumeVRoo4555.7Room volum [m3]
HeighthRoo2.74Room height [m]
LengthhWin1.5Height of windows [m]
RealwinWalRat0.33Window to wall ratio for exterior walls
AreaAFloVRoo/hRooFloor area [m2]

Modelica definition

model MixedAirFreeResponseSteadyState "Validation model for the room model with steady state boundary conditions" extends Examples.MixedAirFreeResponse( weaDat( pAtmSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, ceiHeiSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, totSkyCovSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, opaSkyCovSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, TDryBulSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, TDewPoiSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, TBlaSkySou=Buildings.BoundaryConditions.Types.DataSource.Parameter, TBlaSky=293.15, relHumSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, winSpeSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, winDirSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, HInfHorSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, HSou=Buildings.BoundaryConditions.Types.RadiationDataSource.Input_HGloHor_HDifHor)); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant zer(k=0) "Zero input signal"; equation connect(zer.y, weaDat.HDifHor_in); connect(zer.y, weaDat.HGloHor_in); end MixedAirFreeResponseSteadyState;

Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier

Validation model for room capacity multiplier

Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier

Information

This model validates the room capacity multipler of Buildings.ThermalZones.Detailed.MixedAir. The rooms are adiabatic, but have different heat capacities. A small amount of heat is added to test the different time response.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model RoomCapacityMultiplier "Validation model for room capacity multiplier" extends Modelica.Icons.Example; package MediumA = Buildings.Media.Air "Medium model"; model Room = Buildings.ThermalZones.Detailed.MixedAir ( redeclare package Medium = MediumA, AFlo=6*4, hRoo=2.7, nConExt=0, nConExtWin=0, nConPar=0, nConBou=0, nSurBou=1, surBou(each A=6*2.7, each absIR=0.9, each absSol=0.9, each til=Buildings.Types.Tilt.Wall), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, mSenFac=1, T_start=293.15, lat=0.73268921998722) "Room model"; Room roo1 "Room model"; Room roo2(mSenFac=2) "Room model"; Modelica.Blocks.Sources.Constant qConGai_flow(k=1) "Convective heat gain"; Modelica.Blocks.Sources.Constant qRadGai_flow(k=0) "Radiative heat gain"; Modelica.Blocks.Routing.Multiplex3 multiplex3_1 "Multiplex for internal gain"; Modelica.Blocks.Sources.Constant qLatGai_flow(k=0) "Latent heat gain"; Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat( filNam=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"), computeWetBulbTemperature=false); equation connect(qRadGai_flow.y, multiplex3_1.u1[1]); connect(qConGai_flow.y, multiplex3_1.u2[1]); connect(qLatGai_flow.y, multiplex3_1.u3[1]); connect(weaDat.weaBus, roo1.weaBus); connect(roo2.qGai_flow, multiplex3_1.y); connect(roo1.qGai_flow, multiplex3_1.y); connect(roo2.weaBus, weaDat.weaBus); end RoomCapacityMultiplier;

Buildings.ThermalZones.Detailed.Validation.SingleZoneFloorWithHeating Buildings.ThermalZones.Detailed.Validation.SingleZoneFloorWithHeating

Validation model for SingleZoneFloor with heating and control

Buildings.ThermalZones.Detailed.Validation.SingleZoneFloorWithHeating

Information

This model compares the heating energy demand of a single-zone floor model Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloor with the total heating energy demand of a five-zone floor model Buildings.Examples.VAVReheat.BaseClasses.Floor.

The nominal mass flowrate of the single zone floor model is consistent with the total nominal flowrate of the five-zone floor model. The heating energy is calculated via an ideal heater.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
Anglelat41.98*3.14159/180Latitude of site location [rad]
AreaAFloCorflo.cor.AFloFloor area corridor [m2]
AreaAFloSouflo.sou.AFloFloor area south [m2]
AreaAFloNorflo.nor.AFloFloor area north [m2]
AreaAFloEasflo.eas.AFloFloor area east [m2]
AreaAFloWesflo.wes.AFloFloor area west [m2]
VolumeVRooCorAFloCor*flo.hRooRoom volume corridor [m3]
VolumeVRooSouAFloSou*flo.hRooRoom volume south [m3]
VolumeVRooNorAFloNor*flo.hRooRoom volume north [m3]
VolumeVRooEasAFloEas*flo.hRooRoom volume east [m3]
VolumeVRooWesAFloWes*flo.hRooRoom volume west [m3]
VolumeVRooVRooSou + VRooEas + VRooNor ...Total floor volume [m3]

Modelica definition

model SingleZoneFloorWithHeating "Validation model for SingleZoneFloor with heating and control" extends Modelica.Icons.Example; package Medium = Buildings.Media.Air "Buildings library air media package"; parameter Modelica.SIunits.Angle lat=41.98*3.14159/180 "Latitude of site location"; parameter Modelica.SIunits.Area AFloCor=flo.cor.AFlo "Floor area corridor"; parameter Modelica.SIunits.Area AFloSou=flo.sou.AFlo "Floor area south"; parameter Modelica.SIunits.Area AFloNor=flo.nor.AFlo "Floor area north"; parameter Modelica.SIunits.Area AFloEas=flo.eas.AFlo "Floor area east"; parameter Modelica.SIunits.Area AFloWes=flo.wes.AFlo "Floor area west"; parameter Modelica.SIunits.Volume VRooCor=AFloCor*flo.hRoo "Room volume corridor"; parameter Modelica.SIunits.Volume VRooSou=AFloSou*flo.hRoo "Room volume south"; parameter Modelica.SIunits.Volume VRooNor=AFloNor*flo.hRoo "Room volume north"; parameter Modelica.SIunits.Volume VRooEas=AFloEas*flo.hRoo "Room volume east"; parameter Modelica.SIunits.Volume VRooWes=AFloWes*flo.hRoo "Room volume west"; parameter Modelica.SIunits.Volume VRoo=VRooSou+VRooEas+VRooNor+VRooWes+VRooCor "Total floor volume"; Buildings.Examples.VAVReheat.BaseClasses.Floor flo( redeclare package Medium = Medium, use_windPressure=false, lat=lat, gai(K=0*[0.4; 0.4; 0.2])) "Five-zone floor model"; Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat( filNam=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"), computeWetBulbTemperature=false) "Weather data"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloor sinZonFlo( redeclare package Medium = Medium, use_windPressure=false, lat=lat, gai(K=0*[0.4; 0.4; 0.2])) "Single-zone floor model"; Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TSetRoo(k=273.15 + 22, y(unit="K", displayUnit="degC")) "Setpoint for room air"; Buildings.Controls.OBC.CDL.Continuous.MultiSum EHeaFlo(nin=5) "Heating energy of the five-zone floor"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloorHeater heaAndCon( redeclare package Medium=Medium, m_flow_nominal=VRoo*3/3600*1.2, VRoo=VRoo) "Heater and controller for the singleZoneFloor"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloorHeater heaAndConNor( redeclare package Medium = Medium, m_flow_nominal=VRooNor*3/3600*1.2, VRoo=VRooNor) "Heater and controller for the north zone"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloorHeater heaAndConWes( redeclare package Medium = Medium, m_flow_nominal=VRooWes*3/3600*1.2, VRoo=VRooWes) "Heater and controller for the west zone"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloorHeater heaAndConCor( redeclare package Medium = Medium, m_flow_nominal=VRooCor*3/3600*1.2, VRoo=VRooCor) "Heater and controller for the core zone"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloorHeater heaAndConSou( redeclare package Medium = Medium, m_flow_nominal=VRooSou*6/3600*1.2, VRoo=VRooSou) "Heater and controller for the south zone"; Buildings.ThermalZones.Detailed.Validation.BaseClasses.SingleZoneFloorHeater heaAndConEas( redeclare package Medium = Medium, m_flow_nominal=VRooEas*3/3600*1.2, VRoo=VRooEas) "Heater and controller for the east zone"; equation connect(weaDat.weaBus, flo.weaBus); connect(weaDat.weaBus, sinZonFlo.weaBus); connect(TSetRoo.y, heaAndCon.TSetRoo); connect(heaAndCon.port_a, sinZonFlo.ports[1]); connect(heaAndCon.port_b, sinZonFlo.ports[2]); connect(heaAndConNor.port_b, flo.portsNor[2]); connect(heaAndConWes.port_a, flo.portsWes[1]); connect(heaAndConWes.port_b, flo.portsWes[2]); connect(heaAndConCor.port_a, flo.portsCor[1]); connect(heaAndConCor.port_b, flo.portsCor[2]); connect(heaAndConSou.port_a, flo.portsSou[1]); connect(heaAndConSou.port_b, flo.portsSou[2]); connect(heaAndConEas.port_a, flo.portsEas[1]); connect(heaAndConEas.port_b, flo.portsEas[2]); connect(TSetRoo.y, heaAndConNor.TSetRoo); connect(TSetRoo.y, heaAndConWes.TSetRoo); connect(TSetRoo.y, heaAndConCor.TSetRoo); connect(TSetRoo.y, heaAndConSou.TSetRoo); connect(TSetRoo.y, heaAndConEas.TSetRoo); connect(flo.TRooAir[3], heaAndConNor.TRooMea); connect(flo.TRooAir[4], heaAndConWes.TRooMea); connect(flo.TRooAir[5], heaAndConCor.TRooMea); connect(flo.TRooAir[1], heaAndConSou.TRooMea); connect(flo.TRooAir[2], heaAndConEas.TRooMea); connect(heaAndConNor.yEHea, EHeaFlo.u[1]); connect(heaAndConWes.yEHea, EHeaFlo.u[2]); connect(heaAndConCor.yEHea, EHeaFlo.u[3]); connect(heaAndConSou.yEHea, EHeaFlo.u[4]); connect(heaAndConEas.yEHea, EHeaFlo.u[5]); connect(heaAndConNor.port_a, flo.portsNor[1]); connect(sinZonFlo.TRooAir, heaAndCon.TRooMea); end SingleZoneFloorWithHeating;

Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier.Room Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier.Room

Room model

Buildings.ThermalZones.Detailed.Validation.RoomCapacityMultiplier.Room

Parameters

TypeNameDefaultDescription
ParameterConstructiondatConExt[NConExt]datConExt(each T_a_start=T_s...Data for exterior construction
ParameterConstructionWithWindowdatConExtWin[NConExtWin]datConExtWin(each T_a_start=...Data for exterior construction with window
ParameterConstructiondatConPar[NConPar]datConPar(each T_a_start=T_s...Data for partition construction
ParameterConstructiondatConBou[NConBou]datConBou(each T_a_start=T_s...Data for construction boundary
Brick120dummyCon Dummy construction to assign a parameter to the instance
SingleClear3dummyGlaSys Dummy construction to assign a parameter to the instance
replaceable package MediumPartialMediumMedium in the component
Anglelat0.73268921998722Latitude [rad]
AreaAFlo6*4Floor area [m2]
LengthhRoo2.7Average room height [m]
BooleanlinearizeRadiationtrueSet to true to linearize emissive power
Exterior constructions
IntegernConExt0Number of exterior constructions
IntegernConExtWin0Number of window constructions
Partition constructions
IntegernConPar0Number of partition constructions
Boundary constructions
IntegernConBou0Number of constructions that have their outside surface exposed to the boundary of this room
IntegernSurBou1Number of surface heat transfer models that connect to constructions that are modeled outside of this room
Convective heat transfer
InteriorConvectionintConModBuildings.HeatTransfer.Types...Convective heat transfer model for room-facing surfaces of opaque constructions
CoefficientOfHeatTransferhIntFixed3.0Constant convection coefficient for room-facing surfaces of opaque constructions [W/(m2.K)]
ExteriorConvectionextConModBuildings.HeatTransfer.Types...Convective heat transfer model for exterior facing surfaces of opaque constructions
CoefficientOfHeatTransferhExtFixed10.0Constant convection coefficient for exterior facing surfaces of opaque constructions [W/(m2.K)]
Nominal condition
MassFlowRatem_flow_nominalV*1.2/3600Nominal mass flow rate [kg/s]
Ports
Booleanuse_C_flowfalseSet to true to enable input connector for trace substance that is connected to room air
Dynamics
Glazing system
BooleansteadyStateWindowfalseSet to false to add thermal capacity at window, which generally leads to faster simulation
Zone air
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance for zone air: dynamic (3 initialization options) or steady state
DynamicsmassDynamicsenergyDynamicsType of mass balance for zone air: dynamic (3 initialization options) or steady state
RealmSenFac1Factor for scaling the sensible thermal mass of the zone air volume
Experimental (may be changed in future releases)
BooleansampleModelfalseSet to true to time-sample the model, which can give shorter simulation time if there is already time sampling in the system model
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of zone air pressure [Pa]
TemperatureT_start293.15Start value of zone air temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of zone air mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of zone air trace substances
ExtraPropertyC_nominal[Medium.nC]fill(1E-2, Medium.nC)Nominal value of zone air trace substances. (Set to typical order of magnitude.)

Connectors

TypeNameDescription
replaceable package MediumMedium in the component
VesselFluidPorts_bports[nPorts]Fluid inlets and outlets
HeatPort_aheaPorAirHeat port to air volume
HeatPort_aheaPorRadHeat port for radiative heat gain and radiative temperature
input RealInputuWin[nConExtWin]Control signal for window state (used for electrochromic windows, removed otherwise) [1]
HeatPort_asurf_conBou[nConBou]Heat port at surface b of construction conBou
HeatPort_asurf_surBou[nSurBou]Heat port of surface that is connected to the room air
input RealInputqGai_flow[3]Radiant, convective and latent heat input into room (positive if heat gain) [W/m2]
BusweaBusWeather data
input RealInputuSha[nConExtWin]Control signal for the shading device (removed if no shade is present)
input RealInputC_flow[Medium.nC]Trace substance mass flow rate added to the room air. Enable if use_C_flow = true

Modelica definition

model Room = Buildings.ThermalZones.Detailed.MixedAir ( redeclare package Medium = MediumA, AFlo=6*4, hRoo=2.7, nConExt=0, nConExtWin=0, nConPar=0, nConBou=0, nSurBou=1, surBou(each A=6*2.7, each absIR=0.9, each absSol=0.9, each til=Buildings.Types.Tilt.Wall), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, mSenFac=1, T_start=293.15, lat=0.73268921998722) "Room model";