Validation according to VDI 6007-1
Information
  This package contains validation cases for Reduced Order Models according to
  Guideline VDI 6007 Part 1 (VDI, 2012). The guideline defines twelve test cases
  that consecutively test different aspects of building pyhsics behaviour. All
  tests are based on a simple test room, either in a lightweight version (L) or
  as heavyweight (S). A third version changes one interior wall into a second
  exterior wall for the heavyweight construction.
  Comparative results are supplied with the guideline and have been calculated
  using two different programs for electrical circuit calculations (for day 1,
  10 and 60 in hourly steps). The validation procedure is originally thought to
  verifiy the correct implementation of an analytical calculation algorithm
  defined in the guideline. For that, a range of max 0.1 K or max 1 W deviation
  is allowed. As the implementation cannot reflect all aspects of the algorithm,
  the implemented model exceeds these values in some cases.
References
VDI. German Association of Engineers Guideline VDI 6007-1 March 2012.
Calculation of transient thermal response of rooms and buildings - modelling of
rooms.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
| Name | Description | 
|  TestCase1 | VDI 6007 Test Case 1 model | 
|  TestCase10 | VDI 6007 Test Case 10 model | 
|  TestCase11 | VDI 6007 Test Case 11 model | 
|  TestCase12 | VDI 6007 Test Case 12 model | 
|  TestCase2 | VDI 6007 Test Case 2 model | 
|  TestCase3 | VDI 6007 Test Case 3 model | 
|  TestCase4 | VDI 6007 Test Case 4 model | 
|  TestCase5 | VDI 6007 Test Case 5 model | 
|  TestCase6 | VDI 6007 Test Case 6 model | 
|  TestCase7 | VDI 6007 Test Case 7 model | 
|  TestCase8 | VDI 6007 Test Case 8 model | 
|  TestCase9 | VDI 6007 Test Case 9 model | 
|  BaseClasses | Base classes for VDI 6007 validation cases | 
VDI 6007 Test Case 1 model
 
Information
  Test Case 1 of the VDI 6007 Part 1: Calculation of indoor air
  temperature excited by a convective heat source for room version S.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates basic functionalities.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase1 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    RExt={0.00436791293674},
    RExtRem=0.03895919557,
    CExt={1600848.94},
    RInt={0.000595693407511},
    CInt={14836354.6282},
    VAir=0,
    nOrientations=1,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    intWallRC(thermCapInt(
each der_T(fixed=true))),
    T_start=295.15)
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    offset={273.15},
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        25200,27.7; 28800,27.9; 32400,28.1; 36000,28.4; 39600,28.6; 43200,28.8;
        46800,29; 50400,29.2; 54000,29.4; 57600,29.6; 61200,29.8; 64800,30;
        68400,24.5; 72000,24.5; 75600,24.5; 79200,24.5; 82800,24.5; 86400,24.5;
        781200,37.7; 784800,37.6; 788400,37.5; 792000,37.5; 795600,37.4; 799200,
        37.3; 802800,43; 806400,43.2; 810000,43.3; 813600,43.5; 817200,43.6;
        820800,43.8; 824400,43.9; 828000,44.1; 831600,44.3; 835200,44.4; 838800,
        44.6; 842400,44.7; 846000,39.1; 849600,39.1; 853200,39; 856800,38.9;
        860400,38.9; 864000,38.8; 5101200,49.9; 5104800,49.8; 5108400,49.7;
        5112000,49.6; 5115600,49.4; 5119200,49.3; 5122800,54.9; 5126400,55.1;
        5130000,55.2; 5133600,55.3; 5137200,55.4; 5140800,55.5; 5144400,55.6;
        5148000,55.7; 5151600,55.8; 5155200,55.9; 5158800,56.1; 5162400,56.2;
        5166000,50.6; 5169600,50.4; 5173200,50.3; 5176800,50.2; 5180400,50.1;
        5184000,50])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], macConv.Q_flow);
  
connect(thermalZoneTwoElements.intGainsConv, macConv.port);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir, mean.u);
  
connect(mean.y, assEqu.u2);
  
connect(reference.y[1], assEqu.u1);
end TestCase1;
 
VDI 6007 Test Case 10 model
 
Information
  Test Case 10 of the VDI 6007 Part 1: Calculation of indoor air temperature
  excited by a radiative and convective heat source for room version S. It is
  based on Test Case 5, but with a non-adiabatic floor plate to an adjacent room
  with a fixed temperature.
  Boundary conditions
  
  - daily profile for outdoor air temperature in hourly steps
- no solar or short-wave radiation on the exterior wall
- daily profile for solar radiation through the windows in hourly
  steps
- sunblind closes at >100 W/m2
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates linking to ajdacent rooms with
  fixed temperature.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase10 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare final package Medium = 
Modelica.Media.Air.SimpleAir,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    RWin=0.00000001,
    ratioWinConRad=0.09,
    AInt=58,
    hConWin=2.7,
    VAir=0,
    nOrientations=1,
    AWin={0},
    ATransparent={7},
    AExt={28},
    RExtRem=0.011638548,
    RExt={0.00171957697767797},
    CExt={4338751.41},
    RInt={0.000779671554640369},
    CInt={12333949.4129606},
    intWallRC(thermCapInt(
each T(fixed=true))),
    extWallRC(thermCapExt(
each T(fixed=true))),
    hConInt=2.398,
    T_start=290.75,
    hConExt=2.4);
  
Buildings.HeatTransfer.Sources.PrescribedTemperature preTem
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0,0,0; 3600,0,0,0; 7200,0,0,0; 10800,0,0,0; 14400,0,0,0; 18000,0,0,
        0; 21600,0,0,0; 25200,0,0,0; 25200,80,80,200; 28800,80,80,200; 32400,80,
        80,200; 36000,80,80,200; 39600,80,80,200; 43200,80,80,200; 46800,80,80,
        200; 50400,80,80,200; 54000,80,80,200; 57600,80,80,200; 61200,80,80,200;
        61200,0,0,0; 64800,0,0,0; 72000,0,0,0; 75600,0,0,0; 79200,0,0,0; 82800,
        0,0,0; 86400,0,0,0],
    columns={2,3,4})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,17.6; 3600,17.6; 7200,17.6; 10800,17.5; 14400,17.5; 18000,17.6;
        21600,17.8; 25200,18; 28800,20; 32400,19.7; 36000,20; 39600,20.3; 43200,
        20.5; 46800,20.6; 50400,20.7; 54000,20.8; 57600,21.5; 61200,21.4; 64800,
        19.8; 68400,19.7; 72000,19.6; 75600,19.6; 79200,19.5; 82800,19.5; 86400,
        19.5; 781200,24.7; 784800,24.6; 788400,24.5; 792000,24.4; 795600,24.4;
        799200,24.5; 802800,24.6; 806400,26.6; 810000,26.2; 813600,26.4; 817200,
        26.6; 820800,26.8; 824400,26.9; 828000,26.9; 831600,26.9; 835200,27.5;
        838800,27.4; 842400,25.7; 846000,25.5; 849600,25.3; 853200,25.3; 856800,
        25.2; 860400,25.1; 864000,25; 5101200,25.5; 5104800,25.3; 5108400,25.2;
        5112000,25.1; 5115600,25.1; 5119200,25.2; 5122800,25.3; 5126400,27.3;
        5130000,26.9; 5133600,27.1; 5137200,27.3; 5140800,27.4; 5144400,27.5;
        5148000,27.5; 5151600,27.5; 5155200,28.1; 5158800,28; 5162400,26.3;
        5166000,26.1; 5169600,26; 5173200,25.9; 5176800,25.8; 5180400,25.7;
        5184000,25.6],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWindow(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    table=[0,0; 3600,0; 10800,0; 14400,0; 14400,17; 18000,17; 18000,38; 21600,
        38; 21600,59; 25200,59; 25200,98; 28800,98; 28800,186; 32400,186; 32400,
        287; 36000,287; 36000,359; 39600,359; 39600,385; 43200,385; 43200,359;
        46800,359; 46800,287; 50400,287; 50400,186; 54000,186; 54000,98; 57600,
        98; 57600,59; 61200,59; 61200,38; 64800,38; 64800,17; 68400,17; 68400,0;
        72000,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open(k=1)
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1(
    threshold=100)
    ;
  
Modelica.Blocks.Math.Product product1
    ;
  
Modelica.Blocks.Logical.Switch switch1
    ;
  
Modelica.Blocks.Sources.CombiTimeTable outdoorTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    table=[0,291.95; 3600,291.95; 3600,290.25; 7200,290.25; 7200,289.65; 10800,
        289.65; 10800,289.25; 14400,289.25; 14400,289.65; 18000,289.65; 18000,
        290.95; 21600,290.95; 21600,293.45; 25200,293.45; 25200,295.95; 28800,
        295.95; 28800,297.95; 32400,297.95; 32400,299.85; 36000,299.85; 36000,
        301.25; 39600,301.25; 39600,302.15; 43200,302.15; 43200,302.85; 46800,
        302.85; 46800,303.55; 50400,303.55; 50400,304.05; 54000,304.05; 54000,
        304.15; 57600,304.15; 57600,303.95; 61200,303.95; 61200,303.25; 64800,
        303.25; 64800,302.05; 68400,302.05; 68400,300.15; 72000,300.15; 72000,
        297.85; 75600,297.85; 75600,296.05; 79200,296.05; 79200,295.05; 82800,
        295.05; 82800,294.05; 86400,294.05])
    ;
  
EquivalentAirTemperature.VDI6007 eqAirTemp(
    aExt=0.7,
    hConWallOut=20,
    hRad=5,
    withLongwave=false,
    n=1,
    wfWall={0.04646093176283288},
    wfWin={0.32441554918476245},
    wfGro=0.6291235190524047,
    TGro=288.15)
    ;
  
Modelica.Blocks.Sources.Constant const(k=273.15)
    ;
  
Modelica.Blocks.Sources.Constant HSol(k=0)
    ;
  
Modelica.Blocks.Sources.Constant sunblind(k=0)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=28*9.75)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(perRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(intGai.y[1], perRad.Q_flow);
  
connect(intGai.y[2], perCon.Q_flow);
  
connect(intGai.y[3], macConv.Q_flow);
  
connect(tableSolRadWindow.y[1],greaterThreshold1. u);
  
connect(sunblind_open.y, switch1.u3);
  
connect(g_sunblind.y, switch1.u1);
  
connect(tableSolRadWindow.y[1], product1.u1);
  
connect(greaterThreshold1.y, switch1.u2);
  
connect(switch1.y, product1.u2);
  
connect(outdoorTemp.y[1], eqAirTemp.TDryBul);
  
connect(const.y,eqAirTemp. TBlaSky);
  
connect(eqAirTemp.TEqAir, preTem.T);
  
connect(HSol.y, eqAirTemp.HSol[1]);
  
connect(sunblind.y, eqAirTemp.sunblind[1]);
  
connect(hConWall.y, theConWall.Gc);
  
connect(preTem.port, theConWall.fluid);
  
connect(theConWall.solid, thermalZoneTwoElements.extWall);
  
connect(perCon.port, thermalZoneTwoElements.intGainsConv);
  
connect(macConv.port, thermalZoneTwoElements.intGainsConv);
  
connect(product1.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir,mean. u);
  
connect(mean.y,assEqu. u2);
  
connect(reference.y[1],assEqu. u1);
end TestCase10;
 
VDI 6007 Test Case 11 model
 
Information
  Test Case 11 of the VDI 6007 Part 1: Calculation of heat load
  excited with a given radiative heat source and a setpoint profile
  for room version S. It is based on Test Case 7, but with a cooling ceiling for
  cooling purposes instead of a pure convective ideal cooler.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows and ambient
  environment
This test validates implementation of cooling ceiling or
  floor heating.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase11 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    RWin=0.00000001,
    hRad=5,
    RExt={0.00436791293674},
    RExtRem=0.03895919557,
    CExt={1600848.94},
    RInt={0.000595693407511},
    CInt={14836354.6282},
    hConInt=3,
    indoorPortIntWalls=true,
    VAir=0,
    nOrientations=1,
    
redeclare final package Medium = 
Modelica.Media.Air.SimpleAir,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    T_start=295.15,
    intWallRC(thermCapInt(
each der_T(fixed=true))))
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(
    T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall(
    dT(start=0))
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    columns={2,3,4},
    table=[0,22,0,0; 3600,22,0,0; 7200,22,0,0; 10800,22,0,0; 14400,22,0,0;
        18000,22,0,0; 21600,22,0,500; 25200,24.9,500,500; 28800,25.2,500,500;
        32400,25.6,500,500; 36000,25.9,500,500; 39600,26.2,500,500; 43200,26.5,
        500,500; 46800,26.8,500,464; 50400,27,464,397; 54000,27,397,333; 57600,
        27,333,272; 61200,27,272,215; 64800,27,215,-500; 68400,25.3,-500,-500;
        72000,25.2,-500,-500; 75600,25.1,-500,-500; 79200,24.9,-500,-500; 82800,
        24.8,-500,-500; 86400,24.7,-500,-500; 781200,26.2,-500,-500; 784800,
        26.1,-500,-500; 788400,26,-500,-500; 792000,25.8,-500,-500; 795600,25.7,
        -500,-500; 799200,25.6,-500,126; 802800,27,126,76; 806400,27,76,28;
        810000,27,28,100; 813600,27,-121,-391; 817200,27,-391,-500; 820800,27,-500,
        -500; 824400,27.1,-500,-500; 828000,27.2,-500,-500; 831600,27.3,-500,-500;
        835200,27.4,-500,-500; 838800,27.5,-500,-500; 842400,27.6,-500,-500;
        846000,27,-500,-500; 849600,26.9,-500,-500; 853200,26.7,-500,-500;
        856800,26.6,-500,-500; 860400,26.5,-500,-500; 864000,26.4,-500,-500;
        5101200,26.2,-500,-500; 5104800,26.1,-500,-500; 5108400,26,-500,-500;
        5112000,25.8,-500,-500; 5115600,25.7,-500,-500; 5119200,25.6,-500,126;
        5122800,27,126,76; 5126400,27,76,28; 5130000,27,28,100; 5133600,27,-122,
        -391; 5137200,27,-391,-500; 5140800,27,-500,-500; 5144400,27.1,-500,-500;
        5148000,27.2,-500,-500; 5151600,27.3,-500,-500; 5155200,27.4,-500,-500;
        5158800,27.5,-500,-500; 5162400,27.6,-500,-500; 5166000,27,-500,-500;
        5169600,26.9,-500,-500; 5173200,26.7,-500,-500; 5176800,26.6,-500,-500;
        5180400,26.5,-500,-500; 5184000,26.4,-500,-500])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow heat
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow cool
    ;
  
Modelica.Blocks.Sources.CombiTimeTable setTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments,
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        21600.1,27; 28800,27; 32400,27; 36000,27; 39600,27; 43200,27; 46800,27;
        50400,27; 54000,27; 57600,27; 61200,27; 64800,27; 64800.1,22; 72000,22;
        75600,22; 79200,22; 82800,22; 86400,22])
    ;
  
Modelica.Blocks.Math.UnitConversions.From_degC from_degC
    ;
  
Modelica.Blocks.Math.Gain gainHea(k=500)
    ;
  
Controls.Continuous.LimPID conHeaCoo(
    yMin=-1,
    Td=5,
    controllerType=Modelica.Blocks.Types.SimpleController.PI,
    yMax=1,
    k=0.1,
    Ti=1.2)
    ;
  
Modelica.Blocks.Math.Gain gainCoo(k=500)
    ;
  
Modelica.Blocks.Logical.Switch switchCoo
    ;
  
Modelica.Blocks.Logical.Hysteresis hysteresis(
    uLow=-0.0000001,
    uHigh=0.0000001,
    y(start=true))
    ;
  
Modelica.Blocks.Sources.Constant DefPow(k=0)
    ;
  
Modelica.Blocks.Logical.Switch switchHea
    ;
  
Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor
    ;
  
Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor coolFlowSensor
    ;
  
Modelica.Blocks.Math.Add add(k1=1, k2=-1)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    endTime=86400,
    endTime2=864000,
    endTime3=5184000,
    threShold=1.5,
    startTime=3600,
    startTime2=781200,
    startTime3=5101200)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
  
Modelica.Blocks.Logical.Switch switchMea
    ;
  
Modelica.Blocks.Logical.Not not1
    ;
  
Modelica.Blocks.Logical.Timer timer
    ;
  
Modelica.Blocks.Logical.LessEqualThreshold thr(threshold=120)
    ;
  
Modelica.Blocks.Logical.Change cha
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], machinesRad.Q_flow);
  
connect(machinesRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(setTemp.y[1],from_degC. u);
  
connect(gainHea.y, heat.Q_flow);
  
connect(gainCoo.y, cool.Q_flow);
  
connect(switchHea.y, gainHea.u);
  
connect(DefPow.y, switchHea.u3);
  
connect(from_degC.y, conHeaCoo.u_s);
  
connect(switchCoo.y, gainCoo.u);
  
connect(hysteresis.y, switchCoo.u2);
  
connect(DefPow.y, switchCoo.u1);
  
connect(hysteresis.y, switchHea.u2);
  
connect(conHeaCoo.y, switchHea.u1);
  
connect(thermalZoneTwoElements.TAir, conHeaCoo.u_m);
  
connect(heat.port, heatFlowSensor.port_b);
  
connect(heatFlowSensor.port_a, thermalZoneTwoElements.intGainsConv);
  
connect(cool.port, coolFlowSensor.port_a);
  
connect(coolFlowSensor.port_b, thermalZoneTwoElements.intWallIndoorSurface);
  
connect(coolFlowSensor.Q_flow, add.u1);
  
connect(heatFlowSensor.Q_flow, add.u2);
  
connect(hysteresis.u, switchHea.u1);
  
connect(conHeaCoo.y, switchCoo.u3);
  
connect(add.y, switchMea.u3);
  
connect(reference.y[3], switchMea.u1);
  
connect(timer.y, thr.u);
  
connect(cha.y, not1.u);
  
connect(not1.y, timer.u);
  
connect(thr.y, switchMea.u2);
  
connect(cha.u, hysteresis.y);
  
connect(switchMea.y, mean.u);
  
connect(reference.y[2], assEqu.u2);
  
connect(mean.y, assEqu.u1);
end TestCase11;
 
VDI 6007 Test Case 12 model
 
Information
  Test Case 12 of the VDI 6007 Part 1: Calculation of indoor air temperature
  excited by a radiative and convective heat source for room version S. It is
  based of Test Case 5 and adds ventilation.
  Boundary conditions
  
  - daily profile for outdoor air temperature in hourly steps
- no solar or short-wave radiation on the exterior wall
- daily profile for solar radiation through the windows in hourly steps
- sunblind closes at >100 W/m2
- no long-wave radiation exchange between exterior wall, windows and ambient
  environment
- daily profile for ventilation in hourly time steps
This test validates infiltration and ventilation.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
| Type | Name | Default | Description | 
|---|
| replaceable package Medium | Modelica.Media.Air.SimpleAir | Medium model | 
Connectors
| Type | Name | Description | 
|---|
| replaceable package Medium | Medium model | 
Modelica definition
model TestCase12 
  
extends Modelica.Icons.Example;
  
replaceable package Medium = 
Modelica.Media.Air.SimpleAir
   constrainedby Modelica.Media.Interfaces.PartialMedium ;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare final package Medium = 
Medium,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    RExt={0.00436791293674},
    RExtRem=0.03895919557,
    CExt={1600848.94},
    RInt={0.000595693407511},
    CInt={14836354.6282},
    ratioWinConRad=0.09,
    nPorts=2,
    nOrientations=1,
    VAir=0.1,
    AWin={0},
    ATransparent={7},
    AExt={10.5},
    extWallRC(thermCapExt(
each T(fixed=true))),
    intWallRC(thermCapInt(
each T(fixed=true))),
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    T_start=295.15)
    ;
  
Buildings.HeatTransfer.Sources.PrescribedTemperature preTem(port(T(
    start=300)))
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0,0,0; 3600,0,0,0; 7200,0,0,0; 10800,0,0,0; 14400,0,0,0; 18000,0,0,
        0; 21600,0,0,0; 25200,0,0,0; 25200,80,80,200; 28800,80,80,200; 32400,80,
        80,200; 36000,80,80,200; 39600,80,80,200; 43200,80,80,200; 46800,80,80,
        200; 50400,80,80,200; 54000,80,80,200; 57600,80,80,200; 61200,80,80,200;
        61200,0,0,0; 64800,0,0,0; 72000,0,0,0; 75600,0,0,0; 79200,0,0,0; 82800,
        0,0,0; 86400,0,0,0],
    columns={2,3,4})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,21.5; 3600,21.5; 7200,21.2; 10800,21; 14400,20.9; 18000,21; 21600,
        21.3; 25200,21.9; 28800,24.1; 32400,24; 36000,24.4; 39600,24.8; 43200,
        25.1; 46800,25.3; 50400,25.5; 54000,25.6; 57600,26.3; 61200,26.3; 64800,
        25.2; 68400,25; 72000,24.6; 75600,24.2; 79200,24; 82800,23.8; 86400,
        23.6; 781200,29.1; 784800,28.7; 788400,28.4; 792000,28.2; 795600,28.3;
        799200,28.5; 802800,29; 806400,31.8; 810000,31.6; 813600,32; 817200,
        32.3; 820800,32.5; 824400,32.7; 828000,32.9; 831600,32.9; 835200,33.5;
        838800,33.5; 842400,31.7; 846000,31.5; 849600,31; 853200,30.6; 856800,
        30.3; 860400,30; 864000,29.8; 5101200,30.5; 5104800,30; 5108400,29.8;
        5112000,29.6; 5115600,29.6; 5119200,29.9; 5122800,30.3; 5126400,33.2;
        5130000,33; 5133600,33.4; 5137200,33.7; 5140800,33.9; 5144400,34.1;
        5148000,34.2; 5151600,34.3; 5155200,34.9; 5158800,34.8; 5162400,33;
        5166000,32.7; 5169600,32.2; 5173200,31.8; 5176800,31.4; 5180400,31.2;
        5184000,30.9],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.CombiTimeTable outdoorTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    table=[0,291.95; 3600,291.95; 3600,290.25; 7200,290.25; 7200,289.65; 10800,
        289.65; 10800,289.25; 14400,289.25; 14400,289.65; 18000,289.65; 18000,
        290.95; 21600,290.95; 21600,293.45; 25200,293.45; 25200,295.95; 28800,
        295.95; 28800,297.95; 32400,297.95; 32400,299.85; 36000,299.85; 36000,
        301.25; 39600,301.25; 39600,302.15; 43200,302.15; 43200,302.85; 46800,
        302.85; 46800,303.55; 50400,303.55; 50400,304.05; 54000,304.05; 54000,
        304.15; 57600,304.15; 57600,303.95; 61200,303.95; 61200,303.25; 64800,
        303.25; 64800,302.05; 68400,302.05; 68400,300.15; 72000,300.15; 72000,
        297.85; 75600,297.85; 75600,296.05; 79200,296.05; 79200,295.05; 82800,
        295.05; 82800,294.05; 86400,294.05])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWindow(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    table=[0,0; 3600,0; 10800,0; 14400,0; 14400,17; 18000,17; 18000,38; 21600,
        38; 21600,59; 25200,59; 25200,98; 28800,98; 28800,186; 32400,186; 32400,
        287; 36000,287; 36000,359; 39600,359; 39600,385; 43200,385; 43200,359;
        46800,359; 46800,287; 50400,287; 50400,186; 54000,186; 54000,98; 57600,
        98; 57600,59; 61200,59; 61200,38; 64800,38; 64800,17; 68400,17; 68400,0;
        72000,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open(k=1)
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1(threshold=100)
    ;
  
Modelica.Blocks.Math.Product product1
    ;
  
Modelica.Blocks.Logical.Switch switch1
    ;
  
Modelica.Blocks.Sources.CombiTimeTable ventRate(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,100; 3600,100; 7200,100; 10800,100; 14400,100; 18000,100; 21600,
        100; 25200,100; 25200,50; 28800,50; 32400,50; 36000,50; 39600,50; 43200,
        50; 46800,50; 50400,50; 54000,50; 57600,50; 61200,50; 61200,100; 64800,
        100; 72000,100; 75600,100; 79200,100; 82800,100; 86400,100])
    ;
  
Modelica.Blocks.Math.Gain gain(k=0.000330375898)
    ;
  
Fluid.Sources.MassFlowSource_T ventilationIn(
    use_m_flow_in=true,
    use_T_in=true,
    nPorts=1,
    
redeclare package Medium = 
Medium)
    ;
  
Fluid.Sources.MassFlowSource_T ventilationOut(
    
redeclare package Medium = 
Medium,
    use_m_flow_in=true,
    nPorts=1,
    use_T_in=false)
    ;
  
Modelica.Blocks.Math.Gain gain1(k=-1)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(outdoorTemp.y[1], preTem.T);
  
connect(perRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(intGai.y[1], perRad.Q_flow);
  
connect(intGai.y[2], perCon.Q_flow);
  
connect(intGai.y[3], macConv.Q_flow);
  
connect(tableSolRadWindow.y[1],greaterThreshold1. u);
  
connect(sunblind_open.y, switch1.u3);
  
connect(g_sunblind.y, switch1.u1);
  
connect(tableSolRadWindow.y[1], product1.u1);
  
connect(greaterThreshold1.y, switch1.u2);
  
connect(switch1.y, product1.u2);
  
connect(ventRate.y[1], gain.u);
  
connect(ventilationIn.ports[1], thermalZoneTwoElements.ports[1]);
  
connect(gain.y, ventilationIn.m_flow_in);
  
connect(outdoorTemp.y[1], ventilationIn.T_in);
  
connect(gain.y, gain1.u);
  
connect(gain1.y, ventilationOut.m_flow_in);
  
connect(ventilationOut.ports[1], thermalZoneTwoElements.ports[2]);
  
connect(perCon.port, thermalZoneTwoElements.intGainsConv);
  
connect(macConv.port, thermalZoneTwoElements.intGainsConv);
  
connect(product1.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir,mean. u);
  
connect(mean.y,assEqu. u2);
  
connect(reference.y[1],assEqu. u1);
end TestCase12;
 
VDI 6007 Test Case 2 model
 
Information
  Test Case 2 of the VDI 6007 Part 1: Calculation of indoor air
  temperature excited by a radiative heat source for room version S.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates basic functionalities.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase2 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    hRad=5,
    RExt={0.00436791293674},
    RExtRem=0.03895919557,
    CExt={1600848.94},
    RInt={0.000595693407511},
    CInt={14836354.6282},
    VAir=0,
    nOrientations=1,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    T_start=295.15,
    intWallRC(thermCapInt(
each der_T(fixed=true))))
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    offset={273.15},
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        25200,22.6; 28800,22.9; 32400,23.1; 36000,23.3; 39600,23.5; 43200,23.7;
        46800,23.9; 50400,24.1; 54000,24.3; 57600,24.6; 61200,24.8; 64800,25;
        68400,24.5; 72000,24.5; 75600,24.5; 79200,24.5; 82800,24.5; 86400,24.5;
        781200,37.7; 784800,37.7; 788400,37.6; 792000,37.5; 795600,37.5; 799200,
        37.4; 802800,38; 806400,38.2; 810000,38.3; 813600,38.5; 817200,38.6;
        820800,38.8; 824400,38.9; 828000,39.1; 831600,39.2; 835200,39.4; 838800,
        39.5; 842400,39.7; 846000,39.2; 849600,39.1; 853200,39.1; 856800,39;
        860400,38.9; 864000,38.9; 5101200,50; 5104800,49.9; 5108400,49.8;
        5112000,49.7; 5115600,49.6; 5119200,49.5; 5122800,50; 5126400,50.1;
        5130000,50.2; 5133600,50.3; 5137200,50.5; 5140800,50.6; 5144400,50.7;
        5148000,50.8; 5151600,50.9; 5155200,51; 5158800,51.1; 5162400,51.2;
        5166000,50.7; 5169600,50.6; 5173200,50.4; 5176800,50.3; 5180400,50.2;
        5184000,50.1])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], machinesRad.Q_flow);
  
connect(machinesRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir, mean.u);
  
connect(mean.y, assEqu.u2);
  
connect(reference.y[1], assEqu.u1);
end TestCase2;
 
VDI 6007 Test Case 3 model
 
Information
  Test Case 3 of the VDI 6007 Part 1: Calculation of indoor air
  temperature excited by a convective heat source for room version L.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates basic functionalities.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase3 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    RExt={0.00404935160802},
    VAir=0,
    nOrientations=1,
    CExt={47900},
    RInt={0.003237138},
    CInt={7297100},
    RExtRem=0.039330865,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    T_start=295.15,
    intWallRC(thermCapInt(
each der_T(fixed=true))))
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        25200,30.2; 28800,30.8; 32400,31.2; 36000,31.6; 39600,32; 43200,32.4;
        46800,32.8; 50400,33.2; 54000,33.6; 57600,34; 61200,34.3; 64800,34.7;
        68400,26.9; 72000,26.7; 75600,26.7; 79200,26.6; 82800,26.6; 86400,26.6;
        781200,43.7; 784800,43.5; 788400,43.4; 792000,43.2; 795600,43; 799200,
        42.9; 802800,50.9; 806400,51.3; 810000,51.6; 813600,51.8; 817200,52.1;
        820800,52.3; 824400,52.5; 828000,52.8; 831600,53; 835200,53.3; 838800,
        53.5; 842400,53.7; 846000,45.8; 849600,45.4; 853200,45.3; 856800,45.1;
        860400,44.9; 864000,44.7; 5101200,48.7; 5104800,48.5; 5108400,48.3;
        5112000,48.1; 5115600,47.9; 5119200,47.7; 5122800,55.7; 5126400,56;
        5130000,56.3; 5133600,56.5; 5137200,56.7; 5140800,56.9; 5144400,57.1;
        5148000,57.3; 5151600,57.5; 5155200,57.7; 5158800,57.9; 5162400,58.1;
        5166000,50.1; 5169600,49.8; 5173200,49.5; 5176800,49.3; 5180400,49.1;
        5184000,48.9],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], macConv.Q_flow);
  
connect(macConv.port, thermalZoneTwoElements.intGainsConv);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir, mean.u);
  
connect(mean.y, assEqu.u2);
  
connect(reference.y[1], assEqu.u1);
end TestCase3;
 
VDI 6007 Test Case 4 model
 
Information
  Test Case 4 of the VDI 6007 Part 1: Calculation of indoor air temperature
  excited by a radiative heat source for room version L.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates basic functionalities.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase4 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    hRad=5,
    RExt={0.00404935160802},
    VAir=0,
    nOrientations=1,
    CExt={47900},
    RInt={0.003237138},
    CInt={7297100},
    RExtRem=0.039330865,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    T_start=295.15,
    intWallRC(thermCapInt(
each der_T(fixed=true))))
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        25200,25.1; 28800,25.7; 32400,26.1; 36000,26.5; 39600,26.9; 43200,27.3;
        46800,27.7; 50400,28.1; 54000,28.5; 57600,28.9; 61200,29.3; 64800,29.7;
        68400,26.9; 72000,26.7; 75600,26.7; 79200,26.7; 82800,26.6; 86400,26.6;
        781200,43.8; 784800,43.6; 788400,43.5; 792000,43.3; 795600,43.1; 799200,
        43; 802800,45.9; 806400,46.3; 810000,46.6; 813600,46.8; 817200,47.1;
        820800,47.3; 824400,47.6; 828000,47.8; 831600,48.1; 835200,48.3; 838800,
        48.5; 842400,48.8; 846000,45.9; 849600,45.6; 853200,45.4; 856800,45.2;
        860400,45; 864000,44.8; 5101200,48.8; 5104800,48.6; 5108400,48.4;
        5112000,48.2; 5115600,48; 5119200,47.8; 5122800,50.7; 5126400,51.1;
        5130000,51.3; 5133600,51.5; 5137200,51.7; 5140800,51.9; 5144400,52.1;
        5148000,52.4; 5151600,52.6; 5155200,52.8; 5158800,53; 5162400,53.2;
        5166000,50.2; 5169600,49.9; 5173200,49.7; 5176800,49.5; 5180400,49.2;
        5184000,49],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], machinesRad.Q_flow);
  
connect(machinesRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir, mean.u);
  
connect(mean.y, assEqu.u2);
  
connect(reference.y[1], assEqu.u1);
end TestCase4;
 
VDI 6007 Test Case 5 model
 
Information
  Test Case 5 of the VDI 6007 Part 1: Calculation of indoor air
  temperature excited by a radiative and convective heat source for
  room version S.
  Boundary conditions
  
  - daily profile for outdoor air temperature in hourly steps
- no solar or short-wave radiation on the exterior wall
- daily profile for solar radiation through the windows in hourly
  steps
- sunblind closes at >100 W/m2
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates reaction of indoor air
  temperature at mixed internal gains and outdoor impacts.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase5 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    RExt={0.00436791293674},
    RExtRem=0.03895919557,
    CExt={1600848.94},
    RInt={0.000595693407511},
    CInt={14836354.6282},
    ratioWinConRad=0.09,
    VAir=0,
    nOrientations=1,
    AWin={0},
    ATransparent={7},
    AExt={10.5},
    extWallRC(thermCapExt(
each T(fixed=true))),
    T_start=295.15,
    intWallRC(thermCapInt(
each T(fixed=true))))
    ;
  
Buildings.HeatTransfer.Sources.PrescribedTemperature preTem
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0,0,0; 3600,0,0,0; 7200,0,0,0; 10800,0,0,0; 14400,0,0,0; 18000,0,0,
        0; 21600,0,0,0; 25200,0,0,0; 25200,80,80,200; 28800,80,80,200; 32400,80,
        80,200; 36000,80,80,200; 39600,80,80,200; 43200,80,80,200; 46800,80,80,
        200; 50400,80,80,200; 54000,80,80,200; 57600,80,80,200; 61200,80,80,200;
        61200,0,0,0; 64800,0,0,0; 72000,0,0,0; 75600,0,0,0; 79200,0,0,0; 82800,
        0,0,0; 86400,0,0,0],
    columns={2,3,4})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,22; 3600,22; 7200,22; 10800,21.9; 14400,21.9; 18000,22; 21600,22.2;
        25200,22.4; 28800,24.4; 32400,24.1; 36000,24.4; 39600,24.7; 43200,24.9;
        46800,25.1; 50400,25.2; 54000,25.3; 57600,26; 61200,25.9; 64800,24.3;
        68400,24.2; 72000,24.1; 75600,24.1; 79200,24.1; 82800,24.1; 86400,24.1;
        781200,34.9; 784800,34.8; 788400,34.7; 792000,34.6; 795600,34.7; 799200,
        34.8; 802800,34.9; 806400,36.9; 810000,36.6; 813600,36.8; 817200,37;
        820800,37.2; 824400,37.3; 828000,37.4; 831600,37.4; 835200,38.1; 838800,
        38; 842400,36.4; 846000,36.2; 849600,36.1; 853200,36.1; 856800,36;
        860400,35.9; 864000,35.9; 5101200,44.9; 5104800,44.8; 5108400,44.7;
        5112000,44.6; 5115600,44.6; 5119200,44.6; 5122800,44.8; 5126400,46.7;
        5130000,46.3; 5133600,46.5; 5137200,46.7; 5140800,46.8; 5144400,46.9;
        5148000,47; 5151600,47; 5155200,47.6; 5158800,47.5; 5162400,45.8;
        5166000,45.6; 5169600,45.4; 5173200,45.4; 5176800,45.3; 5180400,45.2;
        5184000,45.1],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.CombiTimeTable outdoorTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    table=[0,291.95; 3600,291.95; 3600,290.25; 7200,290.25; 7200,289.65; 10800,
        289.65; 10800,289.25; 14400,289.25; 14400,289.65; 18000,289.65; 18000,
        290.95; 21600,290.95; 21600,293.45; 25200,293.45; 25200,295.95; 28800,
        295.95; 28800,297.95; 32400,297.95; 32400,299.85; 36000,299.85; 36000,
        301.25; 39600,301.25; 39600,302.15; 43200,302.15; 43200,302.85; 46800,
        302.85; 46800,303.55; 50400,303.55; 50400,304.05; 54000,304.05; 54000,
        304.15; 57600,304.15; 57600,303.95; 61200,303.95; 61200,303.25; 64800,
        303.25; 64800,302.05; 68400,302.05; 68400,300.15; 72000,300.15; 72000,
        297.85; 75600,297.85; 75600,296.05; 79200,296.05; 79200,295.05; 82800,
        295.05; 82800,294.05; 86400,294.05])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWindow(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    table=[0,0; 3600,0; 10800,0; 14400,0; 14400,17; 18000,17; 18000,38; 21600,
        38; 21600,59; 25200,59; 25200,98; 28800,98; 28800,186; 32400,186; 32400,
        287; 36000,287; 36000,359; 39600,359; 39600,385; 43200,385; 43200,359;
        46800,359; 46800,287; 50400,287; 50400,186; 54000,186; 54000,98; 57600,
        98; 57600,59; 61200,59; 61200,38; 64800,38; 64800,17; 68400,17; 68400,0;
        72000,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open(k=1)
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1(
    threshold=100)
    ;
  
Modelica.Blocks.Math.Product product1
    ;
  
Modelica.Blocks.Logical.Switch switch1
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(outdoorTemp.y[1], preTem.T);
  
connect(perRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(intGai.y[1], perRad.Q_flow);
  
connect(intGai.y[2], perCon.Q_flow);
  
connect(intGai.y[3], macConv.Q_flow);
  
connect(tableSolRadWindow.y[1],greaterThreshold1. u);
  
connect(sunblind_open.y, switch1.u3);
  
connect(g_sunblind.y, switch1.u1);
  
connect(tableSolRadWindow.y[1], product1.u1);
  
connect(greaterThreshold1.y, switch1.u2);
  
connect(switch1.y, product1.u2);
  
connect(perCon.port, thermalZoneTwoElements.intGainsConv);
  
connect(macConv.port, thermalZoneTwoElements.intGainsConv);
  
connect(product1.y, thermalZoneTwoElements.solRad[1]);
  
connect(thermalZoneTwoElements.TAir, mean.u);
  
connect(mean.y, assEqu.u2);
  
connect(reference.y[1], assEqu.u1);
end TestCase5;
 
VDI 6007 Test Case 6 model
 
Information
  Test Case 6 of the VDI 6007 Part 1: Calculation of heat load excited with a
  given radiative heat source and a setpoint profile for room version S. Is
  based on Test Case 2.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates heat load calculation without
  maximum heating power.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase6 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    hRad=5,
    VAir=0,
    nOrientations=1,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    intWallRC(thermCapInt(
each der_T(fixed=true))),
    RExt={0.004367913},
    CExt={1600800},
    RInt={0.000595515},
    CInt={14836200},
    RExtRem=0.038959197,
    T_start=295.15)
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 25200,-764;
        28800,-696; 32400,-632; 36000,-570; 39600,-511; 43200,-455; 46800,-402;
        50400,-351; 54000,-302; 57600,-255; 61200,-210; 64800,-167; 68400,638;
        72000,610; 75600,583; 79200,557; 82800,533; 86400,511; 781200,774;
        784800,742; 788400,711; 792000,682; 795600,654; 799200,627; 802800,-163;
        806400,-120; 810000,-79; 813600,-40; 817200,-2; 820800,33; 824400,67;
        828000,99; 831600,130; 835200,159; 838800,187; 842400,214; 846000,1004;
        849600,960; 853200,919; 856800,880; 860400,843; 864000,808; 5101200,774;
        5104800,742; 5108400,711; 5112000,682; 5115600,654; 5119200,627;
        5122800,-163; 5126400,-120; 5130000,-78; 5133600,-39; 5137200,-2;
        5140800,33; 5144400,67; 5148000,99; 5151600,130; 5155200,159; 5158800,
        187; 5162400,214; 5166000,1004; 5169600,960; 5173200,919; 5176800,880;
        5180400,843; 5184000,808])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor
    ;
  
Buildings.HeatTransfer.Sources.PrescribedTemperature preTem1
    ;
  
Modelica.Blocks.Sources.CombiTimeTable setTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments,
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        21600.1,27; 28800,27; 32400,27; 36000,27; 39600,27; 43200,27; 46800,27;
        50400,27; 54000,27; 57600,27; 61200,27; 64800,27; 64800.1,22; 72000,22;
        75600,22; 79200,22; 82800,22; 86400,22])
    ;
  
Modelica.Blocks.Math.UnitConversions.From_degC from_degC
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=1.5)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], machinesRad.Q_flow);
  
connect(machinesRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(preTem1.port, heatFlowSensor.port_b);
  
connect(heatFlowSensor.port_a, thermalZoneTwoElements.intGainsConv);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(preTem.port, theConWall.fluid);
  
connect(from_degC.y, preTem1.T);
  
connect(setTemp.y[1], from_degC.u);
  
connect(mean.y,assEqu. u2);
  
connect(reference.y[1],assEqu. u1);
  
connect(heatFlowSensor.Q_flow, mean.u);
end TestCase6;
 
VDI 6007 Test Case 7 model
 
Information
  Test Case 7 of the VDI 6007 Part 1: Calculation of heat load excited with a
  given radiative heat source and a setpoint profile for room version S. Is
  similar with Test Case 6, but with a maximum heating/cooling power.
  Boundary conditions
  
  - constant outdoor air temperature 22°C
- no solar or short-wave radiation on the exterior wall
- no solar or short-wave radiation through the windows
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates heat load calculation with
  maximum heating power.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase7 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    nInt=1,
    ratioWinConRad=0,
    AInt=75.5,
    hConInt=2.24,
    RWin=0.00000001,
    hRad=5,
    RExt={0.00436791293674},
    RExtRem=0.03895919557,
    CExt={1600848.94},
    RInt={0.000595693407511},
    CInt={14836354.6282},
    VAir=0,
    nOrientations=1,
    AWin={0},
    ATransparent={0},
    AExt={10.5},
    extWallRC(thermCapExt(
each der_T(fixed=true))),
    intWallRC(thermCapInt(
each der_T(fixed=true))),
    T_start=295.15)
    ;
  
Buildings.HeatTransfer.Sources.FixedTemperature preTem(
    T=295.15)
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall(Q_flow(start=0))
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 21600,1000;
        25200,1000; 28800,1000; 32400,1000; 36000,1000; 39600,1000; 43200,1000;
        46800,1000; 50400,1000; 54000,1000; 57600,1000; 61200,1000; 64800,1000;
        64800,0; 68400,0; 72000,0; 75600,0; 79200,0; 82800,0; 86400,0],
    columns={2})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,0; 3600,0; 7200,0; 10800,0; 14400,0; 18000,0; 21600,0; 25200,500;
        28800,500; 32400,500; 36000,500; 39600,500; 43200,481; 46800,426; 50400,
        374; 54000,324; 57600,276; 61200,230; 64800,186; 68400,-500; 72000,-500;
        75600,-500; 79200,-500; 82800,-500; 86400,-500; 781200,-500; 784800,-500;
        788400,-500; 792000,-500; 795600,-500; 799200,-500; 802800,-142; 806400,
        -172; 810000,-201; 813600,-228; 817200,-254; 820800,-278; 824400,-302;
        828000,-324; 831600,-345; 835200,-366; 838800,-385; 842400,-404; 846000,
        -500; 849600,-500; 853200,-500; 856800,-500; 860400,-500; 864000,-500;
        5101200,-500; 5104800,-500; 5108400,-500; 5112000,-500; 5115600,-500;
        5119200,-500; 5122800,-149; 5126400,-179; 5130000,-207; 5133600,-234;
        5137200,-259; 5140800,-284; 5144400,-307; 5148000,-329; 5151600,-350;
        5155200,-371; 5158800,-390; 5162400,-408; 5166000,-500; 5169600,-500;
        5173200,-500; 5176800,-500; 5180400,-500; 5184000,-500])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*10.5)
    ;
  
Modelica.Blocks.Sources.Constant const(k=0)
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow heaCoo
    ;
  
Modelica.Blocks.Sources.CombiTimeTable setTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments,
    table=[0,22; 3600,22; 7200,22; 10800,22; 14400,22; 18000,22; 21600,22;
        21600.1,27; 28800,27; 32400,27; 36000,27; 39600,27; 43200,27; 46800,27;
        50400,27; 54000,27; 57600,27; 61200,27; 64800,27; 64800.1,22; 72000,22;
        75600,22; 79200,22; 82800,22; 86400,22])
    ;
  
Modelica.Blocks.Math.UnitConversions.From_degC from_degC
    ;
  
Controls.Continuous.LimPID conHeaCoo(
    controllerType=Modelica.Blocks.Types.SimpleController.PI,
    yMax=1,
    yMin=-1,
    k=0.1,
    Ti=4)
    ;
  
Modelica.Blocks.Math.Gain gainHeaCoo(k=500)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=1.5)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
  
Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor
    ;
  
Modelica.Blocks.Math.Gain gainMea(k=-1)
    ;
equation 
  connect(theConWall.fluid, preTem.port);
  
connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(intGai.y[1], machinesRad.Q_flow);
  
connect(machinesRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(const.y, thermalZoneTwoElements.solRad[1]);
  
connect(from_degC.y, conHeaCoo.u_s);
  
connect(thermalZoneTwoElements.TAir, conHeaCoo.u_m);
  
connect(conHeaCoo.y, gainHeaCoo.u);
  
connect(gainHeaCoo.y, heaCoo.Q_flow);
  
connect(setTemp.y[1], from_degC.u);
  
connect(mean.y,assEqu. u2);
  
connect(reference.y[1],assEqu. u1);
  
connect(heaCoo.port, heatFlowSensor.port_b);
  
connect(heatFlowSensor.port_a, thermalZoneTwoElements.intGainsConv);
  
connect(mean.u, gainMea.y);
  
connect(gainMea.u, heatFlowSensor.Q_flow);
end TestCase7;
 
VDI 6007 Test Case 8 model
 
Information
  Test Case 8 of the VDI 6007 Part 1: Calculation of indoor air
  temperature excited by a radiative and convective heat source for
  room version S with two exterior walls. It is based on Test Case 5.
  Boundary conditions
  
  - daily profile for outdoor air temperature in hourly steps
- daily profile for solar radiation on the exterior wall
- daily profile for solar radiation through the windows in hourly
  steps
- sunblind closes at >100 W/m2
- no long-wave radiation exchange between exterior wall, windows
  and ambient environment
This test validates reaction of indoor air
  temperature at mixed internal gains and outdoor impacts including
  solar radiation on exterior walls.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase8 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    RWin=0.00000001,
    ratioWinConRad=0.09,
    RExt={0.0017362530106},
    CExt={5259932.23},
    AInt=60.5,
    hConInt=2.12,
    RInt={0.000668895639141},
    CInt={12391363.8631},
    RExtRem=0.01913729904,
    VAir=0,
    nOrientations=2,
    AWin={0,0},
    ATransparent={7,7},
    AExt={10.5,15},
    T_start=295.15,
    extWallRC(thermCapExt(
each T(fixed=true))),
    intWallRC(thermCapInt(
each T(fixed=true))))
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0,0,0; 3600,0,0,0; 7200,0,0,0; 10800,0,0,0; 14400,0,0,0; 18000,0,0,
        0; 21600,0,0,0; 25200,0,0,0; 25200,80,80,200; 28800,80,80,200; 32400,80,
        80,200; 36000,80,80,200; 39600,80,80,200; 43200,80,80,200; 46800,80,80,
        200; 50400,80,80,200; 54000,80,80,200; 57600,80,80,200; 61200,80,80,200;
        61200,0,0,0; 64800,0,0,0; 72000,0,0,0; 75600,0,0,0; 79200,0,0,0; 82800,
        0,0,0; 86400,0,0,0],
    columns={2,3,4})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,22; 3600,22; 7200,21.9; 10800,21.9; 14400,21.8; 18000,22; 21600,
        22.3; 25200,22.7; 28800,24.8; 32400,24.7; 36000,25.2; 39600,25.6; 43200,
        26.1; 46800,25.9; 50400,26.3; 54000,26.6; 57600,27.5; 61200,27.6; 64800,
        26; 68400,25.8; 72000,25.6; 75600,25.6; 79200,25.5; 82800,25.5; 86400,
        25.5; 781200,37.6; 784800,37.5; 788400,37.3; 792000,37.1; 795600,37.1;
        799200,37.3; 802800,37.5; 806400,39.6; 810000,39.4; 813600,39.7; 817200,
        40; 820800,40.3; 824400,40; 828000,40.3; 831600,40.5; 835200,41.3;
        838800,41.3; 842400,39.6; 846000,39.2; 849600,38.9; 853200,38.8; 856800,
        38.7; 860400,38.5; 864000,38.4; 5101200,40.9; 5104800,40.7; 5108400,
        40.5; 5112000,40.2; 5115600,40.3; 5119200,40.4; 5122800,40.6; 5126400,
        42.6; 5130000,42.4; 5133600,42.7; 5137200,43; 5140800,43.3; 5144400,43;
        5148000,43.2; 5151600,43.4; 5155200,44.2; 5158800,44.1; 5162400,42.4;
        5166000,42; 5169600,41.7; 5173200,41.6; 5176800,41.4; 5180400,41.2;
        5184000,41.1],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*25.5)
    ;
  
Modelica.Blocks.Sources.CombiTimeTable outdoorTemp1(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    table=[0,291.95; 3600,291.95; 3600,290.25; 7200,290.25; 7200,289.65; 10800,
        289.65; 10800,289.25; 14400,289.25; 14400,289.65; 18000,289.65; 18000,
        290.95; 21600,290.95; 21600,293.45; 25200,293.45; 25200,295.95; 28800,
        295.95; 28800,297.95; 32400,297.95; 32400,299.85; 36000,299.85; 36000,
        301.25; 39600,301.25; 39600,302.15; 43200,302.15; 43200,302.85; 46800,
        302.85; 46800,303.55; 50400,303.55; 50400,304.05; 54000,304.05; 54000,
        304.15; 57600,304.15; 57600,303.95; 61200,303.95; 61200,303.25; 64800,
        303.25; 64800,302.05; 68400,302.05; 68400,300.15; 72000,300.15; 72000,
        297.85; 75600,297.85; 75600,296.05; 79200,296.05; 79200,295.05; 82800,
        295.05; 82800,294.05; 86400,294.05])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWindow(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    table=[0,0,0; 3600,0,0; 10800,0,0; 14400,0,0; 14400,17,17; 18000,17,17;
        18000,38,36; 21600,38,36; 21600,59,51; 25200,59,51; 25200,98,64; 28800,
        98,64; 28800,186,74; 32400,186,74; 32400,287,84; 36000,287,84; 36000,
        359,92; 39600,359,92; 39600,385,100; 43200,385,100; 43200,359,180;
        46800,359,180; 46800,287,344; 50400,287,344; 50400,186,475; 54000,186,
        475; 54000,98,528; 57600,98,528; 57600,59,492; 61200,59,492; 61200,38,
        359; 64800,38,359; 64800,17,147; 68400,17,147; 68400,0,0; 72000,0,0;
        82800,0,0; 86400,0,0],
    columns={2,3})
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open(k=1)
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1(
    threshold=100)
    ;
  
Modelica.Blocks.Math.Product product1
    ;
  
Modelica.Blocks.Logical.Switch switch1
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold2(threshold=100)
    ;
  
Modelica.Blocks.Math.Product product
    ;
  
EquivalentAirTemperature.VDI6007 eqAirTemp(
    n=2,
    wfGro=0,
    aExt=0.7,
    hConWallOut=20,
    hRad=5,
    withLongwave=false,
    wfWall={0.05796831135677373,0.13249899738691134},
    wfWin={0.4047663456281575,0.4047663456281575},
    TGro=285.15)
    ;
  
Modelica.Blocks.Sources.Constant const(k=273.15)
    ;
  
Modelica.Blocks.Math.Add add(k1=-1)
    ;
  
Modelica.Blocks.Sources.Constant const1(k=1)
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWall(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    columns={2,3},
    table=[0,0,0; 3600,0,0; 10800,0,0; 14400,0,0; 14400,24,23; 18000,24,23; 18000,
        58,53; 21600,58,53; 21600,91,77; 25200,91,77; 25200,203,97; 28800,203,97;
        28800,348,114; 32400,348,114; 32400,472,131; 36000,472,131; 36000,553,144;
        39600,553,144; 39600,581,159; 43200,581,159; 43200,553,372; 46800,553,372;
        46800,472,557; 50400,472,557; 50400,348,685; 54000,348,685; 54000,203,733;
        57600,203,733; 57600,91,666; 61200,91,666; 61200,58,474; 64800,58,474; 64800,
        24,177; 68400,24,177; 68400,0,0; 72000,0,0; 82800,0,0; 86400,0,0])
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind1(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open1(k=1)
    ;
  
Modelica.Blocks.Logical.Switch switch2
    ;
  
Modelica.Blocks.Math.Add add1(k1=-1)
    ;
  
Modelica.Blocks.Sources.Constant const2(k=1)
    ;
  
Buildings.HeatTransfer.Sources.PrescribedTemperature preTem
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(perRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(intGai.y[1], perRad.Q_flow);
  
connect(intGai.y[2], perCon.Q_flow);
  
connect(intGai.y[3], macConv.Q_flow);
  
connect(tableSolRadWindow.y[1],greaterThreshold1. u);
  
connect(sunblind_open.y, switch1.u3);
  
connect(g_sunblind.y, switch1.u1);
  
connect(tableSolRadWindow.y[1], product1.u1);
  
connect(tableSolRadWindow.y[2], greaterThreshold2.u);
  
connect(tableSolRadWindow.y[2], product.u1);
  
connect(outdoorTemp1.y[1], eqAirTemp.TDryBul);
  
connect(const.y, eqAirTemp.TBlaSky);
  
connect(const1.y, add.u2);
  
connect(tableSolRadWall.y, eqAirTemp.HSol);
  
connect(switch1.y, add.u1);
  
connect(greaterThreshold1.y, switch1.u2);
  
connect(sunblind_open1.y, switch2.u3);
  
connect(g_sunblind1.y, switch2.u1);
  
connect(const2.y, add1.u2);
  
connect(switch2.y, add1.u1);
  
connect(greaterThreshold2.y, switch2.u2);
  
connect(switch2.y, product.u2);
  
connect(switch1.y, product1.u2);
  
connect(eqAirTemp.TEqAir, preTem.T);
  
connect(preTem.port, theConWall.fluid);
  
connect(add.y, eqAirTemp.sunblind[1]);
  
connect(add1.y, eqAirTemp.sunblind[2]);
  
connect(perCon.port, thermalZoneTwoElements.intGainsConv);
  
connect(macConv.port, thermalZoneTwoElements.intGainsConv);
  
connect(product1.y, thermalZoneTwoElements.solRad[1]);
  
connect(product.y, thermalZoneTwoElements.solRad[2]);
  
connect(thermalZoneTwoElements.TAir,mean. u);
  
connect(mean.y,assEqu. u2);
  
connect(reference.y[1],assEqu. u1);
end TestCase8;
 
VDI 6007 Test Case 9 model
 
Information
  Test Case 9 of the VDI 6007 Part 1: Calculation of indoor air
  temperature excited by a radiative and convective heat source for
  room version S with two exterior walls. It is based on Test Case 8.
  Boundary conditions
  
  - daily profile for outdoor air temperature in hourly steps
- daily profile for solar radiation on the exterior wall
- daily profile for solar radiation through the windows in hourly
  steps
- sunblind closes at >100 W/m2
- long-wave radiation exchange between exterior wall, windows and
  ambient environment
This test validates reaction of indoor air
  temperature at mixed internal gains and outdoor impacts including
  solar radiation and long-wave radiation on exterior walls.
  
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model TestCase9 
  
extends Modelica.Icons.Example;
  
RC.TwoElements thermalZoneTwoElements(
    
redeclare final package Medium = 
Modelica.Media.Air.SimpleAir,
    hConExt=2.7,
    hConWin=2.7,
    gWin=1,
    nExt=1,
    hRad=5,
    nInt=1,
    RWin=0.00000001,
    ratioWinConRad=0.09,
    RExt={0.0017362530106},
    CExt={5259932.23},
    AInt=60.5,
    hConInt=2.12,
    RInt={0.000668895639141},
    CInt={12391363.8631},
    RExtRem=0.01913729904,
    VAir=0,
    nOrientations=2,
    AWin={0,0},
    ATransparent={7,7},
    AExt={10.5,15},
    T_start=295.15,
    extWallRC(thermCapExt(
each T(fixed=true))),
    intWallRC(thermCapInt(
each T(fixed=true))))
    ;
  
Modelica.Thermal.HeatTransfer.Components.Convection theConWall
    ;
  
Modelica.Blocks.Sources.CombiTimeTable intGai(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    table=[0,0,0,0; 3600,0,0,0; 7200,0,0,0; 10800,0,0,0; 14400,0,0,0; 18000,0,0,
        0; 21600,0,0,0; 25200,0,0,0; 25200,80,80,200; 28800,80,80,200; 32400,80,
        80,200; 36000,80,80,200; 39600,80,80,200; 43200,80,80,200; 46800,80,80,
        200; 50400,80,80,200; 54000,80,80,200; 57600,80,80,200; 61200,80,80,200;
        61200,0,0,0; 64800,0,0,0; 72000,0,0,0; 75600,0,0,0; 79200,0,0,0; 82800,
        0,0,0; 86400,0,0,0],
    columns={2,3,4})
    ;
  
Modelica.Blocks.Sources.CombiTimeTable reference(
    tableOnFile=false,
    columns={2},
    extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
    smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
    table=[0,22; 3600,22; 7200,21.9; 10800,21.9; 14400,21.8; 18000,22; 21600,
        22.3; 25200,22.7; 28800,24.8; 32400,24.7; 36000,25.2; 39600,25.6; 43200,
        26.1; 46800,25.9; 50400,26.3; 54000,26.6; 57600,27.5; 61200,27.6; 64800,
        26; 68400,25.8; 72000,25.6; 75600,25.6; 79200,25.5; 82800,25.5; 86400,
        25.5; 781200,37.6; 784800,37.4; 788400,37.3; 792000,37.1; 795600,37.1;
        799200,37.3; 802800,37.5; 806400,39.6; 810000,39.4; 813600,39.7; 817200,
        40; 820800,40.3; 824400,40; 828000,40.3; 831600,40.5; 835200,41.3;
        838800,41.3; 842400,39.6; 846000,39.2; 849600,38.9; 853200,38.8; 856800,
        38.7; 860400,38.5; 864000,38.4; 5101200,40.8; 5104800,40.6; 5108400,
        40.4; 5112000,40.2; 5115600,40.2; 5119200,40.4; 5122800,40.5; 5126400,
        42.6; 5130000,42.3; 5133600,42.6; 5137200,42.9; 5140800,43.2; 5144400,
        42.9; 5148000,43.2; 5151600,43.4; 5155200,44.1; 5158800,44.1; 5162400,
        42.3; 5166000,42; 5169600,41.6; 5173200,41.5; 5176800,41.3; 5180400,
        41.2; 5184000,41],
    offset={273.15})
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv
    ;
  
Modelica.Blocks.Sources.Constant hConWall(k=25*25.5)
    ;
  
Modelica.Blocks.Sources.CombiTimeTable outdoorTemp(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    table=[0,291.95; 3600,291.95; 3600,290.25; 7200,290.25; 7200,289.65; 10800,
        289.65; 10800,289.25; 14400,289.25; 14400,289.65; 18000,289.65; 18000,
        290.95; 21600,290.95; 21600,293.45; 25200,293.45; 25200,295.95; 28800,
        295.95; 28800,297.95; 32400,297.95; 32400,299.85; 36000,299.85; 36000,
        301.25; 39600,301.25; 39600,302.15; 43200,302.15; 43200,302.85; 46800,
        302.85; 46800,303.55; 50400,303.55; 50400,304.05; 54000,304.05; 54000,
        304.15; 57600,304.15; 57600,303.95; 61200,303.95; 61200,303.25; 64800,
        303.25; 64800,302.05; 68400,302.05; 68400,300.15; 72000,300.15; 72000,
        297.85; 75600,297.85; 75600,296.05; 79200,296.05; 79200,295.05; 82800,
        295.05; 82800,294.05; 86400,294.05])
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad
    ;
  
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWindow(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    table=[0,0,0; 3600,0,0; 10800,0,0; 14400,0,0; 14400,17,17; 18000,17,17;
        18000,38,36; 21600,38,36; 21600,59,51; 25200,59,51; 25200,98,64; 28800,
        98,64; 28800,186,74; 32400,186,74; 32400,287,84; 36000,287,84; 36000,
        359,92; 39600,359,92; 39600,385,100; 43200,385,100; 43200,359,180;
        46800,359,180; 46800,287,344; 50400,287,344; 50400,186,475; 54000,186,
        475; 54000,98,528; 57600,98,528; 57600,59,492; 61200,59,492; 61200,38,
        359; 64800,38,359; 64800,17,147; 68400,17,147; 68400,0,0; 72000,0,0;
        82800,0,0; 86400,0,0],
    columns={2,3})
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open(k=1)
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1(
    threshold=100)
    ;
  
Modelica.Blocks.Math.Product product1
    ;
  
Modelica.Blocks.Logical.Switch switch1
    ;
  
Modelica.Blocks.Logical.GreaterThreshold greaterThreshold2(
    threshold=100)
    ;
  
Modelica.Blocks.Math.Product product
    ;
  
EquivalentAirTemperature.VDI6007 eqAirTemp(
    n=2,
    wfGro=0,
    aExt=0.7,
    hConWallOut=20,
    hRad=5,
    wfWall={0.05796831135677373,0.13249899738691134},
    wfWin={0.4047663456281575,0.4047663456281575},
    withLongwave=true,
    TGro=285.15)
    ;
  
Modelica.Blocks.Math.Add add(k1=-1)
    ;
  
Modelica.Blocks.Sources.Constant const1(k=1)
    ;
  
Modelica.Blocks.Sources.CombiTimeTable tableSolRadWall(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    tableOnFile=false,
    columns={2,3},
    table=[0,0,0; 3600,0,0; 10800,0,0; 14400,0,0; 14400,24,23; 18000,24,23; 18000,
        58,53; 21600,58,53; 21600,91,77; 25200,91,77; 25200,203,97; 28800,203,97;
        28800,348,114; 32400,348,114; 32400,472,131; 36000,472,131; 36000,553,144;
        39600,553,144; 39600,581,159; 43200,581,159; 43200,553,372; 46800,553,372;
        46800,472,557; 50400,472,557; 50400,348,685; 54000,348,685; 54000,203,733;
        57600,203,733; 57600,91,666; 61200,91,666; 61200,58,474; 64800,58,474; 64800,
        24,177; 68400,24,177; 68400,0,0; 72000,0,0; 82800,0,0; 86400,0,0])
    ;
  
Modelica.Blocks.Sources.Constant g_sunblind1(k=0.15)
    ;
  
Modelica.Blocks.Sources.Constant sunblind_open1(k=1)
    ;
  
Modelica.Blocks.Logical.Switch switch2
    ;
  
Modelica.Blocks.Math.Add add1(k1=-1)
    ;
  
Modelica.Blocks.Sources.Constant const2(k=1)
    ;
  
Buildings.HeatTransfer.Sources.PrescribedTemperature preTem
    ;
  
Modelica.Blocks.Sources.CombiTimeTable HSky(
    extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic,
    columns={2},
    table=[0,362.5; 0.36,362.5; 3600,364; 7200,364; 7200,364.5; 10800,364.5;
        10800,364; 14400,364; 14400,380.5; 18000,380.5; 18000,390.5; 21600,
        390.5; 21600,400.5; 25200,400.5; 25200,414; 28800,414; 28800,427.5;
        32400,427.5; 32400,439; 36000,439; 36000,448.5; 39600,448.5; 39600,457;
        43200,457; 43200,459.5; 46800,459.5; 46800,460; 50400,460; 50400,457.5;
        54000,457.5; 54000,452.5; 57600,452.5; 57600,445; 61200,445; 61200,
        438.5; 64800,438.5; 64800,437; 68400,437; 68400,420; 72000,420; 72000,
        412.5; 75600,412.5; 75600,405; 79200,405; 79200,397.5; 82800,397.5;
        82800,390; 86400,390])
    ;
  
Modelica.Blocks.Math.Sqrt sqrt
    ;
  
Modelica.Blocks.Math.Sqrt sqrt1
    ;
  
Modelica.Blocks.Math.Gain gain(k=65.99081593)
    ;
  
BaseClasses.VerifyDifferenceThreePeriods assEqu(
    startTime=3600,
    endTime=86400,
    startTime2=781200,
    endTime2=864000,
    startTime3=5101200,
    endTime3=5184000,
    threShold=0.15)
    ;
  
Modelica.Blocks.Math.Mean mean(f=1/3600)
    ;
equation 
  connect(thermalZoneTwoElements.extWall, theConWall.solid);
  
connect(hConWall.y, theConWall.Gc);
  
connect(perRad.port, thermalZoneTwoElements.intGainsRad);
  
connect(intGai.y[1], perRad.Q_flow);
  
connect(intGai.y[2], perCon.Q_flow);
  
connect(intGai.y[3], macConv.Q_flow);
  
connect(tableSolRadWindow.y[1],greaterThreshold1. u);
  
connect(sunblind_open.y, switch1.u3);
  
connect(g_sunblind.y, switch1.u1);
  
connect(tableSolRadWindow.y[1], product1.u1);
  
connect(tableSolRadWindow.y[2], greaterThreshold2.u);
  
connect(tableSolRadWindow.y[2], product.u1);
  
connect(const1.y, add.u2);
  
connect(tableSolRadWall.y, eqAirTemp.HSol);
  
connect(switch1.y, add.u1);
  
connect(greaterThreshold1.y, switch1.u2);
  
connect(sunblind_open1.y, switch2.u3);
  
connect(g_sunblind1.y, switch2.u1);
  
connect(const2.y, add1.u2);
  
connect(switch2.y, add1.u1);
  
connect(greaterThreshold2.y, switch2.u2);
  
connect(switch2.y, product.u2);
  
connect(switch1.y, product1.u2);
  
connect(eqAirTemp.TEqAir, preTem.T);
  
connect(preTem.port, theConWall.fluid);
  
connect(add.y, eqAirTemp.sunblind[1]);
  
connect(add1.y, eqAirTemp.sunblind[2]);
  
connect(outdoorTemp.y[1], eqAirTemp.TDryBul);
  
connect(HSky.y[1], sqrt.u);
  
connect(sqrt.y, sqrt1.u);
  
connect(sqrt1.y, gain.u);
  
connect(gain.y, eqAirTemp.TBlaSky);
  
connect(perCon.port, thermalZoneTwoElements.intGainsConv);
  
connect(macConv.port, thermalZoneTwoElements.intGainsConv);
  
connect(product1.y, thermalZoneTwoElements.solRad[1]);
  
connect(product.y, thermalZoneTwoElements.solRad[2]);
  
connect(thermalZoneTwoElements.TAir,mean. u);
  
connect(mean.y,assEqu. u2);
  
connect(reference.y[1],assEqu. u1);
end TestCase9;