 
This package contains the models that were used for the BESTEST validation (ANSI/ASHRAE 2007). The basic model from which all other models extend from is Buildings.Rooms.Examples.BESTEST.Case600FF.
All examples have a script that runs an annual simulation and plots the results with the minimum, mean and maximum value listed in the ANSI/ASHRAE Standard 140-2007.
The script compares the following quantities
Note that in addition to the BESTESTs, the window model has been validated separately in Nouidui et al. (2012).
Heating and cooling is controlled using the PI controller Buildings.Controls.Continuous.LimPID with anti-windup.
Hourly averaged values, and annual mean values, are computed using an instance of Modelica.Blocks.Math.Mean.
ANSI/ASHRAE. 2007. ANSI/ASHRAE Standard 140-2007, Standard Method of Test for the Evaluation of Building Energy Analysis Computer Programs.
Thierry Stephane Nouidui, Michael Wetter, and Wangda Zuo. Validation of the window model of the Modelica Buildings library. Proc. of the 5th SimBuild Conference, Madison, WI, USA, August 2012.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
| Name | Description | 
|---|---|
|  Case600FF | Basic test with light-weight construction and free floating temperature | 
|  Case600 | Case 600FF, but with dual-setpoint for heating and cooling | 
|  Case610 | Case 600 with south shading | 
|  Case620 | Case 600, but with windows on East and West side walls | 
|  Case630 | Case 620, but with added overhang and sidefins | 
|  Case640 | Case 600, but with heating schedule | 
|  Case650FF | Case 600, no heating, no cooling, and ventilation as in case 650 | 
|  Case650 | Case 600, but cooling based on schedule, night venting, and no heating | 
|  Case900FF | Case 600FF, but with high thermal mass | 
|  Case900 | Case 600, but with high thermal mass | 
|  Case920 | Case 900, but with windows on East and West side walls | 
|  Case940 | Case 900, but with heating schedule | 
|  Case950 | Case 900, but cooling based on schedule, night venting, and no heating | 
|  Case950FF | Case 900, but no heating, no cooling, and ventilation as in case 650 | 
|  Case960 | Case 600, but with an unconditioned sun-space | 
|  Data | Data for BESTEST models | 
|  BaseClasses | Package with base classes for Buildings.Rooms.Examples.BESTEST | 
| nStaRef=6 | Number of states in a reference material | 
constant Integer nStaRef = 6 "Number of states in a reference material";
 Buildings.Rooms.Examples.BESTEST.Case600FF
Buildings.Rooms.Examples.BESTEST.Case600FF
 
This model is used for the test case 600FF of the BESTEST validation suite. Case 600FF is a light-weight building. The room temperature is free floating.
Extends from Modelica.Icons.Example (Icon for runnable examples).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | |
| StandardResultsFreeFloating | staRes | redeclare parameter Building... | Reference results from ASHRAE/ANSI Standard 140 | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case600FF 
  "Basic test with light-weight construction and free floating temperature"
  extends Modelica.Icons.Example;
  package MediumA = Buildings.Media.GasesConstantDensity.SimpleAir 
    "Medium model";
  parameter Modelica.SIunits.Angle S_=
    Buildings.HeatTransfer.Types.Azimuth.S "Azimuth for south walls";
  parameter Modelica.SIunits.Angle E_=
    Buildings.HeatTransfer.Types.Azimuth.E "Azimuth for east walls";
  parameter Modelica.SIunits.Angle W_=
    Buildings.HeatTransfer.Types.Azimuth.W "Azimuth for west walls";
  parameter Modelica.SIunits.Angle N_=
    Buildings.HeatTransfer.Types.Azimuth.N "Azimuth for north walls";
  parameter Modelica.SIunits.Angle C_=
    Buildings.HeatTransfer.Types.Tilt.Ceiling "Tilt for ceiling";
  parameter Modelica.SIunits.Angle F_=
    Buildings.HeatTransfer.Types.Tilt.Floor "Tilt for floor";
  parameter Modelica.SIunits.Angle Z_=
    Buildings.HeatTransfer.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";
  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)}) "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)}) "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={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,
    linearizeRadiation=false,
    datConExtWin(
      layers={matExtWal},
      A={8*2.7},
      glaSys={window600},
      wWin={2*3},
      hWin={2},
      fFra={0.001},
      til={Z_},
      azi={S_}),
    lat=weaDat.lat) "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 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=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)}) "Roof";
  Buildings.Rooms.Examples.BESTEST.Data.Win600
         window600(
    UFra=3,
    haveExteriorShade=false,
    haveInteriorShade=false) "Window";
  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 sinInf(
    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) "Sink model for air infiltration";
  Buildings.Fluid.Sources.Outside souInf(redeclare package Medium = MediumA,
      nPorts=1) "Source 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) 
    "Air density inside the building";
  Buildings.BoundaryConditions.WeatherData.Bus weaBus;
  Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TRooAir 
    "Room air temperature";
  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";
  replaceable parameter Buildings.Rooms.Examples.BESTEST.Data.StandardResultsFreeFloating
      staRes(
        minT( Min=-18.8+273.15, Max=-15.6+273.15, Mean=-17.6+273.15),
        maxT( Min=64.9+273.15,  Max=69.5+273.15,  Mean=66.2+273.15),
        meanT(Min=24.2+273.15,  Max=25.9+273.15,  Mean=25.1+273.15))
          constrainedby Modelica.Icons.Record 
    "Reference results from ASHRAE/ANSI Standard 140";
  Modelica.Blocks.Math.MultiSum multiSum(nu=1);
  Modelica.Blocks.Math.Mean TRooHou(f=1/3600, y(start=293.15)) 
    "Hourly averaged room air temperature";
  Modelica.Blocks.Math.Mean TRooAnn(f=1/86400/365, y(start=293.15)) 
    "Annual averaged room air temperature"; 
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, sinInf.m_flow_in);
  connect(density.port, roo.ports[1]);
  connect(density.d, product.u2);
  connect(weaDat.weaBus, weaBus);
  connect(TSoi[1].port, soil.port_a);
  connect(soil.port_b, roo.surf_conBou[1]);
  connect(weaBus, souInf.weaBus);
  connect(roo.heaPorAir, TRooAir.port);
  connect(souInf.ports[1], heaCoo.port_a);
  connect(heaCoo.port_b, roo.ports[2]);
  connect(sinInf.ports[1], roo.ports[3]);
  connect(multiSum.y, product.u1);
  connect(InfiltrationRate.y, multiSum.u[1]); 
  connect(TRooAir.T, TRooHou.u);
  connect(TRooAir.T, TRooAnn.u); 
end Case600FF;
 
 Buildings.Rooms.Examples.BESTEST.Case600
Buildings.Rooms.Examples.BESTEST.Case600
 
This model is used for the basic test case 600 of the BESTEST validation suite. Case 600 is a light-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 Case600FF (Basic test with light-weight construction and free floating temperature).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case600 
  "Case 600FF, but with dual-setpoint for heating and cooling"
  extends Case600FF(
    redeclare Buildings.Rooms.Examples.BESTEST.Data.StandardResults staRes(
    annualHea(Min=4.296*3.6e9, Max=5.709*3.6e9, Mean=5.090*3.6e9),
    annualCoo(Min=-6.137*3.6e9, Max=-7.964*3.6e9, Mean=-6.832*3.6e9),
    peakHea(Min=3.437*1000, Max=4.354*1000, Mean=4.000*1000),
    peakCoo(Min=-5.965*1000, Max=-6.827*1000, Mean=-6.461*1000)));
  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";
  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";
  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,
    initType=Modelica.Blocks.Types.Init.InitialState,
    y_start=0,
    u(unit="W"),
    y(unit="J")) "Heating energy in Joules";
  Modelica.Blocks.Continuous.Integrator ECoo(
    k=1,
    initType=Modelica.Blocks.Types.Init.InitialState,
    y_start=0,
    u(unit="W"),
    y(unit="J")) "Cooling energy in Joules";
  BaseClasses.DaySchedule TSetHea(table=[0.0,273.15 + 20]) "Heating setpoint";
  BaseClasses.DaySchedule TSetCoo(table=[0.0,273.15 + 27]) "Cooling setpoint";
  Modelica.Blocks.Math.Mean PHea(f=1/3600) "Hourly averaged heating power";
  Modelica.Blocks.Math.Mean PCoo(f=1/3600) "Hourly averaged cooling power"; 
equation 
  connect(TRooAir.T,conHea. u_m);
  connect(conCoo.u_m, TRooAir.T);
  connect(conHea.y,gaiHea. u);
  connect(conCoo.y,gaiCoo. u);
  connect(gaiHea.y,multiplex2. u1[1]);
  connect(gaiCoo.y,multiplex2. u2[1]);
  connect(multiplex2.y,sum1. u);
  connect(sum1.y,preHea. Q_flow);
  connect(EHea.u,gaiHea. y);
  connect(ECoo.u,gaiCoo. y);
  connect(TSetHea.y[1],conHea. u_s);
  connect(TSetCoo.y[1],conCoo. u_s);
  connect(PCoo.u,gaiCoo. y);
  connect(PHea.u,gaiHea. y);
  connect(preHea.port, roo.heaPorAir); 
end Case600;
 
 Buildings.Rooms.Examples.BESTEST.Case610
Buildings.Rooms.Examples.BESTEST.Case610
 
This model is the case 610 of the BESTEST validation suite. Case 610 differs from case 600 in that the window has an overhang.
Two overhangs have been added, one for each window, because each window only sees its own overhang.
Extends from Buildings.Rooms.Examples.BESTEST.Case600 (Case 600FF, but with dual-setpoint for heating and cooling).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case610 "Case 600 with south shading"
  extends Buildings.Rooms.Examples.BESTEST.Case600(
  roo(
     datConExtWin(
      ove(
        wR={4.5,0.5},
        wL={0.5,4.5},
        each dep=1,
        each gap=0.5))),
   staRes(
    annualHea(Min=4.355*3.6e9, Max=5.786*3.6e9, Mean=5.146*3.6e9),
    annualCoo(Min=-3.915*3.6e9, Max=-5.778*3.6e9, Mean=-4.964*3.6e9),
    peakHea(Min=3.437*1000, Max=4.354*1000, Mean=3.998*1000),
    peakCoo(Min=-5.689*1000, Max=-6.371*1000, Mean=-5.988*1000)));
end Case610;
 
 Buildings.Rooms.Examples.BESTEST.Case620
Buildings.Rooms.Examples.BESTEST.Case620
 
This model is the case 620 of the BESTEST validation suite. Case 620 differs from case 600 in that the west and east facing walls have a window, but there is no window in the south facing wall.
Extends from Buildings.Rooms.Examples.BESTEST.Case600 (Case 600FF, but with dual-setpoint for heating and cooling).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case620 
  "Case 600, but with windows on East and West side walls"
  extends Buildings.Rooms.Examples.BESTEST.Case600(
  roo(
    nConExtWin=2,
    datConExtWin(
      layers={matExtWal, matExtWal},
      each A=6*2.7,
      glaSys={window600, window600},
      each wWin=3,
      each hWin=2,
      each fFra=0.001,
      each til=Z_,
      azi={W_,E_}),
    nConExt=3,
    datConExt(
      layers={roof,matExtWal,matExtWal},
      A={48,8*2.7,8*2.7},
      til={C_,Z_,Z_},
      azi={S_,S_,N_})),
   staRes(
    annualHea(Min=4.613*3.6e9, Max=5.944*3.6e9, Mean=5.407*3.6e9),
    annualCoo(Min=-3.417*3.6e9, Max=-5.004*3.6e9, Mean=-4.218*3.6e9),
    peakHea(Min=3.591*1000, Max=4.379*1000, Mean=4.062*1000),
    peakCoo(Min=-3.634*1000, Max=-5.096*1000, Mean=-4.343*1000)));
end Case620;
 
 Buildings.Rooms.Examples.BESTEST.Case630
Buildings.Rooms.Examples.BESTEST.Case630
 
This model is case 630 of the BESTEST validation suite. Case 630 differs from case 620 in that the windows on the west and east walls have an overhang and side fins.
Extends from Buildings.Rooms.Examples.BESTEST.Case620 (Case 600, but with windows on East and West side walls).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case630 "Case 620, but with added overhang and sidefins"
  extends Buildings.Rooms.Examples.BESTEST.Case620(
  roo(
    datConExtWin(
      ove(
        each wR=0.0,
        each wL=0.0,
        each dep=1.0,
        each gap=0.5),
      sidFin(
        each h=0.5,
        each dep=1.0,
        each gap=0.0))),
   staRes(
    annualHea(Min=5.050*3.6e9, Max=6.469*3.6e9, Mean=5.783*3.6e9),
    annualCoo(Min=-2.129*3.6e9, Max=-3.701*3.6e9, Mean=-2.832*3.6e9),
    peakHea(Min=3.592*1000, Max=4.280*1000, Mean=4.006*1000),
    peakCoo(Min=-3.072*1000, Max=-4.116*1000, Mean=-3.626*1000)));
end Case630;
 
 Buildings.Rooms.Examples.BESTEST.Case640
Buildings.Rooms.Examples.BESTEST.Case640
 
This model is used for the basic test case 640 of the BESTEST validation suite. Case640 is the same as Case600, but with the following modifications:
Extends from Case600 (Case 600FF, but with dual-setpoint for heating and cooling).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case640 "Case 600, but with heating schedule"
  extends Case600(
    TSetHea(table=[      0, 273.15 + 10;
                    7*3600, 273.15 + 10;
                    7*3600, 273.15 + 20;
                   23*3600, 273.15 + 20;
                   23*3600,273.15 + 10;
                   24*3600,273.15 + 10]),
  staRes(
    annualHea(Min=2.751*3.6e9, Max=3.803*3.6e9, Mean=3.207*3.6e9),
    annualCoo(Min=-5.952*3.6e9, Max=-7.811*3.6e9, Mean=-6.592*3.6e9),
    peakHea(Min = 5.232*1000, Max = 6.954*1000, Mean = 6.031 * 1000),
    peakCoo(Min= -5.892*1000, Max = 6.776*1000, Mean= -6.410 * 1000)));
end Case640;
 
 Buildings.Rooms.Examples.BESTEST.Case650FF
Buildings.Rooms.Examples.BESTEST.Case650FF
 
This model is used for the test case 650FF of the BESTEST validation suite. Case 650FF is identical to case 650, except that there is no heating and no cooling.
Extends from Case600FF (Basic test with light-weight construction and free floating temperature).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case650FF 
  "Case 600, no heating, no cooling, and ventilation as in case 650"
  extends Case600FF(
  staRes(
      minT( Min=-23.0+273.15, Max=-21.6+273.15, Mean=-22.7+273.15),
      maxT( Min=63.2+273.15, Max=68.2+273.15, Mean=64.7+273.15),
      meanT(Min=18.0+273.15, Max=19.6+273.15, Mean=18.7+273.15)),
  multiSum(nu=2));
  BaseClasses.DaySchedule vent(table=[      0, -1703.16/3600;
                                       7*3600, -1703.16/3600;
                                       7*3600,             0;
                                      18*3600,             0;
                                      18*3600, -1703.16/3600;
                                      24*3600, -1703.16/3600]) 
    "Ventilation air flow rate"; 
equation 
  connect(multiSum.u[2],vent.y[1]); 
end Case650FF;
 
 Buildings.Rooms.Examples.BESTEST.Case650
Buildings.Rooms.Examples.BESTEST.Case650
 
This model is used for the test case 650 of the BESTEST validation suite. Case650 is the same as Case600, but with the following modifications:
Extends from Case600 (Case 600FF, but with dual-setpoint for heating and cooling).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case650 
  "Case 600, but cooling based on schedule, night venting, and no heating"
  extends Case600(
    TSetHea(table=[0, 273.15 -200]),
    TSetCoo(table=[      0, 273.15+100;
                    7*3600, 273.15+100;
                    7*3600, 273.15+27;
                   18*3600, 273.15+27;
                   18*3600, 273.15+100;
                   24*3600, 273.15+100]),
  staRes(
    annualHea(Min=0*3.6e9, Max=0*3.6e9, Mean=0*3.6e9),
    annualCoo(Min=-4.816*3.6e9, Max=-6.545*3.6e9, Mean=-5.482*3.6e9),
    peakHea(Min = 0*1000, Max = 0*1000, Mean = 0 * 1000),
    peakCoo(Min= -5.831*1000, Max = -6.679*1000, Mean= -6.321*1000)),
    gaiHea(k=0),
    multiSum(nu=2));
  BaseClasses.DaySchedule vent(table=[      0, -1703.16/3600;
                                       7*3600, -1703.16/3600;
                                       7*3600,             0;
                                      18*3600,             0;
                                      18*3600, -1703.16/3600;
                                      24*3600, -1703.16/3600]) 
    "Ventilation air flow rate"; 
equation 
  connect(multiSum.u[2], vent.y[1]); 
end Case650;
 
 Buildings.Rooms.Examples.BESTEST.Case900FF
Buildings.Rooms.Examples.BESTEST.Case900FF
 
This model is used for the test case 900FF of the BESTEST validation suite. Case 900FF is a heavy-weight building. The room temperature is free floating.
Extends from Case600FF (Basic test with light-weight construction and free floating temperature).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | extWalCase900 | Exterior wall | 
| Generic | matFlo | floorCase900 | Floor | 
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case900FF "Case 600FF, but with high thermal mass"
  extends Case600FF(
    matExtWal = extWalCase900,
    matFlo =    floorCase900,
    staRes(
      minT( Min=-6.4+273.15, Max=-1.6+273.15, Mean=-4.2+273.15),
      maxT( Min=41.6+273.15, Max=44.8+273.15, Mean=43.1+273.15),
      meanT(Min=24.5+273.15, Max=25.9+273.15, Mean=25.2+273.15)));
  Buildings.Rooms.Examples.BESTEST.Data.ExteriorWallCase900
     extWalCase900 "Exterior wall"; 
  Buildings.Rooms.Examples.BESTEST.Data.FloorCase900
    floorCase900 "Floor"; 
end Case900FF;
 
 Buildings.Rooms.Examples.BESTEST.Case900
Buildings.Rooms.Examples.BESTEST.Case900
 
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 (Case 600FF, but with dual-setpoint for heating and cooling).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | extWalCase900 | Exterior wall | 
| Generic | matFlo | floorCase900 | Floor | 
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case900 "Case 600, but with high thermal mass"
  extends Case600(
   matExtWal = extWalCase900,
   matFlo =    floorCase900,
   staRes(
    annualHea(Min=1.170*3.6e9, Max=2.041*3.6e9, Mean=1.745*3.6e9),
    annualCoo(Min=-2.132*3.6e9, Max=-3.415*3.6e9, Mean=-2.678*3.6e9),
    peakHea(Min=2.850*1000, Max=3.797*1000, Mean=3.506*1000),
    peakCoo(Min=-2.888*1000, Max=-3.871*1000, Mean=-3.390*1000)));
  Buildings.Rooms.Examples.BESTEST.Data.ExteriorWallCase900
     extWalCase900 "Exterior wall"; 
  Buildings.Rooms.Examples.BESTEST.Data.FloorCase900
    floorCase900 "Floor"; 
end Case900;
 
 Buildings.Rooms.Examples.BESTEST.Case920
Buildings.Rooms.Examples.BESTEST.Case920
 
This model is the case 920 of the BESTEST validation suite. Case 920 differs from case 900 in that the west and east facing walls have a window, but there is no window in the south facing wall.
Extends from Buildings.Rooms.Examples.BESTEST.Case900 (Case 600, but with high thermal mass).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | extWalCase900 | Exterior wall | 
| Generic | matFlo | floorCase900 | Floor | 
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case920 
  "Case 900, but with windows on East and West side walls"
  extends Buildings.Rooms.Examples.BESTEST.Case900(
  roo(
    nConExtWin=2,
    datConExtWin(
      layers={matExtWal, matExtWal},
      each A=6*2.7,
      glaSys={window600, window600},
      each wWin=3,
      each hWin=2,
      each fFra=0.001,
      each til=Z_,
      azi={W_,E_}),
    nConExt=3,
    datConExt(
      layers={roof,matExtWal,matExtWal},
      A={48,8*2.7,8*2.7},
      til={C_,Z_,Z_},
      azi={S_,S_,N_})),
   staRes(
    annualHea(Min=3.313*3.6e9, Max=4.300*3.6e9, Mean=3.973*3.6e9),
    annualCoo(Min=-1.840*3.6e9, Max=-3.092*3.6e9, Mean=-2.552*3.6e9),
    peakHea(Min=3.308*1000, Max=4.061*1000, Mean=3.804*1000),
    peakCoo(Min=-2.385*1000, Max=-3.505*1000, Mean=-3.077*1000)));
end Case920;
 
 Buildings.Rooms.Examples.BESTEST.Case940
Buildings.Rooms.Examples.BESTEST.Case940
 
This model is used for the basic test case 940 of the BESTEST validation suite. Case940 is the same as Case900, but with the following modifications:
Extends from Case900 (Case 600, but with high thermal mass).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | extWalCase900 | Exterior wall | 
| Generic | matFlo | floorCase900 | Floor | 
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case940 "Case 900, but with heating schedule"
  extends Case900(
    TSetHea(table=[      0, 273.15 + 10;
                    7*3600, 273.15 + 10;
                    7*3600, 273.15 + 20;
                   23*3600, 273.15 + 20;
                   23*3600,273.15 + 10;
                   24*3600,273.15 + 10]),
    staRes(
      annualHea(Min=0.793*3.6e9, Max=1.411*3.6e9, Mean=1.160*3.6e9),
      annualCoo(Min=-2.079*3.6e9, Max=-3.241*3.6e9, Mean=-2.578*3.6e9),
      peakHea(Min=3.980*1000, Max=6.428*1000, Mean=5.494*1000),
      peakCoo(Min=-2.886*1000, Max=-3.871*1000, Mean=-1.340*1000)));
end Case940;
 
 Buildings.Rooms.Examples.BESTEST.Case950
Buildings.Rooms.Examples.BESTEST.Case950
 
This model is used for the test case 950 of the BESTEST validation suite. Case950 is the same as Case900, but with the following modifications:
Extends from Case900 (Case 600, but with high thermal mass).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | extWalCase900 | Exterior wall | 
| Generic | matFlo | floorCase900 | Floor | 
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case950 
  "Case 900, but cooling based on schedule, night venting, and no heating"
  extends Case900(
    TSetHea(table=[0, 273.15 -200]),
    TSetCoo(table=[      0, 273.15+100;
                    7*3600, 273.15+100;
                    7*3600, 273.15+27;
                   18*3600, 273.15+27;
                   18*3600, 273.15+100;
                   24*3600, 273.15+100]),
    staRes(
      annualHea(Min=0*3.6e9, Max=0*3.6e9, Mean=0*3.6e9),
      annualCoo(Min=-0.387*3.6e9, Max=-0.921*3.6e9, Mean=-0.605*3.6e9),
      peakHea(Min=0*1000, Max=0*1000, Mean=0*1000),
      peakCoo(Min=-2.033*1000, Max=-3.170*1000, Mean=-2.674*1000)),
    gaiHea(k=0),
    multiSum(nu=2));
  BaseClasses.DaySchedule vent(table=[      0, -1703.16/3600;
                                       7*3600, -1703.16/3600;
                                       7*3600,             0;
                                      18*3600,             0;
                                      18*3600, -1703.16/3600;
                                      24*3600, -1703.16/3600]) 
    "Ventilation air flow rate"; 
equation 
  connect(multiSum.u[2], vent.y[1]); 
end Case950;
 
 Buildings.Rooms.Examples.BESTEST.Case950FF
Buildings.Rooms.Examples.BESTEST.Case950FF
 
This model is used for the test case 950FF of the BESTEST validation suite. Case 950FF is identical to case 950, except that there is no heating and no cooling.
Extends from Case900FF (Case 600FF, but with high thermal mass).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | extWalCase900 | Exterior wall | 
| Generic | matFlo | floorCase900 | Floor | 
| Generic | roof | Roof | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case950FF 
  "Case 900, but no heating, no cooling, and ventilation as in case 650"
  extends Case900FF(
  staRes(
      minT( Min=-20.2+273.15, Max=-18.6+273.15, Mean=-19.6+273.15),
      maxT( Min=35.5+273.15, Max=38.5+273.15, Mean=36.5+273.15),
      meanT(Min=14.0+273.15, Max=15.0+273.15, Mean=14.4+273.15)),
  multiSum(nu=2));
  BaseClasses.DaySchedule vent(table=[      0, -1703.16/3600;
                                       7*3600, -1703.16/3600;
                                       7*3600,             0;
                                      18*3600,             0;
                                      18*3600, -1703.16/3600;
                                      24*3600, -1703.16/3600]) 
    "Ventilation air flow rate"; 
equation 
  connect(multiSum.u[2],vent.y[1]); 
end Case950FF;
 
 Buildings.Rooms.Examples.BESTEST.Case960
Buildings.Rooms.Examples.BESTEST.Case960
 
This model is used for the test case 960 of the BESTEST validation suite. Case 960 is a two zones building, whereas the south-facing zone is an unconditioned sun-space.
Extends from Buildings.Rooms.Examples.BESTEST.Case600 (Case 600FF, but with dual-setpoint for heating and cooling).
| Type | Name | Default | Description | 
|---|---|---|---|
| Angle | S_ | Buildings.HeatTransfer.Types... | Azimuth for south walls [rad] | 
| Angle | E_ | Buildings.HeatTransfer.Types... | Azimuth for east walls [rad] | 
| Angle | W_ | Buildings.HeatTransfer.Types... | Azimuth for west walls [rad] | 
| Angle | N_ | Buildings.HeatTransfer.Types... | Azimuth for north walls [rad] | 
| Angle | C_ | Buildings.HeatTransfer.Types... | Tilt for ceiling [rad] | 
| Angle | F_ | Buildings.HeatTransfer.Types... | Tilt for floor [rad] | 
| Angle | Z_ | Buildings.HeatTransfer.Types... | Tilt for wall [rad] | 
| 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 | Exterior wall | |
| Generic | matFlo | Floor | |
| Generic | roof | Roof | |
| Brick120 | matLayPar | Construction material for partition walls | |
| ExteriorWallCase900 | extWalCase900 | Exterior wall | |
| FloorCase900 | floorCase900 | Floor | 
| Type | Name | Description | 
|---|---|---|
| Bus | weaBus | 
model Case960 "Case 600, but with an unconditioned sun-space"
  extends Buildings.Rooms.Examples.BESTEST.Case600(
    roo(
    nConExt=4,
    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_}),
    nConExtWin=0,
      datConExtWin(A={0}, hWin={0}, wWin={0}),
    nSurBou=1,
    surBou(
      each A=8*2.7,
      each absIR=0.9,
      each absSol=0.6,
      each til=Buildings.HeatTransfer.Types.Tilt.Wall)),
    souInf(nPorts=2),
    staRes(
      annualHea(Min=2.311*3.6e9, Max=3.373*3.6e9, Mean=2.846*3.6e9),
      annualCoo(Min=-0.411*3.6e9, Max=-0.803*3.6e9, Mean=-0.618*3.6e9),
      peakHea(Min=2.410*1000, Max=2.863*1000, Mean=2.701*1000),
      peakCoo(Min=-0.953*1000, Max=-1.404*1000, Mean=-1.212*1000)));
  Buildings.HeatTransfer.Conduction.MultiLayer
    parWal(layers=matLayPar, A=8*2.7) "Partition wall between the two rooms"; 
  parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Brick120
    matLayPar(material={
        Buildings.HeatTransfer.Data.Solids.Generic(
        x=0.2,
        k=0.510,
        c=1000,
        d=1400)}) "Construction material for partition walls"; 
  parameter Buildings.Rooms.Examples.BESTEST.Data.ExteriorWallCase900
     extWalCase900 "Exterior wall"; 
  parameter Buildings.Rooms.Examples.BESTEST.Data.FloorCase900
    floorCase900 "Floor"; 
  Buildings.Rooms.MixedAir sunSpa(
    redeclare package Medium = MediumA,
    hRoo=2.7,
    nPorts=3,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    intConMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature,
    extConMod=Buildings.HeatTransfer.Types.ExteriorConvection.TemperatureWind,
    nConPar=0,
    nConExt=3,
    datConExt(
      layers={roof,extWalCase900,extWalCase900},
      A={8*2,2*2.7,2*2.7},
      til={C_,Z_,Z_},
      azi={S_,W_,E_}),
    nSurBou=1,
    surBou(
      each A=8*2.7,
      each absIR=0.9,
      each absSol=0.6,
      each til=Buildings.HeatTransfer.Types.Tilt.Wall),
    linearizeRadiation=false,
    nConExtWin=1,
    datConExtWin(
      layers={extWalCase900},
      A={8*2.7},
      glaSys={window600},
      wWin={2*3},
      hWin={2},
      fFra={0.001},
      til={Z_},
      azi={S_}),
    nConBou=1,
    datConBou(
      layers={floorCase900},
      each A=2*8,
      each til=F_),
    AFlo=16,
    lat=0.69464104229374) "Room model for sun-space";
  Modelica.Blocks.Sources.Constant qConGai_flow1(k=0) "Convective heat gain";
  Modelica.Blocks.Sources.Constant qRadGai_flow1(k=0) "Radiative heat gain";
  Modelica.Blocks.Routing.Multiplex3 multiplex3_2;
  Modelica.Blocks.Sources.Constant qLatGai_flow1(k=0) "Latent heat gain";
  Buildings.HeatTransfer.Conduction.SingleLayer soil1(
    material(
      x=2,
      k=1.3,
      c=800,
      d=1500,
      R=0),
    steadyStateInitial=true,
    A=16,
    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 sinInf2(
    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) "Sink model for sunspace infiltration";
  Modelica.Blocks.Sources.Constant InfiltrationRate1(k=-16*2.7*0.5/3600) 
    "0.41 ACH adjusted for the altitude (0.5 at sea level)";
  Modelica.Blocks.Math.Product product1;
  Buildings.Fluid.Sensors.Density density1(redeclare package Medium = MediumA) 
    "Air density inside the building"; 
  Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TSoi1[nConBou](
    each T=283.15) "Boundary condition for construction";
  Fluid.FixedResistances.FixedResistanceDpM heaCoo1(
    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"; 
equation 
  connect(sunSpa.uSha, replicator.y);
  connect(parWal.port_a, roo.surf_surBou[1]);
  connect(parWal.port_b, sunSpa.surf_surBou[1]);
  connect(sunSpa.surf_conBou[1], soil1.port_b);
  connect(TSoi1[1].port, soil1.port_a);
  connect(weaDat.weaBus, sunSpa.weaBus);
  connect(qRadGai_flow1.y, multiplex3_2.u1[1]);
  connect(qConGai_flow1.y, multiplex3_2.u2[1]);
  connect(qLatGai_flow1.y, multiplex3_2.u3[1]);
  connect(multiplex3_2.y, sunSpa.qGai_flow);
  connect(InfiltrationRate1.y, product1.u1);
  connect(density1.d, product1.u2);
  connect(product1.y, sinInf2.m_flow_in);
  connect(heaCoo1.port_b, sunSpa.ports[1]);
  connect(sinInf2.ports[1], sunSpa.ports[2]);
  connect(density1.port, sunSpa.ports[3]);
  connect(souInf.ports[2], heaCoo1.port_a); 
end Case960;