Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | S | |||
real(kind=r64), | intent(in) | :: | W | |||
real(kind=r64), | intent(in) | :: | OMEGA | |||
real(kind=r64), | intent(in) | :: | DE | |||
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) | :: | RHO_BD | |||
real(kind=r64), | intent(out) | :: | TAU_BD |
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_SOL6(S, W, OMEGA, DE, PHI, RHODFS_SLAT, RHOUFS_SLAT, TAU_SLAT, &
RHO_BD, TAU_BD)
!
! 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 solar transmittance and reflectance.
!
! METHODOLOGY EMPLOYED:
! six surface flat-slat model with slat transmittance. If you want the back
! side reflectance call the routine a second time with the same input data
! except negative the slat angle, PHI_DEG
!
! 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) :: OMEGA ! incident beam profile angle (radians)
! ltyVBHOR: +=above horizontal
! ltyVBVER: +=clockwise when viewed from above
REAL(r64), INTENT (IN) :: DE ! distance from front tip of any slat to shadow (caused by the adjacent slat) on
! the plane of the same slat DE may be greater than the slat width, w
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 ! solar reflectance downward-facing slat surfaces (concave)
REAL(r64), INTENT (IN) :: RHOUFS_SLAT ! solar reflectance upward-facing slat surfaces (convex)
REAL(r64), INTENT (IN) :: TAU_SLAT ! solar transmittance of slat
! Note: all solar slat properties - incident-to-diffuse
REAL(r64), INTENT (OUT) :: RHO_BD ! returned: solar beam-to-diffuse reflectance the venetian blind (front side)
REAL(r64), INTENT (OUT) :: TAU_BD ! returned: solar beam-to-diffuse transmittance of the venetian blind (front side)
!
! SUBROUTINE PARAMETER DEFINITIONS:
INTEGER, PARAMETER :: N = 4
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: AB, AE, AF, BC, BD, BF, CD, CE, EF ! lengths of slat segments and diagonal strings
! used in the six-surface model
REAL(r64) :: F13, F14, F23, F24, F34, F36, F15, F16 ! shape factors
REAL(r64) :: F43, F45, F54, F56, F63, F65, F25, F26
REAL(r64) :: Z3, Z4 ! diffuse source terms from surfaces 3 and 4 due to incident beam radiation
REAL(r64) :: J3, J4, J5, J6 ! radiosity, surface i
REAL(r64) :: A( N, N+2) ! coefficients of the radiosity equations matrix
REAL(r64) :: XSOL( N) ! solution vector (obtained after solving the radiosity equations matrix)
! flow
! CHECK TO SEE WHICH SIDE OF SLAT IS SUNLIT
IF((PHI + OMEGA) >= 0.0d0) THEN ! SUN SHINES ON TOP OF SLAT
Z3 = TAU_SLAT*S/DE
Z4 = RHOUFS_SLAT*S/DE
! PRINT *, PHI, OMEGA, DE, 'TOPLIT'
ELSE ! SUN SHINES ON BOTTOM OF SLAT
Z3 = RHODFS_SLAT*S/DE
Z4 = TAU_SLAT*S/DE
! PRINT *, PHI, OMEGA, DE, 'BOTLIT'
ENDIF
! CHECK TO SEE IF VENETIAN BLIND IS CLOSED
IF( ABS(PHI - PiOvr2) < SMALL_ERROR ) THEN !VENETIAN BLIND IS CLOSED
! CHECK TO SEE IF THERE ARE GAPS IN BETWEEN SLATS WHEN THE BLIND IS CLOSED
IF(W < S) THEN !YES, THERE ARE GAPS IN BETWEEN SLATS
RHO_BD = (W/S)*RHOUFS_SLAT
TAU_BD = (W/S)*TAU_SLAT
ELSE ! NO, THERE ARE NO GAPS IN BETWEEN SLATS
RHO_BD = RHOUFS_SLAT
TAU_BD = TAU_SLAT
ENDIF ! END OF CHECK FOR GAPS IN BETWEEN SLATS
ELSE !VENETIAN BLIND IS OPENED
AB = DE
AF = SQRT ((W*COS(PHI))**2 + (S - W*SIN(PHI))**2)
BC = W - AB
EF = BC
BD = SQRT ((DE*COS(PHI))**2 + (S + DE*SIN(PHI))**2)
BF = SQRT ((EF*COS(PHI))**2 + (S - EF*SIN(PHI))**2)
CD = SQRT ((W*COS(PHI))**2 + (S + W*SIN(PHI))**2)
CE = SQRT ((EF*COS(PHI))**2 + (S + EF*SIN(PHI))**2)
AE = SQRT ((DE*COS(PHI))**2 + (S - DE*SIN(PHI))**2)
F13 = (S + AB - BD) / (2.d0*S)
F14 = (S + DE - AE) / (2.d0*S)
F15 = (W + BD - (AB + CD)) / (2.d0*S)
F16 = (W + AE - (AF + DE)) / (2.d0*S)
F23 = (W + BF - (BC + AF)) / (2.d0*S)
F24 = (W + CE - (CD + EF)) / (2.d0*S)
F25 = (S + BC - BF) / (2.d0*S)
F26 = (S + EF - CE) / (2.d0*S)
F34 = (AE + BD - 2.d0*S) / (2.d0*AB)
F36 = (AF + S - (AE + BF)) / (2.d0*AB)
F43 = (AE + BD - 2.d0*S) / (2.d0*DE)
F45 = (CD + S - (BD + CE)) / (2.d0*DE)
F54 = (CD + S - (BD + CE)) / (2.d0*BC)
F56 = (CE + BF - 2.d0*S) / (2.d0*BC)
F63 = (AF + S - (AE + BF)) / (2.d0*EF)
F65 = (BF + CE - 2.d0*S) / (2.d0*EF)
! POPULATE THE COEFFICIENTS OF THE RADIOSITY MATRIX
A(1,1) = 1.d0 - TAU_SLAT*F43
A(1,2) = -RHODFS_SLAT*F34
A(1,3) = -TAU_SLAT*F45
A(1,4) = -RHODFS_SLAT*F36
A(1,5) = Z3
A(2,1) = -RHOUFS_SLAT*F43
A(2,2) = 1.d0 - TAU_SLAT*F34
A(2,3) = -RHOUFS_SLAT*F45
A(2,4) = -TAU_SLAT*F36
A(2,5) = Z4
A(3,1) = -TAU_SLAT*F63
A(3,2) = -RHODFS_SLAT*F54
A(3,3) = 1.d0 - TAU_SLAT*F65
A(3,4) = -RHODFS_SLAT*F56
A(3,5) = 0.0d0
A(4,1) = -RHOUFS_SLAT*F63
A(4,2) = -TAU_SLAT*F54
A(4,3) = -RHOUFS_SLAT*F65
A(4,4) = 1.0d0 - TAU_SLAT*F56
A(4,5) = 0.0d0
CALL SOLMATS(N,A,XSOL)
J3 = XSOL(1)
J4 = XSOL(2)
J5 = XSOL(3)
J6 = XSOL(4)
RHO_BD = F13*J3 + F14*J4 + F15*J5 + F16*J6
TAU_BD = F23*J3 + F24*J4 + F25*J5 + F26*J6
ENDIF ! END OF CHECK FOR CLOSED BLIND
RETURN
END SUBROUTINE VB_SOL6