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;