This package contains models for heat transfer in windows.
Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).Name | Description |
---|---|
Window | Model for a window |
ExteriorHeatTransfer | Model for heat convection and radiation at the exterior surface of a window that may have a shading device |
InteriorHeatTransferConvective | Model for heat convection at the interior surface of a window that may have a shading device |
FixedShade | Model for exterior shade due to overhang and/or side fin |
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 |
Examples | Collection of models that illustrate model use and test models |
BaseClasses | Package with base classes for Buildings.HeatTransfer.Windows |
Functions | Functions used in window radiation model |
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.
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.
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 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.
The model has three main submodels that implement the relevant heat balances:
frame
computes heat conduction
through the frame.
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.
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.
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.
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.
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] |
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[glaSys.nLay] | Solar radiation absorbed by unshaded part of glass [W] |
input RealInput | QAbsSha_flow[glaSys.nLay] | Solar radiation absorbed by shaded part of glass [W] |
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";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) "Model for unshaded center of glass"; Buildings.HeatTransfer.Windows.BaseClasses.CenterOfGlass glaSha( final glaSys=glaSys, final A=AGla, final til=til, final linearize=linearize) 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[glaSys.nLay](each unit="W", each quantity="Power") "Solar radiation absorbed by unshaded part of glass"; Modelica.Blocks.Interfaces.RealInput QAbsSha_flow[glaSys.nLay](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"; equationconnect(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;
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).
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] |
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] |
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"; 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); end ExteriorHeatTransfer;
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).
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 | |
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 |
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] |
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);Buildings.HeatTransfer.Windows.BaseClasses.InteriorConvectionCoefficient conCoeGla(final A=AGla) "Model for the inside convective heat transfer coefficient of the glass"; Buildings.HeatTransfer.Windows.BaseClasses.InteriorConvectionCoefficient conCoeFra(final A=AFra) "Model for the inside convective heat transfer coefficient of the frame"; BaseClasses.ShadeConvection conSha( final A=AGla, final thisSideHasShade=thisSideHasShade) if haveShade "Convection model for shade"; 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"; equationconnect(conCoeFra.GCon, conFra.Gc); connect(conCoeGla.GCon, proUns.u2); 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); end InteriorHeatTransferConvective;
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.
For overhangs, the model assumes that
For side fins, the model assumes that
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).
Type | Name | Default | Description |
---|---|---|---|
ParameterConstructionWithWindow | conPar | Construction parameters | |
Angle | lat | Latitude [rad] | |
Angle | azi | Surface azimuth; azi= -90 degree East; azi= 0 South [rad] |
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] |
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) "Parameter used for error control"; 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"; equationconnect(weaBus.sol.alt, walSolAzi.alt); connect(incAng, walSolAzi.incAng); connect(walSolAzi.verAzi, ove.verAzi); connect(walSolAzi.verAzi, sidFin.verAzi); connect(weaBus.sol.alt, 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.sol.alt, 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;
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.HeatTransfer.Types.Azimuth.
The model assumes that
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).
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] |
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] |
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 dimensionsprotected 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"; equationconnect(ove.fraSun, fraSun); connect(walSolAzi.verAzi, ove.verAzi); connect(ove.fraSun, product.u2); connect(weaBus, ove.weaBus); connect(weaBus.sol.alt, ove.alt); end Overhang;
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.
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).
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] |
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] |
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"; equationconnect(fin.fraSun, fraSun); connect(walSolAzi.verAzi, fin.verAzi); connect(weaBus.sol.alt, fin.alt); connect(fin.fraSun, product.u2); end SideFins;