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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | ProfAng | |||
real(kind=r64), | intent(in) | :: | SlatAng | |||
real(kind=r64), | intent(in) | :: | SlatWidth | |||
real(kind=r64), | intent(in) | :: | SlatSeparation | |||
real(kind=r64), | intent(in) | :: | SlatThickness |
REAL(r64) FUNCTION BlindBeamBeamTrans(ProfAng,SlatAng,SlatWidth,SlatSeparation,SlatThickness)
! FUNCTION INFORMATION:
! AUTHOR Fred Winkelmann
! DATE WRITTEN Jan 2002
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculates beam-to-beam transmittance of a window blind
! METHODOLOGY EMPLOYED:
! Based on solar profile angle and slat geometry
! REFERENCES:na
! USE STATEMENTS:
USE DataGlobals, ONLY: Pi,PiOvr2
IMPLICIT NONE
! FUNCTION ARGUMENT DEFINITIONS:
REAL(r64),INTENT(IN) :: ProfAng ! Solar profile angle (rad)
REAL(r64),INTENT(IN) :: SlatAng ! Slat angle (rad)
REAL(r64),INTENT(IN) :: SlatWidth ! Slat width (m)
REAL(r64),INTENT(IN) :: SlatSeparation ! Slat separation (distance between surfaces of adjacent slats) (m)
REAL(r64),INTENT(IN) :: SlatThickness ! Slat thickness (m)
! FUNCTION PARAMETER DEFINITIONS:
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) fEdge ! Slat edge correction factor
REAL(r64) wbar ! Intermediate variable
REAL(r64) gamma ! Intermediate variable
REAL(r64) fEdge1 ! Intermediate variable
REAL(r64) CosProfAng ! Cosine of profile angle
CosProfAng = COS(ProfAng)
gamma = SlatAng - ProfAng
wbar = SlatSeparation
IF(CosProfAng /= 0.0d0) wbar = SlatWidth * COS(gamma)/CosProfAng
BlindBeamBeamTrans = MAX(0.0d0,1.0d0-ABS(wbar/SlatSeparation))
IF(BlindBeamBeamTrans > 0.0d0) THEN
! Correction factor that accounts for finite thickness of slats. It is used to modify the
! blind transmittance to account for reflection and absorption by the slat edges.
! fEdge is ratio of area subtended by edge of slat to area between tops of adjacent slats.
fEdge = 0.0d0
fEdge1 = 0.0d0
IF(ABS(SIN(gamma))>0.01d0) THEN
IF((SlatAng > 0.0d0 .AND. SlatAng <= PiOvr2 .AND. ProfAng <= SlatAng) .OR. &
(SlatAng > PiOvr2 .AND. SlatAng <= Pi .AND. ProfAng > -(Pi-SlatAng))) &
fEdge1 = SlatThickness * ABS(SIN(gamma)) / &
((SlatSeparation + SlatThickness/ABS(SIN(SlatAng)))*CosProfAng)
fEdge = MIN(1.0d0,ABS(fEdge1))
END IF
BlindBeamBeamTrans = BlindBeamBeamTrans * (1.0d0-fEdge)
END IF
END FUNCTION BlindBeamBeamTrans