Nodes of different colours represent the following:
Solid arrows point from a parent (sub)module to the submodule which is descended from it. Dashed arrows point from a module being used to the module or program unit using it. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
SUBROUTINE CalcBeamSolarOnWinRevealSurface
! SUBROUTINE INFORMATION:
! AUTHOR F. Winkelmann
! DATE WRITTEN April 2002
! MODIFIED:na
! RE-ENGINEERED:na
! PURPOSE OF THIS SUBROUTINE
! Called by InitHeatGains when the sun is up.
! Calculates beam solar radiation absorbed and reflected by top, bottom,
! right and left sides of outside and inside window reveal surfaces.
! In doing this calculation, the shadowing on a reveal surface by other reveal surfaces
! is determined using the orientation of the reveal surfaces and the sun position.
! It is assumed that:
!
! (1) The window is an exterior window and is rectangular.
! (2) The reveal surfaces are perpendicular to the window plane.
! (3) If an exterior shade or blind is in place, there is no beam solar on
! on exterior or interior reveal surfaces.
! (3) If an interior shade or blind is in place, there is no beam solar on
! interior reveal surfaces.
! (4) The effect of window divider, if present, is ignored, including shadowing
! of divider on inside reveal surfaces.
! In the variable names, the "subscript" 1 = outside reveal, 2 = inside reveal
!
! The outside reveal surfaces (top, bottom, left, right) are assumed to have the same depth
! (given by Surface%Reveal and determined from vertices of window and vertices of parent
! wall) and the same solar absorptance. The inside reveal surfaces are divided into
! two categories: (1) the bottom reveal surface, called here the "inside sill;" and
! the other reveal surfaces (left, right and top). The left, right and top inside reveal
! surfaces are assumed to have the same depth and solar absorptance.
! The depth of the outside reveal is measured from the outside surface of the glazing;
! The depth of the inside sill and the other reveal surfaces is measured from the inside
! surface of the glazing. The inside sill is
! allowed to have depth and solar absorptance values that are different from the corresponding
! values for the other inside reveal surfaces. The inside sill depth is required to be
! greater than or equal to the depth of the other inside reveal surfaces. If the inside sill
! depth is greater than zero the depth of the other inside reveal surfaces is required to
! to be greater than zero.
!
! The reflection of beam solar radiation from all reveal surfaces is assumed to be isotropic
! diffuse; there is no specular component. Half of the beam solar reflected from outside
! reveal surfaces is assumed to go towards the window; the other half is assumed to go back
! to the exterior environment (i.e., reflection of this outward-going component from
! other outside reveal surfaces is not considered). The half that goes towards the window
! is added to the other radiation incident on the window.
! Correspondingly, half of the beam solar reflected from inside reveal surfaces is assumed
! to go towards the window, with the other half going into the zone (this half, and the portion
! going towards the window that is reflected) is added in CalcInteriorSolarDistribution
! to the variable BTOTzone, which is the total beam solar entering the zone as beam or diffuse.
! The portion going towards the window that is not reflected is absorbed in the glazing or
! transmitted back out into the exterior environment.
!
! The beam solar that is absorbed by outside reveal surfaces is added to the solar absorbed
! by the outside surface of the window's parent wall; similarly, the beam solar absorbed
! by the inside reveal surfaces is added to the solar absorbed by the inside surface of the
! parent wall (and is subtracted from BTOTzone).
!
! The net effect of beam solar reflected from outside reveal surfaces is to INCREASE the
! the heat gain to the zone, whereas the effect of beam solar reflected from interior reveal
! surfaces is to DECREASE the heat gain to the zone since part of this reflected solar is
! transmitted back out the window.
!
! If the window has a frame, the absorption of reflected beam solar by the inside and outside
! surfaces of the frame is considered. The shadowing of the frame onto interior reveal
! surfaces is also considered.
! The total glazing thickness is taken to be the sum of the thickness of the glass layers
! and between-glass gas layers. If the window has an exterior, movable, storm window glass layer
! the presence of this layer and its adjacent air gap is considered in calculating the glazing
! properties (solar transmittance, etc.). But the storm window glass is assumed to be close
! enough to the rest of the glazing that its effect on total glazing thickness and outside
! reveal depth can be ignored.
! METHODOLOGY EMPLOYED
! na
! REFERENCES
! na
! USE STATEMENTS
USE General, ONLY: POLYF,InterpSw
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS
INTEGER :: ConstrNum ! Construction number
INTEGER :: ConstrNumSh ! Shaded construction number
REAL(r64) :: CosBetaBottom ! Cosine of beam solar angle of incidence on bottom reveal
REAL(r64) :: CosBetaLeft ! Cosine of beam solar angle of incidence on left reveal
REAL(r64) :: CosBeta ! ABS of CosBetaBottom or CosBetaLeft
REAL(r64) :: d1 ! Depth of outside reveal + half of glazing thickness (m)
REAL(r64) :: d2 ! Depth of inside sill or of inside reveal plus half of glazing thickness (m)
REAL(r64) :: d2prime ! Depth of shadow cast on a reveal surface by opposite reveal (m)
REAL(r64) :: d2prime2 ! Depth of shadow cast by frame onto inside reveal (m)
REAL(r64) :: d12 ! d12 = d1 + d2 - d2prime (m)
REAL(r64) :: TanAlpha ! Tangent of horizontal or vertical profile angle
REAL(r64) :: TanGamma ! Tangent of vertical or horizontal profile angle
REAL(r64) :: H,W ! Window height, width (m)
REAL(r64) :: L ! Window height or width (m)
REAL(r64) :: A1sh ! Shadowed area of outside horizontal or vertical reveal (m2)
REAL(r64) :: A2sh ! Shadowed area of inside horizontal or vertical reveal (m2)
REAL(r64) :: A1ill ! Illuminated area of outside horizontal or vertical reveal (m2)
REAL(r64) :: A2ill ! Illuminated area of inside horizontal or vertical reveal (m2)
REAL(r64) :: SolTransGlass ! Beam solar transmittance of glazing
REAL(r64) :: SolTransGlassSh ! For switchable glazing, beam solar trans in switched state
REAL(r64) :: DiffReflGlass ! Diffuse back reflectance of glazing
REAL(r64) :: DiffReflGlassSh ! For switchable glazing, diffuse back refl in switched state
INTEGER :: HorVertReveal ! Index: 1 = horizontal reveal, 2 = vertical reveal
REAL(r64) :: OutsReveal ! Depth of outside reveal (from outside glazing plane to outside wall plane) (m)
REAL(r64) :: InsReveal ! Depth of inside reveal (from inside glazing plane to inside wall plane (m)
REAL(r64) :: InsSillDepth ! Depth of inside sill, measured from innermost face of glazing (m)
REAL(r64) :: GlazingThickness ! Thickness of glazing, measured from innermost face to outermost face (m)
REAL(r64) :: InsideRevealSolAbs ! Solar absorptance of inside reveal or inside sill
REAL(r64) :: BmSolRefldOutsReveal ! Multiplied by beam solar gives beam solar reflected by horiz or vertical
! outside reveal surface (m2)
REAL(r64) :: BmSolRefldInsReveal ! Multiplied by beam solar gives beam solar reflected by horiz or vertical
! inside reveal surface (m2)
INTEGER :: SurfNum ! Surface number
INTEGER :: ShadeFlag ! Shading flag
INTEGER :: FrameDivNum ! Frame/Divider number
REAL(r64) :: FrameWidth ! Frame width (m)
REAL(r64) :: P1,P2 ! Frame outside/inside projection plus half of glazing thickness (m)
REAL(r64) :: f1,f2 ! f1=d1-P1, f2=d2-P2 (m)
REAL(r64) :: L1,L2 ! Average distance of outside/inside illuminated area to frame;
! used in calculating view factor to frame (m)
REAL(r64) :: FracToGlassOuts ! View factor from outside horizontal or vertical reveal to glass
REAL(r64) :: FracToGlassIns ! View factor from inside horizontal or vertical reveal to glass
REAL(r64) :: TanProfileAngVert ! Tangent of vertical profile angle (the profile angle appropriate for
! vertical reveal surfaces.
REAL(r64) :: TanProfileAngHor ! Tangent of horizontal profile angle (the profile angle appropriate for
! horizontal reveal surfaces.
REAL(r64) :: tmp_SunlitFracWithoutReveal ! Temporary variable
DO SurfNum = 1,TotSurfaces
! Added TH for initialization. CR 7596 inside reveal causing high cooling loads
! for outside reveals
SurfaceWindow(SurfNum)%BmSolAbsdOutsReveal = 0.0d0
SurfaceWindow(SurfNum)%BmSolRefldOutsRevealReport = 0.0d0
SurfaceWindow(SurfNum)%BmSolRefldOutsRevealRepEnergy = 0.0d0
SurfaceWindow(SurfNum)%OutsRevealDiffOntoGlazing = 0.0d0
SurfaceWindow(SurfNum)%OutsRevealDiffOntoFrame = 0.0d0
! for inside reveals
SurfaceWindow(SurfNum)%BmSolAbsdInsReveal = 0.0d0
SurfaceWindow(SurfNum)%BmSolAbsdInsRevealReport = 0.0d0
SurfaceWindow(SurfNum)%BmSolRefldInsReveal = 0.0d0
SurfaceWindow(SurfNum)%BmSolRefldInsRevealReport = 0.0d0
SurfaceWindow(SurfNum)%BmSolRefldInsRevealRepEnergy = 0.0d0
SurfaceWindow(SurfNum)%InsRevealDiffOntoGlazing = 0.0d0
SurfaceWindow(SurfNum)%InsRevealDiffOntoGlazingReport = 0.0d0
SurfaceWindow(SurfNum)%InsRevealDiffOntoFrame = 0.0d0
SurfaceWindow(SurfNum)%InsRevealDiffOntoFrameReport = 0.0d0
SurfaceWindow(SurfNum)%InsRevealDiffIntoZone = 0.0d0
SurfaceWindow(SurfNum)%InsRevealDiffIntoZoneReport = 0.0d0
IF(Surface(SurfNum)%Class /= SurfaceClass_Window .OR. &
(Surface(SurfNum)%ExtBoundCond /= ExternalEnvironment .AND. &
Surface(SurfNum)%ExtBoundCond /= OtherSideCondModeledExt)) CYCLE
IF(Surface(SurfNum)%Reveal == 0.0d0 .AND. SurfaceWindow(SurfNum)%InsideReveal == 0.0d0 .AND. &
SurfaceWindow(SurfNum)%InsideSillDepth == 0.0d0) CYCLE
IF(Surface(SurfNum)%Sides /= 4) CYCLE
IF(SurfaceWindow(SurfNum)%InsideSillDepth < SurfaceWindow(SurfNum)%InsideReveal) CYCLE
ShadeFlag = SurfaceWindow(SurfNum)%ShadingFlag
IF(ShadeFlag == ExtShadeOn .OR. ShadeFlag == ExtBlindOn) CYCLE
IF(CosIncAng(SurfNum,HourOfDay,TimeStep) <= 0.0d0) CYCLE
tmp_SunlitFracWithoutReveal = SunlitFracWithoutReveal(SurfNum,HourOfDay,TimeStep)
! Calculate cosine of angle of incidence of beam solar on reveal surfaces,
! assumed to be perpendicular to window plane
CosBetaBottom = -SOLCOS(1) * Surface(SurfNum)%SinAzim * Surface(SurfNum)%CosTilt - &
SOLCOS(2) * Surface(SurfNum)%CosAzim * Surface(SurfNum)%CosTilt + &
SOLCOS(3) * Surface(SurfNum)%SinTilt
CosBetaLeft = -SOLCOS(1) * Surface(SurfNum)%CosAzim - &
SOLCOS(2) * Surface(SurfNum)%SinAzim
!Note: CosBetaTop = -CosBetaBottom, CosBetaRight = -CosBetaLeft
OutsReveal = Surface(SurfNum)%Reveal
InsReveal = SurfaceWindow(SurfNum)%InsideReveal
InsideRevealSolAbs=0.0d0
GlazingThickness = SurfaceWindow(SurfNum)%TotGlazingThickness
H = Surface(SurfNum)%Height
W = Surface(SurfNum)%Width
d1 = OutsReveal + 0.5d0*GlazingThickness
ConstrNum = Surface(SurfNum)%Construction
ConstrNumSh = Surface(SurfNum)%ShadedConstruction
IF(SurfaceWindow(SurfNum)%StormWinFlag==1) THEN
ConstrNum = Surface(SurfNum)%StormWinConstruction
ConstrNumSh = Surface(SurfNum)%StormWinShadedConstruction
END IF
SolTransGlass = POLYF(CosIncAng(SurfNum,HourOfDay,TimeStep),Construct(ConstrNum)%TransSolBeamCoef(1:6))
TanProfileAngVert = SurfaceWindow(SurfNum)%TanProfileAngVert
TanProfileAngHor = SurfaceWindow(SurfNum)%TanProfileAngHor
FrameDivNum = Surface(SurfNum)%FrameDivider
FrameWidth = 0.0d0
IF(FrameDivNum /= 0) THEN
FrameWidth = FrameDivider(FrameDivNum)%FrameWidth
IF(FrameWidth > 0.0d0) THEN
P1 = FrameDivider(FrameDivNum)%FrameProjectionOut + 0.5d0*GlazingThickness
P2 = FrameDivider(FrameDivNum)%FrameProjectionIn + 0.5d0*GlazingThickness
IF(OutsReveal+0.5d0*GlazingThickness <= P1) d1 = P1 + 0.001d0
END IF
END IF
! Loop over vertical and horizontal reveal surfaces
DO HorVertReveal = 1,2
FracToGlassOuts = 0.5d0
FracToGlassIns = 0.5d0
BmSolRefldOutsReveal = 0.0d0
BmSolRefldInsReveal = 0.0d0
A1ill = 0.0d0
A2ill = 0.0d0
! Added TH. 5/27/2009
A1sh = 0.0d0
A2sh = 0.0d0
IF(HorVertReveal == 1) THEN ! Vertical reveal
TanAlpha = TanProfileAngHor
TanGamma = TanProfileAngVert
CosBeta = ABS(CosBetaLeft)
L = Surface(SurfNum)%Height
d2 = InsReveal + 0.5d0*GlazingThickness
d2prime = d1 + d2 - W/TanGamma
InsideRevealSolAbs = SurfaceWindow(SurfNum)%InsideRevealSolAbs
ELSE ! Horizontal reveal
InsSillDepth = SurfaceWindow(SurfNum)%InsideSillDepth
TanAlpha = TanProfileAngVert
TanGamma = TanProfileAngHor
CosBeta = ABS(CosBetaBottom)
L = Surface(SurfNum)%Width
IF(CosBetaBottom > 0.0d0) THEN ! Bottom reveal surfaces may be illuminated
d2 = InsSillDepth + 0.5d0*GlazingThickness
InsideRevealSolAbs = SurfaceWindow(SurfNum)%InsideSillSolAbs
ELSE ! Top reveal surfaces may be illuminated
d2 = InsReveal + 0.5d0*GlazingThickness
InsideRevealSolAbs = SurfaceWindow(SurfNum)%InsideRevealSolAbs
END IF
d2prime = d1 + d2 - H/TanGamma
END IF
IF(d2prime < 0.0d0) d2prime = 0.0d0 ! No shadow from opposing reveal
d12 = d1 + d2 - d2prime
IF(FrameWidth <= 0.001d0) THEN
! Window without frame
! Find inside and outside shadowed area of vertical or horizontal reveal surfaces
! that can be illuminated by beam solar; shadowing is by other reveal surfaces.
IF(d2prime <= d2) THEN
IF(d12*TanAlpha <= L) THEN
A1sh = 0.5d0*TanAlpha*d1**2
A2sh = d2prime*L + 0.5d0*TanAlpha*d12**2 - A1sh
ELSE ! d12*TanAlpha > L
IF(d1*TanAlpha <= L) THEN
A1sh = 0.5d0*TanAlpha*d1**2
A2sh = d2*L - 0.5d0*TanAlpha*(L/TanAlpha - d1)**2
ELSE ! d1*TanAlpha > L
A1sh = d1*L - (0.5d0/TanAlpha)*L**2
A2sh = d2*L
END IF
END IF
ELSE ! d2prime > d2
A2sh = d2*L
IF(d2prime < d1+d2) THEN
IF(d12*TanAlpha <= L) THEN
A1sh = L*(d2prime-d2) + 0.5d0*TanAlpha*d12**2
ELSE ! d12*TanAlpha > L
A1sh = d1*L - 0.5d0*L**2/TanAlpha
END IF
ELSE ! d2prime >= d1+d2
A1sh = d1*L
END IF
END IF
! Added TH. 5/27/2009
IF (A1sh < 0.0d0) A1sh = 0.0d0
IF (A2sh < 0.0d0) A2sh = 0.0d0
IF(OutsReveal >= 0.001d0) A1ill = d1*L - A1sh ! A1ill = 0.0 if OutsReveal < 0.001
IF(InsReveal >= 0.001d0) A2ill = d2*L - A2sh ! A2ill = 0.0 if InsReveal < 0.001
ELSE ! Window with frame; take into account shadowing
! of inside reveal surfaces by frame
f1 = d1-P1
f2 = d2-P2
d2prime2 = FrameWidth/TanGamma
IF(HorVertReveal == 1) THEN ! Vertical reveal
IF(InsReveal+0.5d0*GlazingThickness <= P2) d2 = P2 + 0.001d0
ELSE ! Horizontal
IF(CosBetaBottom > 0.0d0) THEN ! Bottom reveal surfaces may be illuminated
IF(InsSillDepth+0.5d0*GlazingThickness <= P2) d2 = P2 + 0.001d0
ELSE ! Top reveal surfaces may be illuminated
IF(InsReveal+0.5d0*GlazingThickness <= P2) d2 = P2 + 0.001d0
END IF
END IF
IF(d2prime <= f2) THEN ! Shadow from opposing reveal does not go beyond inside surface of frame
IF(d12*TanAlpha <= L) THEN
A1sh = 0.5d0*TanAlpha*f1**2
L1 = f1*(f1*TanAlpha/(6.d0*L)+0.5d0)
IF(d2-(d2prime+d2prime2+P2) >= 0.0d0) THEN
A2sh = (d2prime+d2prime2)*L + 0.5d0*TanAlpha*((d1+d2-d2prime)**2-(d1+p2+d2prime2)**2)
L2 = d2prime2 + 0.5d0*(d2-(d2prime+d2prime2+P2))
ELSE ! d2-(d2prime+d2prime2+P2) < 0. ! Inside reveal is fully shadowed by frame and/or opposing reveal
A2sh = f2*L
L2 = f2
END IF
ELSE ! d12*TanAlpha >= L
IF((d1+P2)*TanAlpha <= L) THEN
A1sh = 0.5d0*TanAlpha*f1**2
L1 = f1*((f1*TanAlpha)/(6.d0*L) + 0.5d0)
IF((d1+P2+d2prime2)*TanAlpha >= L) THEN
A2sh = f2*L
L2 = f2
ELSE ! (d1+P2+d2prime2)*TanAlpha < L
A2sh = f2*L - 0.5d0*(L-(d1+P2)*TanAlpha)**2/TanAlpha + d2prime2*(L-(d1+P2+d2prime2/2.d0)*TanAlpha)
L2 = d2prime2 + (L/TanAlpha - (d1+P2+d2prime2))/3.d0
END IF
ELSE ! (d1+P2)*TanAlpha > L
L2 = f2
A2sh = f2*L
IF(f1*TanAlpha <= L) THEN
A1sh = 0.5d0*TanAlpha*f1**2
L1 = f1*((f1*TanAlpha)/(6.d0*L) + 0.5d0)
ELSE ! f1*TanAlpha > L
A1sh = f1*L - 0.5d0*L**2/TanAlpha
L1 = f1-(L/TanAlpha)/3.d0
END IF
END IF
END IF
ELSE ! d2prime > f2 ! Shadow from opposing reveal goes beyond inside of frame
A2sh = f2*L
L2 = f2
IF(d2prime >= d1+d2) THEN
A1sh = 0.0d0
L1 = f1
ELSE ! d2prime < d1+d2
IF(d2prime <= d2+P1) THEN
IF(f1*TanAlpha <= L) THEN
A1sh = 0.5d0*TanAlpha*f1**2
L1 = f1*((f1*TanAlpha)/(6.d0*L) + 0.5d0)
ELSE ! f1*TanAlpha > L
A1sh = f1*L - 0.5d0*L**2/TanAlpha
L1 = f1 - (L/TanAlpha)/3.d0
END IF
ELSE ! d2prime > d2+P1
IF(d12*TanAlpha <= L) THEN
A1sh = L*(d2prime-(d2+P1)) + 0.5d0*TanAlpha*d12**2
L1 = (L*(f1-d12/2.d0)-d12*TanAlpha*(f1/2-d12/3.d0))/(L-d12*TanAlpha/2.d0)
ELSE ! d12*TanAlpha > L
A1sh = f1*L - 0.5d0*L**2/TanAlpha
L1 = f1 - (L/TanAlpha)/3.d0
END IF
END IF
END IF
END IF
! Added TH. 5/27/2009
IF (A1sh < 0.0d0) A1sh = 0.0d0
IF (A2sh < 0.0d0) A2sh = 0.0d0
IF(OutsReveal >= P1+0.5d0*GlazingThickness+0.001d0) A1ill = L*f1 - A1sh
IF(InsReveal >= P2+0.5d0*GlazingThickness+0.001d0) A2ill = L*f2 - A2sh
IF(L1 == 0.0d0) THEN
FracToGlassOuts = 0.0d0
ELSE
FracToGlassOuts = 0.5d0*(1.0d0 - ATAN(FrameWidth/L1)/PiOvr2)
END IF
IF(L2 == 0.0d0) THEN
FracToGlassIns = 0.0d0
ELSE
FracToGlassIns = 0.5d0*(1.0d0 - ATAN(FrameWidth/L2)/PiOvr2)
END IF
END IF ! End of check if window has frame
! Added TH. 5/27/2009
IF (A1ill < 0.0d0) A1ill = 0.0d0
IF (A2ill < 0.0d0) A2ill = 0.0d0
! Quantities related to outside reveal
IF(A1ill > 1.0d-6) THEN
SurfaceWindow(SurfNum)%BmSolAbsdOutsReveal = SurfaceWindow(SurfNum)%BmSolAbsdOutsReveal + &
A1ill * SurfaceWindow(SurfNum)%OutsideRevealSolAbs * CosBeta * tmp_SunlitFracWithoutReveal
BmSolRefldOutsReveal = A1ill * (1.d0- SurfaceWindow(SurfNum)%OutsideRevealSolAbs) * CosBeta * &
tmp_SunlitFracWithoutReveal
SurfaceWindow(SurfNum)%BmSolRefldOutsRevealReport = SurfaceWindow(SurfNum)%BmSolRefldOutsRevealReport &
+ BeamSolarRad * BmSolRefldOutsReveal
SurfaceWindow(SurfNum)%BmSolRefldOutsRevealRepEnergy = SurfaceWindow(SurfNum)%BmSolRefldOutsRevealReport &
* TimeStepZone * SecInHour
! Reflected solar from outside horizontal and vertical reveal incident on glazing
SurfaceWindow(SurfNum)%OutsRevealDiffOntoGlazing = SurfaceWindow(SurfNum)%OutsRevealDiffOntoGlazing + &
FracToGlassOuts * BmSolRefldOutsReveal / Surface(SurfNum)%Area
IF(FrameWidth > 0.0d0) THEN
! Reflected solar from outside horizontal and vertical reveal incident on frame
SurfaceWindow(SurfNum)%OutsRevealDiffOntoFrame = SurfaceWindow(SurfNum)%OutsRevealDiffOntoFrame + &
(0.5d0-FracToGlassOuts) * BmSolRefldOutsReveal / SurfaceWindow(SurfNum)%FrameArea
END IF
END IF ! End of check if A1ill > 0.0d0
! Quantities related to inside reveal; inside reveal reflection/absorption is assumed
! to occur only if an interior shade or blind is not in place.
IF(ShadeFlag <= 0 .OR. ShadeFlag == SwitchableGlazing) THEN
IF(A2ill > 1.0d-6) THEN
DiffReflGlass = Construct(ConstrNum)%ReflectSolDiffBack
IF(ShadeFlag == SwitchableGlazing) THEN
SolTransGlassSh = POLYF(CosIncAng(SurfNum,HourOfDay,TimeStep),Construct(ConstrNumSh)%TransSolBeamCoef(1:6))
SolTransGlass = InterpSW(SurfaceWindow(SurfNum)%SwitchingFactor,SolTransGlass,SolTransGlassSh)
DiffReflGlassSh = Construct(ConstrNumSh)%ReflectSolDiffBack
DiffReflGlass = InterpSW(SurfaceWindow(SurfNum)%SwitchingFactor,DiffReflGlass,DiffReflGlassSh)
END IF
! Calc beam solar sbsorbed (m2)
SurfaceWindow(SurfNum)%BmSolAbsdInsReveal = SurfaceWindow(SurfNum)%BmSolAbsdInsReveal + &
A2ill * SolTransGlass * InsideRevealSolAbs * CosBeta * tmp_SunlitFracWithoutReveal
! Added TH 5/26/2009 for reporting purpose - Beam solar absorbed by the inside reveal (W)
SurfaceWindow(SurfNum)%BmSolAbsdInsRevealReport = SurfaceWindow(SurfNum)%BmSolAbsdInsRevealReport + &
BeamSolarRad * A2ill * SolTransGlass * InsideRevealSolAbs * CosBeta * tmp_SunlitFracWithoutReveal
! in m2 = Area * solar transmitted fraction * inside reveal reflection fraction
BmSolRefldInsReveal = A2ill * SolTransGlass * (1.0d0 - InsideRevealSolAbs) * CosBeta * &
tmp_SunlitFracWithoutReveal
SurfaceWindow(SurfNum)%BmSolRefldInsReveal = SurfaceWindow(SurfNum)%BmSolRefldInsReveal + &
BmSolRefldInsReveal
SurfaceWindow(SurfNum)%BmSolRefldInsRevealReport = SurfaceWindow(SurfNum)%BmSolRefldInsRevealReport &
+ BeamSolarRad * BmSolRefldInsReveal ! W, BeamSolarRad in W/m2
SurfaceWindow(SurfNum)%BmSolRefldInsRevealRepEnergy = SurfaceWindow(SurfNum)%BmSolRefldInsRevealReport &
* TimeStepZone * SecInHour
! Reflected solar from inside horizontal and vertical reveal incident on glazing
SurfaceWindow(SurfNum)%InsRevealDiffOntoGlazing = SurfaceWindow(SurfNum)%InsRevealDiffOntoGlazing + &
FracToGlassIns * BmSolRefldInsReveal / Surface(SurfNum)%Area
! Added TH 5/26/2009 for reporting purpose - diffuse on window glass from inside reveal (W)
SurfaceWindow(SurfNum)%InsRevealDiffOntoGlazingReport = SurfaceWindow(SurfNum)%InsRevealDiffOntoGlazingReport + &
BeamSolarRad * FracToGlassIns * BmSolRefldInsReveal
! Reflected solar from inside horizontal and vertical reveal incident on frame
IF(FrameWidth > 0.0d0) THEN
SurfaceWindow(SurfNum)%InsRevealDiffOntoFrame = SurfaceWindow(SurfNum)%InsRevealDiffOntoFrame + &
(0.5d0-FracToGlassIns)*BmSolRefldInsReveal / SurfaceWindow(SurfNum)%FrameArea
! Added TH 5/26/2009 for reporting purpose - diffuse on window frame from inside reveal (W)
SurfaceWindow(SurfNum)%InsRevealDiffOntoFrameReport = SurfaceWindow(SurfNum)%InsRevealDiffOntoFrameReport + &
BeamSolarRad * (0.5d0-FracToGlassIns)*BmSolRefldInsReveal
END IF
! Reflected solar from inside reveal going directly into zone and reflected from glass.
! Assumes half of solar reflected from inside reveal goes as diffuse radiation into the zone and
! half goes as diffuse radiation towards window.
SurfaceWindow(SurfNum)%InsRevealDiffIntoZone = SurfaceWindow(SurfNum)%InsRevealDiffIntoZone + &
BmSolRefldInsReveal * (0.5d0 + DiffReflGlass * FracToGlassIns)
! Added TH 5/26/2009 for reporting purpose - diffuse into zone from inside reveal (W)
SurfaceWindow(SurfNum)%InsRevealDiffIntoZoneReport = SurfaceWindow(SurfNum)%InsRevealDiffIntoZoneReport + &
BeamSolarRad * BmSolRefldInsReveal * (0.5d0 + DiffReflGlass * FracToGlassIns)
END IF ! End of check if A2ill > 0.0d0
END IF ! End of check if interior shade or blind is in place
END DO ! End of loop over vertical and horizontal reveal
END DO ! End of surface loop
RETURN
END SUBROUTINE CalcBeamSolarOnWinRevealSurface