Buildings.HeatTransfer.Windows

Package with models for windows

Information

This package contains models for heat transfer in windows.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.HeatTransfer.Windows.BeamDepthInRoom BeamDepthInRoom Depth of solar beam in the room
Buildings.HeatTransfer.Windows.ExteriorHeatTransfer ExteriorHeatTransfer Model for heat convection and radiation at the exterior surface of a window that may have a shading device
Buildings.HeatTransfer.Windows.FixedShade FixedShade Model for exterior shade due to overhang and/or side fin
Buildings.HeatTransfer.Windows.InteriorHeatTransferConvective InteriorHeatTransferConvective Model for heat convection at the interior surface of a window that may have a shading device
Buildings.HeatTransfer.Windows.Overhang Overhang For a window with an overhang, outputs the fraction of the window area exposed to the sun
Buildings.HeatTransfer.Windows.SideFins SideFins For a window with side fins, outputs the fraction of the window area exposed to the sun
Buildings.HeatTransfer.Windows.Window Window Model for a window
Buildings.HeatTransfer.Windows.Functions Functions Functions used in window radiation model
Buildings.HeatTransfer.Windows.Examples Examples Collection of models that illustrate model use and test models
Buildings.HeatTransfer.Windows.BaseClasses BaseClasses Package with base classes for Buildings.HeatTransfer.Windows

Buildings.HeatTransfer.Windows.BeamDepthInRoom Buildings.HeatTransfer.Windows.BeamDepthInRoom

Depth of solar beam in the room

Buildings.HeatTransfer.Windows.BeamDepthInRoom

Information

This component computes the maximum distance at which a solar beam that enters the window hits the workplane. The distance is measured perpendicular to the wall.

The parameter azi is the azimuth of the window. For example, if the window faces south, set azi=Buildings.Types.Azimuth.S. The figure below explains the parameters.

Figure for beam depth parameters

For a definition of the parameters, see the User's Guide Buildings.BoundaryConditions.UsersGuide. The surface azimuth is defined in Buildings.Types.Azimuth.

The component requires as parameters the longitude, latitude and time zone. These can automatically be assigned by setting the parameter filNam to a weather data file, in which case these values are read from the weather data file.

Assumptions and approximations

The following assumptions and approximations are made:

  1. If an overhang is present, then the corner of the overhang is the only object that casts a shade. In reality, for very shallow incidence angles, the top of the window frame may be sun exposed, but this model neglects any shade that is cast by the top of the window frame.
  2. The overhang is assumed to have infinite length in the direction of the wall, as this allows neglecting any effects that the corner may have at shallow incidence angles.
  3. The wall is vertical.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Angleazi Surface azimuth [rad]
LengthhWorPla0.75Height of workplane above ground [m]
Location
StringfilNam""Name of weather data file (used to read longitude, latitude and time zone)
AnglelonBuildings.BoundaryConditions...Longitude [rad]
AnglelatBuildings.BoundaryConditions...Latitude [rad]
TimetimZonBuildings.BoundaryConditions...Time zone [s]
Aperture
LengthhApe Upper height of aperature above ground [m]
LengthdepApe0.15Depth of outer corner of aperture, measured from interior surface [m]
Overhang
LengthdepOve0Depth of overhang, meausured from other exterior surface of aperature (set to 0 if no overhang) [m]
LengthgapOve0Gap between upper height of aperature and lower height of overhang (set to 0 if no overhang) [m]

Connectors

TypeNameDescription
output RealOutputyBeam depth in room, measured perpendicular to window surface, at workplane height [m]

Modelica definition

block BeamDepthInRoom "Depth of solar beam in the room" extends Modelica.Blocks.Icons.Block; parameter String filNam="" "Name of weather data file (used to read longitude, latitude and time zone)"; parameter Modelica.SIunits.Angle lon(displayUnit="deg")= Buildings.BoundaryConditions.WeatherData.BaseClasses.getLongitudeTMY3( absFilNam) "Longitude"; parameter Modelica.SIunits.Angle lat(displayUnit="deg")= Buildings.BoundaryConditions.WeatherData.BaseClasses.getLatitudeTMY3( absFilNam) "Latitude"; parameter Modelica.SIunits.Time timZon(displayUnit="h")= Buildings.BoundaryConditions.WeatherData.BaseClasses.getTimeZoneTMY3(absFilNam) "Time zone"; parameter Modelica.SIunits.Angle azi "Surface azimuth"; parameter Modelica.SIunits.Length hWorPla = 0.75 "Height of workplane above ground"; parameter Modelica.SIunits.Length hApe "Upper height of aperature above ground"; parameter Modelica.SIunits.Length depApe = 0.15 "Depth of outer corner of aperture, measured from interior surface"; parameter Modelica.SIunits.Length depOve = 0 "Depth of overhang, meausured from other exterior surface of aperature (set to 0 if no overhang)"; parameter Modelica.SIunits.Length gapOve = 0 "Gap between upper height of aperature and lower height of overhang (set to 0 if no overhang)"; Modelica.Blocks.Interfaces.RealOutput y( final quantity="Length", final unit="m") "Beam depth in room, measured perpendicular to window surface, at workplane height"; protected final parameter String absFilNam = Buildings.BoundaryConditions.WeatherData.BaseClasses.getAbsolutePath(filNam) "Absolute name of the file"; parameter Modelica.SIunits.Length dep = depApe + depOve "Depth of outer corner that throws the shade, measured from interior surface"; parameter Modelica.SIunits.Length h = hApe - hWorPla + gapOve "Height of outer corner that throws the shade measure from the workplane height"; BoundaryConditions.SolarGeometry.ProjectedShadowLength proShaLen( final h=h, final lat=lat, final azi=azi, final filNam=filNam, final lon=lon, final timZon=timZon) "Projected length of shadow"; Modelica.Blocks.Math.Add depInRoo( final k2=-1) "Depth of beam in room"; Modelica.Blocks.Sources.Constant depth(final k=-dep) "Distance outer corner that throws shade minus room-side surface"; Modelica.Blocks.Math.Max max "Limiter to avoid negative distance"; protected Modelica.Blocks.Sources.Constant zer(final k=0) "Outputs zero"; initial equation assert(h > 0, "The aperature is below the workplane, hence the solar beam never hits the workplane.", AssertionLevel.warning); equation connect(proShaLen.y, depInRoo.u2); connect(depth.y, depInRoo.u1); connect(zer.y, max.u2); connect(max.u1, depInRoo.y); connect(max.y, y); end BeamDepthInRoom;

Buildings.HeatTransfer.Windows.ExteriorHeatTransfer Buildings.HeatTransfer.Windows.ExteriorHeatTransfer

Model for heat convection and radiation at the exterior surface of a window that may have a shading device

Buildings.HeatTransfer.Windows.ExteriorHeatTransfer

Information

Model for the convective heat transfer between a window shade, a window surface and the room air. This model is applicable for the outside-facing surface of a window system and can be used with the model Buildings.HeatTransfer.Windows.Window.

This model adds the convective heat transfer coefficient to its base model.

Extends from BaseClasses.PartialWindowBoundaryCondition (Partial model for heat convection or radiation between a possibly shaded window that can be outside or inside the room).

Parameters

TypeNameDefaultDescription
AreaA Heat transfer area of frame and window [m2]
RealfFra Fraction of window frame divided by total window area
BooleanlinearizeRadiation Set to true to linearize emissive power
RealvieFacSkyvieFacSky( ...View factor from receiving surface to sky [1]
Shading
BooleanhaveExteriorShade Set to true if window has exterior shade (at surface a)
BooleanhaveInteriorShade Set to true if window has interior shade (at surface b)
BooleanthisSideHasShadehaveExteriorShadeSet to true if this side of the model has a shade
EmissivityabsIRSha_air Infrared absorptivity of shade surface that faces air [1]
EmissivityabsIRSha_glass Infrared absorptivity of shade surface that faces glass [1]
TransmissionCoefficienttauIRSha_air Infrared transmissivity of shade for radiation coming from the exterior or the room [1]
TransmissionCoefficienttauIRSha_glass Infrared transmissivity of shade for radiation coming from the glass [1]

Connectors

TypeNameDescription
input RealInputuShaInput connector, used to scale the surface area to take into account an operable shading device, 0: unshaded; 1: fully shaded
HeatPort_aairPort that connects to the air (room or outside)
HeatPort_bglaUnsHeat port that connects to unshaded part of glass
HeatPort_bglaShaHeat port that connects to shaded part of glass
HeatPort_aframeHeat port at window frame
input RealInputvWinWind speed [m/s]
input RealInputTBlaSkyBlack body sky temperature [K]
input RealInputTOutOutside temperature [K]
output RadiosityOutflowJOutUnsOutgoing radiosity that connects to unshaded part of glass [W]
input RadiosityInflowJInUnsIncoming radiosity that connects to unshaded part of glass [W]
output RadiosityOutflowJOutShaOutgoing radiosity that connects to shaded part of glass [W]
input RadiosityInflowJInShaIncoming radiosity that connects to shaded part of glass [W]
input RealInputQSolAbs_flowSolar radiation absorbed by shade [W]

Modelica definition

model ExteriorHeatTransfer "Model for heat convection and radiation at the exterior surface of a window that may have a shading device" extends BaseClasses.PartialWindowBoundaryCondition(final thisSideHasShade=haveExteriorShade); parameter Modelica.SIunits.Emissivity absIRSha_air "Infrared absorptivity of shade surface that faces air"; parameter Modelica.SIunits.Emissivity absIRSha_glass "Infrared absorptivity of shade surface that faces glass"; parameter Modelica.SIunits.TransmissionCoefficient tauIRSha_air "Infrared transmissivity of shade for radiation coming from the exterior or the room"; parameter Modelica.SIunits.TransmissionCoefficient tauIRSha_glass "Infrared transmissivity of shade for radiation coming from the glass"; parameter Boolean linearizeRadiation "Set to true to linearize emissive power"; parameter Real vieFacSky(final min=0, final max=1, final unit="1") "View factor from receiving surface to sky"; Modelica.Blocks.Interfaces.RealInput vWin(final unit="m/s") "Wind speed"; Buildings.HeatTransfer.Windows.BaseClasses.ExteriorConvectionCoefficient conCoeGla( final A=AGla) "Model for the outside convective heat transfer coefficient of the glass"; Buildings.HeatTransfer.Windows.BaseClasses.ExteriorConvectionCoefficient conCoeFra( final A=AFra) "Model for the outside convective heat transfer coefficient of the frame"; Radiosity.OutdoorRadiosity radOut( final A=AGla, vieFacSky=vieFacSky, linearize=linearizeRadiation) "Outdoor radiosity"; Modelica.Blocks.Interfaces.RealInput TBlaSky( final quantity="ThermodynamicTemperature", final unit="K", min=0) "Black body sky temperature"; Modelica.Blocks.Interfaces.RealInput TOut(final quantity="ThermodynamicTemperature", final unit = "K", min=0) "Outside temperature"; Interfaces.RadiosityOutflow JOutUns "Outgoing radiosity that connects to unshaded part of glass"; Interfaces.RadiosityInflow JInUns "Incoming radiosity that connects to unshaded part of glass"; Interfaces.RadiosityOutflow JOutSha if haveShade "Outgoing radiosity that connects to shaded part of glass"; Interfaces.RadiosityInflow JInSha if haveShade "Incoming radiosity that connects to shaded part of glass"; Modelica.Blocks.Interfaces.RealInput QSolAbs_flow(unit="W", quantity="Power") if haveShade "Solar radiation absorbed by shade"; BaseClasses.ShadeRadiation shaRad( final thisSideHasShade=thisSideHasShade, final A=AGla, final linearize=linearizeRadiation, final absIR_air=if thisSideHasShade then absIRSha_air else 0, final absIR_glass=if thisSideHasShade then absIRSha_glass else 0, final tauIR_air=if thisSideHasShade then tauIRSha_air else 1, final tauIR_glass=if thisSideHasShade then tauIRSha_glass else 1) if haveShade "Radiative heat balance of shade"; protected Radiosity.RadiositySplitter radShaOut "Radiosity that strikes shading device"; BaseClasses.ShadeConvection shaCon(final thisSideHasShade=thisSideHasShade, final A=AGla) if haveShade "Convective heat balance of shade"; public Modelica.Thermal.HeatTransfer.Components.Convection conFra "Convective heat transfer between air and frame"; Modelica.Thermal.HeatTransfer.Components.Convection conWinUns( dT(start=0)) "Convection from unshaded part of window to outside or room air"; protected Modelica.Blocks.Math.Product proUns "Product for unshaded part of window"; equation assert(-1E-10<vieFacSky and 1.00001 > vieFacSky, "View factor to sky is out of range. vieFacSky = " + String(vieFacSky) + "\n Check parameters."); connect(vWin, conCoeGla.v); connect(vWin, conCoeFra.v); connect(conCoeFra.GCon, conFra.Gc); connect(conCoeGla.GCon, proSha.u1); connect(conCoeGla.GCon, proUns.u2); connect(radOut.JOut, radShaOut.JIn); connect(radOut.TBlaSky, TBlaSky); connect(radOut.TOut, TOut); connect(radShaOut.JOut_2,JOutUns); connect(shaRad.JOut_glass, JOutSha); connect(shaRad.JIn_glass, JInSha); connect(radShaOut.JOut_1, shaRad.JIn_air); connect(shaRad.u, shaSig.y); connect(glaSha, shaCon.glass); connect(shaCon.air, air); connect(shaCon.Gc, proSha.y); connect(shaCon.TSha, shaRad.TSha); connect(shaRad.QRadAbs_flow, shaCon.QRadAbs_flow); connect(radShaOut.u, shaSig.y); connect(shaRad.QSolAbs_flow, QSolAbs_flow); connect(conFra.fluid, air); connect(conWinUns.fluid, air); connect(glaUns,conWinUns. solid); connect(proUns.y,conWinUns. Gc); connect(conFra.solid, frame); connect(shaSig.yCom,proUns. u1); end ExteriorHeatTransfer;

Buildings.HeatTransfer.Windows.FixedShade Buildings.HeatTransfer.Windows.FixedShade

Model for exterior shade due to overhang and/or side fin

Buildings.HeatTransfer.Windows.FixedShade

Information

This model outputs the fraction of the window area that is sun exposed for a window that may have an overhang and sidefins. Depending on the record with construction data conPar, an overhang, side fins or no external shade is modeled. The model allows having an overhang and side fins at the same time. In such a case, the overhang width should be measured from the window edge to the sidefin, because the overhang width beyond the sidefin will cast a shadow on the side fin and not on the window. Similarly, the side fin height should be measured from the upper window edge to the overhang, because the side fin height above the overhang will not cast a shadow on the window. The parameters for the dimensions of the overhang and side fins are as described in the models Buildings.HeatTransfer.Windows.Overhang and Buildings.HeatTransfer.Windows.SideFins.

Limitations

For overhangs, the model assumes that

For side fins, the model assumes that

Implementation

The detailed calculation method is explained in Buildings.HeatTransfer.Windows.BaseClasses.SideFins and in Buildings.HeatTransfer.Windows.BaseClasses.Overhang.

Extends from HeatTransfer.Windows.BaseClasses.ShadeInterface_weatherBus (Base class for models of window shade and overhangs).

Parameters

TypeNameDefaultDescription
ParameterConstructionWithWindowconPar Construction parameters
Anglelat Latitude [rad]
Angleaziazi( ...Surface azimuth; azi= -90 degree East; azi= 0 South [rad]

Connectors

TypeNameDescription
BusweaBusWeather data bus
input RealInputincAngSolar incidence angle [rad]
input RealInputHDirTilUnsDirect solar irradiation on tilted, unshaded surface [W/m2]
output RealOutputHDirTilDirect solar irradiation on tilted, shaded surface [W/m2]
output RealOutputfraSunFraction of the area that is unshaded [1]

Modelica definition

model FixedShade "Model for exterior shade due to overhang and/or side fin" extends HeatTransfer.Windows.BaseClasses.ShadeInterface_weatherBus; parameter Buildings.ThermalZones.Detailed.BaseClasses.ParameterConstructionWithWindow conPar "Construction parameters"; parameter Modelica.SIunits.Angle lat "Latitude"; parameter Modelica.SIunits.Angle azi(displayUnit="deg") "Surface azimuth; azi= -90 degree East; azi= 0 South"; Modelica.Blocks.Routing.Multiplex4 mulFraSun( n1=1, n2=1, n3=1, n4=1) "Multiplex for fraction of shaded area"; Modelica.Blocks.Math.Add sumFraSun "Addition of sun exposed window area fractions"; Modelica.Blocks.Math.Add resFraSun(k2=1.0, k1=-1.0) "Calculates resultant sun exposed window area fraction"; Modelica.Blocks.Sources.Constant overlap(k=1.0) "Overlap of sun exposed window area fraction"; Modelica.Blocks.Sources.Constant noSunCond(k=small) "Condition when the sun is not in front of window"; protected constant Real small = 0.001 "Small number, used to avoid that sun-exposed fraction of window is negative"; final parameter Boolean haveOverhang = conPar.ove.haveOverhang "Flag for overhang"; final parameter Boolean haveSideFins = conPar.sidFin.haveSideFins "Flag for sidefins"; final parameter Boolean haveOverhangAndSideFins= (haveOverhang and haveSideFins) "Flag for overhang and sidefins"; final parameter Integer idx = if haveOverhangAndSideFins then 2 elseif haveOverhang then 1 elseif haveSideFins then 3 else 4 "Integer used to pick the appropriate output signal"; HeatTransfer.Windows.BaseClasses.Overhang ove( final lat=lat, final azi=conPar.azi, final hWin=conPar.hWin, final wWin=conPar.wWin, final dep=conPar.ove.dep, final gap=conPar.ove.gap, final wR=conPar.ove.wR, final wL=conPar.ove.wL) "Model for overhang"; HeatTransfer.Windows.BaseClasses.SideFins sidFin( final hWin=conPar.hWin, final wWin=conPar.wWin, final h=conPar.sidFin.h, final dep=conPar.sidFin.dep, final gap=conPar.sidFin.gap) "Model for side fins"; BoundaryConditions.SolarGeometry.BaseClasses.WallSolarAzimuth walSolAzi "Angle measured in horizontal plane between projection of sun's rays and normal to vertical surface"; Modelica.Blocks.Math.Product mulHDir "Multiplication to obtain direct solar irradiation on shaded window"; Modelica.Blocks.Routing.Extractor extFraSun(final allowOutOfRange=false, final nin=4, index(start=idx, fixed=true)) "Extractor to pick the appropriate output signal"; Modelica.Blocks.Sources.IntegerConstant idxSou(final k=idx) "Source term to pick output signal"; Modelica.Blocks.Sources.Constant const(k=1); Utilities.Math.SmoothMax smoMax(deltaX=small/2) "Limiter to avoid that the fraction of sun-exposed window is below zero"; equation connect(weaBus.solAlt, walSolAzi.alt); connect(incAng, walSolAzi.incAng); connect(walSolAzi.verAzi, ove.verAzi); connect(walSolAzi.verAzi, sidFin.verAzi); connect(weaBus.solAlt, sidFin.alt); connect(mulHDir.y, HDirTil); connect(mulHDir.u1, HDirTilUns); connect(weaBus, ove.weaBus); connect(extFraSun.y, fraSun); connect(extFraSun.y, mulHDir.u2); connect(mulFraSun.y, extFraSun.u); connect(ove.fraSun, mulFraSun.u1[1]); connect(sidFin.fraSun, mulFraSun.u3[1]); connect(const.y, mulFraSun.u4[1]); connect(weaBus.solAlt, ove.alt); connect(ove.fraSun, sumFraSun.u1); connect(sumFraSun.y, resFraSun.u2); connect(overlap.y, resFraSun.u1); connect(sidFin.fraSun, sumFraSun.u2); connect(idxSou.y, extFraSun.index); connect(resFraSun.y, smoMax.u1); connect(noSunCond.y, smoMax.u2); connect(smoMax.y, mulFraSun.u2[1]); end FixedShade;

Buildings.HeatTransfer.Windows.InteriorHeatTransferConvective Buildings.HeatTransfer.Windows.InteriorHeatTransferConvective

Model for heat convection at the interior surface of a window that may have a shading device

Buildings.HeatTransfer.Windows.InteriorHeatTransferConvective

Information

Model for the convective heat transfer between a window shade, a window surface and the room air. This model is applicable for the room-facing surface of a window system and can be used with the model Buildings.HeatTransfer.Windows.Window.

This model adds the convective heat transfer coefficient to its base model.

Extends from BaseClasses.PartialWindowBoundaryCondition (Partial model for heat convection or radiation between a possibly shaded window that can be outside or inside the room).

Parameters

TypeNameDefaultDescription
AreaA Heat transfer area of frame and window [m2]
RealfFra Fraction of window frame divided by total window area
CoefficientOfHeatTransferhFixed4Constant convection coefficient [W/(m2.K)]
InteriorConvectionconModBuildings.HeatTransfer.Types...Convective heat transfer model
Angletil Surface tilt [rad]
Shading
BooleanhaveExteriorShade Set to true if window has exterior shade (at surface a)
BooleanhaveInteriorShade Set to true if window has interior shade (at surface b)
BooleanthisSideHasShadehaveInteriorShadeSet to true if this side of the model has a shade

Connectors

TypeNameDescription
input RealInputuShaInput connector, used to scale the surface area to take into account an operable shading device, 0: unshaded; 1: fully shaded
HeatPort_aairPort that connects to the air (room or outside)
HeatPort_bglaUnsHeat port that connects to unshaded part of glass
HeatPort_bglaShaHeat port that connects to shaded part of glass
HeatPort_aframeHeat port at window frame
input RealInputQRadAbs_flowTotal net radiation that is absorbed by the shade (positive if absorbed) [W]
output RealOutputTShaShade temperature [K]

Modelica definition

model InteriorHeatTransferConvective "Model for heat convection at the interior surface of a window that may have a shading device" extends BaseClasses.PartialWindowBoundaryCondition(final thisSideHasShade=haveInteriorShade); parameter Modelica.SIunits.CoefficientOfHeatTransfer hFixed=4 "Constant convection coefficient"; parameter Types.InteriorConvection conMod=Buildings.HeatTransfer.Types.InteriorConvection.Fixed "Convective heat transfer model"; parameter Modelica.SIunits.Angle til "Surface tilt"; Modelica.Blocks.Interfaces.RealInput QRadAbs_flow(final unit="W") if haveShade "Total net radiation that is absorbed by the shade (positive if absorbed)"; Modelica.Blocks.Interfaces.RealOutput TSha( final unit="K", final quantity="ThermodynamicTemperature") if haveShade "Shade temperature"; Buildings.HeatTransfer.Windows.BaseClasses.InteriorConvectionCoefficient conCoeGla(final A=AGla) "Model for the inside convective heat transfer coefficient of the glass"; BaseClasses.ShadeConvection conSha( final A=AGla, final thisSideHasShade=thisSideHasShade) if haveShade "Convection model for shade"; BaseClasses.InteriorConvection conFra( final A=AFra, final til=til, final conMod=conMod, hFixed=hFixed) "Convective heat transfer between air and frame"; BaseClasses.InteriorConvection conWinUns( final A=AGla, final til=til, final conMod=conMod, hFixed=hFixed) "Convection from unshaded part of window to outside or room air"; equation connect(conCoeGla.GCon, proSha.u1); connect(conSha.glass, glaSha); connect(proSha.y, conSha.Gc); connect(conSha.TSha, TSha); connect(QRadAbs_flow, conSha.QRadAbs_flow); connect(conFra.fluid, air); connect(air, conSha.air); connect(conFra.fluid, air); connect(conWinUns.fluid, air); connect(glaUns,conWinUns. solid); connect(conFra.solid, frame); connect(shaSig.yCom, conWinUns.u); connect(shaSig.yCom, conFra.u); end InteriorHeatTransferConvective;

Buildings.HeatTransfer.Windows.Overhang Buildings.HeatTransfer.Windows.Overhang

For a window with an overhang, outputs the fraction of the window area exposed to the sun

Buildings.HeatTransfer.Windows.Overhang

Information

For a window with an overhang, this model outputs the fraction of the area that is exposed to the sun. The models can also be used for doors with an overhang.

The overhang can be asymmetrical (i.e. wR ≠ wL is allowed) about the vertical centerline of the window. However, the overhang must completely cover the window, i.e., wL ≥ 0 and wR ≥ 0. wL and wR must be measured from the respective corner of the window.

The figure below shows the parameters.

image

The surface azimuth azi is as defined in Buildings.Types.Azimuth.

Limitations

The model assumes that

Implementation

The implementation is explained in Buildings.HeatTransfer.Windows.BaseClasses.Overhang.

Extends from Buildings.ThermalZones.Detailed.BaseClasses.Overhang (Record for window overhang), Buildings.HeatTransfer.Windows.BaseClasses.PartialShade_weatherBus (Partial model to implement overhang and side fins with weather bus connector).

Parameters

TypeNameDefaultDescription
Anglelatlat( ...Latitude [rad]
Angleaziazi( ...Surface azimuth; azi= -90 degree East; azi= 0 South [rad]
Overhang
LengthwL Overhang width left to the window, measured from the window corner [m]
LengthwR Overhang width right to the window, measured from the window corner [m]
Lengthdep Overhang depth (measured perpendicular to the wall plane) [m]
Lengthgap Distance between window upper edge and overhang lower edge [m]
Window
LengthhWin Window height [m]
LengthwWin Window width [m]

Connectors

TypeNameDescription
BusweaBusWeather data bus
input RealInputincAngSolar incidence angle [rad]
input RealInputHDirTilUnsDirect solar irradiation on tilted, unshaded surface [W/m2]
output RealOutputHDirTilDirect solar irradiation on tilted, shaded surface [W/m2]
output RealOutputfraSunFraction of the area that is unshaded [1]

Modelica definition

model Overhang "For a window with an overhang, outputs the fraction of the window area exposed to the sun" extends Buildings.ThermalZones.Detailed.BaseClasses.Overhang; extends Buildings.HeatTransfer.Windows.BaseClasses.PartialShade_weatherBus; parameter Modelica.SIunits.Angle lat(displayUnit="deg") "Latitude"; parameter Modelica.SIunits.Angle azi(displayUnit="deg") "Surface azimuth; azi= -90 degree East; azi= 0 South"; // Overhang dimensions protected Buildings.HeatTransfer.Windows.BaseClasses.Overhang ove( final lat=lat, final azi=azi, final wR=wR, final wL=wL, final dep=dep, final gap=gap, final hWin=hWin, final wWin=wWin) "Window overhang"; equation connect(ove.fraSun, fraSun); connect(walSolAzi.verAzi, ove.verAzi); connect(ove.fraSun, product.u2); connect(weaBus, ove.weaBus); connect(weaBus.solAlt, ove.alt); end Overhang;

Buildings.HeatTransfer.Windows.SideFins Buildings.HeatTransfer.Windows.SideFins

For a window with side fins, outputs the fraction of the window area exposed to the sun

Buildings.HeatTransfer.Windows.SideFins

Information

For a window with side fins, this model outputs the fraction of the area that is exposed to the sun. The model calculates the fraction of the window area that is exposed to the sun. The side fins are symmetrically placed above the vertical window centerline, and its height must be equal or greater than the window height. This models can also be used for doors with side fins. The figure below shows the parameters. The parameter h is measured from the top of the window to the top of the side fins. Side fins are assumed to extend at least to the lower edge of the window. (Any portion of the side fin below the window edge does not cast as shadow on the window anyway.)

image

The parameter h is measured from the top of the window to the top of the side fins. The side fin must extend at least to the bottom of the window.

image

Limitations

The model assumes that

Implementation

The detailed calculation method is explained in Buildings.HeatTransfer.Windows.BaseClasses.SideFins.

Extends from Buildings.ThermalZones.Detailed.BaseClasses.SideFins (Record for window side fins), Buildings.HeatTransfer.Windows.BaseClasses.PartialShade_weatherBus (Partial model to implement overhang and side fins with weather bus connector).

Parameters

TypeNameDefaultDescription
Side fin
Lengthh Height of side fin that extends above window, measured from top of window [m]
Lengthdep Side fin depth (measured perpendicular to the wall plane) [m]
Lengthgap Distance between side fin and window edge [m]
Window
LengthhWin Window height [m]
LengthwWin Window width [m]

Connectors

TypeNameDescription
BusweaBusWeather data bus
input RealInputincAngSolar incidence angle [rad]
input RealInputHDirTilUnsDirect solar irradiation on tilted, unshaded surface [W/m2]
output RealOutputHDirTilDirect solar irradiation on tilted, shaded surface [W/m2]
output RealOutputfraSunFraction of the area that is unshaded [1]

Modelica definition

model SideFins "For a window with side fins, outputs the fraction of the window area exposed to the sun" extends Buildings.ThermalZones.Detailed.BaseClasses.SideFins; extends Buildings.HeatTransfer.Windows.BaseClasses.PartialShade_weatherBus; Buildings.HeatTransfer.Windows.BaseClasses.SideFins fin( final dep=dep, final h=h, final gap=gap, final hWin=hWin, final wWin=wWin) "Window side fins"; equation connect(fin.fraSun, fraSun); connect(walSolAzi.verAzi, fin.verAzi); connect(weaBus.solAlt, fin.alt); connect(fin.fraSun, product.u2); end SideFins;

Buildings.HeatTransfer.Windows.Window Buildings.HeatTransfer.Windows.Window

Model for a window

Buildings.HeatTransfer.Windows.Window

Information

Overview

This is a model for a window system. The equations are similar to the equations used in the Window 5 model and described in TARCOG 2006. The model computes the heat balance from the exterior surface to the room-facing surface for a window system. The window system can have an exterior or an interior shade, but not both, or it can have no shade. The convective heat transfer between the window system and the outside air or the room is not computed by this model. They can be computed using the models Buildings.HeatTransfer.Windows.ExteriorHeatTransfer, Buildings.HeatTransfer.Windows.InteriorHeatTransferConvective and Buildings.HeatTransfer.Windows.BaseClasses.ShadeRadiation.

Limitations

To calculate the angular transmittance, reflectance and absorptance of a glazing system, Window 5 model first calculates the value for each wave length, then calculate the weighted value over entire wave lengths. Current window model in Buildings library only uses the weighted value of each glass. As a result, there are some differences in prediciton between the current Modelica window model and WINDOW 5. The difference is small for single layer window or multi-layer window with the same glasses. But it can be large for multi-layer window with different glasses.

Parameters

This model takes as the parameter glaSys a data record from the package Buildings.HeatTransfer.Data.GlazingSystems. This data record specifies the properties of the glasses, the gas fills, the frame and of the shades, if any shade is present. Whether a shade is present or not is determined by the parameters glaSys.haveExteriorShade and glaSys.haveInteriorShade.

The parameter linearize can be used to linearize the model equations.

If the parameter steadyState is set to false then state variables are added at the heat ports that face the room side. For simulation of Buildings.ThermalZones.Detailed.MixedAir, adding states avoids large nonlinear system of equations, and generally leads to faster simulation. Default values are used for the states.

Ports

If a shade is present, then the input port u is used to determine the shade position. Set u=0 to have the window in the unshaded mode, and set u=1 to have the window shade completely deployed. Any intermediate value is possible. If no shade is present, then this port will be removed.

For the heat ports, the suffix _a is used for the exterior, outside-facing side of the window, and the suffix _b is used for the interior, room-facing surface of the window. Each side has heat ports that connect to the glass, to the frame, and, optionally, to the shade. If no shade is present, then the heat port to the shade will be removed.

Description of the Physics

The model has three main submodels that implement the relevant heat balances:

  1. The model frame computes heat conduction through the frame.
  2. The model glaUns computes the heat balance of the part of the window that is unshaded. For example, if u=0.2, then this model accounts for the 80% of the window that is not behind the shade or blind.
  3. The model glaSha computes the heat balance of the part of the window that is shaded. For example, if u=0.2, then this model accounts for the 20% of the window that is behind the shade or blind. If the parameter glaSys specifies that the window has no exterior and no interior shade, then the model glaSha will be removed.

The models glaUns and glaSha compute the solar radiation that is absorbed by each glass pane and the solar radiation that is transitted through the window as a function of the solar incidence angle. They then compute a heat balance that takes into account heat conduction through the glass, heat convection through the gas layer, and infrared radiation from the exterior and the room through the glass and gas layers. The infrared radiative heat exchange is computed using a radiosity balance. Heat conduction through the frame is computed using a heat flow path that is parallel to the glazing system, i.e., there is no heat exchange between the frame and the glazing layer.

Validation

The window model has been validated by using measurement data at LBNL's Test Cell 71T and by using a comparative model validation with the WINDOW 6 program. These validations are described in Nouidui et al. (2012). The window model has also been validated as part of the BESTEST validations that are implemented in Buildings.ThermalZones.Detailed.Examples.BESTEST.

References

TARCOG 2006: Carli, Inc., TARCOG: Mathematical models for calculation of thermal performance of glazing systems with or without shading devices, Technical Report, Oct. 17, 2006.

Thierry Stephane Nouidui, Michael Wetter, and Wangda Zuo. Validation of the window model of the Modelica Buildings library. Proc. of the 5th SimBuild Conference, Madison, WI, USA, August 2012.

Parameters

TypeNameDefaultDescription
GenericglaSys Glazing system
AreaA Heat transfer area [m2]
RealfFra0.1Fraction of frame
BooleanlinearizefalseSet to true to linearize emissive power
Angletiltil( ...Surface tilt [rad]
Advanced
BooleanhomotopyInitializationtrue= true, use homotopy method
Dynamics
BooleansteadyStatetrueFlag, if true, then window is steady-state, else capacity is added at room-side

Connectors

TypeNameDescription
output RadiosityOutflowJOutUns_aOutgoing radiosity that connects to unshaded part of glass at exterior side [W]
input RadiosityInflowJInUns_aIncoming radiosity that connects to unshaded part of glass at exterior side [W]
output RadiosityOutflowJOutSha_aOutgoing radiosity that connects to shaded part of glass at exterior side [W]
input RadiosityInflowJInSha_aIncoming radiosity that connects to shaded part of glass at exterior side [W]
output RadiosityOutflowJOutUns_bOutgoing radiosity that connects to unshaded part of glass at room-side [W]
input RadiosityInflowJInUns_bIncoming radiosity that connects to unshaded part of glass at room-side [W]
output RadiosityOutflowJOutSha_bOutgoing radiosity that connects to shaded part of glass at room-side [W]
input RadiosityInflowJInSha_bIncoming radiosity that connects to shaded part of glass at room-side [W]
HeatPort_aglaUns_aHeat port at unshaded glass of exterior-facing surface
HeatPort_bglaUns_bHeat port at unshaded glass of room-facing surface
HeatPort_aglaSha_aHeat port at shaded glass of exterior-facing surface
HeatPort_bglaSha_bHeat port at shaded glass of room-facing surface
HeatPort_afra_aHeat port at frame of exterior-facing surface
HeatPort_bfra_bHeat port at frame of room-facing surface
input RealInputuShaControl signal for the shading device. 0: unshaded; 1: fully shaded (removed if no shade is present)
input RealInputQAbsUns_flow[size(glaSys.glass, 1)]Solar radiation absorbed by unshaded part of glass [W]
input RealInputQAbsSha_flow[size(glaSys.glass, 1)]Solar radiation absorbed by shaded part of glass [W]

Modelica definition

model Window "Model for a window" parameter Buildings.HeatTransfer.Data.GlazingSystems.Generic glaSys "Glazing system"; parameter Modelica.SIunits.Area A "Heat transfer area"; parameter Real fFra(min=0, max=1)=0.1 "Fraction of frame"; final parameter Modelica.SIunits.Area AFra = fFra*A "Frame area"; final parameter Modelica.SIunits.Area AGla = A-AFra "Glass area"; parameter Boolean linearize=false "Set to true to linearize emissive power"; parameter Modelica.SIunits.Angle til(displayUnit="deg") "Surface tilt"; parameter Boolean homotopyInitialization = true "= true, use homotopy method"; parameter Boolean steadyState = true "Flag, if true, then window is steady-state, else capacity is added at room-side"; Interfaces.RadiosityOutflow JOutUns_a "Outgoing radiosity that connects to unshaded part of glass at exterior side"; Interfaces.RadiosityInflow JInUns_a "Incoming radiosity that connects to unshaded part of glass at exterior side"; Interfaces.RadiosityOutflow JOutSha_a if haveShade "Outgoing radiosity that connects to shaded part of glass at exterior side"; Interfaces.RadiosityInflow JInSha_a if haveShade "Incoming radiosity that connects to shaded part of glass at exterior side"; Interfaces.RadiosityOutflow JOutUns_b "Outgoing radiosity that connects to unshaded part of glass at room-side"; Interfaces.RadiosityInflow JInUns_b "Incoming radiosity that connects to unshaded part of glass at room-side"; Interfaces.RadiosityOutflow JOutSha_b if haveShade "Outgoing radiosity that connects to shaded part of glass at room-side"; Interfaces.RadiosityInflow JInSha_b if haveShade "Incoming radiosity that connects to shaded part of glass at room-side"; Buildings.HeatTransfer.Windows.BaseClasses.CenterOfGlass glaUns( final glaSys=glaSys, final A=AGla, final til=til, final linearize=linearize, final homotopyInitialization=homotopyInitialization) "Model for unshaded center of glass"; Buildings.HeatTransfer.Windows.BaseClasses.CenterOfGlass glaSha( final glaSys=glaSys, final A=AGla, final til=til, final linearize=linearize, final homotopyInitialization=homotopyInitialization) if haveShade "Model for shaded center of glass"; Modelica.Thermal.HeatTransfer.Components.ThermalConductor frame(G=AFra* glaSys.UFra) "Thermal conductance of frame"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a glaUns_a "Heat port at unshaded glass of exterior-facing surface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b glaUns_b "Heat port at unshaded glass of room-facing surface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a glaSha_a if haveShade "Heat port at shaded glass of exterior-facing surface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b glaSha_b if haveShade "Heat port at shaded glass of room-facing surface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a fra_a "Heat port at frame of exterior-facing surface"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b fra_b "Heat port at frame of room-facing surface"; Modelica.Blocks.Interfaces.RealInput uSha(min=0, max=1) if haveShade "Control signal for the shading device. 0: unshaded; 1: fully shaded (removed if no shade is present)"; Modelica.Blocks.Interfaces.RealInput QAbsUns_flow[size(glaSys.glass, 1)](each unit="W", each quantity="Power") "Solar radiation absorbed by unshaded part of glass"; Modelica.Blocks.Interfaces.RealInput QAbsSha_flow[size(glaSys.glass, 1)]( each unit="W", each quantity="Power") if haveShade "Solar radiation absorbed by shaded part of glass"; Buildings.HeatTransfer.Windows.BaseClasses.HeatCapacity capGla( final haveShade=glaSys.haveExteriorShade or glaSys.haveInteriorShade, C=AGla*glaSys.glass[1].x*matGla.d*matGla.c, der_TUns(fixed=true), der_TSha(fixed=glaSys.haveExteriorShade or glaSys.haveInteriorShade)) if not steadyState "Heat capacity of glass on room-side, used to reduce nonlinear system of equations"; // We assume the frame is made of wood. Data are used for Plywood, as // this is an order of magnitude estimate for the heat capacity of the frame, // which is only used to avoid algebraic loops in the room model. Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFra( der_T(fixed=true), C=AFra*matFra.x*matFra.d*matFra.c) if not steadyState "Heat capacity of frame on room-side, used to reduce nonlinear system of equations"; protected final parameter Boolean haveShade = glaSys.haveExteriorShade or glaSys.haveInteriorShade "Parameter, equal to true if the window has a shade"; BaseClasses.ShadingSignal shaSig(final haveShade=glaSys.haveExteriorShade or glaSys.haveInteriorShade) "Block to constrain the shading control signal to be strictly within (0, 1) if a shade is present"; parameter Data.Solids.Plywood matFra(x=0.03) "Thermal properties of frame (used to avoid algebraic loops in room model)"; parameter Data.Solids.Glass matGla( x=glaSys.glass[end].x, nSta=1, nStaReal=1) "Material properties for thermal capacity of room-facing glass (used to avoid algebraic loops in room model)"; equation connect(frame.port_a, fra_a); connect(frame.port_b, fra_b); connect(glaUns.glass_a, glaUns_a); connect(glaUns.glass_b, glaUns_b); connect(shaSig.yCom, glaUns.u); connect(shaSig.y, glaSha.u); connect(shaSig.u, uSha); connect(glaSha.glass_a, glaSha_a); connect(glaSha.glass_b, glaSha_b); connect(JInUns_a, glaUns.JIn_a); connect(glaUns.JOut_a, JOutUns_a); connect(glaUns.JOut_b, JOutUns_b); connect(JInUns_b, glaUns.JIn_b); connect(JInSha_a, glaSha.JIn_a); connect(glaSha.JOut_a, JOutSha_a); connect(glaSha.JOut_b, JOutSha_b); connect(JInSha_b, glaSha.JIn_b); connect(glaUns.QAbs_flow, QAbsUns_flow); connect(glaSha.QAbs_flow,QAbsSha_flow); connect(capFra.port, fra_b); connect(capGla.ySha, shaSig.y); connect(capGla.yCom, shaSig.yCom); connect(capGla.portSha, glaSha_b); connect(capGla.portUns, glaUns_b); end Window;