Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | xTHETA | |||
real(kind=r64), | intent(in) | :: | RHO_BT0 | |||
real(kind=r64), | intent(in) | :: | TAU_BT0 | |||
real(kind=r64), | intent(in) | :: | TAU_BB0 | |||
real(kind=r64), | intent(out) | :: | RHO_BD | |||
real(kind=r64), | intent(out) | :: | TAU_BB | |||
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 IS_BEAM(xTHETA, RHO_BT0, TAU_BT0, TAU_BB0, RHO_BD, TAU_BB, 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 insect screen off-normal solar optical properties
! using semi-empirical relations.
!
! METHODOLOGY EMPLOYED:
! na
!
! REFERENCES:
! na
! USE STATEMENTS:
! na
!
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64), INTENT (IN) :: xTHETA ! incidence angle, radians (0 - PI/2)
REAL(r64), INTENT (IN) :: RHO_BT0 ! beam-total reflectance
REAL(r64), INTENT (IN) :: TAU_BT0 ! beam-total transmittance at normal incidence
! TAU_BTO = TAU_BB0 + TAU_BD0
REAL(r64), INTENT (IN) :: TAU_BB0 ! beam-beam transmittance at normal incidence
REAL(r64), INTENT (OUT) :: RHO_BD ! returned: beam-diffuse reflectance
REAL(r64), INTENT (OUT) :: TAU_BB ! returned: beam-beam transmittance
REAL(r64), INTENT (OUT) :: TAU_BD ! returned: beam-diffuse transmittance
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: THETA ! working incident angle, radians
REAL(r64) :: COSTHETA ! cosine( theta)
REAL(r64) :: THETA_CUTOFF ! cutoff angle, radians (beyond which TAU_BB = 0)
REAL(r64) :: B ! working temp
REAL(r64) :: RHO_W ! apparent wire reflectance
REAL(r64) :: RHO_BT90 ! beam-total reflectance at 90 deg incidence
REAL(r64) :: TAU_BT ! beam-total transmittance
! Flow
THETA = MIN( 89.99d0*DegToRadians, xTHETA)
COSTHETA = COS( THETA)
RHO_W = RHO_BT0/MAX(0.00001d0, 1.d0 - TAU_BB0)
B = -0.45d0 * LOG( MAX( RHO_W, 0.01d0))
RHO_BT90 = RHO_BT0 + (1.d0 - RHO_BT0)*(0.35d0 * RHO_W)
RHO_BD = P01( RHO_BT0 + (RHO_BT90 - RHO_BT0) * (1.d0 -COSTHETA**B), "IS_BEAM RhoBD")
IF (TAU_BT0 < 0.00001d0) THEN
TAU_BB = 0.0d0
TAU_BT = 0.0d0
ELSE
THETA_CUTOFF = ACOS( IS_DSRATIO( TAU_BB0))
IF (THETA >= THETA_CUTOFF) THEN
TAU_BB = 0.0d0
ELSE
B = -0.45d0 * LOG( MAX( TAU_BB0, 0.01d0)) + 0.1d0
TAU_BB = P01( TAU_BB0 * COS( PiOvr2*THETA/THETA_CUTOFF)**B, "IS_BEAM TauBB")
END IF
B = -0.65d0 * LOG( MAX( TAU_BT0, 0.01d0)) + 0.1d0
TAU_BT = P01( TAU_BT0 * COSTHETA**B, "IS_BEAM TauBT")
END IF
TAU_BD = P01( TAU_BT-TAU_BB, "IS_BEAM TauBD")
RETURN
END SUBROUTINE IS_BEAM