TYPE SurfaceWindowCalc ! Calculated window-related values
INTEGER :: ShadingFlag = ShadeOff ! -1: window has no shading device
! 0: shading device is off
! 1: interior shade is on
! 2: glazing is switched to darker state
! 3: exterior shade is on
! 4: exterior screen is on
! 6: interior blind is on
! 7: exterior blind is on
! 8: between-glass shade is on
! 9: between-glass blind is on
! 10: window has an interior shade that is off but may be
! triggered on later to control daylight glare
! 20: window has switchable glazing that is unswitched but may be switched later
! to control daylight glare or daylight illuminance
! 30: window has exterior shade that is off but may be triggered on later
! to control daylight glare
! 60: window has an interior blind that is off but may be
! triggered on later to control daylight glare
! 70: window has an exterior blind that is off but may be
! triggered on later to control daylight glare
! 80: window has a between-glass shade that is off but may be
! triggered on later to control daylight glare
! 90: window has a between-glass blind that is off but may be
! triggered on later to control daylight glare
LOGICAL :: ShadingFlagEMSOn = .FALSE. ! EMS control flag, true if EMS is controlling ShadingFlag with ShadingFlagEMSValue
INTEGER :: ShadingFlagEMSValue = 0 ! EMS control value for Shading Flag
INTEGER :: StormWinFlag = -1 ! -1: Storm window not applicable
! 0: Window has storm window but it is off
! 1: Window has storm window and it is on
INTEGER :: StormWinFlagPrevDay = -1 ! Previous time step value of StormWinFlag
REAL(r64) :: FracTimeShadingDeviceOn = 0.0d0 ! For a single time step, = 0.0 if no shading device or shading device is off,
! = 1.0 if shading device is on;
! For time intervals longer than a time step, = fraction of time that shading
! device is on.
INTEGER :: ExtIntShadePrevTS = 0 ! 1 if exterior or interior blind or shade in place previous time step;
! 0 otherwise
INTEGER :: ShadedConstruction = 0 ! For windows with shading, the construction with shading
LOGICAL :: SurfDayLightInit = .false. ! surface has been initialized for following 5 arrays
REAL(r64), ALLOCATABLE, DIMENSION(:) :: SolidAngAtRefPt ! Solid angle subtended by window from daylit ref points 1 and 2
REAL(r64), ALLOCATABLE, DIMENSION(:) :: SolidAngAtRefPtWtd ! Solid angle subtended by window from
! ref pts weighted by glare pos factor
REAL(r64), ALLOCATABLE, DIMENSION(:,:) :: IllumFromWinAtRefPt ! Illuminance from window at ref pts for window
! with and w/o shade (lux)
REAL(r64), ALLOCATABLE, DIMENSION(:,:) :: BackLumFromWinAtRefPt ! Window background luminance from window wrt ref pts (cd/m2)
! with and w/o shade (cd/m2)
REAL(r64), ALLOCATABLE, DIMENSION(:,:) :: SourceLumFromWinAtRefPt ! Window luminance at ref pts for window
! with and w/o shade (cd/m2)
INTEGER :: DaylFacPoint = 0 ! Pointer to daylight factors for the window
REAL(r64) :: VisTransSelected = 0.0d0 ! Window vis trans at normal incidence selected for use in dayltg calculation
REAL(r64) :: SwitchingFactor = 0.0d0 ! Window switching factor (0.0 = unswitched; 1.0 = fully switched)
REAL(r64), DIMENSION(3) :: WinCenter = 0.0d0 ! X,Y,Z coordinates of window center point in building coord system
REAL(r64) :: Theta = 0.0d0 ! Azimuth of window normal (rad)
REAL(r64) :: Phi = 0.0d0 ! Altitude of window normal (rad)
REAL(r64) :: RhoCeilingWall = 0.0d0 ! Average interior reflectance seen by light moving up across horizontal
! plane thru center of window
REAL(r64) :: RhoFloorWall = 0.0d0 ! Same as above, but for light moving down
REAL(r64) :: FractionUpgoing = 0.0d0 ! Fraction light entering window that goes upward
REAL(r64) :: VisTransRatio = 0.0d0 ! For windows with switchable glazing, ratio of normal transmittance
! in switched state to that in unswitched state
REAL(r64), DIMENSION(10) :: ThetaFace = 296.15d0 ! Face temperatures of window layers (K)
REAL(r64) :: IRfromParentZone = 0.0d0 ! Incident IR from parent zone (W/m2)
INTEGER :: IRErrCount = 0 ! For recurring error counts
INTEGER :: IRErrCountC = 0 ! For recurring error counts (continuation)
REAL(r64) :: FrameArea = 0.0d0 ! Frame projected area (m2)
REAL(r64) :: FrameConductance = 0.0d0 ! Frame conductance [no air films] (W/m2-K)
REAL(r64) :: FrameSolAbsorp = 0.0d0 ! Frame solar absorptance (assumed same inside and outside)
REAL(r64) :: FrameVisAbsorp = 0.0d0 ! Frame visible absorptance (assumed same inside and outside)
REAL(r64) :: FrameEmis = 0.0d0 ! Frame thermal emissivity (thermal absorptance) (assumed same
! inside and outside)
REAL(r64) :: FrameAreaXEmiss = 0.0d0 ! Frame area times thermal emissivity (m2)
REAL(r64) :: FrameRadExchangeFactor = 0.0d0 ! Frame IR radiant exchange factor
REAL(r64) :: FrameHRadLinIn = 0.0d0 ! Frame linearized inside IR radiation conductance (W/m2-K)
REAL(r64) :: FrameRadThermalFluxRec = 0.0d0 ! Frame inside IR flux received (W/m2)
REAL(r64) :: FrameRadThermalFluxRecOld = 0.0d0 ! Previous value of frame inside IR flux received (W/m2)
REAL(r64) :: FrEdgeToCenterGlCondRatio = 1.0d0 ! Ratio of frame edge of glass conductance (without air films) to
! center of glass conductance (without air films)
REAL(r64) :: FrameEdgeArea = 0.0d0 ! Area of glass near frame (m2)
REAL(r64) :: FrameTempSurfIn = 23.0d0 ! Frame inside surface temperature (C)
REAL(r64) :: FrameTempSurfInOld = 23.0d0 ! Previous value of frame inside surface temperature (C)
REAL(r64) :: FrameTempSurfOut = 23.0d0 ! Frame outside surface temperature (C)
REAL(r64) :: FrameQRadInAbs = 0.0d0 ! Radiation absorbed by inside of frame (short-wave from solar
! and lights; long-wave from internal gains) (W/m2)
REAL(r64) :: FrameQRadOutAbs = 0.0d0 ! Radiation absorbed by outside of frame (solar) (W/m2)
REAL(r64) :: ProjCorrFrOut = 0.0d0 ! Correction factor to absorbed radiation due to frame outside projection
REAL(r64) :: ProjCorrFrIn = 0.0d0 ! Correction factor to absorbed radiation due to frame inside projection
INTEGER :: DividerType = 0 ! Divider type (1=DividedLite, 2=Suspended (between-pane))
REAL(r64) :: DividerArea = 0.0d0 ! Divider projected area (m2)
REAL(r64) :: DividerConductance = 0.0d0 ! Divider conductance [no air films] (W/m2-K)
REAL(r64) :: DividerSolAbsorp = 0.0d0 ! Divider solar absorptance (assumed same inside and outside)
REAL(r64) :: DividerVisAbsorp = 0.0d0 ! Divider visible absorptance (assumed same inside and outside)
REAL(r64) :: DividerEmis = 0.0d0 ! Divider thermal emissivity (thermal absorptance) (assumed same
! inside and outside)
REAL(r64) :: DividerAreaXEmiss = 0.0d0 ! Divider area times thermal emissivity (m2)
REAL(r64) :: DividerRadExchangeFactor= 0.0d0 ! Divider IR radiant exchange factor
REAL(r64) :: DividerHRadLinIn = 0.0d0 ! Divider linearized inside IR radiation conductance (W/m2-K)
REAL(r64) :: DividerRadThermalFluxRec = 0.0d0 ! Divider inside IR flux received (W/m2)
REAL(r64) :: DividerRadThermalFluxRecOld = 0.0d0 ! Previous value of divider inside IR flux received (W/m2)
REAL(r64) :: DivEdgeToCenterGlCondRatio = 1.0d0 ! Ratio of divider edge of glass conductance (without air films) to
! center of glass conductance (without air films)
REAL(r64) :: DividerEdgeArea = 0.0d0 ! Area of glass near dividers (m2)
REAL(r64) :: DividerTempSurfIn = 23.0d0 ! Divider inside surface temperature (C)
REAL(r64) :: DividerTempSurfInOld = 23.0d0 ! Previous value of divider inside surface temperature (C)
REAL(r64) :: DividerTempSurfOut = 23.0d0 ! Divider outside surface temperature (C)
REAL(r64) :: DividerQRadInAbs = 0.0d0 ! Radiation absorbed by inside of divider (short-wave from solar
! and lights; long-wave from internal gains) (W/m2)
REAL(r64) :: DividerQRadOutAbs = 0.0d0 ! Radiation absorbed by outside of divider (solar) (W/m2)
REAL(r64) :: ProjCorrDivOut = 0.0d0 ! Correction factor to absorbed radiation due to divider outside projection
REAL(r64) :: ProjCorrDivIn = 0.0d0 ! Correction factor to absorbed radiation due to divider inside projection
REAL(r64) :: GlazedFrac = 1.0d0 ! (Glazed area)/(Glazed area + divider area)
REAL(r64), DIMENSION(24) :: OutProjSLFracMult = 1.0d0 ! Multiplier on sunlit fraction due to shadowing of glass by frame
! and divider outside projections
REAL(r64), DIMENSION(24) :: InOutProjSLFracMult= 1.0d0 ! Multiplier on sunlit fraction due to shadowing of glass by frame
! and divider inside and outside projections
REAL(r64) :: CenterGlArea = 0.0d0 ! Center of glass area (m2); area of glass where 1-D conduction dominates
REAL(r64) :: EdgeGlCorrFac = 1.0d0 ! Correction factor to center-of-glass conductance to account for
! 2-D glass conduction thermal bridging effects near frame and divider
INTEGER :: OriginalClass = 0 ! 0 or if entered originally as:
! Window - SurfaceClass_Window
! Glass Door - SurfaceClass_GlassDoor
! tubular daylighting device dome - SurfaceClass_TDD_Dome
! tubular daylighting device diffuser - SurfaceClass_TDD_Diffuser
REAL(r64) :: ExtBeamAbsByShade = 0.0d0 ! Exterior beam solar absorbed by window shade (W/m2)
REAL(r64) :: ExtDiffAbsByShade = 0.0d0 ! Exterior diffuse solar absorbed by window shade (W/m2)
REAL(r64) :: IntBeamAbsByShade = 0.0d0 ! Interior beam solar absorbed by window shade (W/m2)
REAL(r64) :: IntSWAbsByShade = 0.0d0 ! Interior diffuse solar plus short-wave from lights absorbed by window shade (W/m2)
REAL(r64) :: InitialDifSolAbsByShade = 0.0d0 ! Initial diffuse solar from ext and int windows absorbed by window shade (W/m2)
REAL(r64) :: IntLWAbsByShade = 0.0d0 ! Interior long-wave from zone lights and equipment absorbed by window shade (W/m2)
REAL(r64), DIMENSION(2) :: ShadeAbsFacFace=0.5d0 ! Fraction of short-wave radiation incident on face 1 that is
! absorbed by face 1 and by the other face (face 2) when total absorbed
! radiation is apportioned to the two faces
REAL(r64) :: ConvCoeffWithShade = 0.0d0 ! Convection coefficient from glass or shade to gap air when
! interior or exterior shade is present (W/m2-K)
REAL(r64) :: ConvHeatFlowNatural = 0.0d0 ! Convective heat flow from gap between glass and interior shade or blind (W)
REAL(r64) :: ConvHeatGainToZoneAir = 0.0d0 ! Convective heat gain to zone air from window gap airflow (W)
REAL(r64) :: RetHeatGainToZoneAir = 0.0d0 ! Convective heat gain to return air sent to zone [W]
REAL(r64) :: DividerConduction = 0.0d0 ! Conduction through divider from outside to inside face (W)
REAL(r64) :: OtherConvHeatGain = 0.0d0 ! other convective = total conv - standard model prediction for EQL window model (W)
INTEGER :: BlindNumber = 0 ! Blind number for a window with a blind
REAL(r64), DIMENSION(MaxSlatAngs) :: EffShBlindEmiss= 0.0d0 ! Effective emissivity of interior blind or shade
REAL(r64), DIMENSION(MaxSlatAngs) :: EffGlassEmiss = 0.0d0 ! Effective emissivity of glass adjacent to interior blind or shade
REAL(r64) :: EffInsSurfTemp = 23.0d0 ! Effective inside surface temperature for window with interior blind or
! shade; combination of shade/blind and glass temperatures (C)
LOGICAL :: MovableSlats = .false. ! True if window has a blind with movable slats
REAL(r64) :: SlatAngThisTS = 0.0d0 ! Slat angle this time step for window with blind on (radians)
REAL(r64) :: SlatAngThisTSDeg = 0.0d0 ! Slat angle this time step for window with blind on (deg)
Logical :: SlatAngThisTSDegEMSon = .FALSE. ! flag that indicate EMS system is actuating SlatAngThisTSDeg
REAL(r64) :: SlatAngThisTSDegEMSValue = 0.0D0 ! value that EMS sets for slat angle in degrees
LOGICAL :: SlatsBlockBeam = .false. ! True if blind slats block incident beam solar
REAL(r64) :: BlindAirFlowPermeability = 0.0d0 ! Blind air-flow permeability for calculation of convective flow
! in gap between blind and glass
REAL(r64) :: TotGlazingThickness = 0.0d0 ! Total glazing thickness from outside of outer glass to inside of inner glass (m)
REAL(r64) :: ProfileAngHor = 0.0d0 ! Horizontal beam solar profile angle (degrees)
REAL(r64) :: ProfileAngVert = 0.0d0 ! Vertical beam solar profile angle (degrees)
REAL(r64) :: TanProfileAngHor = 0.0d0 ! Tangent of horizontal profile angle
REAL(r64) :: TanProfileAngVert = 0.0d0 ! Tangent of vertical profile angle
REAL(r64) :: InsideSillDepth = 0.0d0 ! Depth of inside sill (m)
REAL(r64) :: InsideReveal = 0.0d0 ! Depth of inside reveal (m)
REAL(r64) :: InsideSillSolAbs = 0.0d0 ! Solar absorptance of inside sill
REAL(r64) :: InsideRevealSolAbs = 0.0d0 ! Solar absorptance of inside reveal
REAL(r64) :: OutsideRevealSolAbs = 0.0d0 ! Solar absorptance of outside reveal
REAL(r64) :: BmSolAbsdInsReveal = 0.0d0 ! Multiplied by BeamSolarRad, gives beam solar absorbed
! by inside reveal surfaces (m2)
REAL(r64) :: BmSolRefldInsReveal = 0.0d0 ! Multiplied by BeamSolarRad, gives beam solar reflected
! by inside reveal surfaces (m2)
REAL(r64) :: BmSolRefldInsRevealReport = 0.0d0 ! Beam solar reflected by inside reveal surfaces, for reporting (W)
REAL(r64) :: BmSolRefldOutsRevealReport = 0.0d0 ! Beam solar reflected by outside reveal surfaces, for reporting (m2)
REAL(r64) :: BmSolAbsdOutsReveal = 0.0d0 ! Multiplied by BeamSolarRad, gives beam solar absorbed by
! outside reveal surfaces (m2)
REAL(r64) :: OutsRevealDiffOntoGlazing = 0.0d0 ! Multiplied by BeamSolarRad, gives diffuse from beam reflection from
! outside reveal that is incident on the glazing per m2 of glazing (-)
REAL(r64) :: InsRevealDiffOntoGlazing = 0.0d0 ! Multiplied by BeamSolarRad, gives diffuse from beam reflection
! from inside reveal that is incident on the glazing per m2 of glazing (-)
REAL(r64) :: InsRevealDiffIntoZone = 0.0d0 ! Multiplied by BeamSolarRad, gives diffuse from beam reflection
! from inside reveal that goes into zone directly or reflected from glazing (m2)
REAL(r64) :: OutsRevealDiffOntoFrame = 0.0d0 ! Multiplied by BeamSolarRad, gives diffuse from beam reflection from outside reveal
! that is incident on the outside of the frame per m2 of frame (-)
REAL(r64) :: InsRevealDiffOntoFrame = 0.0d0 ! Multiplied by BeamSolarRad, gives diffuse from beam reflection from inside reveal
! that is incident on the outside of the frame per m2 of frame (-)
! added for debugging CR 7596. TH 5/26/2009
REAL(r64) :: InsRevealDiffOntoGlazingReport = 0.0d0 ! Diffuse solar from beam reflection
! from inside reveal that is incident on the glazing (W)
REAL(r64) :: InsRevealDiffIntoZoneReport = 0.0d0 ! Diffuse from beam reflection
! from inside reveal that goes into zone directly or reflected from glazing (W)
REAL(r64) :: InsRevealDiffOntoFrameReport = 0.0d0 ! Diffuse from beam reflection from inside reveal
! that is incident on the frame (W)
REAL(r64) :: BmSolAbsdInsRevealReport = 0.0d0 ! Beam solar absorbed by inside reveal (W)
REAL(r64) :: BlTsolBmBm = 0.0d0 ! Time-step value of blind beam-beam solar transmittance (-)
REAL(r64) :: BlTsolBmDif = 0.0d0 ! Time-step value of blind beam-diffuse solar transmittance (-)
REAL(r64) :: BlTsolDifDif = 0.0d0 ! Time-step value of blind diffuse-diffuse solar transmittance (-)
REAL(r64) :: BlGlSysTsolBmBm = 0.0d0 ! Time-step value of blind/glass system beam-beam solar transmittance (-)
REAL(r64) :: BlGlSysTsolDifDif = 0.0d0 ! Time-step value of blind/glass system diffuse-diffuse solar transmittance (-)
INTEGER :: ScreenNumber = 0 ! Screen number for a window with a screen (do not confuse with material number)
REAL(r64) :: ScTsolBmBm = 0.0d0 ! Time-step value of screen beam-beam solar transmittance (-)
REAL(r64) :: ScTsolBmDif = 0.0d0 ! Time-step value of screen beam-diffuse solar transmittance (-)
REAL(r64) :: ScTsolDifDif = 0.0d0 ! Time-step value of screen diffuse-diffuse solar transmittance (-)
REAL(r64) :: ScGlSysTsolBmBm = 0.0d0 ! Time-step value of screen/glass system beam-beam solar transmittance (-)
REAL(r64) :: ScGlSysTsolDifDif = 0.0d0 ! Time-step value of screen/glass system diffuse-diffuse solar transmittance (-)
REAL(r64) :: GlTsolBmBm = 0.0d0 ! Time-step value of glass beam-beam solar transmittance (-)
REAL(r64) :: GlTsolBmDif = 0.0d0 ! Time-step value of glass beam-diffuse solar transmittance (-)
REAL(r64) :: GlTsolDifDif = 0.0d0 ! Time-step value of glass diffuse-diffuse solar transmittance (-)
INTEGER :: AirflowSource = 0 ! Source of gap airflow (INSIDEAIR, OUTSIDEAIR, etc.)
INTEGER :: AirflowDestination = 0 ! Destination of gap airflow (INSIDEAIR, OUTSIDEAIR, etc.)
REAL(r64) :: MaxAirflow = 0.0d0 ! Maximum gap airflow (m3/s per m of glazing width)
INTEGER :: AirflowControlType = 0 ! Gap airflow control type (ALWAYSONATMAXFLOW, etc.)
LOGICAL :: AirflowHasSchedule = .FALSE. ! True if gap airflow is scheduled
INTEGER :: AirflowSchedulePtr = 0 ! Gap airflow schedule pointer
REAL(r64) :: AirflowThisTS = 0.0d0 ! Gap airflow this timestep (m3/s per m of glazing width)
REAL(r64) :: TAirflowGapOutlet = 0.0d0 ! Temperature of air leaving airflow gap between glass panes (C)
INTEGER :: WindowCalcIterationsRep = 0 ! Number of iterations in window heat balance calculation
REAL(r64) :: BmSolTransThruIntWinRep = 0.0d0 ! Beam solar transmitted through interior window [W]
REAL(r64) :: VentingOpenFactorRep = 0.0d0 ! Window/door venting open factor, for reporting
REAL(r64) :: VentingOpenFactorMultRep = 0.0d0 ! Window/door opening modulation multiplier on venting open factor, for reporting
REAL(r64) :: InsideTempForVentingRep = 0.0d0 ! Inside air temp used to control window/door venting, for reporting (C)
REAL(r64) :: VentingAvailabilityRep = 0.0d0 ! Venting availability schedule value (0.0/1.0 = no venting allowed/not allowed)
REAL(r64) :: IllumFromWinAtRefPt1Rep = 0.0d0 ! Illuminance from window at reference point #1 [lux]
REAL(r64) :: IllumFromWinAtRefPt2Rep = 0.0d0 ! Illuminance from window at reference point #2 [lux]
REAL(r64) :: LumWinFromRefPt1Rep = 0.0d0 ! Window luminance as viewed from reference point #1 [cd/m2]
REAL(r64) :: LumWinFromRefPt2Rep = 0.0d0 ! Window luminance as viewed from reference point #2 [cd/m2]
REAL(r64) :: SkySolarInc = 0.0d0 ! Incident diffuse solar from sky; if CalcSolRefl is true, includes
! reflection of sky diffuse and beam solar from exterior obstructions [W/m2]
REAL(r64) :: GndSolarInc = 0.0d0 ! Incident diffuse solar from ground; if CalcSolRefl is true, accounts
! for shadowing of ground by building and obstructions [W/m2]
REAL(r64) :: SkyGndSolarInc = 0.0d0 ! Incident diffuse solar from ground-reflected sky radiation; used for
!Complex Fen; if CalcSolRefl is true, accounts for shadowing of ground by building and obstructions [W/m2]
REAL(r64) :: BmGndSolarInc = 0.0d0 ! Incident diffuse solar from ground-reflected beam radiation; used for
!Complex Fen; if CalcSolRefl is true, accounts for shadowing of ground by building and obstructions [W/m2]
REAL(r64),DIMENSION(3) :: ZoneAreaMinusThisSurf = 0.0d0 ! Zone inside surface area minus this surface and its subsurfaces
! for floor/wall/ceiling (m2)
REAL(r64),DIMENSION(3) :: ZoneAreaReflProdMinusThisSurf = 0.0d0 ! Zone product of inside surface area times vis reflectance
! minus this surface and its subsurfaces,
! for floor/wall/ceiling (m2)
REAL(r64) :: LightWellEff = 1.0d0 ! Light well efficiency (multiplier on exterior window vis trans
! due to light well losses)
LOGICAL :: SolarDiffusing = .false. ! True if exterior window with a construction that contains a
! diffusing glass layer
!energy
REAL(r64) :: BmSolRefldInsRevealRepEnergy = 0.0d0 ! energy of BmSolRefldInsRevealReport [J]
REAL(r64) :: BmSolRefldOutsRevealRepEnergy = 0.0d0 ! energy of BmSolRefldOutsRevealReport [J]
REAL(r64) :: BmSolTransThruIntWinRepEnergy = 0.0d0 ! energy of BmSolTransThruIntWinRep [J]
! Reporting
REAL(r64) :: FrameHeatGain =0.0d0
REAL(r64) :: DividerHeatGain=0.0d0
REAL(r64) :: FrameHeatLoss =0.0d0
REAL(r64) :: DividerHeatLoss=0.0d0
! Added TH for thermochromic windows. 12/22/2008
REAL(r64) :: TCLayerTemp = 0.0d0 ! The temperature of the thermochromic layer of the window
REAL(r64) :: SpecTemp = 0.0d0 ! The specification temperature of the TC layer glass
! Added for W6 integration June 2010
INTEGER :: WindowModelType = Window5DetailedModel ! if set to WindowBSDFModel, then uses BSDF methods
TYPE(BSDFWindowDescript) :: ComplexFen ! Data for complex fenestration, see DataBSDFWindow.f90 for declaration
END TYPE SurfaceWindowCalc