LBL logo

Buildings.Rooms.Examples.BESTEST

BESTEST validation models

Information

This package contains the models that were used for the BESTEST validation (ASHRAE/ANSI 2007).

References

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).

Package Content

NameDescription
Buildings.Rooms.Examples.BESTEST.Case600 Case600 Basic test with light-weight construction and dual-setpoint for heating and cooling
Buildings.Rooms.Examples.BESTEST.Case600FF Case600FF Case 600 with free floating temperature
Buildings.Rooms.Examples.BESTEST.Case900 Case900 Case 900 heavy mass test
Buildings.Rooms.Examples.BESTEST.Case900FF Case900FF Case 900 with free floating temperature
Buildings.Rooms.Examples.BESTEST.Glass600 Glass600 Thermal properties of window glass
Buildings.Rooms.Examples.BESTEST.Win600 Win600 Double pane, clear glass 3.175mm, air 13mm, clear glass 3.175mm


Buildings.Rooms.Examples.BESTEST.Case600 Buildings.Rooms.Examples.BESTEST.Case600

Basic test with light-weight construction and dual-setpoint for heating and cooling

Buildings.Rooms.Examples.BESTEST.Case600

Information

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).

Parameters

TypeNameDefaultDescription
IntegernStaRef6Number of states in a reference material
RealS_Buildings.HeatTransfer.Types... 
RealE_Buildings.HeatTransfer.Types... 
RealW_Buildings.HeatTransfer.Types... 
RealN_Buildings.HeatTransfer.Types... 
RealC_Buildings.HeatTransfer.Types... 
RealF_Buildings.HeatTransfer.Types... 
RealZ_Buildings.HeatTransfer.Types... 
IntegernConExtWin1Number of constructions with a window
IntegernConBou1Number of surface that are connected to constructions that are modeled inside the room
GenericmatExtWal Lightweight Case: Exterior Wall
GenericmatFlo Lightweight Case: Floor
GenericroofCase600 Lightweight Case: Exterior Wall

Connectors

TypeNameDescription
BusweaBus 

Modelica definition

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";
equation 
  connect(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;

Buildings.Rooms.Examples.BESTEST.Case600FF Buildings.Rooms.Examples.BESTEST.Case600FF

Case 600 with free floating temperature

Buildings.Rooms.Examples.BESTEST.Case600FF

Information

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).

Parameters

TypeNameDefaultDescription
IntegernStaRef6Number of states in a reference material
RealS_Buildings.HeatTransfer.Types... 
RealE_Buildings.HeatTransfer.Types... 
RealW_Buildings.HeatTransfer.Types... 
RealN_Buildings.HeatTransfer.Types... 
RealC_Buildings.HeatTransfer.Types... 
RealF_Buildings.HeatTransfer.Types... 
RealZ_Buildings.HeatTransfer.Types... 
IntegernConExtWin1Number of constructions with a window
IntegernConBou1Number of surface that are connected to constructions that are modeled inside the room
GenericmatExtWal Lightweight Case: Exterior Wall
GenericmatFlo Lightweight Case: Floor
GenericroofCase600 Lightweight Case: Exterior Wall

Connectors

TypeNameDescription
BusweaBus 

Modelica definition

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;

Buildings.Rooms.Examples.BESTEST.Case900 Buildings.Rooms.Examples.BESTEST.Case900

Case 900 heavy mass test

Buildings.Rooms.Examples.BESTEST.Case900

Information

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).

Parameters

TypeNameDefaultDescription
IntegernStaRef6Number of states in a reference material
RealS_Buildings.HeatTransfer.Types... 
RealE_Buildings.HeatTransfer.Types... 
RealW_Buildings.HeatTransfer.Types... 
RealN_Buildings.HeatTransfer.Types... 
RealC_Buildings.HeatTransfer.Types... 
RealF_Buildings.HeatTransfer.Types... 
RealZ_Buildings.HeatTransfer.Types... 
IntegernConExtWin1Number of constructions with a window
IntegernConBou1Number of surface that are connected to constructions that are modeled inside the room
GenericmatExtWalextWallCase900Lightweight Case: Exterior Wall
GenericmatFlofloorCase900Lightweight Case: Floor
GenericroofCase600 Lightweight Case: Exterior Wall

Connectors

TypeNameDescription
BusweaBus 

Modelica definition

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;

Buildings.Rooms.Examples.BESTEST.Case900FF Buildings.Rooms.Examples.BESTEST.Case900FF

Case 900 with free floating temperature

Buildings.Rooms.Examples.BESTEST.Case900FF

Information

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).

Parameters

TypeNameDefaultDescription
IntegernStaRef6Number of states in a reference material
RealS_Buildings.HeatTransfer.Types... 
RealE_Buildings.HeatTransfer.Types... 
RealW_Buildings.HeatTransfer.Types... 
RealN_Buildings.HeatTransfer.Types... 
RealC_Buildings.HeatTransfer.Types... 
RealF_Buildings.HeatTransfer.Types... 
RealZ_Buildings.HeatTransfer.Types... 
IntegernConExtWin1Number of constructions with a window
IntegernConBou1Number of surface that are connected to constructions that are modeled inside the room
GenericmatExtWalextWallCase900Lightweight Case: Exterior Wall
GenericmatFlofloorCase900Lightweight Case: Floor
GenericroofCase600 Lightweight Case: Exterior Wall

Connectors

TypeNameDescription
BusweaBus 

Modelica definition

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;

Buildings.Rooms.Examples.BESTEST.Glass600 Buildings.Rooms.Examples.BESTEST.Glass600

Thermal properties of window glass

Information

This record declares the glass properties for the BESTEST model.

Extends from Modelica.Icons.Record (Icon for records).

Parameters

TypeNameDefaultDescription
Lengthx0.003175Thickness [m]
ThermalConductivityk1.06Thermal conductivity [W/(m.K)]
TransmissionCoefficienttauSol0.86156Solar transimittance. It is tauSol in WINDOW5. [1]
ReflectionCoefficientrhoSol_a0.0434Solar reflectance of surface a (usually outside-facing surface). It is Rsol1 in WINDOW5. [1]
ReflectionCoefficientrhoSol_b0.0434Solar reflectance of surface b (usually room-facing surface). It is Rsol2 in WINDOW5. [1]
TransmissionCoefficienttauIR0Infrared infrared transmissivity of glass. It is Tir in WINDOW5. [1]
EmissivityabsIR_a0.9Infrared infrared absorptivity of surface a (usually outside-facing surface). It is Emis1 in WINDOW5. [1]
EmissivityabsIR_b0.9Infrared infrared absorptivity of surface b (usually room-facing surface). It is Emis2 in WINDOW5. [1]

Modelica definition

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;

Buildings.Rooms.Examples.BESTEST.Win600 Buildings.Rooms.Examples.BESTEST.Win600

Double pane, clear glass 3.175mm, air 13mm, clear glass 3.175mm

Buildings.Rooms.Examples.BESTEST.Win600

Information

This record declares the parameters for the window system for the BESTEST.

Extends from Buildings.HeatTransfer.Data.GlazingSystems.Generic (Thermal properties of glazing systems).

Parameters

TypeNameDefaultDescription
IntegernLay2Number of glass layers
BooleanhaveExteriorShadefalseSet to true if window has an exterior shade (at surface a)
BooleanhaveInteriorShadefalseSet to true if window has an interior shade (at surface b)
Genericglass[nLay]{Glass600(),Glass600()}Layer by layer declaration of glass layers, starting from outside to room-side
Genericgas[nLay - 1]{Buildings.HeatTransfer.Data...Layer by layer declaration of glass layers, starting from outside to room-side
Genericshade Shade
CoefficientOfHeatTransferUFra1.4U-value of frame [W/(m2.K)]
EmissivityabsIRFra0.8Infrared absorptivity of window frame [1]
EmissivityabsSolFra0.5Solar absorptivity of window frame [1]

Modelica definition

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";

Automatically generated Wed Feb 22 15:24:04 2012.