Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | S | |||
real(kind=r64), | intent(in) | :: | W | |||
real(kind=r64), | intent(in) | :: | OMEGA_H | |||
real(kind=r64), | intent(in) | :: | DE | |||
real(kind=r64), | intent(in) | :: | RHOFF_BT_PARL | |||
real(kind=r64), | intent(in) | :: | TAUFF_BB_PARL | |||
real(kind=r64), | intent(in) | :: | TAUFF_BD_PARL | |||
real(kind=r64), | intent(in) | :: | RHOBF_BT_PARL | |||
real(kind=r64), | intent(in) | :: | TAUBF_BB_PARL | |||
real(kind=r64), | intent(in) | :: | TAUBF_BD_PARL | |||
real(kind=r64), | intent(in) | :: | RHOFF_BT_PERP | |||
real(kind=r64), | intent(in) | :: | TAUFF_BB_PERP | |||
real(kind=r64), | intent(in) | :: | TAUFF_BD_PERP | |||
real(kind=r64), | intent(in) | :: | RHOBF_BT_PERP | |||
real(kind=r64), | intent(in) | :: | TAUBF_BB_PERP | |||
real(kind=r64), | intent(in) | :: | TAUBF_BD_PERP | |||
real(kind=r64), | intent(in) | :: | RHOBF_DD | |||
real(kind=r64), | intent(in) | :: | RHOFF_DD | |||
real(kind=r64), | intent(in) | :: | TAUFF_DD | |||
real(kind=r64), | intent(in) | :: | TAUBF_DD | |||
real(kind=r64), | intent(out) | :: | RHO_BD | |||
real(kind=r64), | intent(out) | :: | TAU_BD | |||
real(kind=r64), | intent(out) | :: | TAU_BB |
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 PD_BEAM_CASE_V(S, W, OMEGA_H, DE, &
RHOFF_BT_PARL, TAUFF_BB_PARL, TAUFF_BD_PARL, &
RHOBF_BT_PARL, TAUBF_BB_PARL, TAUBF_BD_PARL, &
RHOFF_BT_PERP, TAUFF_BB_PERP, TAUFF_BD_PERP, &
RHOBF_BT_PERP, TAUBF_BB_PERP, TAUBF_BD_PERP, &
RHOBF_DD, RHOFF_DD, TAUFF_DD, TAUBF_DD, &
RHO_BD, TAU_BD, TAU_BB)
! 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 effective front-side solar optical properties of a drapery layer.
!
! METHODOLOGY EMPLOYED:
! NINE SURFACE FLAT-FABRIC MODEL WITH RECTANGULAR ENCLOSURE
!
! REFERENCES:
! na
! USE STATEMENTS:
! na
!
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64), INTENT( IN) :: S ! pleat spacing (> 0)
REAL(r64), INTENT( IN) :: W ! pleat depth (>=0, same units as S)
REAL(r64), INTENT (IN) :: OMEGA_H ! horizontal profile angle, radians
REAL(r64), INTENT (IN) :: DE ! width of illumination on pleat bottom (same units as S)
! fabric properties at current (off-normal) incidence
! _PARL = surface parallel to window (pleat top/bot)
! _PERP = surface perpendicular to window (pleat side)
REAL(r64), INTENT (IN) :: RHOFF_BT_PARL, TAUFF_BB_PARL, TAUFF_BD_PARL
REAL(r64), INTENT (IN) :: RHOBF_BT_PARL, TAUBF_BB_PARL, TAUBF_BD_PARL
REAL(r64), INTENT (IN) :: RHOFF_BT_PERP, TAUFF_BB_PERP, TAUFF_BD_PERP
REAL(r64), INTENT (IN) :: RHOBF_BT_PERP, TAUBF_BB_PERP, TAUBF_BD_PERP
REAL(r64), INTENT (IN) :: RHOFF_DD ! fabric front diffuse-diffuse reflectance
REAL(r64), INTENT (IN) :: RHOBF_DD ! fabric back diffuse-diffuse reflectance
REAL(r64), INTENT (IN) :: TAUFF_DD ! fabric front diffuse-diffuse transmittance
REAL(r64), INTENT (IN) :: TAUBF_DD ! fabric back diffuse-diffuse transmittance
REAL(r64), INTENT (OUT) :: RHO_BD ! returned: drape front beam-diffuse reflectance
REAL(r64), INTENT (OUT) :: TAU_BD ! returned: drape front beam-diffuse transmittance
REAL(r64), INTENT (OUT) :: TAU_BB ! returned: drape front beam-beam transmittance
!
! SUBROUTINE PARAMETER DEFINITIONS:
INTEGER, PARAMETER :: N = 7
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: TAUBF_BT_PERP
REAL(r64) :: AK, CG, MK, DK, MF, DM, GM, GF ! lengths of surfaces and diagonal strings
REAL(r64) :: Z1_BB ! beam source term
REAL(r64) :: Z1_BD, Z2_BD, Z4_BD, Z6_BD, Z7_BD, Z9_BD ! diffuse source terms
! shape factors
REAL(r64) :: F12, F14, F21, F24, F31, F32, F34, F41, F42, F56, F57, F58, F59
REAL(r64) :: F67, F68, F69, F76, F79, F86, F89, F96, F97, F98
REAL(r64) :: J1, J2, J4, J6, J7, J8, J9 ! radiosities
REAL(r64) :: G1, G3, G5, G7, G8 ! irradiances
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
TAUBF_BT_PERP = TAUBF_BD_PERP + TAUBF_BB_PERP
AK = SQRT(W*W+S*S)
CG = AK
MK = (W*ABS(SIN(OMEGA_H)))/ABS(COS(OMEGA_H))
DK = AK
MF = S-MK
DM = SQRT(W*W+MF*MF)
GM = SQRT(W*W+MK*MK)
GF = AK
Z1_BB = TAUFF_BB_PARL
Z1_BD = TAUFF_BD_PARL
Z2_BD = Z1_BB*RHOBF_BT_PERP*S/DE
Z4_BD = TAUFF_BD_PERP*S/DE
Z6_BD = RHOFF_BT_PERP*S/DE
Z7_BD = RHOFF_BT_PARL
Z9_BD = Z1_BB*TAUBF_BT_PERP*S/DE
F12 = (S+W-AK)/(2.d0*S)
F14 = (S+W-CG)/(2.d0*S)
F21 = (S+W-AK)/(2.d0*W)
F24 = (AK+CG-2.d0*S)/(2.d0*W)
F31 = (AK+CG-2.d0*W)/(2.d0*S)
F32 = F14
F34 = F12
F41 = F21
F42 = F24
F56 = F12
F57 = (DM+GF-(GM+W))/(2.d0*S)
F58 = (DK+GM-(DM+W))/(2.d0*S)
F59 = F14
F67 = (W+MF-DM)/(2.d0*W)
F68 = (DM+S-(DK+MF))/(2.d0*W)
F69 = F24
F76 = (W+MF-DM)/(2.d0*MF)
F79 = (GM+S-(GF+MK))/(2.d0*MF)
F86 = (DM+S-(DK+MF))/(2.d0*MK)
F89 = (W+MK-GM)/(2.d0*MK)
F96 = F42
F97 = (GM+S-(GF+MK))/(2.d0*W)
F98 = (W+MK-GM)/(2.d0*W)
A = 0.0d0 ! INITIALIZE RADIOSITY MATRIX COEFFICIENTS
XSOL = 0.0d0 ! INITIALIZE SOLUTION VECTOR COEFFICIENTS
! POPULATE THE COEFFICIENTS OF THE RADIOSITY MATRIX
A(1,1) = 1.0d0
A(1,2) = -RHOBF_DD*F12
A(1,3) = -RHOBF_DD*F14
A(1,4) = 0.0d0
A(1,5) = 0.0d0
A(1,6) = 0.0d0
A(1,7) = 0.0d0
A(1,8) = Z1_BD
A(2,1) = -RHOBF_DD*F21
A(2,2) = 1.0d0
A(2,3) = -RHOBF_DD*F24
A(2,4) = -TAUFF_DD*F96
A(2,5) = -TAUFF_DD*F97
A(2,6) = -TAUFF_DD*F98
A(2,7) = 0.0d0
A(2,8) = Z2_BD
A(3,1) = -RHOBF_DD*F41
A(3,2) = -RHOBF_DD*F42
A(3,3) = 1.0d0
A(3,4) = 0.0d0
A(3,5) = -TAUFF_DD*F67
A(3,6) = -TAUFF_DD*F68
A(3,7) = -TAUFF_DD*F69
A(3,8) = Z4_BD
A(4,1) = -TAUBF_DD*F41
A(4,2) = -TAUBF_DD*F42
A(4,3) = 0.0d0
A(4,4) = 1.0d0
A(4,5) = -RHOFF_DD*F67
A(4,6) = -RHOFF_DD*F68
A(4,7) = -RHOFF_DD*F69
A(4,8) = Z6_BD
A(5,1) = 0.0d0
A(5,2) = 0.0d0
A(5,3) = 0.0d0
A(5,4) = -RHOFF_DD*F76
A(5,5) = 1.0d0
A(5,6) = 0.0d0
A(5,7) = -RHOFF_DD*F79
A(5,8) = Z7_BD
A(6,1) = 0.0d0
A(6,2) = 0.0d0
A(6,3) = 0.0d0
A(6,4) = -RHOFF_DD*F86
A(6,5) = 0.0d0
A(6,6) = 1.0d0
A(6,7) = -RHOFF_DD*F89
A(6,8) = 0.0d0
A(7,1) = -TAUBF_DD*F21
A(7,2) = 0.0d0
A(7,3) = -TAUBF_DD*F24
A(7,4) = -RHOFF_DD*F96
A(7,5) = -RHOFF_DD*F97
A(7,6) = -RHOFF_DD*F98
A(7,7) = 1.0d0
A(7,8) = Z9_BD
CALL SOLMATS(N,A,XSOL)
J1 = XSOL(1)
J2 = XSOL(2)
J4 = XSOL(3)
J6 = XSOL(4)
J7 = XSOL(5)
J8 = XSOL(6)
J9 = XSOL(7)
G1 = F12*J2+F14*J4
G3 = F31*J1+F32*J2+F34*J4
G5 = F56*J6+F57*J7+F58*J8+F59*J9
G7 = F76*J6+F79*J9
G8 = F86*J6+F89*J9
TAU_BB = (2.d0*(DE-W)*ABS(SIN(OMEGA_H))*TAUFF_BB_PARL+(S*ABS(COS(OMEGA_H))-(DE-W)*ABS(SIN(OMEGA_H)))*TAUFF_BB_PERP) &
/ (2.d0*S*ABS(COS(OMEGA_H)))
TAU_BD = (S*G3+TAUFF_DD*(MK*G8+MF*G7)+MF*TAUFF_BD_PARL)/(2.d0*S)
RHO_BD = (RHOFF_BT_PARL+TAUBF_DD*G1+G5)/2.d0
RETURN
END SUBROUTINE PD_BEAM_CASE_V