Description: "Package with models for windows"

- Home > Modelica

## 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
--- | ---
ExteriorHeatTransfer | Model for heat convection and radiation at the exterior surface of a window that may have a shading device
FixedShade | Model for exterior shade due to overhang and/or side fin
InteriorHeatTransferConvective | Model for heat convection at the interior surface of a window that may have a shading device
Overhang | For a window with an overhang, outputs the fraction of the window area exposed to the sun
SideFins | For a window with side fins, outputs the fraction of the window area exposed to the sun
Window | Model for a window
Functions | Functions used in window radiation model
Examples | Collection of models that illustrate model use and test models
BaseClasses | Package with base classes for Buildings.HeatTransfer.Windows

## Buildings.HeatTransfer.Windows.ExteriorHeatTransfer

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

### 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

Type | Name | Default | Description
--- | --- | --- | ---
Area | A |  | Heat transfer area of frame and window [m2]
Real | fFra |  | Fraction of window frame divided by total window area
Boolean | linearizeRadiation |  | Set to true to linearize emissive power
Real | vieFacSky |  | View factor from receiving surface to sky [1]
Shading
Boolean | haveExteriorShade |  | Set to true if window has exterior shade (at surface a)
Boolean | haveInteriorShade |  | Set to true if window has interior shade (at surface b)
Boolean | thisSideHasShade | haveExteriorShade | Set to true if this side of the model has a shade
Emissivity | absIRSha_air |  | Infrared absorptivity of shade surface that faces air [1]
Emissivity | absIRSha_glass |  | Infrared absorptivity of shade surface that faces glass [1]
TransmissionCoefficient | tauIRSha_air |  | Infrared transmissivity of shade for radiation coming from the exterior or the room [1]
TransmissionCoefficient | tauIRSha_glass |  | Infrared transmissivity of shade for radiation coming from the glass [1]

### Connectors

Type | Name | Description
--- | --- | ---
input RealInput | uSha | Input connector, used to scale the surface area to take into account an operable shading device, 0: unshaded; 1: fully shaded
HeatPort_a | air | Port that connects to the air (room or outside)
HeatPort_b | glaUns | Heat port that connects to unshaded part of glass
HeatPort_b | glaSha | Heat port that connects to shaded part of glass
HeatPort_a | frame | Heat port at window frame
input RealInput | vWin | Wind speed [m/s]
input RealInput | TBlaSky | Black body sky temperature [K]
input RealInput | TOut | Outside temperature [K]
output RadiosityOutflow | JOutUns | Outgoing radiosity that connects to unshaded part of glass [W]
input RadiosityInflow | JInUns | Incoming radiosity that connects to unshaded part of glass [W]
output RadiosityOutflow | JOutSha | Outgoing radiosity that connects to shaded part of glass [W]
input RadiosityInflow | JInSha | Incoming radiosity that connects to shaded part of glass [W]
input RealInput | QSolAbs_flow | Solar 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 "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

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

### 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

- the overhang is at least as wide as the window, i.e., wL ≥ 0 and wR ≥ 0, and
- the overhang is horizontal.

For side fins, the model assumes that

- the side fins are placed symmetrically to the left and right of the window,
- the top of the side fins must be at an equal or greater height than the window, and
- the side fins extends at least to the lower edge of the window.

#### 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

Type | Name | Default | Description
--- | --- | --- | ---
ParameterConstructionWithWindow | conPar |  | Construction parameters
Angle | lat |  | Latitude [rad]
Angle | azi |  | Surface azimuth; azi= -90 degree East; azi= 0 South [rad]

### Connectors

Type | Name | Description
--- | --- | ---
Bus | weaBus | Weather data bus
input RealInput | incAng | Solar incidence angle [rad]
input RealInput | HDirTilUns | Direct solar irradiation on tilted, unshaded surface [W/m2]
output RealOutput | HDirTil | Direct solar irradiation on tilted, shaded surface [W/m2]
output RealOutput | fraSun | Fraction 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.Rooms.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

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

### 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

Type | Name | Default | Description
--- | --- | --- | ---
Area | A |  | Heat transfer area of frame and window [m2]
Real | fFra |  | Fraction of window frame divided by total window area
CoefficientOfHeatTransfer | hFixed | 4 | Constant convection coefficient [W/(m2.K)]
InteriorConvection | conMod | Buildings.HeatTransfer.Types... | Convective heat transfer model
Angle | til |  | Surface tilt [rad]
Shading
Boolean | haveExteriorShade |  | Set to true if window has exterior shade (at surface a)
Boolean | haveInteriorShade |  | Set to true if window has interior shade (at surface b)
Boolean | thisSideHasShade | haveInteriorShade | Set to true if this side of the model has a shade

### Connectors

Type | Name | Description
--- | --- | ---
input RealInput | uSha | Input connector, used to scale the surface area to take into account an operable shading device, 0: unshaded; 1: fully shaded
HeatPort_a | air | Port that connects to the air (room or outside)
HeatPort_b | glaUns | Heat port that connects to unshaded part of glass
HeatPort_b | glaSha | Heat port that connects to shaded part of glass
HeatPort_a | frame | Heat port at window frame
input RealInput | QRadAbs_flow | Total net radiation that is absorbed by the shade (positive if absorbed) [W]
output RealOutput | TSha | Shade 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

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

### 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.

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

#### Limitations

The model assumes that

- the overhang is at least as wide as the window, i.e., wL ≥ 0 and wR ≥ 0, and
- the overhang is horizontal.

#### Implementation

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

Extends from Buildings.Rooms.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

Type | Name | Default | Description
--- | --- | --- | ---
Angle | lat |  | Latitude [rad]
Angle | azi |  | Surface azimuth; azi= -90 degree East; azi= 0 South [rad]
Overhang
Length | wL |  | Overhang width left to the window, measured from the window corner [m]
Length | wR |  | Overhang width right to the window, measured from the window corner [m]
Length | dep |  | Overhang depth (measured perpendicular to the wall plane) [m]
Length | gap |  | Distance between window upper edge and overhang lower edge [m]
Window
Length | hWin |  | Window height [m]
Length | wWin |  | Window width [m]

### Connectors

Type | Name | Description
--- | --- | ---
Bus | weaBus | Weather data bus
input RealInput | incAng | Solar incidence angle [rad]
input RealInput | HDirTilUns | Direct solar irradiation on tilted, unshaded surface [W/m2]
output RealOutput | HDirTil | Direct solar irradiation on tilted, shaded surface [W/m2]
output RealOutput | fraSun | Fraction 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.Rooms.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

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

### 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.)

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.

#### Limitations

The model assumes that

- the side fins are placed symmetrically to the left and right of the window,
- the top of the side fins must be at an equal or greater height than the window, and
- the bottom of the side fins must be at an equal or lower height than the bottom of the window.

#### Implementation

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

Extends from Buildings.Rooms.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

Type | Name | Default | Description
--- | --- | --- | ---
Side fin
Length | h |  | Height of side fin that extends above window, measured from top of window [m]
Length | dep |  | Side fin depth (measured perpendicular to the wall plane) [m]
Length | gap |  | Distance between side fin and window edge [m]
Window
Length | hWin |  | Window height [m]
Length | wWin |  | Window width [m]

### Connectors

Type | Name | Description
--- | --- | ---
Bus | weaBus | Weather data bus
input RealInput | incAng | Solar incidence angle [rad]
input RealInput | HDirTilUns | Direct solar irradiation on tilted, unshaded surface [W/m2]
output RealOutput | HDirTil | Direct solar irradiation on tilted, shaded surface [W/m2]
output RealOutput | fraSun | Fraction 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.Rooms.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

Model for a 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 and Buildings.HeatTransfer.Windows.InteriorHeatTransfer.

#### 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.

#### 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.Rooms.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

Type | Name | Default | Description
--- | --- | --- | ---
Generic | glaSys |  | Glazing system
Area | A |  | Heat transfer area [m2]
Real | fFra | 0.1 | Fraction of frame
Boolean | linearize | false | Set to true to linearize emissive power
Angle | til |  | Surface tilt [rad]
Advanced
Boolean | homotopyInitialization | true | = true, use homotopy method

### Connectors

Type | Name | Description
--- | --- | ---
output RadiosityOutflow | JOutUns_a | Outgoing radiosity that connects to unshaded part of glass at exterior side [W]
input RadiosityInflow | JInUns_a | Incoming radiosity that connects to unshaded part of glass at exterior side [W]
output RadiosityOutflow | JOutSha_a | Outgoing radiosity that connects to shaded part of glass at exterior side [W]
input RadiosityInflow | JInSha_a | Incoming radiosity that connects to shaded part of glass at exterior side [W]
output RadiosityOutflow | JOutUns_b | Outgoing radiosity that connects to unshaded part of glass at room-side [W]
input RadiosityInflow | JInUns_b | Incoming radiosity that connects to unshaded part of glass at room-side [W]
output RadiosityOutflow | JOutSha_b | Outgoing radiosity that connects to shaded part of glass at room-side [W]
input RadiosityInflow | JInSha_b | Incoming radiosity that connects to shaded part of glass at room-side [W]
HeatPort_a | glaUns_a | Heat port at unshaded glass of exterior-facing surface
HeatPort_b | glaUns_b | Heat port at unshaded glass of room-facing surface
HeatPort_a | glaSha_a | Heat port at shaded glass of exterior-facing surface
HeatPort_b | glaSha_b | Heat port at shaded glass of room-facing surface
HeatPort_a | fra_a | Heat port at frame of exterior-facing surface
HeatPort_b | fra_b | Heat port at frame of room-facing surface
input RealInput | uSha | Control signal for the shading device. 0: unshaded; 1: fully shaded (removed if no shade is present)
input RealInput | QAbsUns_flow[size(glaSys.glass, 1)] | Solar radiation absorbed by unshaded part of glass [W]
input RealInput | QAbsSha_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"; 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"; 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"; 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); end Window;