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_IV(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:
! Eight 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 = 6
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) ::TAUBF_BT_PERP
REAL(r64) :: AK, CG ! length of diagonal strings
REAL(r64) :: Z1_BB ! beam source term
REAL(r64) :: Z1_BD, Z2_BD, Z4_BD, Z6_BD, Z8_BD ! diffuse source terms
! shape factors
REAL(r64) :: F12, F14, F21, F24, F31, F32, F34, F41, F42, F56, F57, F58
REAL(r64) :: F67, F68, F76, F78, F86, F87
REAL(r64) :: J1, J2, J4, J6, J7, J8 ! radiosity, surface i
REAL(r64) :: G1, G3, G5, G7 ! irradiance, 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
TAUBF_BT_PERP = TAUBF_BD_PERP + TAUBF_BB_PERP
AK = SQRT(W*W+S*S)
CG = AK
Z1_BB = TAUFF_BB_PARL
Z1_BD = TAUFF_BD_PARL
Z2_BD = Z1_BB*RHOBF_BT_PERP*S/W
Z4_BD = TAUFF_BD_PERP*S/W
Z6_BD = RHOFF_BT_PERP*S/W
Z8_BD = Z1_BB*TAUBF_BT_PERP*S/W
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 = F12
F34 = F12
F41 = F21
F42 = F24
F56 = F12
F57 = F31
F58 = F14
F67 = F41
F68 = F24
F76 = F32
F78 = F34
F86 = F42
F87 = F21
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) = Z1_BD
A(2,1) = -RHOBF_DD*F21
A(2,2) = 1.0d0
A(2,3) = -RHOBF_DD*F24
A(2,4) = -TAUFF_DD*F86
A(2,5) = -TAUFF_DD*F87
A(2,6) = 0.0d0
A(2,7) = 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) = 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) = 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) = -RHOFF_DD*F78
A(5,7) = 0.0d0
A(6,1) = -TAUBF_DD*F21
A(6,2) = 0.0d0
A(6,3) = -TAUBF_DD*F24
A(6,4) = -RHOFF_DD*F86
A(6,5) = -RHOFF_DD*F87
A(6,6) = 1.0d0
A(6,7) = Z8_BD
CALL SOLMATS(N,A,XSOL)
J1 = XSOL(1)
J2 = XSOL(2)
J4 = XSOL(3)
J6 = XSOL(4)
J7 = XSOL(5)
J8 = XSOL(6)
G1 = F12*J2+F14*J4
G3 = F31*J1+F32*J2+F34*J4
G5 = F56*J6+F57*J7+F58*J8
G7 = F76*J6+F78*J8
TAU_BB = TAUFF_BB_PERP/2.d0
TAU_BD = (G3+TAUFF_DD*G7)/2.d0
RHO_BD = (RHOFF_BT_PARL+TAUBF_DD*G1+G5)/2.d0
RETURN
END SUBROUTINE PD_BEAM_CASE_IV