Buildings.Examples.VAVReheat.BaseClasses

Package with base classes for Buildings.Examples.VAVReheat

Information

This package contains base classes that are used to construct the models in Buildings.Examples.VAVReheat.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.Examples.VAVReheat.BaseClasses.Floor Floor Model of a floor of the building
Buildings.Examples.VAVReheat.BaseClasses.FreezeStat FreezeStat Freeze thermostat with timed lockout
Buildings.Examples.VAVReheat.BaseClasses.PartialFloor PartialFloor Interface for a model of a floor of a building
Buildings.Examples.VAVReheat.BaseClasses.PartialOpenLoop PartialOpenLoop Partial model of variable air volume flow system with terminal reheat and five thermal zones
Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage RoomLeakage Room leakage model
Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox VAVReheatBox Supply box of a VAV system with a hot water reheat coil

Buildings.Examples.VAVReheat.BaseClasses.Floor Buildings.Examples.VAVReheat.BaseClasses.Floor

Model of a floor of the building

Buildings.Examples.VAVReheat.BaseClasses.Floor

Information

Model of a floor that consists of five thermal zones that are representative of one floor of the new construction medium office building for Chicago, IL, as described in the set of DOE Commercial Building Benchmarks. There are four perimeter zones and one core zone. The envelope thermal properties meet ASHRAE Standard 90.1-2004.

Extends from Buildings.Examples.VAVReheat.BaseClasses.PartialFloor (Interface for a model of a floor of a building).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium model for air
Booleanuse_windPressuretrueSet to true to enable wind pressure
RealkIntNor1Gain factor to scale internal heat gain in north zone
VolumeVRooCorcor.AFlo*hRooRoom volume corridor [m3]
VolumeVRooSousou.AFlo*hRooRoom volume south [m3]
VolumeVRooNornor.AFlo*hRooRoom volume north [m3]
VolumeVRooEaseas.AFlo*hRooRoom volume east [m3]
VolumeVRooWeswes.AFlo*hRooRoom volume west [m3]
AreaAFloCor2698/hRooFloor area corridor [m2]
AreaAFloSou568.77/hRooFloor area south [m2]
AreaAFloNor568.77/hRooFloor area north [m2]
AreaAFloEas360.0785/hRooFloor area east [m2]
AreaAFloWes360.0785/hRooFloor area west [m2]
InteriorConvectionintConModBuildings.HeatTransfer.Types...Convective heat transfer model for room-facing surfaces of opaque constructions
Anglelat Latitude [rad]
RealwinWalRat0.33Window to wall ratio for exterior walls
LengthhWin1.5Height of windows [m]
PlywoodmatFurmatFur(x=0.15, nStaRef=5)Material for furniture
CarpetmatCar Carpet
ConcretematConmatCon(x=0.1, k=1.311, c=836...Concrete
PlywoodmatWoomatWoo(x=0.01, k=0.11, d=544...Wood for exterior construction
GenericmatInsmatIns(x=0.087, k=0.049, c=8...Steelframe construction with insulation
GypsumBoardmatGypmatGyp(x=0.0127, k=0.16, c=8...Gypsum board
GypsumBoardmatGyp2matGyp2(x=0.025, k=0.16, c=8...Gypsum board
GenericconExtWalconExtWal(final nLay=3, mate...Exterior construction
GenericconIntWalconIntWal(final nLay=1, mate...Interior wall construction
GenericconFloconFlo(final nLay=1, materia...Floor construction (opa_a is carpet)
GenericconFurconFur(final nLay=1, materia...Construction for internal mass of furniture
PlywoodmatCarTramatCarTra(k=0.11, d=544, nSt...Wood for floor
DoubleClearAir13ClearglaSysglaSys(UFra=2, shade=Buildin...Data record for the glazing system
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

Connectors

TypeNameDescription
VesselFluidPorts_bportsSou[2]Fluid inlets and outlets
VesselFluidPorts_bportsEas[2]Fluid inlets and outlets
VesselFluidPorts_bportsNor[2]Fluid inlets and outlets
VesselFluidPorts_bportsWes[2]Fluid inlets and outlets
VesselFluidPorts_bportsCor[2]Fluid inlets and outlets
output RealOutputTRooAir[5]Room air temperatures [K]
output RealOutputp_relRelative pressure signal of building static pressure
BusweaBusWeather bus

Modelica definition

model Floor "Model of a floor of the building" extends Buildings.Examples.VAVReheat.BaseClasses.PartialFloor( final VRooCor=cor.AFlo * hRoo, final VRooSou=sou.AFlo * hRoo, final VRooNor=nor.AFlo * hRoo, final VRooEas=eas.AFlo * hRoo, final VRooWes=wes.AFlo * hRoo, AFloCor = 2698/hRoo, AFloSou = 568.77/hRoo, AFloNor = 568.77/hRoo, AFloEas = 360.0785/hRoo, AFloWes = 360.0785/hRoo); parameter HeatTransfer.Types.InteriorConvection intConMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature "Convective heat transfer model for room-facing surfaces of opaque constructions"; parameter Modelica.SIunits.Angle lat "Latitude"; parameter Real winWalRat( min=0.01, max=0.99) = 0.33 "Window to wall ratio for exterior walls"; parameter Modelica.SIunits.Length hWin = 1.5 "Height of windows"; parameter HeatTransfer.Data.Solids.Plywood matFur(x=0.15, nStaRef=5) "Material for furniture"; parameter HeatTransfer.Data.Resistances.Carpet matCar "Carpet"; parameter HeatTransfer.Data.Solids.Concrete matCon( x=0.1, k=1.311, c=836, nStaRef=5) "Concrete"; parameter HeatTransfer.Data.Solids.Plywood matWoo( x=0.01, k=0.11, d=544, nStaRef=1) "Wood for exterior construction"; parameter HeatTransfer.Data.Solids.Generic matIns( x=0.087, k=0.049, c=836.8, d=265, nStaRef=5) "Steelframe construction with insulation"; parameter HeatTransfer.Data.Solids.GypsumBoard matGyp( x=0.0127, k=0.16, c=830, d=784, nStaRef=2) "Gypsum board"; parameter HeatTransfer.Data.Solids.GypsumBoard matGyp2( x=0.025, k=0.16, c=830, d=784, nStaRef=2) "Gypsum board"; parameter HeatTransfer.Data.OpaqueConstructions.Generic conExtWal(final nLay=3, material={matWoo,matIns,matGyp}) "Exterior construction"; parameter HeatTransfer.Data.OpaqueConstructions.Generic conIntWal(final nLay=1, material={matGyp2}) "Interior wall construction"; parameter HeatTransfer.Data.OpaqueConstructions.Generic conFlo(final nLay=1, material={ matCon}) "Floor construction (opa_a is carpet)"; parameter HeatTransfer.Data.OpaqueConstructions.Generic conFur(final nLay=1, material={ matFur}) "Construction for internal mass of furniture"; parameter HeatTransfer.Data.Solids.Plywood matCarTra( k=0.11, d=544, nStaRef=1, x=0.215/0.11) "Wood for floor"; parameter HeatTransfer.Data.GlazingSystems.DoubleClearAir13Clear glaSys( UFra=2, shade=Buildings.HeatTransfer.Data.Shades.Gray(), haveInteriorShade=false, haveExteriorShade=false) "Data record for the glazing system"; constant Modelica.SIunits.Height hRoo=2.74 "Room height"; parameter Boolean sampleModel = false "Set to true to time-sample the model, which can give shorter simulation time if there is already time sampling in the system model"; Buildings.ThermalZones.Detailed.MixedAir sou( redeclare package Medium = Medium, lat=lat, AFlo=AFloSou, hRoo=hRoo, nConExt=0, nConExtWin=1, datConExtWin( layers={conExtWal}, A={49.91*hRoo}, glaSys={glaSys}, wWin={winWalRat/hWin*49.91*hRoo}, each hWin=hWin, fFra={0.1}, til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.S}), nConPar=2, datConPar( layers={conFlo,conFur}, A={AFloSou,414.68}, til={Buildings.Types.Tilt.Floor,Buildings.Types.Tilt.Wall}), nConBou=3, datConBou( layers={conIntWal,conIntWal,conIntWal}, A={6.47,40.76,6.47}*hRoo, til={Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall}), nSurBou=0, nPorts=5, intConMod=intConMod, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final sampleModel=sampleModel) "South zone"; Buildings.ThermalZones.Detailed.MixedAir eas( redeclare package Medium = Medium, lat=lat, AFlo=AFloEas, hRoo=hRoo, nConExt=0, nConExtWin=1, datConExtWin( layers={conExtWal}, A={33.27*hRoo}, glaSys={glaSys}, wWin={winWalRat/hWin*33.27*hRoo}, each hWin=hWin, fFra={0.1}, til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.E}), nConPar=2, datConPar( layers={conFlo,conFur}, A={AFloEas,262.52}, til={Buildings.Types.Tilt.Floor,Buildings.Types.Tilt.Wall}), nConBou=1, datConBou( layers={conIntWal}, A={24.13}*hRoo, til={Buildings.Types.Tilt.Wall}), nSurBou=2, surBou( each A=6.47*hRoo, each absIR=0.9, each absSol=0.9, til={Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall}), nPorts=5, intConMod=intConMod, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final sampleModel=sampleModel) "East zone"; Buildings.ThermalZones.Detailed.MixedAir nor( redeclare package Medium = Medium, lat=lat, AFlo=AFloNor, hRoo=hRoo, nConExt=0, nConExtWin=1, datConExtWin( layers={conExtWal}, A={49.91*hRoo}, glaSys={glaSys}, wWin={winWalRat/hWin*49.91*hRoo}, each hWin=hWin, fFra={0.1}, til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.N}), nConPar=2, datConPar( layers={conFlo,conFur}, A={AFloNor,414.68}, til={Buildings.Types.Tilt.Floor,Buildings.Types.Tilt.Wall}), nConBou=3, datConBou( layers={conIntWal,conIntWal,conIntWal}, A={6.47,40.76,6.47}*hRoo, til={Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall}), nSurBou=0, nPorts=5, intConMod=intConMod, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final sampleModel=sampleModel) "North zone"; Buildings.ThermalZones.Detailed.MixedAir wes( redeclare package Medium = Medium, lat=lat, AFlo=AFloWes, hRoo=hRoo, nConExt=0, nConExtWin=1, datConExtWin( layers={conExtWal}, A={33.27*hRoo}, glaSys={glaSys}, wWin={winWalRat/hWin*33.27*hRoo}, each hWin=hWin, fFra={0.1}, til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.W}), nConPar=2, datConPar( layers={conFlo,conFur}, A={AFloWes,262.52}, til={Buildings.Types.Tilt.Floor,Buildings.Types.Tilt.Wall}), nConBou=1, datConBou( layers={conIntWal}, A={24.13}*hRoo, til={Buildings.Types.Tilt.Wall}), nSurBou=2, surBou( each A=6.47*hRoo, each absIR=0.9, each absSol=0.9, til={Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall}), nPorts=5, intConMod=intConMod, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final sampleModel=sampleModel) "West zone"; Buildings.ThermalZones.Detailed.MixedAir cor( redeclare package Medium = Medium, lat=lat, AFlo=AFloCor, hRoo=hRoo, nConExt=0, nConExtWin=0, nConPar=2, datConPar( layers={conFlo,conFur}, A={AFloCor,1967.01}, til={Buildings.Types.Tilt.Floor,Buildings.Types.Tilt.Wall}), nConBou=0, nSurBou=4, surBou( A={40.76,24.13,40.76,24.13}*hRoo, each absIR=0.9, each absSol=0.9, til={Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall, Buildings.Types.Tilt.Wall}), nPorts=11, intConMod=intConMod, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final sampleModel=sampleModel) "Core zone"; Modelica.Blocks.Math.MatrixGain gai(K=20*[0.4; 0.4; 0.2]) "Matrix gain to split up heat gain in radiant, convective and latent gain"; Modelica.Blocks.Sources.CombiTimeTable intGaiFra( table=[0,0.05; 8,0.05; 9,0.9; 12,0.9; 12,0.8; 13,0.8; 13,1; 17,1; 19,0.1; 24,0.05], timeScale=3600, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Fraction of internal heat gain"; Modelica.Blocks.Math.Gain gaiIntNor[3](each k=kIntNor) "Gain for internal heat gain amplification for north zone"; Modelica.Blocks.Math.Gain gaiIntSou[3](each k=2 - kIntNor) "Gain to change the internal heat gain for south"; Modelica.Blocks.Sources.Constant uSha(k=0) "Control signal for the shading device"; Modelica.Blocks.Routing.Replicator replicator(nout=1); equation connect(sou.surf_conBou[1], wes.surf_surBou[2]); connect(sou.surf_conBou[2], cor.surf_surBou[1]); connect(sou.surf_conBou[3], eas.surf_surBou[1]); connect(eas.surf_conBou[1], cor.surf_surBou[2]); connect(eas.surf_surBou[2], nor.surf_conBou[1]); connect(nor.surf_conBou[2], cor.surf_surBou[3]); connect(nor.surf_conBou[3], wes.surf_surBou[1]); connect(wes.surf_conBou[1], cor.surf_surBou[4]); connect(replicator.y, nor.uSha); connect(replicator.y, wes.uSha); connect(replicator.y, eas.uSha); connect(replicator.y, sou.uSha); connect(replicator.y, cor.uSha); connect(gai.y, cor.qGai_flow); connect(gai.y, eas.qGai_flow); connect(gai.y, wes.qGai_flow); connect(sou.weaBus, weaBus); connect(eas.weaBus, weaBus); connect(nor.weaBus, weaBus); connect(wes.weaBus, weaBus); connect(cor.weaBus, weaBus); connect(multiplex5_1.y, TRooAir); connect(temAirSou.T, multiplex5_1.u1[1]); connect(temAirEas.T, multiplex5_1.u2[1]); connect(temAirNor.T, multiplex5_1.u3[1]); connect(temAirWes.T, multiplex5_1.u4[1]); connect(temAirCor.T, multiplex5_1.u5[1]); connect(sou.heaPorAir, temAirSou.port); connect(eas.heaPorAir, temAirEas.port); connect(nor.heaPorAir, temAirNor.port); connect(wes.heaPorAir, temAirWes.port); connect(cor.heaPorAir, temAirCor.port); connect(sou.ports[1], portsSou[1]); connect(sou.ports[2], portsSou[2]); connect(eas.ports[1], portsEas[1]); connect(eas.ports[2], portsEas[2]); connect(nor.ports[1], portsNor[1]); connect(nor.ports[2], portsNor[2]); connect(wes.ports[1], portsWes[1]); connect(wes.ports[2], portsWes[2]); connect(cor.ports[1], portsCor[1]); connect(cor.ports[2], portsCor[2]); connect(leaSou.port_b, sou.ports[3]); connect(leaEas.port_b, eas.ports[3]); connect(leaNor.port_b, nor.ports[3]); connect(leaWes.port_b, wes.ports[3]); connect(opeSouCor.port_b1, cor.ports[3]); connect(opeSouCor.port_a2, cor.ports[4]); connect(opeSouCor.port_a1, sou.ports[4]); connect(opeSouCor.port_b2, sou.ports[5]); connect(opeEasCor.port_b1, eas.ports[4]); connect(opeEasCor.port_a2, eas.ports[5]); connect(opeEasCor.port_a1, cor.ports[5]); connect(opeEasCor.port_b2, cor.ports[6]); connect(opeNorCor.port_b1, nor.ports[4]); connect(opeNorCor.port_a2, nor.ports[5]); connect(opeNorCor.port_a1, cor.ports[7]); connect(opeNorCor.port_b2, cor.ports[8]); connect(opeWesCor.port_b1, cor.ports[9]); connect(opeWesCor.port_a2, cor.ports[10]); connect(opeWesCor.port_a1, wes.ports[4]); connect(opeWesCor.port_b2, wes.ports[5]); connect(cor.ports[11], senRelPre.port_a); connect(senRelPre.p_rel, p_rel); connect(gaiIntNor.y, nor.qGai_flow); connect(gaiIntSou.y, sou.qGai_flow); connect(gai.y,gaiIntSou. u); connect(gai.y,gaiIntNor. u); connect(intGaiFra.y,gai. u); connect(uSha.y,replicator. u); end Floor;

Buildings.Examples.VAVReheat.BaseClasses.FreezeStat Buildings.Examples.VAVReheat.BaseClasses.FreezeStat

Freeze thermostat with timed lockout

Buildings.Examples.VAVReheat.BaseClasses.FreezeStat

Information

Freeze stat that outputs true if freeze protection should be engaged.

The freeze stat regulates around a set point. When it triggers freeze protection, then the freeze protection stays engaged for at least delayTime. It only becomes disengaged after this time period if the measured temperature is above the set point.

Parameters

TypeNameDefaultDescription
ReallockoutTime900Delay time [s]
RealTSet276.15Temperature below which the freeze protection starts [K]

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal used as measurement signal [K]
output BooleanOutputyConnector of Real output signal used as actuator signal

Modelica definition

model FreezeStat "Freeze thermostat with timed lockout" parameter Real lockoutTime( final quantity="Time", final unit="s", displayUnit="min", min=60) = 900 "Delay time"; parameter Real TSet( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC") = 276.15 "Temperature below which the freeze protection starts"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC") "Connector of Real input signal used as measurement signal"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput y "Connector of Real output signal used as actuator signal"; Buildings.Controls.OBC.CDL.Logical.TrueDelay locOut(final delayTime= lockoutTime) "If freeze stat triggers, keep it on for specified time"; Buildings.Controls.OBC.CDL.Logical.Not freStaSig "Signal for freeze stat"; Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold greThr( final t=TSet, final h=0.5) "Greater comparison"; equation connect(locOut.y, freStaSig.u); connect(freStaSig.y, y); connect(greThr.y, locOut.u); connect(greThr.u, u); end FreezeStat;

Buildings.Examples.VAVReheat.BaseClasses.PartialFloor Buildings.Examples.VAVReheat.BaseClasses.PartialFloor

Interface for a model of a floor of a building

Buildings.Examples.VAVReheat.BaseClasses.PartialFloor

Information

This is a partial model for one floor of the DOE reference office building.

Parameters

TypeNameDefaultDescription
replaceable package MediumModelica.Media.Interfaces.Pa...Medium model for air
Booleanuse_windPressuretrueSet to true to enable wind pressure
RealkIntNor1Gain factor to scale internal heat gain in north zone
VolumeVRooCor Room volume corridor [m3]
VolumeVRooSou Room volume south [m3]
VolumeVRooNor Room volume north [m3]
VolumeVRooEas Room volume east [m3]
VolumeVRooWes Room volume west [m3]
AreaAFloCor Floor area corridor [m2]
AreaAFloSou Floor area south [m2]
AreaAFloNor Floor area north [m2]
AreaAFloEas Floor area east [m2]
AreaAFloWes Floor area west [m2]

Connectors

TypeNameDescription
replaceable package MediumMedium model for air
VesselFluidPorts_bportsSou[2]Fluid inlets and outlets
VesselFluidPorts_bportsEas[2]Fluid inlets and outlets
VesselFluidPorts_bportsNor[2]Fluid inlets and outlets
VesselFluidPorts_bportsWes[2]Fluid inlets and outlets
VesselFluidPorts_bportsCor[2]Fluid inlets and outlets
output RealOutputTRooAir[5]Room air temperatures [K]
output RealOutputp_relRelative pressure signal of building static pressure
BusweaBusWeather bus

Modelica definition

partial model PartialFloor "Interface for a model of a floor of a building" replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium model for air"; parameter Boolean use_windPressure=true "Set to true to enable wind pressure"; parameter Real kIntNor(min=0, max=1) = 1 "Gain factor to scale internal heat gain in north zone"; parameter Modelica.SIunits.Volume VRooCor "Room volume corridor"; parameter Modelica.SIunits.Volume VRooSou "Room volume south"; parameter Modelica.SIunits.Volume VRooNor "Room volume north"; parameter Modelica.SIunits.Volume VRooEas "Room volume east"; parameter Modelica.SIunits.Volume VRooWes "Room volume west"; parameter Modelica.SIunits.Area AFloCor "Floor area corridor"; parameter Modelica.SIunits.Area AFloSou "Floor area south"; parameter Modelica.SIunits.Area AFloNor "Floor area north"; parameter Modelica.SIunits.Area AFloEas "Floor area east"; parameter Modelica.SIunits.Area AFloWes "Floor area west"; Modelica.Fluid.Vessels.BaseClasses.VesselFluidPorts_b portsSou[2]( redeclare package Medium = Medium) "Fluid inlets and outlets"; Modelica.Fluid.Vessels.BaseClasses.VesselFluidPorts_b portsEas[2]( redeclare package Medium = Medium) "Fluid inlets and outlets"; Modelica.Fluid.Vessels.BaseClasses.VesselFluidPorts_b portsNor[2]( redeclare package Medium = Medium) "Fluid inlets and outlets"; Modelica.Fluid.Vessels.BaseClasses.VesselFluidPorts_b portsWes[2]( redeclare package Medium = Medium) "Fluid inlets and outlets"; Modelica.Fluid.Vessels.BaseClasses.VesselFluidPorts_b portsCor[2]( redeclare package Medium = Medium) "Fluid inlets and outlets"; Modelica.Blocks.Interfaces.RealOutput TRooAir[5]( each unit="K", each displayUnit="degC") "Room air temperatures"; Modelica.Blocks.Interfaces.RealOutput p_rel "Relative pressure signal of building static pressure"; BoundaryConditions.WeatherData.Bus weaBus "Weather bus"; Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage leaSou( redeclare package Medium = Medium, VRoo=VRooSou, s=49.91/33.27, azi=Buildings.Types.Azimuth.S, final use_windPressure=use_windPressure) "Model for air infiltration through the envelope"; Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage leaEas( redeclare package Medium = Medium, VRoo=VRooEas, s=33.27/49.91, azi=Buildings.Types.Azimuth.E, final use_windPressure=use_windPressure) "Model for air infiltration through the envelope"; Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage leaNor( redeclare package Medium = Medium, VRoo=VRooNor, s=49.91/33.27, azi=Buildings.Types.Azimuth.N, final use_windPressure=use_windPressure) "Model for air infiltration through the envelope"; Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage leaWes( redeclare package Medium = Medium, VRoo=VRooWes, s=33.27/49.91, azi=Buildings.Types.Azimuth.W, final use_windPressure=use_windPressure) "Model for air infiltration through the envelope"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temAirSou "Air temperature sensor"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temAirEas "Air temperature sensor"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temAirNor "Air temperature sensor"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temAirWes "Air temperature sensor"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temAirCor "Air temperature sensor"; Modelica.Blocks.Routing.Multiplex5 multiplex5_1; Airflow.Multizone.DoorOpen opeSouCor( redeclare package Medium = Medium, wOpe=10) "Opening between perimeter1 and core"; Airflow.Multizone.DoorOpen opeEasCor( redeclare package Medium = Medium, wOpe=10) "Opening between perimeter2 and core"; Airflow.Multizone.DoorOpen opeNorCor( redeclare package Medium = Medium, wOpe=10) "Opening between perimeter3 and core"; Airflow.Multizone.DoorOpen opeWesCor(redeclare package Medium = Medium, wOpe=10) "Opening between perimeter3 and core"; Buildings.Fluid.Sensors.RelativePressure senRelPre(redeclare package Medium = Medium) "Building pressure measurement"; Buildings.Fluid.Sources.Outside out(nPorts=1, redeclare package Medium = Medium); equation connect(weaBus, leaSou.weaBus); connect(weaBus, leaEas.weaBus); connect(weaBus, leaNor.weaBus); connect(weaBus, leaWes.weaBus); connect(out.weaBus, weaBus); connect(multiplex5_1.y, TRooAir); connect(temAirSou.T, multiplex5_1.u1[1]); connect(temAirEas.T, multiplex5_1.u2[1]); connect(temAirNor.T, multiplex5_1.u3[1]); connect(temAirWes.T, multiplex5_1.u4[1]); connect(temAirCor.T, multiplex5_1.u5[1]); connect(senRelPre.p_rel, p_rel); connect(out.ports[1], senRelPre.port_b); end PartialFloor;

Buildings.Examples.VAVReheat.BaseClasses.PartialOpenLoop Buildings.Examples.VAVReheat.BaseClasses.PartialOpenLoop

Partial model of variable air volume flow system with terminal reheat and five thermal zones

Buildings.Examples.VAVReheat.BaseClasses.PartialOpenLoop

Information

This model consist of an HVAC system, a building envelope model and a model for air flow through building leakage and through open doors.

The HVAC system is a variable air volume (VAV) flow system with economizer and a heating and cooling coil in the air handler unit. There is also a reheat coil and an air damper in each of the five zone inlet branches. The figure below shows the schematic diagram of the HVAC system

image

Most of the HVAC control in this model is open loop. Two models that extend this model, namely Buildings.Examples.VAVReheat.ASHRAE2006 and Buildings.Examples.VAVReheat.Guideline36 add closed loop control. See these models for a description of the control sequence.

To model the heat transfer through the building envelope, a model of five interconnected rooms is used. The five room model is representative of one floor of the new construction medium office building for Chicago, IL, as described in the set of DOE Commercial Building Benchmarks (Deru et al, 2009). There are four perimeter zones and one core zone. The envelope thermal properties meet ASHRAE Standard 90.1-2004. The thermal room model computes transient heat conduction through walls, floors and ceilings and long-wave radiative heat exchange between surfaces. The convective heat transfer coefficient is computed based on the temperature difference between the surface and the room air. There is also a layer-by-layer short-wave radiation, long-wave radiation, convection and conduction heat transfer model for the windows. The model is similar to the Window 5 model and described in TARCOG 2006.

Each thermal zone can have air flow from the HVAC system, through leakages of the building envelope (except for the core zone) and through bi-directional air exchange through open doors that connect adjacent zones. The bi-directional air exchange is modeled based on the differences in static pressure between adjacent rooms at a reference height plus the difference in static pressure across the door height as a function of the difference in air density. Infiltration is a function of the flow imbalance of the HVAC system.

References

Deru M., K. Field, D. Studer, K. Benne, B. Griffith, P. Torcellini, M. Halverson, D. Winiarski, B. Liu, M. Rosenberg, J. Huang, M. Yazdanian, and D. Crawley. DOE commercial building research benchmarks for commercial buildings. Technical report, U.S. Department of Energy, Energy Efficiency and Renewable Energy, Office of Building Technologies, Washington, DC, 2009.

TARCOG 2006: Carli, Inc., TARCOG: Mathematical models for calculation of thermal performance of glazing systems with our without shading devices, Technical Report, Oct. 17, 2006.

Parameters

TypeNameDefaultDescription
VolumeVRooCorflo.VRooCorRoom volume corridor [m3]
VolumeVRooSouflo.VRooSouRoom volume south [m3]
VolumeVRooNorflo.VRooNorRoom volume north [m3]
VolumeVRooEasflo.VRooEasRoom volume east [m3]
VolumeVRooWesflo.VRooWesRoom volume west [m3]
AreaAFloCorflo.AFloCorFloor area corridor [m2]
AreaAFloSouflo.AFloSouFloor area south [m2]
AreaAFloNorflo.AFloNorFloor area north [m2]
AreaAFloEasflo.AFloEasFloor area east [m2]
AreaAFloWesflo.AFloWesFloor area west [m2]
AreaAFlo[numZon]{flo.AFloCor,flo.AFloSou,flo...Floor area of each zone [m2]
RealACHCor6Design air change per hour core [1/h]
RealACHSou6Design air change per hour south [1/h]
RealACHEas9Design air change per hour east [1/h]
RealACHNor6Design air change per hour north [1/h]
RealACHWes7Design air change per hour west [1/h]
MassFlowRatemCor_flow_nominalACHCor*VRooCor*convDesign mass flow rate core [kg/s]
MassFlowRatemSou_flow_nominalACHSou*VRooSou*convDesign mass flow rate south [kg/s]
MassFlowRatemEas_flow_nominalACHEas*VRooEas*convDesign mass flow rate east [kg/s]
MassFlowRatemNor_flow_nominalACHNor*VRooNor*convDesign mass flow rate north [kg/s]
MassFlowRatemWes_flow_nominalACHWes*VRooWes*convDesign mass flow rate west [kg/s]
MassFlowRatem_flow_nominal0.7*(mCor_flow_nominal + mSo...Nominal mass flow rate [kg/s]
RealratVFloHea0.3VAV box maximum air flow rate ratio in heating mode [1]
Anglelat41.98*3.14159/180Latitude [rad]
RealratOAFlo_A0.3e-3Outdoor airflow rate required per unit area [m3/(s.m2)]
RealratOAFlo_P2.5e-3Outdoor airflow rate required per person
RealratP_A5e-2Occupant density
RealeffZ0.8Zone air distribution effectiveness (limiting value) [1]
RealdivP0.7Occupant diversity ratio [1]
VolumeFlowRateVCorOA_flow_nominal(ratOAFlo_P*ratP_A + ratOAFl...Zone outdoor air flow rate [m3/s]
VolumeFlowRateVSouOA_flow_nominal(ratOAFlo_P*ratP_A + ratOAFl...Zone outdoor air flow rate [m3/s]
VolumeFlowRateVEasOA_flow_nominal(ratOAFlo_P*ratP_A + ratOAFl...Zone outdoor air flow rate [m3/s]
VolumeFlowRateVNorOA_flow_nominal(ratOAFlo_P*ratP_A + ratOAFl...Zone outdoor air flow rate [m3/s]
VolumeFlowRateVWesOA_flow_nominal(ratOAFlo_P*ratP_A + ratOAFl...Zone outdoor air flow rate [m3/s]
VolumeFlowRateVou_flow_nominal(divP*ratOAFlo_P*ratP_A + ra...System uncorrected outdoor air flow rate [m3/s]
RealeffVenif divP < 0.6 then 0.88*divP...System ventilation efficiency [1]
VolumeFlowRateVot_flow_nominalVou_flow_nominal/effVenSystem design outdoor air flow rate [m3/s]
TemperatureTHeaOn293.15Heating setpoint during on [K]
TemperatureTHeaOff285.15Heating setpoint during off [K]
TemperatureTCooOn297.15Cooling setpoint during on [K]
TemperatureTCooOff303.15Cooling setpoint during off [K]
PressureDifferencedpBuiStaSet12Building static pressure [Pa]
RealyFanMin0.1Minimum fan speed
TemperatureTHotWatInl_nominal55 + 273.15Reheat coil nominal inlet water temperature [K]
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Booleanuse_windPressuretrueSet to true to enable wind pressure
PartialFloorfloredeclare Buildings.Examples...Model of a floor of the building that is served by this VAV system
Experimental (may be changed in future releases)
BooleansampleModeltrueSet to true to time-sample the model, which can give shorter simulation time if there is already time sampling in the system model

Connectors

TypeNameDescription
BusweaBusWeather Data Bus

Modelica definition

partial model PartialOpenLoop "Partial model of variable air volume flow system with terminal reheat and five thermal zones" package MediumA = Buildings.Media.Air "Medium model for air"; package MediumW = Buildings.Media.Water "Medium model for water"; constant Integer numZon=5 "Total number of served VAV boxes"; parameter Modelica.SIunits.Volume VRooCor=flo.VRooCor "Room volume corridor"; parameter Modelica.SIunits.Volume VRooSou=flo.VRooSou "Room volume south"; parameter Modelica.SIunits.Volume VRooNor=flo.VRooNor "Room volume north"; parameter Modelica.SIunits.Volume VRooEas=flo.VRooEas "Room volume east"; parameter Modelica.SIunits.Volume VRooWes=flo.VRooWes "Room volume west"; parameter Modelica.SIunits.Area AFloCor=flo.AFloCor "Floor area corridor"; parameter Modelica.SIunits.Area AFloSou=flo.AFloSou "Floor area south"; parameter Modelica.SIunits.Area AFloNor=flo.AFloNor "Floor area north"; parameter Modelica.SIunits.Area AFloEas=flo.AFloEas "Floor area east"; parameter Modelica.SIunits.Area AFloWes=flo.AFloWes "Floor area west"; parameter Modelica.SIunits.Area AFlo[numZon]={flo.AFloCor,flo.AFloSou,flo.AFloEas, flo.AFloNor,flo.AFloWes} "Floor area of each zone"; final parameter Modelica.SIunits.Area ATot=sum(AFlo) "Total floor area"; constant Real conv=1.2/3600 "Conversion factor for nominal mass flow rate"; parameter Real ACHCor(final unit="1/h")=6 "Design air change per hour core"; parameter Real ACHSou(final unit="1/h")=6 "Design air change per hour south"; parameter Real ACHEas(final unit="1/h")=9 "Design air change per hour east"; parameter Real ACHNor(final unit="1/h")=6 "Design air change per hour north"; parameter Real ACHWes(final unit="1/h")=7 "Design air change per hour west"; parameter Modelica.SIunits.MassFlowRate mCor_flow_nominal=ACHCor*VRooCor*conv "Design mass flow rate core"; parameter Modelica.SIunits.MassFlowRate mSou_flow_nominal=ACHSou*VRooSou*conv "Design mass flow rate south"; parameter Modelica.SIunits.MassFlowRate mEas_flow_nominal=ACHEas*VRooEas*conv "Design mass flow rate east"; parameter Modelica.SIunits.MassFlowRate mNor_flow_nominal=ACHNor*VRooNor*conv "Design mass flow rate north"; parameter Modelica.SIunits.MassFlowRate mWes_flow_nominal=ACHWes*VRooWes*conv "Design mass flow rate west"; parameter Modelica.SIunits.MassFlowRate m_flow_nominal=0.7*(mCor_flow_nominal + mSou_flow_nominal + mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal) "Nominal mass flow rate"; parameter Real ratVFloHea(final unit="1") = 0.3 "VAV box maximum air flow rate ratio in heating mode"; parameter Modelica.SIunits.Angle lat=41.98*3.14159/180 "Latitude"; parameter Real ratOAFlo_A(final unit="m3/(s.m2)") = 0.3e-3 "Outdoor airflow rate required per unit area"; parameter Real ratOAFlo_P = 2.5e-3 "Outdoor airflow rate required per person"; parameter Real ratP_A = 5e-2 "Occupant density"; parameter Real effZ(final unit="1") = 0.8 "Zone air distribution effectiveness (limiting value)"; parameter Real divP(final unit="1") = 0.7 "Occupant diversity ratio"; parameter Modelica.SIunits.VolumeFlowRate VCorOA_flow_nominal= (ratOAFlo_P * ratP_A + ratOAFlo_A) * AFloCor / effZ "Zone outdoor air flow rate"; parameter Modelica.SIunits.VolumeFlowRate VSouOA_flow_nominal= (ratOAFlo_P * ratP_A + ratOAFlo_A) * AFloSou / effZ "Zone outdoor air flow rate"; parameter Modelica.SIunits.VolumeFlowRate VEasOA_flow_nominal= (ratOAFlo_P * ratP_A + ratOAFlo_A) * AFloEas / effZ "Zone outdoor air flow rate"; parameter Modelica.SIunits.VolumeFlowRate VNorOA_flow_nominal= (ratOAFlo_P * ratP_A + ratOAFlo_A) * AFloNor / effZ "Zone outdoor air flow rate"; parameter Modelica.SIunits.VolumeFlowRate VWesOA_flow_nominal= (ratOAFlo_P * ratP_A + ratOAFlo_A) * AFloWes / effZ "Zone outdoor air flow rate"; parameter Modelica.SIunits.VolumeFlowRate Vou_flow_nominal= (divP * ratOAFlo_P * ratP_A + ratOAFlo_A) * sum( {AFloCor, AFloSou, AFloNor, AFloEas, AFloWes}) "System uncorrected outdoor air flow rate"; parameter Real effVen(final unit="1") = if divP < 0.6 then 0.88 * divP + 0.22 else 0.75 "System ventilation efficiency"; parameter Modelica.SIunits.VolumeFlowRate Vot_flow_nominal= Vou_flow_nominal / effVen "System design outdoor air flow rate"; parameter Modelica.SIunits.Temperature THeaOn=293.15 "Heating setpoint during on"; parameter Modelica.SIunits.Temperature THeaOff=285.15 "Heating setpoint during off"; parameter Modelica.SIunits.Temperature TCooOn=297.15 "Cooling setpoint during on"; parameter Modelica.SIunits.Temperature TCooOff=303.15 "Cooling setpoint during off"; parameter Modelica.SIunits.PressureDifference dpBuiStaSet(min=0) = 12 "Building static pressure"; parameter Real yFanMin = 0.1 "Minimum fan speed"; parameter Modelica.SIunits.Temperature THotWatInl_nominal( displayUnit="degC")=55 + 273.15 "Reheat coil nominal inlet water temperature"; parameter Boolean allowFlowReversal=true "= false to simplify equations, assuming, but not enforcing, no flow reversal"; parameter Boolean use_windPressure=true "Set to true to enable wind pressure"; parameter Boolean sampleModel=true "Set to true to time-sample the model, which can give shorter simulation time if there is already time sampling in the system model"; Buildings.Fluid.Sources.Outside amb(redeclare package Medium = MediumA, nPorts=2) "Ambient conditions"; replaceable Buildings.Examples.VAVReheat.BaseClasses.PartialFloor flo constrainedby Buildings.Examples.VAVReheat.BaseClasses.PartialFloor( redeclare final package Medium = MediumA, final use_windPressure=use_windPressure) "Model of a floor of the building that is served by this VAV system"; Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU heaCoi( redeclare package Medium1 = MediumW, redeclare package Medium2 = MediumA, m1_flow_nominal=m_flow_nominal*1000*(10 - (-20))/4200/10, m2_flow_nominal=m_flow_nominal, show_T=true, configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow, Q_flow_nominal=m_flow_nominal*1006*(16.7 - 4), dp1_nominal=0, dp2_nominal=200 + 200 + 100 + 40, allowFlowReversal1=false, allowFlowReversal2=allowFlowReversal, T_a1_nominal=THotWatInl_nominal, T_a2_nominal=4 + 273.15) "Heating coil"; Buildings.Fluid.HeatExchangers.WetCoilCounterFlow cooCoi( show_T=true, UA_nominal=3*m_flow_nominal*1000*15/ Buildings.Fluid.HeatExchangers.BaseClasses.lmtd( T_a1=26.2, T_b1=12.8, T_a2=6, T_b2=16), redeclare package Medium1 = MediumW, redeclare package Medium2 = MediumA, m1_flow_nominal=m_flow_nominal*1000*15/4200/10, m2_flow_nominal=m_flow_nominal, dp2_nominal=0, dp1_nominal=0, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, allowFlowReversal1=false, allowFlowReversal2=allowFlowReversal) "Cooling coil"; Buildings.Fluid.FixedResistances.PressureDrop dpRetDuc( m_flow_nominal=m_flow_nominal, redeclare package Medium = MediumA, allowFlowReversal=allowFlowReversal, dp_nominal=40) "Pressure drop for return duct"; Buildings.Fluid.Movers.SpeedControlled_y fanSup( redeclare package Medium = MediumA, per(pressure(V_flow={0,m_flow_nominal/1.2*2}, dp=2*{780 + 10 + dpBuiStaSet, 0})), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Supply air fan"; Buildings.Fluid.Sensors.VolumeFlowRate senSupFlo(redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal) "Sensor for supply fan flow rate"; Buildings.Fluid.Sensors.VolumeFlowRate senRetFlo(redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal) "Sensor for return fan flow rate"; Buildings.Fluid.Sources.Boundary_pT sinHea( redeclare package Medium = MediumW, p=300000, T=318.15, nPorts=6) "Sink for heating coil"; Buildings.Fluid.Sources.Boundary_pT sinCoo( redeclare package Medium = MediumW, p=300000, T=285.15, nPorts=1) "Sink for cooling coil"; Modelica.Blocks.Routing.RealPassThrough TOut(y( final quantity="ThermodynamicTemperature", final unit="K", displayUnit="degC", min=0)); Buildings.Fluid.Sensors.TemperatureTwoPort TSup( redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal, allowFlowReversal=allowFlowReversal); Buildings.Fluid.Sensors.RelativePressure dpDisSupFan(redeclare package Medium = MediumA) "Supply fan static discharge pressure"; Buildings.Controls.SetPoints.OccupancySchedule occSch(occupancy=3600*{6,19}) "Occupancy schedule"; Buildings.Utilities.Math.Min min(nin=5) "Computes lowest room temperature"; Buildings.Utilities.Math.Average ave(nin=5) "Compute average of room temperatures"; Buildings.Fluid.Sources.MassFlowSource_T souCoo( redeclare package Medium = MediumW, T=279.15, nPorts=1, use_m_flow_in=true) "Source for cooling coil"; Buildings.Fluid.Sensors.TemperatureTwoPort TRet( redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal, allowFlowReversal=allowFlowReversal) "Return air temperature sensor"; Buildings.Fluid.Sensors.TemperatureTwoPort TMix( redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal, allowFlowReversal=allowFlowReversal) "Mixed air temperature sensor"; Buildings.Fluid.Sources.MassFlowSource_T souHea( redeclare package Medium = MediumW, T=THotWatInl_nominal, use_m_flow_in=true, nPorts=1) "Source for heating coil"; Buildings.Fluid.Sensors.VolumeFlowRate VOut1(redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal) "Outside air volume flow rate"; Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox cor( redeclare package MediumA = MediumA, redeclare package MediumW = MediumW, m_flow_nominal=mCor_flow_nominal, VRoo=VRooCor, allowFlowReversal=allowFlowReversal, ratVFloHea=ratVFloHea, THotWatInl_nominal=THotWatInl_nominal, THotWatOut_nominal=THotWatInl_nominal-10, TAirInl_nominal=12+273.15, QHea_flow_nominal=mCor_flow_nominal*ratVFloHea*cpAir*(32-12)) "Zone for core of buildings (azimuth will be neglected)"; Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox sou( redeclare package MediumA = MediumA, redeclare package MediumW = MediumW, m_flow_nominal=mSou_flow_nominal, VRoo=VRooSou, allowFlowReversal=allowFlowReversal, ratVFloHea=ratVFloHea, THotWatInl_nominal=THotWatInl_nominal, THotWatOut_nominal=THotWatInl_nominal-10, TAirInl_nominal=12+273.15, QHea_flow_nominal=mSou_flow_nominal*ratVFloHea*cpAir*(32-12)) "South-facing thermal zone"; Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox eas( redeclare package MediumA = MediumA, redeclare package MediumW = MediumW, m_flow_nominal=mEas_flow_nominal, VRoo=VRooEas, allowFlowReversal=allowFlowReversal, ratVFloHea=ratVFloHea, THotWatInl_nominal=THotWatInl_nominal, THotWatOut_nominal=THotWatInl_nominal-10, TAirInl_nominal=12+273.15, QHea_flow_nominal=mEas_flow_nominal*ratVFloHea*cpAir*(32-12)) "East-facing thermal zone"; Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox nor( redeclare package MediumA = MediumA, redeclare package MediumW = MediumW, m_flow_nominal=mNor_flow_nominal, VRoo=VRooNor, allowFlowReversal=allowFlowReversal, ratVFloHea=ratVFloHea, THotWatInl_nominal=THotWatInl_nominal, THotWatOut_nominal=THotWatInl_nominal-10, TAirInl_nominal=12+273.15, QHea_flow_nominal=mNor_flow_nominal*ratVFloHea*cpAir*(32-12)) "North-facing thermal zone"; Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox wes( redeclare package MediumA = MediumA, redeclare package MediumW = MediumW, m_flow_nominal=mWes_flow_nominal, VRoo=VRooWes, allowFlowReversal=allowFlowReversal, ratVFloHea=ratVFloHea, THotWatInl_nominal=THotWatInl_nominal, THotWatOut_nominal=THotWatInl_nominal-10, TAirInl_nominal=12+273.15, QHea_flow_nominal=mWes_flow_nominal*ratVFloHea*cpAir*(32-12)) "West-facing thermal zone"; Buildings.Fluid.FixedResistances.Junction splRetRoo1( redeclare package Medium = MediumA, m_flow_nominal={m_flow_nominal,m_flow_nominal - mCor_flow_nominal, mCor_flow_nominal}, from_dp=false, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering) "Splitter for room return"; Buildings.Fluid.FixedResistances.Junction splRetSou( redeclare package Medium = MediumA, m_flow_nominal={mSou_flow_nominal + mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal,mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal,mSou_flow_nominal}, from_dp=false, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering) "Splitter for room return"; Buildings.Fluid.FixedResistances.Junction splRetEas( redeclare package Medium = MediumA, m_flow_nominal={mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal, mNor_flow_nominal + mWes_flow_nominal,mEas_flow_nominal}, from_dp=false, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering) "Splitter for room return"; Buildings.Fluid.FixedResistances.Junction splRetNor( redeclare package Medium = MediumA, m_flow_nominal={mNor_flow_nominal + mWes_flow_nominal,mWes_flow_nominal, mNor_flow_nominal}, from_dp=false, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering) "Splitter for room return"; Buildings.Fluid.FixedResistances.Junction splSupRoo1( redeclare package Medium = MediumA, m_flow_nominal={m_flow_nominal,m_flow_nominal - mCor_flow_nominal, mCor_flow_nominal}, from_dp=true, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving) "Splitter for room supply"; Buildings.Fluid.FixedResistances.Junction splSupSou( redeclare package Medium = MediumA, m_flow_nominal={mSou_flow_nominal + mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal,mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal,mSou_flow_nominal}, from_dp=true, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving) "Splitter for room supply"; Buildings.Fluid.FixedResistances.Junction splSupEas( redeclare package Medium = MediumA, m_flow_nominal={mEas_flow_nominal + mNor_flow_nominal + mWes_flow_nominal, mNor_flow_nominal + mWes_flow_nominal,mEas_flow_nominal}, from_dp=true, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving) "Splitter for room supply"; Buildings.Fluid.FixedResistances.Junction splSupNor( redeclare package Medium = MediumA, m_flow_nominal={mNor_flow_nominal + mWes_flow_nominal,mWes_flow_nominal, mNor_flow_nominal}, from_dp=true, linearized=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, dp_nominal(each displayUnit="Pa") = {0,0,0}, portFlowDirection_1=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3=if allowFlowReversal then Modelica.Fluid.Types.PortFlowDirection.Bidirectional else Modelica.Fluid.Types.PortFlowDirection.Leaving) "Splitter for room supply"; BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam= Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"), computeWetBulbTemperature=false); BoundaryConditions.WeatherData.Bus weaBus "Weather Data Bus"; Modelica.Blocks.Routing.DeMultiplex5 TRooAir(u(each unit="K", each displayUnit="degC")) "Demultiplex for room air temperature"; Results res( final A=ATot, PFan=fanSup.P + 0, PHea=heaCoi.Q2_flow + cor.terHea.Q2_flow + nor.terHea.Q2_flow + wes.terHea.Q2_flow + eas.terHea.Q2_flow + sou.terHea.Q2_flow, PCooSen=cooCoi.QSen2_flow, PCooLat=cooCoi.QLat2_flow) "Results of the simulation"; /*fanRet*/ public Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoi(k=m_flow_nominal*1000*40 /4200/10) "Gain for heating coil mass flow rate"; Buildings.Controls.OBC.CDL.Continuous.Gain gaiCooCoi(k=m_flow_nominal*1000*15 /4200/10) "Gain for cooling coil mass flow rate"; FreezeStat freSta "Freeze stat for heating coil"; Fluid.Sources.MassFlowSource_T souHeaCor( redeclare package Medium = MediumW, T=THotWatInl_nominal, use_m_flow_in=true, nPorts=1) "Source for core zone reheat coil"; Fluid.Sources.MassFlowSource_T souHeaSou( redeclare package Medium = MediumW, T=THotWatInl_nominal, use_m_flow_in=true, nPorts=1) "Source for south zone reheat coil"; Fluid.Sources.MassFlowSource_T souHeaEas( redeclare package Medium = MediumW, T=THotWatInl_nominal, use_m_flow_in=true, nPorts=1) "Source for east zone reheat coil"; Fluid.Sources.MassFlowSource_T souHeaNor( redeclare package Medium = MediumW, T=THotWatInl_nominal, use_m_flow_in=true, nPorts=1) "Source for north zone reheat coil"; Fluid.Sources.MassFlowSource_T souHeaWes( redeclare package Medium = MediumW, T=THotWatInl_nominal, use_m_flow_in=true, nPorts=1) "Source for west zone reheat coil"; Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoiCor( k=cor.mHotWat_flow_nominal) "Gain for core zone reheat coil mass flow rate"; Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoiSou( k=sou.mHotWat_flow_nominal) "Gain for south zone reheat coil mass flow rate"; Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoiEas( k=eas.mHotWat_flow_nominal) "Gain for east zone reheat coil mass flow rate"; Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoiNor( k=nor.mHotWat_flow_nominal) "Gain for north zone reheat coil mass flow rate"; Buildings.Controls.OBC.CDL.Continuous.Gain gaiHeaCoiWes( k=wes.mHotWat_flow_nominal) "Gain for west zone reheat coil mass flow rate"; Fluid.Actuators.Dampers.Exponential damRet( redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal, from_dp=false, riseTime=15, dpDamper_nominal=5, dpFixed_nominal=5) "Return air damper"; Fluid.Actuators.Dampers.Exponential damOut( redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal, from_dp=false, riseTime=15, dpDamper_nominal=5, dpFixed_nominal=5) "Outdoor air damper"; protected constant Modelica.SIunits.SpecificHeatCapacity cpAir= Buildings.Utilities.Psychrometrics.Constants.cpAir "Air specific heat capacity"; constant Modelica.SIunits.SpecificHeatCapacity cpWatLiq= Buildings.Utilities.Psychrometrics.Constants.cpWatLiq "Water specific heat capacity"; model Results "Model to store the results of the simulation" parameter Modelica.SIunits.Area A "Floor area"; input Modelica.SIunits.Power PFan "Fan energy"; input Modelica.SIunits.Power PHea "Heating energy"; input Modelica.SIunits.Power PCooSen "Sensible cooling energy"; input Modelica.SIunits.Power PCooLat "Latent cooling energy"; Real EFan( unit="J/m2", start=0, nominal=1E5, fixed=true) "Fan energy"; Real EHea( unit="J/m2", start=0, nominal=1E5, fixed=true) "Heating energy"; Real ECooSen( unit="J/m2", start=0, nominal=1E5, fixed=true) "Sensible cooling energy"; Real ECooLat( unit="J/m2", start=0, nominal=1E5, fixed=true) "Latent cooling energy"; Real ECoo(unit="J/m2") "Total cooling energy"; equation A*der(EFan) = PFan; A*der(EHea) = PHea; A*der(ECooSen) = PCooSen; A*der(ECooLat) = PCooLat; ECoo = ECooSen + ECooLat; end Results; equation connect(fanSup.port_b, dpDisSupFan.port_a); connect(TSup.port_a, fanSup.port_b); connect(amb.ports[1], VOut1.port_a); connect(splRetRoo1.port_1, dpRetDuc.port_a); connect(splRetNor.port_1, splRetEas.port_2); connect(splRetEas.port_1, splRetSou.port_2); connect(splRetSou.port_1, splRetRoo1.port_2); connect(splSupRoo1.port_3, cor.port_aAir); connect(splSupRoo1.port_2, splSupSou.port_1); connect(splSupSou.port_3, sou.port_aAir); connect(splSupSou.port_2, splSupEas.port_1); connect(splSupEas.port_3, eas.port_aAir); connect(splSupEas.port_2, splSupNor.port_1); connect(splSupNor.port_3, nor.port_aAir); connect(splSupNor.port_2, wes.port_aAir); connect(cooCoi.port_b1, sinCoo.ports[1]); connect(weaDat.weaBus, weaBus); connect(weaBus.TDryBul, TOut.u); connect(amb.weaBus, weaBus); connect(splRetRoo1.port_3, flo.portsCor[2]); connect(splRetSou.port_3, flo.portsSou[2]); connect(splRetEas.port_3, flo.portsEas[2]); connect(splRetNor.port_3, flo.portsNor[2]); connect(splRetNor.port_2, flo.portsWes[2]); connect(weaBus, flo.weaBus); connect(flo.TRooAir, min.u); connect(flo.TRooAir, ave.u); connect(TRooAir.u, flo.TRooAir); connect(cooCoi.port_b2, fanSup.port_a); connect(cor.port_bAir, flo.portsCor[1]); connect(sou.port_bAir, flo.portsSou[1]); connect(eas.port_bAir, flo.portsEas[1]); connect(nor.port_bAir, flo.portsNor[1]); connect(wes.port_bAir, flo.portsWes[1]); connect(senRetFlo.port_a, dpRetDuc.port_b); connect(TSup.port_b, senSupFlo.port_a); connect(senSupFlo.port_b, splSupRoo1.port_1); connect(cooCoi.port_a1, souCoo.ports[1]); connect(gaiHeaCoi.y, souHea.m_flow_in); connect(gaiCooCoi.y, souCoo.m_flow_in); connect(dpDisSupFan.port_b, amb.ports[2]); connect(senRetFlo.port_b, TRet.port_a); connect(freSta.u, TMix.T); connect(TMix.port_b, heaCoi.port_a2); connect(heaCoi.port_b2, cooCoi.port_a2); connect(souHea.ports[1], heaCoi.port_a1); connect(heaCoi.port_b1, sinHea.ports[1]); connect(cor.port_bHotWat, sinHea.ports[2]); connect(sou.port_bHotWat, sinHea.ports[3]); connect(eas.port_bHotWat, sinHea.ports[4]); connect(nor.port_bHotWat, sinHea.ports[5]); connect(wes.port_bHotWat, sinHea.ports[6]); connect(souHeaCor.m_flow_in, gaiHeaCoiCor.y); connect(souHeaSou.m_flow_in, gaiHeaCoiSou.y); connect(souHeaEas.m_flow_in, gaiHeaCoiEas.y); connect(souHeaNor.m_flow_in, gaiHeaCoiNor.y); connect(souHeaWes.m_flow_in, gaiHeaCoiWes.y); connect(souHeaCor.ports[1], cor.port_aHotWat); connect(souHeaSou.ports[1], sou.port_aHotWat); connect(souHeaEas.ports[1], eas.port_aHotWat); connect(souHeaNor.ports[1], nor.port_aHotWat); connect(souHeaWes.ports[1], wes.port_aHotWat); connect(VOut1.port_b, damOut.port_a); connect(damOut.port_b, TMix.port_a); connect(damRet.port_a, TRet.port_b); connect(damRet.port_b, TMix.port_a); end PartialOpenLoop;

Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage

Room leakage model

Buildings.Examples.VAVReheat.BaseClasses.RoomLeakage

Information

Room leakage.

Extends from Buildings.BaseClasses.BaseIcon (Base icon).

Parameters

TypeNameDefaultDescription
replaceable package MediumModelica.Media.Interfaces.Pa...Medium in the component
VolumeVRoo Room volume [m3]
Booleanuse_windPressurefalseSet to true to enable wind pressure
Reals Side ratio, s=length of this wall/length of adjacent wall
Angleazi Surface azimuth (South:0, West:pi/2) [rad]

Connectors

TypeNameDescription
replaceable package MediumMedium in the component
FluidPort_bport_b 
BusweaBusBus with weather data

Modelica definition

model RoomLeakage "Room leakage model" extends Buildings.BaseClasses.BaseIcon; replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component"; parameter Modelica.SIunits.Volume VRoo "Room volume"; parameter Boolean use_windPressure=false "Set to true to enable wind pressure"; Buildings.Fluid.FixedResistances.PressureDrop res( redeclare package Medium = Medium, dp_nominal=50, m_flow_nominal=VRoo*1.2/3600) "Resistance model"; Modelica.Fluid.Interfaces.FluidPort_b port_b(redeclare package Medium = Medium); Buildings.Fluid.Sources.Outside_CpLowRise amb(redeclare package Medium = Medium, nPorts=1, s=s, azi=azi, Cp0=if use_windPressure then 0.6 else 0); BoundaryConditions.WeatherData.Bus weaBus "Bus with weather data"; Buildings.Fluid.Sensors.MassFlowRate senMasFlo1(redeclare package Medium = Medium, allowFlowReversal=true) "Sensor for mass flow rate"; Modelica.Blocks.Math.Gain ACHInf(k=1/VRoo/1.2*3600, y(unit="1/h")) "Air change per hour due to infiltration"; parameter Real s "Side ratio, s=length of this wall/length of adjacent wall"; parameter Modelica.SIunits.Angle azi "Surface azimuth (South:0, West:pi/2)"; equation connect(res.port_b, port_b); connect(amb.weaBus, weaBus); connect(amb.ports[1], senMasFlo1.port_a); connect(senMasFlo1.port_b, res.port_a); connect(senMasFlo1.m_flow, ACHInf.u); end RoomLeakage;

Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox

Supply box of a VAV system with a hot water reheat coil

Buildings.Examples.VAVReheat.BaseClasses.VAVReheatBox

Information

Model for a VAV terminal box with a water reheat coil and pressure independent damper. The pressure independent damper model includes an idealized flow rate controller and requires a discharge air flow rate set-point (normalized to the nominal value) as a control signal.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
replaceable package MediumAModelica.Media.Interfaces.Pa...Medium model for air
replaceable package MediumWModelica.Media.Interfaces.Pa...Medium model for water
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
MassFlowRatem_flow_nominal Nominal air mass flow rate [kg/s]
RealratVFloHea Maximum air flow rate ratio in heating mode [1]
VolumeVRoo Room volume [m3]
TemperatureTHotWatInl_nominal Reheat coil nominal inlet water temperature [K]
TemperatureTHotWatOut_nominal Reheat coil nominal outlet water temperature [K]
TemperatureTAirInl_nominal Inlet air nominal temperature [K]
HeatFlowRateQHea_flow_nominal Nominal heating heat flow rate [W]

Connectors

TypeNameDescription
replaceable package MediumAMedium model for air
replaceable package MediumWMedium model for water
FluidPort_aport_aAirFluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_bAirFluid connector b (positive design flow direction is from port_a1 to port_b1)
input RealInputyVAVSignal for VAV damper
output RealOutputy_actualActual VAV damper position
FluidPort_aport_aHotWatHot water inlet port
FluidPort_bport_bHotWatHot water outlet port
output RealOutputTSupSupply Air Temperature
output RealOutputVSup_flowSupply Air Volumetric Flow Rate

Modelica definition

model VAVReheatBox "Supply box of a VAV system with a hot water reheat coil" extends Modelica.Blocks.Icons.Block; replaceable package MediumA = Modelica.Media.Interfaces.PartialMedium "Medium model for air"; replaceable package MediumW = Modelica.Media.Interfaces.PartialMedium "Medium model for water"; parameter Boolean allowFlowReversal=true "= false to simplify equations, assuming, but not enforcing, no flow reversal"; parameter Modelica.SIunits.MassFlowRate m_flow_nominal "Nominal air mass flow rate"; parameter Real ratVFloHea(start=0.3, min=0, max=1, unit="1") "Maximum air flow rate ratio in heating mode"; parameter Modelica.SIunits.Volume VRoo "Room volume"; parameter Modelica.SIunits.Temperature THotWatInl_nominal( start=55 + 273.15, displayUnit="degC") "Reheat coil nominal inlet water temperature"; parameter Modelica.SIunits.Temperature THotWatOut_nominal( start=THotWatInl_nominal-10, displayUnit="degC") "Reheat coil nominal outlet water temperature"; parameter Modelica.SIunits.Temperature TAirInl_nominal( start=12 + 273.15, displayUnit="degC") "Inlet air nominal temperature"; parameter Modelica.SIunits.HeatFlowRate QHea_flow_nominal( start=m_flow_nominal * ratVFloHea * cpAir * (32 + 273.15 - TAirInl_nominal)) "Nominal heating heat flow rate"; final parameter Modelica.SIunits.MassFlowRate mHotWat_flow_nominal= QHea_flow_nominal / (cpWatLiq * (THotWatInl_nominal - THotWatOut_nominal)) "Nominal mass flow rate of hot water to reheat coil"; Modelica.Fluid.Interfaces.FluidPort_a port_aAir( redeclare package Medium=MediumA) "Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)"; Modelica.Fluid.Interfaces.FluidPort_a port_bAir( redeclare package Medium=MediumA) "Fluid connector b (positive design flow direction is from port_a1 to port_b1)"; Modelica.Blocks.Interfaces.RealInput yVAV "Signal for VAV damper"; Modelica.Blocks.Interfaces.RealOutput y_actual "Actual VAV damper position"; Modelica.Fluid.Interfaces.FluidPort_a port_aHotWat(redeclare package Medium = MediumW) "Hot water inlet port"; Modelica.Fluid.Interfaces.FluidPort_b port_bHotWat(redeclare package Medium = MediumW) "Hot water outlet port"; Modelica.Blocks.Interfaces.RealOutput TSup "Supply Air Temperature"; Modelica.Blocks.Interfaces.RealOutput VSup_flow "Supply Air Volumetric Flow Rate"; Buildings.Fluid.Actuators.Dampers.PressureIndependent vav( redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal, dpDamper_nominal=20, allowFlowReversal=allowFlowReversal, dpFixed_nominal=130) "VAV box for room"; Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU terHea( redeclare package Medium1 = MediumW, redeclare package Medium2 = MediumA, m1_flow_nominal=mHotWat_flow_nominal, m2_flow_nominal=m_flow_nominal*ratVFloHea, Q_flow_nominal=QHea_flow_nominal, configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow, dp1_nominal=0, from_dp2=true, dp2_nominal=0, allowFlowReversal1=false, allowFlowReversal2=allowFlowReversal, T_a1_nominal=THotWatInl_nominal, T_a2_nominal=TAirInl_nominal) "Reheat coil"; Fluid.Sensors.TemperatureTwoPort senTem( redeclare package Medium = MediumA, initType=Modelica.Blocks.Types.Init.InitialState, m_flow_nominal=m_flow_nominal, allowFlowReversal=allowFlowReversal) "Supply Air Temperature Sensor"; Fluid.Sensors.VolumeFlowRate senVolFlo( redeclare package Medium = MediumA, initType=Modelica.Blocks.Types.Init.InitialState, m_flow_nominal=m_flow_nominal, allowFlowReversal=allowFlowReversal) "Supply Air Volumetric Flow Rate Sensor"; protected constant Modelica.SIunits.SpecificHeatCapacity cpAir= Buildings.Utilities.Psychrometrics.Constants.cpAir "Air specific heat capacity"; constant Modelica.SIunits.SpecificHeatCapacity cpWatLiq= Buildings.Utilities.Psychrometrics.Constants.cpWatLiq "Water specific heat capacity"; equation connect(vav.y, yVAV); connect(vav.y_actual, y_actual); connect(port_aAir, terHea.port_a2); connect(vav.port_a, terHea.port_b2); connect(port_aHotWat, terHea.port_a1); connect(port_bHotWat, terHea.port_b1); connect(vav.port_b, senTem.port_a); connect(senTem.port_b, senVolFlo.port_a); connect(senVolFlo.port_b, port_bAir); connect(senVolFlo.V_flow, VSup_flow); connect(senTem.T, TSup); end VAVReheatBox;

Buildings.Examples.VAVReheat.BaseClasses.PartialOpenLoop.Results

Model to store the results of the simulation

Parameters

TypeNameDefaultDescription
AreaA Floor area [m2]

Modelica definition

model Results "Model to store the results of the simulation" parameter Modelica.SIunits.Area A "Floor area"; input Modelica.SIunits.Power PFan "Fan energy"; input Modelica.SIunits.Power PHea "Heating energy"; input Modelica.SIunits.Power PCooSen "Sensible cooling energy"; input Modelica.SIunits.Power PCooLat "Latent cooling energy"; Real EFan( unit="J/m2", start=0, nominal=1E5, fixed=true) "Fan energy"; Real EHea( unit="J/m2", start=0, nominal=1E5, fixed=true) "Heating energy"; Real ECooSen( unit="J/m2", start=0, nominal=1E5, fixed=true) "Sensible cooling energy"; Real ECooLat( unit="J/m2", start=0, nominal=1E5, fixed=true) "Latent cooling energy"; Real ECoo(unit="J/m2") "Total cooling energy"; equation A*der(EFan) = PFan; A*der(EHea) = PHea; A*der(ECooSen) = PCooSen; A*der(ECooLat) = PCooLat; ECoo = ECooSen + ECooLat; end Results;