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_I(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:
! FOURTEEN 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 = 12
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: TAUBF_BT_PERP
REAL(r64) :: AB, GN, NP, GP, NK, PK, BC, AN, AP, AK, BG, BP, CG, BK, CP, CN ! lengths of surfaces and diagonal strings
REAL(r64) :: Z1_BB, Z7_BB ! beam source terms
REAL(r64) :: Z1_BD, Z2_BD, Z7_BD, Z3_BD, Z9_BD, Z13_BD, Z14_BD ! diffuse source terms due to incident beam radiation
! shape factors
REAL(r64) :: F12, F13, F14, F16, F17, F21, F25, F26, F27, F31, F35, F36, &
F37, F41, F45, F46, F47, F51, F52, F53, F54, F56, F57, F61
REAL(r64) :: F62, F63, F64, F71, F72, F73, F74, F89, F810, F811, F812,F813, &
F814, F911, F912, F913, F914, F1011, F1012, F1013, F1014
REAL(r64) :: F119, F1110, F1112, F1113, F1114, F129, F1210, F1211, F139, &
F1310, F1311, F149, F1410, F1411
REAL(r64) :: J1, J2, J3, J4, J6, J7, J9, J10, J11, J12, J13, J14 ! radiosity, surface i
REAL(r64) :: G1, G5, G8, G11 ! 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
AB = DE
GN = DE
NP = DE
GP = 2.0d0*DE
NK = W-DE
PK = W-2.0d0*DE
BC = NK
AN = SQRT(S*S+DE*DE)
AP = SQRT(S*S+GP*GP)
AK = SQRT(W*W+S*S)
BG = AN
BP = AN
CG = AK
BK = SQRT(S*S+BC*BC)
CP = SQRT(S*S+PK*PK)
CN = SQRT(S*S+NK*NK)
Z1_BB = TAUFF_BB_PARL
Z1_BD = TAUFF_BD_PARL
Z2_BD = Z1_BB*RHOBF_BT_PERP*S/GN
Z7_BB = TAUFF_BB_PERP*S/DE
Z7_BD = TAUFF_BD_PERP*S/DE
Z3_BD = Z7_BB*RHOBF_BT_PERP
Z9_BD = RHOFF_BT_PERP*S/DE
Z13_BD = Z7_BB*TAUBF_BT_PERP
Z14_BD = Z1_BB*TAUBF_BT_PERP*S/GN
F12 = (S+GN-AN)/(2.d0*S)
F13 = (AN+GP-(GN+AP))/(2.d0*S)
F14 = (AP+W-(GP+AK))/(2.d0*S)
F16 = (W+BG-(AB+CG))/(2.d0*S)
F17 = (S+AB-BG)/(2.d0*S)
F21 = (S+GN-AN)/(2.d0*GN)
F25 = (W+CN-(CG+NK))/(2.d0*GN)
F26 = (CG+S-(BG+CN))/(2.d0*GN)
F27 = (AN+BG-2.d0*S)/(2.d0*GN)
F31 = (AN+GP-(GN+AP))/(2.d0*NP)
F35 = (NK+CP-(CN+PK))/(2.d0*NP)
F36 = (CN+BP-(S+CP))/(2.d0*NP)
F37 = (S+AP-(AN+BP))/(2.d0*NP)
F41 = (W+AP-(GP+AK))/(2.d0*PK)
F45 = (S+PK-CP)/(2.d0*PK)
F46 = (CP+BK-(S+BP))/(2.d0*PK)
F47 = (BP+AK-(AP+BK))/(2.d0*PK)
F51 = (AK+CG-2.d0*W)/(2.d0*S)
F52 = (W+CN-(CG+NK))/(2.d0*S)
F53 = (NK+CP-(CN+PK))/(2.d0*S)
F54 = (S+PK-CP)/(2.d0*S)
F56 = (S+BC-BK)/(2.d0*S)
F57 = (W+BK-(BC+AK))/(2.d0*S)
F61 = (W+BG-(AB+CG))/(2.d0*BC)
F62 = (S+CG-(BG+CN))/(2.d0*BC)
F63 = (CN+BP-(S+CP))/(2.d0*BC)
F64 = (BK+CP-(S+BP))/(2.d0*BC)
F71 = F21
F72 = F27
F73 = F37
F74 = (BP+AK-(BK+AP))/(2.d0*AB)
F89 = F12
F810 = F16
F811 = F51
F812 = F14
F813 = F13
F814 = F12
F911 = F25
F912 = F74
F913 = F73
F914 = F27
F1011 = (BC+S-BK)/(2.d0*BC)
F1012 = F64
F1013 = F63
F1014 = F62
F119 = F57
F1110 = F56
F1112 = F54
F1113 = F53
F1114 = F52
F129 = F47
F1210 = F46
F1211 = F45
F139 = F37
F1310 = F36
F1311 = F35
F149 = F27
F1410 = F26
F1411 = F25
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*F13
A(1,4) = -RHOBF_DD*F14
A(1,5) = -RHOBF_DD*F16
A(1,6) = -RHOBF_DD*F17
A(1,7) = 0.0d0
A(1,8) = 0.0d0
A(1,9) = 0.0d0
A(1,10) = 0.0d0
A(1,11) = 0.0d0
A(1,12) = 0.0d0
A(1,13) = Z1_BD
A(2,1) = -RHOBF_DD*F21
A(2,2) = 1.0d0
A(2,3) = 0.0d0
A(2,4) = 0.0d0
A(2,5) = -RHOBF_DD*F26
A(2,6) = -RHOBF_DD*F27
A(2,7) = -TAUFF_DD*F149
A(2,8) = -TAUFF_DD*F1410
A(2,9) = -TAUFF_DD*F1411
A(2,10) = 0.0d0
A(2,11) = 0.0d0
A(2,12) = 0.0d0
A(2,13) = Z2_BD
A(3,1) = -RHOBF_DD*F31
A(3,2) = 0.0d0
A(3,3) = 1.0d0
A(3,4) = 0.0d0
A(3,5) = -RHOBF_DD*F36
A(3,6) = -RHOBF_DD*F37
A(3,7) = -TAUFF_DD*F139
A(3,8) = -TAUFF_DD*F1310
A(3,9) = -TAUFF_DD*F1311
A(3,10) = 0.0d0
A(3,11) = 0.0d0
A(3,12) = 0.0d0
A(3,13) = Z3_BD
A(4,1) = -RHOBF_DD*F41
A(4,2) = 0.0d0
A(4,3) = 0.0d0
A(4,4) = 1.0d0
A(4,5) = -RHOBF_DD*F46
A(4,6) = -RHOBF_DD*F47
A(4,7) = -TAUFF_DD*F129
A(4,8) = -TAUFF_DD*F1210
A(4,9) = -TAUFF_DD*F1211
A(4,10) = 0.0d0
A(4,11) = 0.0d0
A(4,12) = 0.0d0
A(4,13) = 0.0d0
A(5,1) = -RHOBF_DD*F61
A(5,2) = -RHOBF_DD*F62
A(5,3) = -RHOBF_DD*F63
A(5,4) = -RHOBF_DD*F64
A(5,5) = 1.0d0
A(5,6) = 0.0d0
A(5,7) = 0.0d0
A(5,8) = 0.0d0
A(5,9) = -TAUFF_DD*F1011
A(5,10) = -TAUFF_DD*F1012
A(5,11) = -TAUFF_DD*F1013
A(5,12) = -TAUFF_DD*F1014
A(5,13) = 0.0d0
A(6,1) = -RHOBF_DD*F71
A(6,2) = -RHOBF_DD*F72
A(6,3) = -RHOBF_DD*F73
A(6,4) = -RHOBF_DD*F74
A(6,5) = 0.0d0
A(6,6) = 1.0d0
A(6,7) = 0.0d0
A(6,8) = 0.0d0
A(6,9) = -TAUFF_DD*F911
A(6,10) = -TAUFF_DD*F912
A(6,11) = -TAUFF_DD*F913
A(6,12) = -TAUFF_DD*F914
A(6,13) = Z7_BD
A(7,1) = -TAUBF_DD*F71
A(7,2) = -TAUBF_DD*F72
A(7,3) = -TAUBF_DD*F73
A(7,4) = -TAUBF_DD*F74
A(7,5) = 0.0d0
A(7,6) = 0.0d0
A(7,7) = 1.0d0
A(7,8) = 0.0d0
A(7,9) = -RHOFF_DD*F911
A(7,10) = -RHOFF_DD*F912
A(7,11) = -RHOFF_DD*F913
A(7,12) = -RHOFF_DD*F914
A(7,13) = Z9_BD
A(8,1) = -TAUBF_DD*F61
A(8,2) = -TAUBF_DD*F62
A(8,3) = -TAUBF_DD*F63
A(8,4) = -TAUBF_DD*F64
A(8,5) = 0.0d0
A(8,6) = 0.0d0
A(8,7) = 0.0d0
A(8,8) = 1.0d0
A(8,9) = -RHOFF_DD*F1011
A(8,10) = -RHOFF_DD*F1012
A(8,11) = -RHOFF_DD*F1013
A(8,12) = -RHOFF_DD*F1014
A(8,13) = 0.0d0
A(9,1) = 0.0d0
A(9,2) = 0.0d0
A(9,3) = 0.0d0
A(9,4) = 0.0d0
A(9,5) = 0.0d0
A(9,6) = 0.0d0
A(9,7) = -RHOFF_DD*F119
A(9,8) = -RHOFF_DD*F1110
A(9,9) = 1.0d0
A(9,10) = -RHOFF_DD*F1112
A(9,11) = -RHOFF_DD*F1113
A(9,12) = -RHOFF_DD*F1114
A(9,13) = 0.0d0
A(10,1) = -TAUBF_DD*F41
A(10,2) = 0.0d0
A(10,3) = 0.0d0
A(10,4) = 0.0d0
A(10,5) = -TAUBF_DD*F46
A(10,6) = -TAUBF_DD*F47
A(10,7) = -RHOFF_DD*F129
A(10,8) = -RHOFF_DD*F1210
A(10,9) = -RHOFF_DD*F1211
A(10,10) = 1.0d0
A(10,11) = 0.0d0
A(10,12) = 0.0d0
A(10,13) = 0.0d0
A(11,1) = -TAUBF_DD*F31
A(11,2) = 0.0d0
A(11,3) = 0.0d0
A(11,4) = 0.0d0
A(11,5) = -TAUBF_DD*F36
A(11,6) = -TAUBF_DD*F37
A(11,7) = -RHOFF_DD*F139
A(11,8) = -RHOFF_DD*F1310
A(11,9) = -RHOFF_DD*F1311
A(11,10) = 0.0d0
A(11,11) = 1.0d0
A(11,12) = 0.0d0
A(11,13) = Z13_BD
A(12,1) = -TAUBF_DD*F21
A(12,2) = 0.0d0
A(12,3) = 0.0d0
A(12,4) = 0.0d0
A(12,5) = -TAUBF_DD*F26
A(12,6) = -TAUBF_DD*F27
A(12,7) = -RHOFF_DD*F149
A(12,8) = -RHOFF_DD*F1410
A(12,9) = -RHOFF_DD*F1411
A(12,10) = 0.0d0
A(12,11) = 0.0d0
A(12,12) = 1.0d0
A(12,13) = Z14_BD
CALL SOLMATS( N, A,XSOL)
J1 = XSOL(1)
J2 = XSOL(2)
J3 = XSOL(3)
J4 = XSOL(4)
J6 = XSOL(5)
J7 = XSOL(6)
J9 = XSOL(7)
J10 = XSOL(8)
J11 = XSOL(9)
J12 = XSOL(10)
J13 = XSOL(11)
J14 = XSOL(12)
G1 = F12*J2+F13*J3+F14*J4+F16*J6+F17*J7
G5 = F56*J6+F57*J7+F51*J1+F52*J2+F53*J3+F54*J4
G8 = F89*J9+F810*J10+F811*J11+F812*J12+F813*J13+F814*J14
G11 = F1112*J12+F1113*J13+F1114*J14+F119*J9+F1110*J10
TAU_BB = 0.0d0
TAU_BD = (G5+TAUFF_DD*G11)/2.d0
RHO_BD = (RHOFF_BT_PARL+TAUBF_DD*G1+G8)/2.d0
RETURN
END SUBROUTINE PD_BEAM_CASE_I