Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CFSLAYER), | intent(in) | :: | L | |||
type(CFSSWP), | intent(inout) | :: | LSWP | |||
real(kind=r64), | intent(in), | optional | :: | OMEGA |
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.
LOGICAL FUNCTION VB_SWP(L, LSWP, OMEGA)
!
! FUNCTION INFORMATION:
! AUTHOR ASHRAE 1311-RP
!
! DATE WRITTEN unknown
! MODIFIED na
!
! RE-ENGINEERED na
! PURPOSE OF THIS FUNCTION:
! Returns venetian blind off-normal short wave properties. If not VB layer
! returns False.
!
! METHODOLOGY EMPLOYED:
! na
!
! REFERENCES:
! na
!
! USE STATEMENTS:
! na
!
IMPLICIT NONE
! FUNCTION ARGUMENT DEFINITIONS:
TYPE( CFSLAYER), INTENT(IN) :: L ! VB layer
TYPE( CFSSWP), INTENT(INOUT) :: LSWP ! returned: equivalent off-normal properties
! sets: RHOSFBD, TAUSFBB, TAUSFBD
REAL(r64), OPTIONAL, INTENT(IN) :: OMEGA ! incident profile angle (radians)
!
! FUNCTION PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
!
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: SL_WR
REAL(r64) :: TAUX
LOGICAL :: DODIFFUSE
! Flow
VB_SWP = .FALSE.
IF (.NOT.IsVBLayer( L)) RETURN
SL_WR = VB_SLAT_RADIUS_RATIO( L%W, L%C)
DODIFFUSE = .NOT. PRESENT( OMEGA)
IF (DODIFFUSE) THEN
CALL VB_DIFF( L%S, L%W, DegToRadians*L%PHI_DEG, &
L%SWP_MAT%RHOSBDD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSFDD, LSWP%TAUS_DD)
CALL VB_DIFF( L%S, L%W, -DegToRadians*L%PHI_DEG, &
L%SWP_MAT%RHOSBDD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSBDD, TAUX)
ELSE
! modify angle-dependent values for actual profile angle
CALL VB_SOL46_CURVE( L%S, L%W, SL_WR, DegToRadians*L%PHI_DEG, OMEGA, &
L%SWP_MAT%RHOSBDD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSFBD, LSWP%TAUSFBB, LSWP%TAUSFBD)
CALL VB_SOL46_CURVE( L%S, L%W, SL_WR, -DegToRadians*L%PHI_DEG, OMEGA, &
L%SWP_MAT%RHOSBDD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSBBD, LSWP%TAUSBBB, LSWP%TAUSBBD)
END IF
VB_SWP = .TRUE.
RETURN
END FUNCTION VB_SWP