| 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