This package contains the models that were used for the BESTEST validation (ASHRAE/ANSI 2007).
ASHRAE/ANSI. 2007. ANSI/ASHRAE Standard 140-2007, Standard Method of Test for the Evaluation of Building Energy Analysis Computer Programs.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Name | Description |
---|---|
Case600 | Basic test with light-weight construction and dual-setpoint for heating and cooling |
Case600FF | Case 600 with free floating temperature |
Case900 | Case 900 heavy mass test |
Case900FF | Case 900 with free floating temperature |
Glass600 | Thermal properties of window glass |
Win600 | Double pane, clear glass 3.175mm, air 13mm, clear glass 3.175mm |
This model is used for the basic test case 600 of the BESTEST validation suite. Case 600 is a leight-weight building with room temperature control set to 20°C for heating and 27°C for cooling. The room has no shade and a window that faces south.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
Integer | nStaRef | 6 | Number of states in a reference material |
Real | S_ | Buildings.HeatTransfer.Types... | |
Real | E_ | Buildings.HeatTransfer.Types... | |
Real | W_ | Buildings.HeatTransfer.Types... | |
Real | N_ | Buildings.HeatTransfer.Types... | |
Real | C_ | Buildings.HeatTransfer.Types... | |
Real | F_ | Buildings.HeatTransfer.Types... | |
Real | Z_ | Buildings.HeatTransfer.Types... | |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConBou | 1 | Number of surface that are connected to constructions that are modeled inside the room |
Generic | matExtWal | Lightweight Case: Exterior Wall | |
Generic | matFlo | Lightweight Case: Floor | |
Generic | roofCase600 | Lightweight Case: Exterior Wall |
Type | Name | Description |
---|---|---|
Bus | weaBus |
model Case600 "Basic test with light-weight construction and dual-setpoint for heating and cooling" extends Modelica.Icons.Example; package MediumA = Buildings.Media.GasesConstantDensity.SimpleAir "Medium model"; parameter Integer nStaRef = 6 "Number of states in a reference material"; parameter Real S_ = Buildings.HeatTransfer.Types.Azimuth.S; parameter Real E_ = Buildings.HeatTransfer.Types.Azimuth.E; parameter Real W_ = Buildings.HeatTransfer.Types.Azimuth.W; parameter Real N_ = Buildings.HeatTransfer.Types.Azimuth.N; parameter Real C_ = Buildings.HeatTransfer.Types.Tilt.Ceiling; parameter Real F_ = Buildings.HeatTransfer.Types.Tilt.Floor; parameter Real Z_ = Buildings.HeatTransfer.Types.Tilt.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";inner Modelica.Fluid.System system; 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=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.066, k=0.040, c=840, d=12, nStaRef=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.012, k=0.160, c=840, d=950, nStaRef=nStaRef)}) "Lightweight Case: 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=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.025, k=0.140, c=1200, d=650, nStaRef=nStaRef)}) "Lightweight Case: Floor"; Buildings.Rooms.MixedAir roo( redeclare package Medium = MediumA, hRoo=2.7, nConExtWin=nConExtWin, nConBou=1, nPorts=3, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, AFlo=48, datConBou( layers={matFlo}, each A=48, each til=F_), datConExt( layers={roofCase600,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}, AWin={2*3*2}, fFra={0.001}, til={Z_}, azi={S_}), intConMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature, extConMod=Buildings.HeatTransfer.Types.ExteriorConvection.TemperatureWind, lat=0.69464104229374, linearizeRadiation=false) "Room model for Case 600"; Modelica.Blocks.Sources.Constant qConGai_flow(k=80/48) "Convective heat gain"; Modelica.Blocks.Sources.Constant qRadGai_flow(k=120/48) "Radiative heat gain"; Modelica.Blocks.Routing.Multiplex3 multiplex3_1; Modelica.Blocks.Sources.Constant qLatGai_flow(k=0) "Latent heat gain"; Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam= "Resources/weatherdata/DRYCOLD.mos"); Modelica.Blocks.Sources.Constant uSha(k=0) "Control signal for the shading device"; Modelica.Blocks.Routing.Replicator replicator(nout=max(1,nConExtWin)); Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TSoi[nConBou](each T=283.15) "Boundary condition for construction"; parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic roofCase600(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=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.1118, k=0.040, c=840, d=12, nStaRef=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.010, k=0.160, c=840, d=950, nStaRef=nStaRef)}) "Lightweight Case: Exterior Wall"; Win600 window600( UFra=3, haveExteriorShade=false, haveInteriorShade=false) "Window for Case 600"; Buildings.HeatTransfer.Conduction.SingleLayer soil( A=48, material( x=2, k=1.3, c=800, d=1500, R=0), steadyStateInitial=true, T_a_start=283.15, T_b_start=283.75) "2m deep soil (per definition on p.4 of ASHRAE 140-2007)"; Buildings.Fluid.Sources.MassFlowSource_T Infiltration( redeclare package Medium = MediumA, m_flow=1, use_m_flow_in=true, use_T_in=false, use_X_in=false, use_C_in=false, nPorts=1); Buildings.Fluid.Sources.Outside Infiltration1( redeclare package Medium = MediumA, nPorts=1); 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) "Air density inside the building"; Buildings.BoundaryConditions.WeatherData.Bus weaBus; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TRooAir "Room air temperature"; Buildings.Controls.Continuous.LimPID conHea( Td=60, initType=Modelica.Blocks.Types.InitPID.InitialState, Ti=300, controllerType=Modelica.Blocks.Types.SimpleController.PI, k=0.1) "Controller for heating"; Modelica.Blocks.Sources.Constant TSetHea(k=273.15 + 20) "Setpoint for heating"; Modelica.Blocks.Sources.Constant TSetCoo(k=273.15 + 27) "Setpoint for cooling"; Buildings.Controls.Continuous.LimPID conCoo( Td=60, reverseAction=true, initType=Modelica.Blocks.Types.InitPID.InitialState, Ti=300, controllerType=Modelica.Blocks.Types.SimpleController.PI, k=0.1) "Controller for cooling"; Modelica.Blocks.Math.Gain gaiHea(k=1E6) "Gain for heating"; Modelica.Blocks.Math.Gain gaiCoo(k=-1E6) "Gain for cooling"; Buildings.Fluid.FixedResistances.FixedResistanceDpM heaCoo( redeclare package Medium = MediumA, allowFlowReversal=false, m_flow_nominal=48*2.7*0.41/3600*1.2, dp_nominal=1, linearized=true, from_dp=true) "Heater and cooler"; Modelica.Blocks.Math.Sum sum1(nin=2); Modelica.Blocks.Routing.Multiplex2 multiplex2; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHea "Prescribed heat flow for heating and cooling"; Modelica.Blocks.Continuous.Integrator EHea( k=1/1E6/3600, initType=Modelica.Blocks.Types.Init.InitialState, y_start=0) "Heating energy in MWh"; Modelica.Blocks.Continuous.Integrator ECoo( k=1/1E6/3600, initType=Modelica.Blocks.Types.Init.InitialState, y_start=0) "Cooling energy in MWh"; equationconnect(qRadGai_flow.y,multiplex3_1. u1[1]); connect(qLatGai_flow.y,multiplex3_1. u3[1]); connect(multiplex3_1.y, roo.qGai_flow); connect(roo.uSha, replicator.y); connect(qConGai_flow.y, multiplex3_1.u2[1]); connect(weaDat.weaBus, roo.weaBus); connect(uSha.y, replicator.u); connect(product.y, Infiltration.m_flow_in); connect(density.port, roo.ports[1]); connect(density.d, product.u2); connect(weaDat.weaBus, weaBus); connect(InfiltrationRate.y, product.u1); connect(TSoi[1].port, soil.port_a); connect(soil.port_b, roo.surf_conBou[1]); connect(TRooAir.T, conHea.u_m); connect(TSetHea.y, conHea.u_s); connect(TSetCoo.y, conCoo.u_s); connect(conCoo.u_m, TRooAir.T); connect(conHea.y, gaiHea.u); connect(conCoo.y, gaiCoo.u); connect(weaBus, Infiltration1.weaBus); connect(roo.heaPorAir, TRooAir.port); connect(Infiltration1.ports[1], heaCoo.port_a); connect(heaCoo.port_b, roo.ports[2]); connect(Infiltration.ports[1], roo.ports[3]); connect(gaiHea.y, multiplex2.u1[1]); connect(gaiCoo.y, multiplex2.u2[1]); connect(multiplex2.y, sum1.u); connect(sum1.y, preHea.Q_flow); connect(preHea.port, roo.heaPorAir); connect(EHea.u, gaiHea.y); connect(ECoo.u, gaiCoo.y); end Case600;
This model is used for the basic test case 600FF of the BESTEST validation suite.
Case 600 is a leight-weight building.
The room temperature is free floating.
This is achieved by setting gaiHea.k=0
and gaiCoo.k=0
.
Extends from Case600 (Basic test with light-weight construction and dual-setpoint for heating and cooling).
Type | Name | Default | Description |
---|---|---|---|
Integer | nStaRef | 6 | Number of states in a reference material |
Real | S_ | Buildings.HeatTransfer.Types... | |
Real | E_ | Buildings.HeatTransfer.Types... | |
Real | W_ | Buildings.HeatTransfer.Types... | |
Real | N_ | Buildings.HeatTransfer.Types... | |
Real | C_ | Buildings.HeatTransfer.Types... | |
Real | F_ | Buildings.HeatTransfer.Types... | |
Real | Z_ | Buildings.HeatTransfer.Types... | |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConBou | 1 | Number of surface that are connected to constructions that are modeled inside the room |
Generic | matExtWal | Lightweight Case: Exterior Wall | |
Generic | matFlo | Lightweight Case: Floor | |
Generic | roofCase600 | Lightweight Case: Exterior Wall |
Type | Name | Description |
---|---|---|
Bus | weaBus |
model Case600FF "Case 600 with free floating temperature" extends Case600( gaiHea(k=0), gaiCoo(k=0), conCoo(controllerType=Modelica.Blocks.Types.SimpleController.P), conHea(controllerType=Modelica.Blocks.Types.SimpleController.P));end Case600FF;
This model is used for the basic test case 900 of the BESTEST validation suite. Case 900 is a heavy-weight building with room temperature control set to 20°C for heating and 27°C for cooling. The room has no shade and a window that faces south.
Extends from Case600 (Basic test with light-weight construction and dual-setpoint for heating and cooling).
Type | Name | Default | Description |
---|---|---|---|
Integer | nStaRef | 6 | Number of states in a reference material |
Real | S_ | Buildings.HeatTransfer.Types... | |
Real | E_ | Buildings.HeatTransfer.Types... | |
Real | W_ | Buildings.HeatTransfer.Types... | |
Real | N_ | Buildings.HeatTransfer.Types... | |
Real | C_ | Buildings.HeatTransfer.Types... | |
Real | F_ | Buildings.HeatTransfer.Types... | |
Real | Z_ | Buildings.HeatTransfer.Types... | |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConBou | 1 | Number of surface that are connected to constructions that are modeled inside the room |
Generic | matExtWal | extWallCase900 | Lightweight Case: Exterior Wall |
Generic | matFlo | floorCase900 | Lightweight Case: Floor |
Generic | roofCase600 | Lightweight Case: Exterior Wall |
Type | Name | Description |
---|---|---|
Bus | weaBus |
model Case900 "Case 900 heavy mass test" extends Case600(matExtWal = extWallCase900, matFlo = floorCase900);Buildings.HeatTransfer.Data.OpaqueConstructions.Generic extWallCase900( 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=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.0615, k=0.040, c=1400, d=10, nStaRef=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.100, k=0.510, c=1000, d=1400, nStaRef=nStaRef)}) "High Mass Case: Exterior Wall"; Buildings.HeatTransfer.Data.OpaqueConstructions.Generic floorCase900(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.007, k=0.040, c=0, d=0, nStaRef=nStaRef),Buildings.HeatTransfer.Data.Solids.Generic( x=0.080, k=1.130, c=1000, d=1400, nStaRef=nStaRef)}) "High Mass Case: Floor"; end Case900;
This model is used for the basic test case 900FF of the BESTEST validation suite.
Case 900FF is a heavy-weight building.
The room temperature is free floating.
This is achieved by setting gaiHea.k=0
and gaiCoo.k=0
.
Extends from Case900 (Case 900 heavy mass test).
Type | Name | Default | Description |
---|---|---|---|
Integer | nStaRef | 6 | Number of states in a reference material |
Real | S_ | Buildings.HeatTransfer.Types... | |
Real | E_ | Buildings.HeatTransfer.Types... | |
Real | W_ | Buildings.HeatTransfer.Types... | |
Real | N_ | Buildings.HeatTransfer.Types... | |
Real | C_ | Buildings.HeatTransfer.Types... | |
Real | F_ | Buildings.HeatTransfer.Types... | |
Real | Z_ | Buildings.HeatTransfer.Types... | |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConBou | 1 | Number of surface that are connected to constructions that are modeled inside the room |
Generic | matExtWal | extWallCase900 | Lightweight Case: Exterior Wall |
Generic | matFlo | floorCase900 | Lightweight Case: Floor |
Generic | roofCase600 | Lightweight Case: Exterior Wall |
Type | Name | Description |
---|---|---|
Bus | weaBus |
model Case900FF "Case 900 with free floating temperature" extends Case900( gaiHea(k=0), gaiCoo(k=0), conCoo(controllerType=Modelica.Blocks.Types.SimpleController.P), conHea(controllerType=Modelica.Blocks.Types.SimpleController.P));end Case900FF;
This record declares the glass properties for the BESTEST model.
Extends from Modelica.Icons.Record (Icon for records).
Type | Name | Default | Description |
---|---|---|---|
Length | x | 0.003175 | Thickness [m] |
ThermalConductivity | k | 1.06 | Thermal conductivity [W/(m.K)] |
TransmissionCoefficient | tauSol | 0.86156 | Solar transimittance. It is tauSol in WINDOW5. [1] |
ReflectionCoefficient | rhoSol_a | 0.0434 | Solar reflectance of surface a (usually outside-facing surface). It is Rsol1 in WINDOW5. [1] |
ReflectionCoefficient | rhoSol_b | 0.0434 | Solar reflectance of surface b (usually room-facing surface). It is Rsol2 in WINDOW5. [1] |
TransmissionCoefficient | tauIR | 0 | Infrared infrared transmissivity of glass. It is Tir in WINDOW5. [1] |
Emissivity | absIR_a | 0.9 | Infrared infrared absorptivity of surface a (usually outside-facing surface). It is Emis1 in WINDOW5. [1] |
Emissivity | absIR_b | 0.9 | Infrared infrared absorptivity of surface b (usually room-facing surface). It is Emis2 in WINDOW5. [1] |
record Glass600 "Thermal properties of window glass" extends Modelica.Icons.Record; parameter Modelica.SIunits.Length x=0.003175 "Thickness"; parameter Modelica.SIunits.ThermalConductivity k=1.06 "Thermal conductivity"; parameter Modelica.SIunits.TransmissionCoefficient tauSol = 0.86156 "Solar transimittance. It is tauSol in WINDOW5."; parameter Modelica.SIunits.ReflectionCoefficient rhoSol_a = 0.0434 "Solar reflectance of surface a (usually outside-facing surface). It is Rsol1 in WINDOW5."; parameter Modelica.SIunits.ReflectionCoefficient rhoSol_b = 0.0434 "Solar reflectance of surface b (usually room-facing surface). It is Rsol2 in WINDOW5."; parameter Modelica.SIunits.TransmissionCoefficient tauIR = 0 "Infrared infrared transmissivity of glass. It is Tir in WINDOW5."; parameter Modelica.SIunits.Emissivity absIR_a = 0.9 "Infrared infrared absorptivity of surface a (usually outside-facing surface). It is Emis1 in WINDOW5."; parameter Modelica.SIunits.Emissivity absIR_b = 0.9 "Infrared infrared absorptivity of surface b (usually room-facing surface). It is Emis2 in WINDOW5.";end Glass600;
This record declares the parameters for the window system for the BESTEST.
Extends from Buildings.HeatTransfer.Data.GlazingSystems.Generic (Thermal properties of glazing systems).
Type | Name | Default | Description |
---|---|---|---|
Integer | nLay | 2 | Number of glass layers |
Boolean | haveExteriorShade | false | Set to true if window has an exterior shade (at surface a) |
Boolean | haveInteriorShade | false | Set to true if window has an interior shade (at surface b) |
Generic | glass[nLay] | {Glass600(),Glass600()} | Layer by layer declaration of glass layers, starting from outside to room-side |
Generic | gas[nLay - 1] | {Buildings.HeatTransfer.Data... | Layer by layer declaration of glass layers, starting from outside to room-side |
Generic | shade | Shade | |
CoefficientOfHeatTransfer | UFra | 1.4 | U-value of frame [W/(m2.K)] |
Emissivity | absIRFra | 0.8 | Infrared absorptivity of window frame [1] |
Emissivity | absSolFra | 0.5 | Solar absorptivity of window frame [1] |
record Win600 = Buildings.HeatTransfer.Data.GlazingSystems.Generic ( final glass={Glass600(),Glass600()}, final gas={Buildings.HeatTransfer.Data.Gases.Air(x=0.013)}, UFra=1.4, final nLay=2) "Double pane, clear glass 3.175mm, air 13mm, clear glass 3.175mm";