IEA EBC Annex 60 EBC logo

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007

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 caclulated 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
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase1 TestCase1 VDI 6007 Test Case 1 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase10 TestCase10 VDI 6007 Test Case 10 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase11 TestCase11 VDI 6007 Test Case 11 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase12 TestCase12 VDI 6007 Test Case 12 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase2 TestCase2 VDI 6007 Test Case 2 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase3 TestCase3 VDI 6007 Test Case 3 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase4 TestCase4 VDI 6007 Test Case 4 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase5 TestCase5 VDI 6007 Test Case 5 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase6 TestCase6 VDI 6007 Test Case 6 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase7 TestCase7 VDI 6007 Test Case 7 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase8 TestCase8 VDI 6007 Test Case 8 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase9 TestCase9 VDI 6007 Test Case 9 model
Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.BaseClasses BaseClasses Base classes for VDI 6007 validation cases

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase1 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase1

VDI 6007 Test Case 1 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase1

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

This test validates basic functionalities.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase1 "VDI 6007 Test Case 1 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, alphaRad=5, nInt=1, ratioWinConRad=0, AInt=75.5, alphaInt=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) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem(T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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]) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase10 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase10

VDI 6007 Test Case 10 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase10

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

This test validates linking to ajdacent rooms with fixed temperature.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase10 "VDI 6007 Test Case 10 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare final package Medium = Modelica.Media.Air.SimpleAir, gWin=1, nExt=1, alphaRad=5, nInt=1, RWin=0.00000001, ratioWinConRad=0.09, AInt=58, alphaWin=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))), alphaInt=2.398, T_start=290.75, alphaExt=2.4); Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Outdoor air temperature"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow persons"; 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}) "Solar radiation"; Modelica.Blocks.Sources.Constant g_sunblind(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1( threshold=100) "Threshold for sunblind for one direction"; Modelica.Blocks.Math.Product product1 "Solar radiation times g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Logical.Switch switch1 "Determines g value for sunblind (open or closed) for one direction"; 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]) "Outdoor air temperature"; EquivalentAirTemperature.VDI6007 eqAirTemp( aExt=0.7, alphaWallOut=20, alphaRad=5, withLongwave=false, n=1, wfWall={0.04646093176283288}, wfWin={0.32441554918476245}, wfGro=0.6291235190524047, TGro=288.15) "Equivalent air temperature"; Modelica.Blocks.Sources.Constant const(k=273.15) "Dummy black body sky temperature"; Modelica.Blocks.Sources.Constant HSol(k=0) "Solar radiation on walls"; Modelica.Blocks.Sources.Constant sunblind(k=0) "Dummy for g value of sunblinds (open)"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; Modelica.Blocks.Sources.Constant alphaWall(k=28*9.75) "Outdoor coefficient of heat transfer for walls"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; 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(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase11 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase11

VDI 6007 Test Case 11 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase11

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

This test validates implementation of cooling ceiling or floor heating.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase11 "VDI 6007 Test Case 11 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, nInt=1, ratioWinConRad=0, AInt=75.5, RWin=0.00000001, alphaRad=5, RExt={0.00436791293674}, RExtRem=0.03895919557, CExt={1600848.94}, RInt={0.000595693407511}, CInt={14836354.6282}, alphaInt=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem( T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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]) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad "Radiative heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow heat "Ideal heater with limit"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow cool "Ideal cooler with limit"; 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]) "Set temperature for ideal heater/cooler"; Modelica.Blocks.Math.UnitConversions.From_degC from_degC "Convert set temperature from degC to Kelvin"; Modelica.Blocks.Math.Gain gainHea(k=500) "Gain for heating"; Controls.Continuous.LimPID conHeaCoo( yMin=-1, Td=5, controllerType=Modelica.Blocks.Types.SimpleController.PI, yMax=1, k=0.1, Ti=1.2) "Heating and cooling controller"; Modelica.Blocks.Math.Gain gainCoo(k=500) "Gain for cooling"; Modelica.Blocks.Logical.Switch switchCoo "Switch to limit cooling power"; Modelica.Blocks.Logical.Hysteresis hysteresis( uLow=-0.0000001, uHigh=0.0000001, y(start=true)) "Threshold for switching between heating and cooling"; Modelica.Blocks.Sources.Constant DefPow(k=0) "Default power"; Modelica.Blocks.Logical.Switch switchHea "Switch to limit heating power"; Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor "Sensor for ideal heater"; Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor coolFlowSensor "Sensor for ideal cooler"; Modelica.Blocks.Math.Add add(k1=1, k2=-1) "Addition for mean of results"; BaseClasses.VerifyDifferenceThreePeriods assEqu( endTime=86400, endTime2=864000, endTime3=5184000, threShold=1.5, startTime=3600, startTime2=781200, startTime3=5101200) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; Modelica.Blocks.Logical.Switch switchMea "Switch to guess values"; Modelica.Blocks.Logical.Not not1 "Logical not"; Modelica.Blocks.Logical.Timer timer "Timer since the control mode changed"; Modelica.Blocks.Logical.LessEqualThreshold thr(threshold=60) "Threshold to measure 60 seconds"; Modelica.Blocks.Logical.Change cha "Outputs true if the input changes"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase12 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase12

VDI 6007 Test Case 12 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase12

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

This test validates infiltration and ventilation.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase12 "VDI 6007 Test Case 12 model" extends Modelica.Icons.Example; package Medium = Modelica.Media.Air.SimpleAir "Medium model"; RC.TwoElements thermalZoneTwoElements( alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, alphaRad=5, nInt=1, AInt=75.5, alphaInt=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, redeclare final package Medium = Modelica.Media.Air.SimpleAir, 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) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem(port(T( start=300))) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; 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]) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow persons"; 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}) "Solar radiation"; Modelica.Blocks.Sources.Constant g_sunblind(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1(threshold=100) "Threshold for sunblind for one direction"; Modelica.Blocks.Math.Product product1 "Solar radiation times g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Logical.Switch switch1 "Determines g value for sunblind (open or closed) for one direction"; 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]) "Ventilation rate"; Modelica.Blocks.Math.Gain gain(k=0.000330375898) "Conversion to kg/s"; Fluid.Sources.MassFlowSource_T ventilationIn( use_m_flow_in=true, use_T_in=true, nPorts=1, redeclare package Medium = Medium) "Fan"; Fluid.Sources.MassFlowSource_T ventilationOut( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1, use_T_in=false) "Fan"; Modelica.Blocks.Math.Gain gain1(k=-1) "Reverses ventilation rate"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase2 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase2

VDI 6007 Test Case 2 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase2

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

This test validates basic functionalities.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase2 "VDI 6007 Test Case 2 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, nInt=1, ratioWinConRad=0, AInt=75.5, alphaInt=2.24, RWin=0.00000001, alphaRad=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem(T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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]) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad "Radiative heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase3 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase3

VDI 6007 Test Case 3 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase3

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

This test validates basic functionalities.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase3 "VDI 6007 Test Case 3 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, alphaRad=5, nInt=1, ratioWinConRad=0, AInt=75.5, alphaInt=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem(T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase4 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase4

VDI 6007 Test Case 4 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase4

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

This test validates basic functionalities.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase4 "VDI 6007 Test Case 4 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, nInt=1, ratioWinConRad=0, AInt=75.5, alphaInt=2.24, RWin=0.00000001, alphaRad=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem(T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad "Radiative heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase5 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase5

VDI 6007 Test Case 5 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase5

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

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 "VDI 6007 Test Case 5 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, alphaRad=5, nInt=1, AInt=75.5, alphaInt=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; 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]) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow persons"; 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}) "Solar radiation"; Modelica.Blocks.Sources.Constant g_sunblind(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1( threshold=100) "Threshold for sunblind"; Modelica.Blocks.Math.Product product1 "solar radiation times g value for sunblind (open or closed)"; Modelica.Blocks.Logical.Switch switch1 "Determines g value for sunblind (open or closed)"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase6 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase6

VDI 6007 Test Case 6 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase6

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

This test validates heat load calculation without maximum heating power.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase6 "VDI 6007 Test Case 6 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, nInt=1, ratioWinConRad=0, AInt=75.5, alphaInt=2.24, RWin=0.00000001, alphaRad=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) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem(T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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]) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad "Radiative heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor "Sensor for ideal heater/cooler"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem1 "Prescribed temperature for ideal heater/cooler"; 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]) "Set temperature for ideal heater/cooler"; Modelica.Blocks.Math.UnitConversions.From_degC from_degC "Convert set temperature from degC to Kelvin"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=1.5) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase7 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase7

VDI 6007 Test Case 7 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase7

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

This test validates heat load calculation with maximum heating power.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model TestCase7 "VDI 6007 Test Case 7 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, nInt=1, ratioWinConRad=0, AInt=75.5, alphaInt=2.24, RWin=0.00000001, alphaRad=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) "Thermal zone"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature preTem( T=295.15) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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]) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow machinesRad "Radiative heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*10.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant const(k=0) "Solar radiation"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow heaCoo "Ideal heater/cooler with limit"; 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]) "Set temperature for ideal heater/cooler"; Modelica.Blocks.Math.UnitConversions.From_degC from_degC "Convert set temperature from degC to Kelvin"; Controls.Continuous.LimPID conHeaCoo( controllerType=Modelica.Blocks.Types.SimpleController.PI, yMax=1, yMin=-1, k=0.1, Ti=4) "Heating and cooling controller"; Modelica.Blocks.Math.Gain gainHeaCoo(k=500) "Gain for heating and cooling controller"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=1.5) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor "Sensor for ideal heater/cooler"; Modelica.Blocks.Math.Gain gainMea(k=-1) "Gain for mean block"; equation connect(theConWall.fluid, preTem.port); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase8 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase8

VDI 6007 Test Case 8 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase8

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

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 "VDI 6007 Test Case 8 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, alphaRad=5, nInt=1, RWin=0.00000001, ratioWinConRad=0.09, RExt={0.0017362530106}, CExt={5259932.23}, AInt=60.5, alphaInt=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*25.5) "Outdoor coefficient of heat transfer for walls"; 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]) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow persons"; 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}) "Solar radiation"; Modelica.Blocks.Sources.Constant g_sunblind(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1( threshold=100) "Threshold for sunblind for one direction"; Modelica.Blocks.Math.Product product1 "Solar radiation times g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Logical.Switch switch1 "Determines g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold2(threshold=100) "Threshold for sunblind for one direction"; Modelica.Blocks.Math.Product product "Solar radiation times g value for sunblind (open or closed) for one direction"; EquivalentAirTemperature.VDI6007 eqAirTemp( n=2, wfGro=0, aExt=0.7, alphaWallOut=20, alphaRad=5, withLongwave=false, wfWall={0.05796831135677373,0.13249899738691134}, wfWin={0.4047663456281575,0.4047663456281575}, TGro=285.15) "Equivalent air temperature"; Modelica.Blocks.Sources.Constant const(k=273.15) "Dummy black body sky temperature"; Modelica.Blocks.Math.Add add(k1=-1) "Computes 1 - g_sunblind for one direction"; Modelica.Blocks.Sources.Constant const1(k=1) "Constant for 1 - g_sunblind"; 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]) "Solar radiation on walls"; Modelica.Blocks.Sources.Constant g_sunblind1(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open1(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.Switch switch2 "Determines g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Math.Add add1(k1=-1) "Computes 1 - g_sunblind for one direction"; Modelica.Blocks.Sources.Constant const2(k=1) "Constant for 1 - g_sunblind"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Outdoor air temperature"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase9 Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase9

VDI 6007 Test Case 9 model

Annex60.ThermalZones.ReducedOrder.Validation.VDI6007.TestCase9

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

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 "VDI 6007 Test Case 9 model" extends Modelica.Icons.Example; RC.TwoElements thermalZoneTwoElements( redeclare final package Medium = Modelica.Media.Air.SimpleAir, alphaExt=2.7, alphaWin=2.7, gWin=1, nExt=1, alphaRad=5, nInt=1, RWin=0.00000001, ratioWinConRad=0.09, RExt={0.0017362530106}, CExt={5259932.23}, AInt=60.5, alphaInt=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)))) "Thermal zone"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer"; 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}) "Table with internal gains"; 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}) "Reference results"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*25.5) "Outdoor coefficient of heat transfer for walls"; 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]) "Outdoor air temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow persons"; 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}) "Solar radiation"; Modelica.Blocks.Sources.Constant g_sunblind(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold1( threshold=100) "Threshold for sunblind for one direction"; Modelica.Blocks.Math.Product product1 "Solar radiation times g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Logical.Switch switch1 "Determines g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold2( threshold=100) "Threshold for sunblind for one direction"; Modelica.Blocks.Math.Product product "Solar radiation times g value for sunblind (open or closed) for one direction"; EquivalentAirTemperature.VDI6007 eqAirTemp( n=2, wfGro=0, aExt=0.7, alphaWallOut=20, alphaRad=5, wfWall={0.05796831135677373,0.13249899738691134}, wfWin={0.4047663456281575,0.4047663456281575}, withLongwave=true, TGro=285.15) "Equivalent air temperature"; Modelica.Blocks.Math.Add add(k1=-1) "Computes 1 - g_sunblind for one direction"; Modelica.Blocks.Sources.Constant const1(k=1) "Constant for 1 - g_sunblind"; 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]) "Solar radiation on walls"; Modelica.Blocks.Sources.Constant g_sunblind1(k=0.15) "g value for sunblind closed"; Modelica.Blocks.Sources.Constant sunblind_open1(k=1) "g value for sunblind open"; Modelica.Blocks.Logical.Switch switch2 "Determines g value for sunblind (open or closed) for one direction"; Modelica.Blocks.Math.Add add1(k1=-1) "Computes 1 - g_sunblind for one direction"; Modelica.Blocks.Sources.Constant const2(k=1) "Constant for 1 - g_sunblind"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Outdoor air temperature"; 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]) "Long-wave radiation from sky"; Modelica.Blocks.Math.Sqrt sqrt "Root of H_sky for black body sky temperature"; Modelica.Blocks.Math.Sqrt sqrt1 "Root of H_sky for black body sky temperature"; Modelica.Blocks.Math.Gain gain(k=65.99081593) "Convert long-wave radiation into black body sky temperature"; BaseClasses.VerifyDifferenceThreePeriods assEqu( startTime=3600, endTime=86400, startTime2=781200, endTime2=864000, startTime3=5101200, endTime3=5184000, threShold=0.15) "Checks validation criteria"; Modelica.Blocks.Math.Mean mean(f=1/3600) "Hourly mean of indoor air temperature"; equation connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(alphaWall.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;

http://iea-annex60.org