Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | S | |||
real(kind=r64), | intent(in) | :: | W | |||
real(kind=r64), | intent(in) | :: | PHI | |||
real(kind=r64), | intent(in) | :: | RHODFS_SLAT | |||
real(kind=r64), | intent(in) | :: | RHOUFS_SLAT | |||
real(kind=r64), | intent(in) | :: | TAU_SLAT | |||
real(kind=r64), | intent(out) | :: | RHOFVB | |||
real(kind=r64), | intent(out) | :: | TAUVB |
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 VB_DIFF(S, W, PHI, RHODFS_SLAT, RHOUFS_SLAT, TAU_SLAT, RHOFVB, TAUVB)
! SUBROUTINE INFORMATION:
! AUTHOR John L. Wright, University of Waterloo,
! Mechanical Engineering, Advanced Glazing System Laboratory
! DATE WRITTEN Unknown
! MODIFIED na
!
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculates the venetian blind layer effective diffuse transmittance and reflectance.
!
! METHODOLOGY EMPLOYED:
! four surface flat-slat model with slat transmittance
!
! REFERENCES:
! na
! USE STATEMENTS:
! na
!
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64), INTENT( IN) :: S ! slat spacing (any length units; same units as W)
! must be > 0
REAL(r64), INTENT( IN) :: W ! slat tip-to-tip width (any length units; same units as S)
! must be > 0
REAL(r64), INTENT( IN) :: PHI ! slat angle, radians (-PI/2 <= PHI <= PI/2)
! ltyVBHOR: + = front-side slat tip below horizontal
! ltyVBVER: + = front-side slat tip is counter-
! clockwise from normal (viewed from above)
REAL(r64), INTENT( IN) :: RHODFS_SLAT ! reflectance of downward-facing slat surfaces (concave?)
REAL(r64), INTENT( IN) :: RHOUFS_SLAT ! reflectance of upward-facing slat surfaces (convex?)
REAL(r64), INTENT( IN) :: TAU_SLAT ! diffuse transmitance of slats
REAL(r64), INTENT( OUT) :: RHOFVB ! returned: front side effective diffuse reflectance of venetian blind
REAL(r64), INTENT( OUT) :: TAUVB ! returned: effective diffuse transmittance of venetian blind
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: CD, AF ! lengths of the diagonal strings used in the four-surface model
REAL(r64) :: F13, F14, F12, F31, F41, FSS ! shape factors
REAL(r64) :: C3, B3, C4, B4, K3, K4, DEN ! temporaries
! flow
CD = SQRT ((W*COS(PHI))**2 + (S + W*SIN(PHI))**2)
AF = SQRT ((W*COS(PHI))**2 + (S - W*SIN(PHI))**2)
F13 = (W+S-CD)/(2.d0*S) ! SHAPE FACTOR FRONT OPENING TO TOP SLAT
F14 = (W+S-AF)/(2.d0*S) ! SHAPE FACTOR FRONT OPENING TO BOTTOM SLAT
FSS = 1.d0 - (S/W)*(F13+F14) ! SLAT-TO-SLAT SHAPE FACTOR
F31 = (S/W)*F13 ! SHAPE FACTOR - TOP TO FRONT
F41 = (S/W)*F14 ! SHAPE FACTOR - BOTTOM TO FRONT
F12 = 1.d0 - F13 - F14 ! FRONT OPENING TO BACK OPENING SHAPE FACTOR
DEN = 1.d0 - (TAU_SLAT*FSS) ! DENOMINATOR - USED FOUR TIMES
C3 = (RHODFS_SLAT*F31 + TAU_SLAT*F41)/DEN
B3 = (RHODFS_SLAT*FSS)/DEN
C4 = (RHOUFS_SLAT*F41 + TAU_SLAT*F31)/DEN
B4 = (RHOUFS_SLAT*FSS)/DEN
K3 = (C3 + (B3*C4))/(1.d0 - (B3*B4))
K4 = (C4 + (B4*C3))/(1.d0 - (B3*B4))
! transmittance of VB (equal front/back)
TAUVB = P01( F12 + (F14*K3) + (F13*K4), "VB_DIFF Tau")
! diffuse reflectance of VB front-side
RHOFVB = P01( (F13*K3) + (F14*K4), "VB_DIFF RhoF")
RETURN
END SUBROUTINE VB_DIFF