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.
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 ComputeWinShadeAbsorpFactors
! SUBROUTINE INFORMATION:
! AUTHOR Fred Winkelmann
! DATE WRITTEN Mar 2001
! MODIFIED Oct 2002,FCW: change ConstrNumSh = WindowShadingControl(WinShadeCtrlNum)%ShadedConstruction
! to Surface(SurfNum)%ShadedConstruction
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Called by InitSolarCalculations. Finds fractions that apportion radiation absorbed by a
! window shade to the two faces of the shade. For radiation incident from the left,
! ShadeAbsFacFace(1) is the fraction of radiation absorbed in the left-hand half of the
! of the shade and ShadeAbsFacFace(2) is the fraction absorbed in the right-hand half.
! The shade is assumed to be homogeneous.
! REFERENCES: See EnergyPlus engineering documentation
! USE STATEMENTS: na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE PARAMETER DEFINITIONS: na
! INTERFACE BLOCK SPECIFICATIONS: na
! DERIVED TYPE DEFINITIONS: na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: WinShadeCtrlNum ! Window shading control number
INTEGER :: SurfNum ! Surface number
INTEGER :: ConstrNumSh ! Window construction number with shade
INTEGER :: TotLay ! Total layers in a construction
INTEGER :: MatNumSh ! Shade layer material number
REAL(r64) :: AbsorpEff ! Effective absorptance of isolated shade layer (fraction of
! of incident radiation remaining after reflected portion is
! removed that is absorbed
DO SurfNum = 1,TotSurfaces
IF(Surface(SurfNum)%Class == SurfaceClass_Window .AND. Surface(SurfNum)%WindowShadingControlPtr > 0) THEN
WinShadeCtrlNum = Surface(SurfNum)%WindowShadingControlPtr
IF(WindowShadingControl(WinShadeCtrlNum)%ShadingType == WSC_ST_InteriorShade .OR. &
WindowShadingControl(WinShadeCtrlNum)%ShadingType == WSC_ST_ExteriorShade .OR. &
WindowShadingControl(WinShadeCtrlNum)%ShadingType == WSC_ST_BetweenGlassShade) THEN
ConstrNumSh = Surface(SurfNum)%ShadedConstruction
TotLay = Construct(ConstrNumSh)%TotLayers
IF(WindowShadingControl(WinShadeCtrlNum)%ShadingType == WSC_ST_InteriorShade) THEN
MatNumSh = Construct(ConstrNumSh)%LayerPoint(TotLay) ! Interior shade
ELSE IF(WindowShadingControl(WinShadeCtrlNum)%ShadingType == WSC_ST_ExteriorShade) THEN
MatNumSh = Construct(ConstrNumSh)%LayerPoint(1) ! Exterior shade
ELSE IF(WindowShadingControl(WinShadeCtrlNum)%ShadingType == WSC_ST_BetweenGlassShade) THEN
IF(Construct(ConstrNumSh)%TotGlassLayers == 2) THEN
MatNumSh = Construct(ConstrNumSh)%LayerPoint(3) ! Double pane with between-glass shade
ELSE
MatNumSh = Construct(ConstrNumSh)%LayerPoint(5) ! Triple pane with between-glass shade
END IF
END IF
AbsorpEff = Material(MatNumSh)%AbsorpSolar/(Material(MatNumSh)%AbsorpSolar + Material(MatNumSh)%Trans + 0.0001d0)
AbsorpEff = MIN(MAX(AbsorpEff,0.0001d0),0.999d0) ! Constrain to avoid problems with following log eval
SurfaceWindow(SurfNum)%ShadeAbsFacFace(1) = (1.d0-EXP(0.5d0*LOG(1.0d0-AbsorpEff)))/AbsorpEff
SurfaceWindow(SurfNum)%ShadeAbsFacFace(2) = 1.d0 - SurfaceWindow(SurfNum)%ShadeAbsFacFace(1)
END IF
END IF
END DO
END SUBROUTINE ComputeWinShadeAbsorpFactors