Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses

Package with base classes for Buildings.Air.Systems.SingleZone.VAV.Examples

Information

This package contains base classes that are used to construct the models in Buildings.Air.Systems.SingleZone.VAV.Examples.

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

Package Content

Name Description
Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.PartialOpenLoop PartialOpenLoop Partial model of a single zone variable air volume flow system and thermal zone
Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.Room Room BESTest Case 600 with fluid ports for air HVAC and internal load

Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.PartialOpenLoop Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.PartialOpenLoop

Partial model of a single zone variable air volume flow system and thermal zone

Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.PartialOpenLoop

Information

The thermal zone is based on the BESTEST Case 600 envelope, while the HVAC system is based on a conventional VAV system with air cooled chiller and economizer. See documentation for the specific models for more information.

Parameters

TypeNameDefaultDescription
TemperatureTSupChi_nominal279.15Design value for chiller leaving water temperature [K]

Connectors

TypeNameDescription
BusweaBusWeather bus

Modelica definition

partial model PartialOpenLoop "Partial model of a single zone variable air volume flow system and thermal zone" package MediumA = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Buildings library air media package with CO2"; package MediumW = Buildings.Media.Water "Buildings library air media package"; parameter Modelica.Units.SI.Temperature TSupChi_nominal=279.15 "Design value for chiller leaving water temperature"; Buildings.Air.Systems.SingleZone.VAV.ChillerDXHeatingEconomizer hvac( redeclare package MediumA = MediumA, redeclare package MediumW = MediumW, mAir_flow_nominal=0.75, etaHea_nominal=0.99, QHea_flow_nominal=7000, QCoo_flow_nominal=-7000, TSupChi_nominal=TSupChi_nominal) "Single zone VAV system"; Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.Room zon( redeclare package MediumA = MediumA, mAir_flow_nominal=0.75) "Thermal envelope of single zone"; Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat( computeWetBulbTemperature=false, filNam=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/weatherdata/DRYCOLD.mos")) "Weather data"; Modelica.Blocks.Continuous.Integrator EFan "Total fan energy"; Modelica.Blocks.Continuous.Integrator EHea "Total heating energy"; Modelica.Blocks.Continuous.Integrator ECoo "Total cooling energy"; Modelica.Blocks.Math.MultiSum EHVAC(nu=4) "Total HVAC energy"; Modelica.Blocks.Continuous.Integrator EPum "Total pump energy"; BoundaryConditions.WeatherData.Bus weaBus "Weather bus"; equation connect(weaDat.weaBus, weaBus); connect(hvac.supplyAir, zon.supplyAir); connect(hvac.returnAir, zon.returnAir); connect(hvac.weaBus, weaBus); connect(zon.weaBus, weaBus); connect(hvac.PFan, EFan.u); connect(hvac.QHea_flow, EHea.u); connect(hvac.PCoo, ECoo.u); connect(hvac.PPum, EPum.u); connect(EFan.y, EHVAC.u[1]); connect(EHea.y, EHVAC.u[2]); connect(ECoo.y, EHVAC.u[3]); connect(EPum.y, EHVAC.u[4]); end PartialOpenLoop;

Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.Room Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.Room

BESTest Case 600 with fluid ports for air HVAC and internal load

Buildings.Air.Systems.SingleZone.VAV.Examples.BaseClasses.Room

Information

This is a single zone model based on the envelope of the BESTEST Case 600 building, though it has some modifications. Supply and return air ports are included for simulation with air-based HVAC systems. Heating and cooling setpoints and internal loads are time-varying according to an assumed occupancy schedule.

This zone model utilizes schedules and constructions from the Schedules and Constructions packages.

Parameters

TypeNameDefaultDescription
replaceable package MediumABuildings.Media.AirMedium model
MassFlowRatemAir_flow_nominal Design airflow rate of system [kg/s]
AngleS_Buildings.Types.Azimuth.SAzimuth for south walls [rad]
AngleE_Buildings.Types.Azimuth.EAzimuth for east walls [rad]
AngleW_Buildings.Types.Azimuth.WAzimuth for west walls [rad]
AngleN_Buildings.Types.Azimuth.NAzimuth for north walls [rad]
AngleC_Buildings.Types.Tilt.CeilingTilt for ceiling [rad]
AngleF_Buildings.Types.Tilt.FloorTilt for floor [rad]
AngleZ_Buildings.Types.Tilt.WallTilt for wall [rad]
IntegernConExtWin1Number of constructions with a window
IntegernConBou1Number of surface that are connected to constructions that are modeled inside the room
GenericmatExtWalmatExtWal(nLay=3, absIR_a=0....Exterior wall
GenericmatFlomatFlo(final nLay=2, absIR_a...Floor
Genericsoilsoil(x=2, k=1.3, c=800, d=15...Soil properties
Genericroofroof(nLay=3, absIR_a=0.9, ab...Roof
Win600window600window600(UFra=3, haveExteri...Window

Connectors

TypeNameDescription
replaceable package MediumAMedium model
FluidPort_asupplyAirSupply air
FluidPort_breturnAirReturn air
BusweaBusWeather data bus
output RealOutputTRooAirRoom air temperature

Modelica definition

model Room "BESTest Case 600 with fluid ports for air HVAC and internal load" replaceable package MediumA = Buildings.Media.Air "Medium model"; parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal "Design airflow rate of system"; parameter Modelica.Units.SI.Angle S_=Buildings.Types.Azimuth.S "Azimuth for south walls"; parameter Modelica.Units.SI.Angle E_=Buildings.Types.Azimuth.E "Azimuth for east walls"; parameter Modelica.Units.SI.Angle W_=Buildings.Types.Azimuth.W "Azimuth for west walls"; parameter Modelica.Units.SI.Angle N_=Buildings.Types.Azimuth.N "Azimuth for north walls"; parameter Modelica.Units.SI.Angle C_=Buildings.Types.Tilt.Ceiling "Tilt for ceiling"; parameter Modelica.Units.SI.Angle F_=Buildings.Types.Tilt.Floor "Tilt for floor"; parameter Modelica.Units.SI.Angle Z_=Buildings.Types.Tilt.Wall "Tilt for wall"; parameter Integer nConExtWin = 1 "Number of constructions with a window"; parameter Integer nConBou = 1 "Number of surface that are connected to constructions that are modeled inside the room"; parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matExtWal( nLay=3, absIR_a=0.9, absIR_b=0.9, absSol_a=0.6, absSol_b=0.6, material={ Buildings.HeatTransfer.Data.Solids.Generic( x=0.009, k=0.140, c=900, d=530, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef), Buildings.HeatTransfer.Data.Solids.Generic( x=0.066, k=0.040, c=840, d=12, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef), Buildings.HeatTransfer.Data.Solids.Generic( x=0.012, k=0.160, c=840, d=950, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef)}) "Exterior wall"; parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matFlo( final nLay= 2, absIR_a=0.9, absIR_b=0.9, absSol_a=0.6, absSol_b=0.6, material={ Buildings.HeatTransfer.Data.Solids.Generic( x=1.003, k=0.040, c=0, d=0, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef), Buildings.HeatTransfer.Data.Solids.Generic( x=0.025, k=0.140, c=1200, d=650, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef)}) "Floor"; parameter Buildings.HeatTransfer.Data.Solids.Generic soil( x=2, k=1.3, c=800, d=1500) "Soil properties"; parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic roof( nLay=3, absIR_a=0.9, absIR_b=0.9, absSol_a=0.6, absSol_b=0.6, material={ Buildings.HeatTransfer.Data.Solids.Generic( x=0.019, k=0.140, c=900, d=530, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef), Buildings.HeatTransfer.Data.Solids.Generic( x=0.1118, k=0.040, c=840, d=12, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef), Buildings.HeatTransfer.Data.Solids.Generic( x=0.010, k=0.160, c=840, d=950, nStaRef=Buildings.ThermalZones.Detailed.Validation.BESTEST.nStaRef)}) "Roof"; parameter Buildings.ThermalZones.Detailed.Validation.BESTEST.Data.Win600 window600( UFra=3, haveExteriorShade=false, haveInteriorShade=false) "Window"; Buildings.HeatTransfer.Conduction.SingleLayer soi( A=48, material=soil, steadyStateInitial=true, stateAtSurface_a=false, stateAtSurface_b=true, T_a_start=283.15, T_b_start=283.75) "2 m deep soil (per definition on p.4 of ASHRAE 140-2007)"; Modelica.Fluid.Interfaces.FluidPort_a supplyAir(redeclare final package Medium = MediumA) "Supply air"; Modelica.Fluid.Interfaces.FluidPort_b returnAir(redeclare final package Medium = MediumA) "Return air"; Buildings.BoundaryConditions.WeatherData.Bus weaBus "Weather data bus"; Modelica.Blocks.Interfaces.RealOutput TRooAir "Room air temperature"; Buildings.ThermalZones.Detailed.MixedAir roo( redeclare package Medium = MediumA, use_C_flow=true, nPorts=5, hRoo=2.7, nConExtWin=nConExtWin, nConBou=1, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, AFlo=48, datConBou( layers={matFlo}, each A=48, each til=F_), datConExt( layers={roof,matExtWal,matExtWal,matExtWal}, A={48,6*2.7,6*2.7,8*2.7}, til={C_,Z_,Z_,Z_}, azi={S_,W_,E_,N_}), nConExt=4, nConPar=0, nSurBou=0, datConExtWin( layers={matExtWal}, A={8*2.7}, glaSys={window600}, wWin={2*3}, hWin={2}, fFra={0.001}, til={Z_}, azi={S_}), intConMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature, extConMod=Buildings.HeatTransfer.Types.ExteriorConvection.TemperatureWind, steadyStateWindow=false) "Room model for Case 600"; Modelica.Blocks.Sources.Constant qConGai_flow(k=192/48) "Convective heat gain"; Modelica.Blocks.Sources.Constant qRadGai_flow(k=288/48) "Radiative heat gain"; Modelica.Blocks.Routing.Multiplex3 mul "Multiplex"; Modelica.Blocks.Sources.Constant qLatGai_flow(k=96/48) "Latent heat gain"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TSoi[nConBou]( each T= 283.15) "Boundary condition for construction"; Fluid.Sources.MassFlowSource_WeatherData sinInf( redeclare package Medium = MediumA, C=fill(0.0004, 1), nPorts=1, use_m_flow_in=true) "Sink model for air infiltration"; Modelica.Blocks.Sources.Constant InfiltrationRate(k=48*2.7*0.5/3600) "0.41 ACH adjusted for the altitude (0.5 at sea level)"; Modelica.Blocks.Math.Product product; Buildings.Fluid.Sensors.Density density(redeclare package Medium = MediumA, warnAboutOnePortConnection=false) "Air density inside the building"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTZon "Zone air temperature sensor"; Fluid.Sources.MassFlowSource_WeatherData souInf( redeclare package Medium = MediumA, use_m_flow_in=true, C=fill(0.0004, 1), nPorts=1) "Source model for air infiltration"; Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable intLoad(table=[0, 0.1; 8*3600,0.1; 8*3600,1.0; 18*3600,1.0; 18*3600,0.1; 24*3600,0.1]) "Internal loads"; Modelica.Blocks.Sources.Constant CO2_flow_per(k=1.023e-5) "Latent heat gain"; Modelica.Blocks.Logical.GreaterThreshold greThr(threshold=0.1) "Greater than"; Modelica.Blocks.Sources.Constant desOcc(k=2) "Design number of occupants"; Modelica.Blocks.Math.Product numOcc "Number of occupants in the zone"; Modelica.Blocks.Math.BooleanToReal booToRea "Convert Boolean to Real signal"; protected Modelica.Blocks.Math.Product pro1 "Product for internal gain"; Modelica.Blocks.Math.Product pro2 "Product for internal gain"; Modelica.Blocks.Math.Product pro3 "Product for internal gain"; Modelica.Blocks.Math.Gain gaiInf(final k=-1) "Gain for infiltration"; Modelica.Blocks.Math.Product pro4 "Product for internal gain"; equation connect(mul.y, roo.qGai_flow); connect(density.port, roo.ports[1]); connect(density.d, product.u2); connect(TSoi[1].port, soi.port_a); connect(soi.port_b, roo.surf_conBou[1]); connect(sinInf.ports[1], roo.ports[2]); connect(weaBus,sinInf. weaBus); connect(weaBus, roo.weaBus); connect(senTZon.T, TRooAir); connect(senTZon.port, roo.heaPorAir); connect(qRadGai_flow.y, pro1.u1); connect(qLatGai_flow.y, pro2.u1); connect(qConGai_flow.y, pro3.u1); connect(intLoad.y[1], pro2.u2); connect(pro1.y, mul.u1[1]); connect(pro3.y, mul.u2[1]); connect(pro2.y, mul.u3[1]); connect(souInf.weaBus, weaBus); connect(souInf.ports[1], roo.ports[3]); connect(product.y, gaiInf.u); connect(gaiInf.y, souInf.m_flow_in); connect(product.y, sinInf.m_flow_in); connect(supplyAir, roo.ports[4]); connect(returnAir, roo.ports[5]); connect(InfiltrationRate.y, product.u1); connect(intLoad.y[1], pro1.u2); connect(pro3.u2, intLoad.y[1]); connect(CO2_flow_per.y, pro4.u2); connect(desOcc.y, numOcc.u1); connect(greThr.y, booToRea.u); connect(booToRea.y, numOcc.u2); connect(greThr.u, pro2.u2); connect(numOcc.y, pro4.u1); connect(pro4.y, roo.C_flow[1]); end Room;