IEA EBC Annex 60 EBC logo

Annex60.ThermalZones.ReducedOrder.Examples

Collection of models that illustrate model use and test models

Information

This packages contains examples for Reduced Order Model applications.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomFourElements SimpleRoomFourElements Illustrates the use of a thermal zone with four heat conduction elements
Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomOneElement SimpleRoomOneElement Illustrates the use of a thermal zone with one heat conduction element
Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomThreeElements SimpleRoomThreeElements Illustrates the use of a thermal zone with three heat conduction elements
Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements SimpleRoomTwoElements Illustrates the use of a thermal zone with two heat conduction elements

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomFourElements Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomFourElements

Illustrates the use of a thermal zone with four heat conduction elements

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomFourElements

Information

This example shows the application of Annex60.ThermalZones.ReducedOrder.RC.FourElements in combination with Annex60.ThermalZones.ReducedOrder.EquivalentAirTemperature.VDI6007WithWindow and Annex60.ThermalZones.ReducedOrder.SolarGain.CorrectionGDoublePane. Solar radiation on tilted surface is calculated using models of Annex60. The thermal zone is a simple room defined in Guideline VDI 6007 Part 1 (VDI, 2012). All models, parameters and inputs except sunblinds, separate handling of heat transfer through windows, an extra wall element for ground floor (with additional area), an extra wall element for roof (with additional area) and solar radiation are similar to the ones defined for the guideline's test room. For solar radiation, the example relies on the standard weather file in Annex60.

The idea of the example is to show a typical application of all sub-models and to use the example in unit tests. The results are reasonable, but not related to any real use case or measurement data.

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.Example (Icon for runnable examples).

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model SimpleRoomFourElements "Illustrates the use of a thermal zone with four heat conduction elements" extends Modelica.Icons.Example; BoundaryConditions.WeatherData.ReaderTMY3 weaDat( calTSky=Annex60.BoundaryConditions.Types.SkyTemperatureCalculation.HorizontalRadiation, computeWetBulbTemperature=false, filNam="modelica://Annex60/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos") "Weather data reader"; BoundaryConditions.SolarIrradiation.DiffusePerez HDifTil[2]( each outSkyCon=true, each outGroCon=true, each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates diffuse solar radiation on titled surface for both directions"; BoundaryConditions.SolarIrradiation.DirectTiltedSurface HDirTil[2]( each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates direct solar radiation on titled surface for both directions"; SolarGain.CorrectionGDoublePane corGDouPan(UWin=2.1, n=2) "Correction factor for solar transmission"; RC.FourElements thermalZoneFourElements( VAir=52.5, alphaExt=2.7, alphaWin=2.7, gWin=1, ratioWinConRad=0.09, nExt=1, RExt={0.00331421908725}, CExt={5259932.23}, alphaRad=5, AInt=60.5, alphaInt=2.12, nInt=1, RInt={0.000668895639141}, CInt={12391363.86}, RWin=0.01642857143, RExtRem=0.1265217391, AFloor=11.5, alphaFloor=2.7, nFloor=1, RFloor={0.00331421908725}, RFloorRem=0.1265217391, CFloor={5259932.23}, ARoof=11.5, alphaRoof=2.7, nRoof=1, RRoof={0.00331421908725}, RRoofRem=0.1265217391, CRoof={5259932.23}, nOrientations=2, AWin={7,7}, ATransparent={7,7}, AExt={3.5,8}, redeclare package Medium = Modelica.Media.Air.SimpleAir, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, extWallRC(thermCapExt(each der_T(fixed=true))), intWallRC(thermCapInt(each der_T(fixed=true))), floorRC(thermCapExt(each der_T(fixed=true))), T_start=295.15, roofRC(thermCapExt(each der_T(fixed=true)))) "Thermal zone"; EquivalentAirTemperature.VDI6007WithWindow eqAirTemp( wfGro=0, withLongwave=true, aExt=0.7, alphaWallOut=20, alphaRad=5, alphaWinOut=20, n=2, wfWall={0.3043478260869566,0.6956521739130435}, wfWin={0.5,0.5}, TGro=285.15) "Computes equivalent air temperature"; Modelica.Blocks.Math.Add solRad[2] "Sums up solar radiation of both directions"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Prescribed temperature for exterior walls outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem1 "Prescribed temperature for windows outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWin "Outdoor convective heat transfer of windows"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer of walls"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow of persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow of persons"; Modelica.Blocks.Sources.CombiTimeTable intGai( 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}, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Table with profiles for persons (radiative and convective) and machines (convective)"; Modelica.Blocks.Sources.Constant const[2](each k=0) "Sets sunblind signal to zero (open)"; BoundaryConditions.WeatherData.Bus weaBus "Weather data bus"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow of machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*11.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant alphaWin(k=20*14) "Outdoor coefficient of heat transfer for windows"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTemFloor "Prescribed temperature for floor plate outdoor surface temperature"; Modelica.Blocks.Sources.Constant TSoil(k=283.15) "Outdoor surface temperature for floor plate"; EquivalentAirTemperature.VDI6007 eqAirTempVDI( aExt=0.7, n=1, wfWall={1}, wfWin={0}, wfGro=0, alphaWallOut=20, alphaRad=5, TGro=285.15) "Computes equivalent air temperature for roof"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTemRoof "Prescribed temperature for roof outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConRoof "Outdoor convective heat transfer of roof"; Modelica.Blocks.Sources.Constant alphaRoof(k=25*11.5) "Outdoor coefficient of heat transfer for roof"; Modelica.Blocks.Sources.Constant const1(k=0) "Sets sunblind signal to zero (open)"; equation connect(eqAirTemp.TEqAirWin, preTem1.T); connect(eqAirTemp.TEqAir, preTem.T); connect(weaDat.weaBus, weaBus); connect(weaBus.TDryBul, eqAirTemp.TDryBul); connect(intGai.y[1], perRad.Q_flow); connect(intGai.y[2], perCon.Q_flow); connect(intGai.y[3], macConv.Q_flow); connect(const.y, eqAirTemp.sunblind); connect(HDifTil.HSkyDifTil, corGDouPan.HSkyDifTil); connect(HDirTil.H, corGDouPan.HDirTil); connect(HDirTil.H,solRad. u1); connect(HDifTil.H,solRad. u2); connect(HDifTil.HGroDifTil, corGDouPan.HGroDifTil); connect(solRad.y, eqAirTemp.HSol); connect(weaDat.weaBus, HDifTil[1].weaBus); connect(weaDat.weaBus, HDifTil[2].weaBus); connect(weaDat.weaBus, HDirTil[1].weaBus); connect(weaDat.weaBus, HDirTil[2].weaBus); connect(perRad.port, thermalZoneFourElements.intGainsRad); connect(theConWin.solid, thermalZoneFourElements.window); connect(preTem1.port, theConWin.fluid); connect(thermalZoneFourElements.extWall, theConWall.solid); connect(theConWall.fluid, preTem.port); connect(alphaWall.y, theConWall.Gc); connect(alphaWin.y, theConWin.Gc); connect(weaBus.TBlaSky, eqAirTemp.TBlaSky); connect(macConv.port, thermalZoneFourElements.intGainsConv); connect(perCon.port, thermalZoneFourElements.intGainsConv); connect(preTemFloor.port, thermalZoneFourElements.floor); connect(TSoil.y, preTemFloor.T); connect(preTemRoof.port, theConRoof.fluid); connect(theConRoof.solid, thermalZoneFourElements.roof); connect(eqAirTempVDI.TEqAir, preTemRoof.T); connect(theConRoof.Gc, alphaRoof.y); connect(eqAirTempVDI.TDryBul, eqAirTemp.TDryBul); connect(eqAirTempVDI.TBlaSky, eqAirTemp.TBlaSky); connect(eqAirTempVDI.HSol[1], weaBus.HGloHor); connect(HDirTil.inc, corGDouPan.inc); connect(const1.y, eqAirTempVDI.sunblind[1]); connect(corGDouPan.solarRadWinTrans, thermalZoneFourElements.solRad); end SimpleRoomFourElements;

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomOneElement Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomOneElement

Illustrates the use of a thermal zone with one heat conduction element

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomOneElement

Information

This example shows the application of Annex60.ThermalZones.ReducedOrder.RC.OneElement in combination with Annex60.ThermalZones.ReducedOrder.EquivalentAirTemperature.VDI6007WithWindow and Annex60.ThermalZones.ReducedOrder.SolarGain.CorrectionGDoublePane. Solar radiation on tilted surface is calculated using models of Annex60. The thermal zone is a simple room defined in Guideline VDI 6007 Part 1 (VDI, 2012). All models, parameters and inputs except sunblinds, separate handling of heat transfer through windows, no wall element for internal walls and solar radiation are similar to the ones defined for the guideline's test room. For solar radiation, the example relies on the standard weather file in Annex60.

The idea of the example is to show a typical application of all sub-models and to use the example in unit tests. The results are reasonable, but not related to any real use case or measurement data.

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.Example (Icon for runnable examples).

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model SimpleRoomOneElement "Illustrates the use of a thermal zone with one heat conduction element" extends Modelica.Icons.Example; BoundaryConditions.WeatherData.ReaderTMY3 weaDat( calTSky=Annex60.BoundaryConditions.Types.SkyTemperatureCalculation.HorizontalRadiation, computeWetBulbTemperature=false, filNam="modelica://Annex60/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos") "Weather data reader"; BoundaryConditions.SolarIrradiation.DiffusePerez HDifTil[2]( each outSkyCon=true, each outGroCon=true, each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates diffuse solar radiation on titled surface for both directions"; BoundaryConditions.SolarIrradiation.DirectTiltedSurface HDirTil[2]( each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates direct solar radiation on titled surface for both directions"; SolarGain.CorrectionGDoublePane corGDouPan(n=2, UWin=2.1) "Correction factor for solar transmission"; RC.OneElement thermalZoneOneElement( VAir=52.5, alphaExt=2.7, alphaWin=2.7, gWin=1, ratioWinConRad=0.09, nExt=1, RExt={0.00331421908725}, CExt={5259932.23}, alphaRad=5, RWin=0.01642857143, RExtRem=0.1265217391, nOrientations=2, AWin={7,7}, ATransparent={7,7}, AExt={3.5,8}, redeclare package Medium = Modelica.Media.Air.SimpleAir, extWallRC(thermCapExt(each der_T(fixed=true))), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, T_start=295.15) "Thermal zone"; EquivalentAirTemperature.VDI6007WithWindow eqAirTemp( n=2, wfGro=0, wfWall={0.3043478260869566,0.6956521739130435}, wfWin={0.5,0.5}, withLongwave=true, aExt=0.7, alphaWallOut=20, alphaRad=5, alphaWinOut=20, TGro=285.15) "Computes equivalent air temperature"; Modelica.Blocks.Math.Add solRad[2] "Sums up solar radiation of both directions"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Prescribed temperature for exterior walls outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem1 "Prescribed temperature for windows outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWin "Outdoor convective heat transfer of windows"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer of walls"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow of persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow of persons"; Modelica.Blocks.Sources.CombiTimeTable intGai( 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}, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Table with profiles for persons (radiative and convective) and machines (convective)"; Modelica.Blocks.Sources.Constant const[2](each k=0) "Sets sunblind signal to zero (open)"; BoundaryConditions.WeatherData.Bus weaBus "Weather data bus"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow of machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*11.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant alphaWin(k=20*14) "Outdoor coefficient of heat transfer for windows"; equation connect(eqAirTemp.TEqAirWin, preTem1.T); connect(eqAirTemp.TEqAir, preTem.T); connect(weaDat.weaBus, weaBus); connect(weaBus.TDryBul, eqAirTemp.TDryBul); connect(intGai.y[1], perRad.Q_flow); connect(intGai.y[2], perCon.Q_flow); connect(intGai.y[3], macConv.Q_flow); connect(const.y, eqAirTemp.sunblind); connect(HDifTil.HSkyDifTil, corGDouPan.HSkyDifTil); connect(HDirTil.H, corGDouPan.HDirTil); connect(HDirTil.H,solRad. u1); connect(HDirTil.inc, corGDouPan.inc); connect(HDifTil.H,solRad. u2); connect(HDifTil.HGroDifTil, corGDouPan.HGroDifTil); connect(solRad.y, eqAirTemp.HSol); connect(weaDat.weaBus, HDifTil[1].weaBus); connect(weaDat.weaBus, HDifTil[2].weaBus); connect(weaDat.weaBus, HDirTil[1].weaBus); connect(weaDat.weaBus, HDirTil[2].weaBus); connect(perRad.port, thermalZoneOneElement.intGainsRad); connect(theConWin.solid, thermalZoneOneElement.window); connect(preTem1.port, theConWin.fluid); connect(thermalZoneOneElement.extWall, theConWall.solid); connect(theConWall.fluid, preTem.port); connect(alphaWall.y, theConWall.Gc); connect(alphaWin.y, theConWin.Gc); connect(weaBus.TBlaSky, eqAirTemp.TBlaSky); connect(macConv.port, thermalZoneOneElement.intGainsConv); connect(perCon.port, thermalZoneOneElement.intGainsConv); connect(corGDouPan.solarRadWinTrans, thermalZoneOneElement.solRad); end SimpleRoomOneElement;

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomThreeElements Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomThreeElements

Illustrates the use of a thermal zone with three heat conduction elements

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomThreeElements

Information

This example shows the application of Annex60.ThermalZones.ReducedOrder.RC.ThreeElements in combination with Annex60.ThermalZones.ReducedOrder.EquivalentAirTemperature.VDI6007WithWindow and Annex60.ThermalZones.ReducedOrder.SolarGain.CorrectionGDoublePane. Solar radiation on tilted surface is calculated using models of Annex60. The thermal zone is a simple room defined in Guideline VDI 6007 Part 1 (VDI, 2012). All models, parameters and inputs except sunblinds, separate handling of heat transfer through windows, an extra wall element for ground floor (with additional area) and solar radiation are similar to the ones defined for the guideline's test room. For solar radiation, the example relies on the standard weather file in Annex60.

The idea of the example is to show a typical application of all sub-models and to use the example in unit tests. The results are reasonable, but not related to any real use case or measurement data.

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.Example (Icon for runnable examples).

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model SimpleRoomThreeElements "Illustrates the use of a thermal zone with three heat conduction elements" extends Modelica.Icons.Example; BoundaryConditions.WeatherData.ReaderTMY3 weaDat( calTSky=Annex60.BoundaryConditions.Types.SkyTemperatureCalculation.HorizontalRadiation, computeWetBulbTemperature=false, filNam="modelica://Annex60/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos") "Weather data reader"; BoundaryConditions.SolarIrradiation.DiffusePerez HDifTil[2]( each outSkyCon=true, each outGroCon=true, each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates diffuse solar radiation on titled surface for both directions"; BoundaryConditions.SolarIrradiation.DirectTiltedSurface HDirTil[2]( each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates direct solar radiation on titled surface for both directions"; SolarGain.CorrectionGDoublePane corGDouPan(n=2, UWin=2.1) "Correction factor for solar transmission"; RC.ThreeElements thermalZoneThreeElements( VAir=52.5, alphaExt=2.7, alphaWin=2.7, gWin=1, ratioWinConRad=0.09, nExt=1, RExt={0.00331421908725}, CExt={5259932.23}, alphaRad=5, AInt=60.5, alphaInt=2.12, nInt=1, RInt={0.000668895639141}, CInt={12391363.86}, RWin=0.01642857143, RExtRem=0.1265217391, AFloor=11.5, alphaFloor=2.7, nFloor=1, RFloor={0.00331421908725}, RFloorRem=0.1265217391, CFloor={5259932.23}, AWin={7,7}, ATransparent={7,7}, AExt={3.5,8}, nOrientations=2, redeclare package Medium = Modelica.Media.Air.SimpleAir, extWallRC(thermCapExt(each der_T(fixed=true))), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, intWallRC(thermCapInt(each der_T(fixed=true))), floorRC(thermCapExt(each der_T(fixed=true))), T_start=295.15) "Thermal zone"; EquivalentAirTemperature.VDI6007WithWindow eqAirTemp( n=2, wfGro=0, wfWall={0.3043478260869566,0.6956521739130435}, wfWin={0.5,0.5}, withLongwave=true, aExt=0.7, alphaWallOut=20, alphaRad=5, alphaWinOut=20, TGro=285.15) "Computes equivalent air temperature"; Modelica.Blocks.Math.Add solRad[2] "Sums up solar radiation of both directions"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Prescribed temperature for exterior walls outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem1 "Prescribed temperature for windows outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWin "Outdoor convective heat transfer of windows"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer of walls"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow of persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow of persons"; Modelica.Blocks.Sources.CombiTimeTable intGai( 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}, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Table with profiles for persons (radiative and convective) and machines (convective)"; Modelica.Blocks.Sources.Constant const[2](each k=0) "Sets sunblind signal to zero (open)"; BoundaryConditions.WeatherData.Bus weaBus "Weather data bus"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow of machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*11.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant alphaWin(k=20*14) "Outdoor coefficient of heat transfer for windows"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTemFloor "Prescribed temperature for floor plate outdoor surface temperature"; Modelica.Blocks.Sources.Constant TSoil(k=283.15) "Outdoor surface temperature for floor plate"; equation connect(eqAirTemp.TEqAirWin, preTem1.T); connect(eqAirTemp.TEqAir, preTem.T); connect(weaDat.weaBus, weaBus); connect(weaBus.TDryBul, eqAirTemp.TDryBul); connect(intGai.y[1], perRad.Q_flow); connect(intGai.y[2], perCon.Q_flow); connect(intGai.y[3], macConv.Q_flow); connect(const.y, eqAirTemp.sunblind); connect(HDifTil.HSkyDifTil, corGDouPan.HSkyDifTil); connect(HDirTil.H, corGDouPan.HDirTil); connect(HDirTil.H,solRad. u1); connect(HDirTil.inc, corGDouPan.inc); connect(HDifTil.H,solRad. u2); connect(HDifTil.HGroDifTil, corGDouPan.HGroDifTil); connect(solRad.y, eqAirTemp.HSol); connect(weaDat.weaBus, HDifTil[1].weaBus); connect(weaDat.weaBus, HDifTil[2].weaBus); connect(weaDat.weaBus, HDirTil[1].weaBus); connect(weaDat.weaBus, HDirTil[2].weaBus); connect(perRad.port, thermalZoneThreeElements.intGainsRad); connect(theConWin.solid, thermalZoneThreeElements.window); connect(preTem1.port, theConWin.fluid); connect(thermalZoneThreeElements.extWall, theConWall.solid); connect(theConWall.fluid, preTem.port); connect(alphaWall.y, theConWall.Gc); connect(alphaWin.y, theConWin.Gc); connect(weaBus.TBlaSky, eqAirTemp.TBlaSky); connect(macConv.port, thermalZoneThreeElements.intGainsConv); connect(perCon.port, thermalZoneThreeElements.intGainsConv); connect(preTemFloor.port, thermalZoneThreeElements.floor); connect(TSoil.y, preTemFloor.T); connect(corGDouPan.solarRadWinTrans, thermalZoneThreeElements.solRad); end SimpleRoomThreeElements;

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements

Illustrates the use of a thermal zone with two heat conduction elements

Annex60.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements

Information

This example shows the application of Annex60.ThermalZones.ReducedOrder.RC.TwoElements in combination with Annex60.ThermalZones.ReducedOrder.EquivalentAirTemperature.VDI6007WithWindow and Annex60.ThermalZones.ReducedOrder.SolarGain.CorrectionGDoublePane. Solar radiation on tilted surface is calculated using models of Annex60. The thermal zone is a simple room defined in Guideline VDI 6007 Part 1 (VDI, 2012). All models, parameters and inputs except sunblinds, separate handling of heat transfer through windows and solar radiation are similar to the ones defined for the guideline's test room. For solar radiation, the example relies on the standard weather file in Annex60.

The idea of the example is to show a typical application of all sub-models and to use the example in unit tests. The results are reasonable, but not related to any real use case or measurement data.

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.Example (Icon for runnable examples).

Connectors

TypeNameDescription
BusweaBusWeather data bus

Modelica definition

model SimpleRoomTwoElements "Illustrates the use of a thermal zone with two heat conduction elements" extends Modelica.Icons.Example; BoundaryConditions.WeatherData.ReaderTMY3 weaDat( calTSky=Annex60.BoundaryConditions.Types.SkyTemperatureCalculation.HorizontalRadiation, computeWetBulbTemperature=false, filNam="modelica://Annex60/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos") "Weather data reader"; BoundaryConditions.SolarIrradiation.DiffusePerez HDifTil[2]( each outSkyCon=true, each outGroCon=true, each til=1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates diffuse solar radiation on titled surface for both directions"; BoundaryConditions.SolarIrradiation.DirectTiltedSurface HDirTil[2]( each til(displayUnit="deg") = 1.5707963267949, each lat=0.87266462599716, azi={3.1415926535898,4.7123889803847}) "Calculates direct solar radiation on titled surface for both directions"; SolarGain.CorrectionGDoublePane corGDouPan(n=2, UWin=2.1) "Correction factor for solar transmission"; RC.TwoElements thermalZoneTwoElements( VAir=52.5, alphaExt=2.7, alphaWin=2.7, gWin=1, ratioWinConRad=0.09, nExt=1, RExt={0.00331421908725}, CExt={5259932.23}, alphaRad=5, AInt=60.5, alphaInt=2.12, nInt=1, RInt={0.000668895639141}, CInt={12391363.86}, RWin=0.01642857143, RExtRem=0.1265217391, nOrientations=2, AWin={7,7}, ATransparent={7,7}, AExt={3.5,8}, redeclare package Medium = Modelica.Media.Air.SimpleAir, extWallRC(thermCapExt(each der_T(fixed=true))), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, T_start=295.15, intWallRC(thermCapInt(each der_T(fixed=true)))) "Thermal zone"; EquivalentAirTemperature.VDI6007WithWindow eqAirTemp( n=2, wfGro=0, wfWall={0.3043478260869566,0.6956521739130435}, wfWin={0.5,0.5}, withLongwave=true, aExt=0.7, alphaWallOut=20, alphaRad=5, alphaWinOut=20, TGro=285.15) "Computes equivalent air temperature"; Modelica.Blocks.Math.Add solRad[2] "Sums up solar radiation of both directions"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem "Prescribed temperature for exterior walls outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature preTem1 "Prescribed temperature for windows outdoor surface temperature"; Modelica.Thermal.HeatTransfer.Components.Convection theConWin "Outdoor convective heat transfer of windows"; Modelica.Thermal.HeatTransfer.Components.Convection theConWall "Outdoor convective heat transfer of walls"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perRad "Radiative heat flow of persons"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow perCon "Convective heat flow of persons"; Modelica.Blocks.Sources.CombiTimeTable intGai( 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}, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Table with profiles for persons (radiative and convective) and machines (convective)"; Modelica.Blocks.Sources.Constant const[2](each k=0) "Sets sunblind signal to zero (open)"; BoundaryConditions.WeatherData.Bus weaBus "Weather data bus"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow macConv "Convective heat flow of machines"; Modelica.Blocks.Sources.Constant alphaWall(k=25*11.5) "Outdoor coefficient of heat transfer for walls"; Modelica.Blocks.Sources.Constant alphaWin(k=20*14) "Outdoor coefficient of heat transfer for windows"; equation connect(eqAirTemp.TEqAirWin, preTem1.T); connect(eqAirTemp.TEqAir, preTem.T); connect(weaDat.weaBus, weaBus); connect(weaBus.TDryBul, eqAirTemp.TDryBul); connect(intGai.y[1], perRad.Q_flow); connect(intGai.y[2], perCon.Q_flow); connect(intGai.y[3], macConv.Q_flow); connect(const.y, eqAirTemp.sunblind); connect(HDifTil.HSkyDifTil, corGDouPan.HSkyDifTil); connect(HDirTil.H, corGDouPan.HDirTil); connect(HDirTil.H,solRad. u1); connect(HDirTil.inc, corGDouPan.inc); connect(HDifTil.H,solRad. u2); connect(HDifTil.HGroDifTil, corGDouPan.HGroDifTil); connect(solRad.y, eqAirTemp.HSol); connect(weaDat.weaBus, HDifTil[1].weaBus); connect(weaDat.weaBus, HDifTil[2].weaBus); connect(weaDat.weaBus, HDirTil[1].weaBus); connect(weaDat.weaBus, HDirTil[2].weaBus); connect(perRad.port, thermalZoneTwoElements.intGainsRad); connect(theConWin.solid, thermalZoneTwoElements.window); connect(preTem1.port, theConWin.fluid); connect(thermalZoneTwoElements.extWall, theConWall.solid); connect(theConWall.fluid, preTem.port); connect(alphaWall.y, theConWall.Gc); connect(alphaWin.y, theConWin.Gc); connect(weaBus.TBlaSky, eqAirTemp.TBlaSky); connect(macConv.port, thermalZoneTwoElements.intGainsConv); connect(perCon.port, thermalZoneTwoElements.intGainsConv); connect(corGDouPan.solarRadWinTrans, thermalZoneTwoElements.solRad); end SimpleRoomTwoElements;

http://iea-annex60.org