Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CFSLAYER), | intent(in) | :: | L | |||
type(CFSSWP), | intent(inout) | :: | LSWP | |||
real(kind=r64), | intent(in), | optional | :: | OHM_V_RAD | ||
real(kind=r64), | intent(in), | optional | :: | OHM_H_RAD |
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 PD_SWP(L, LSWP, OHM_V_RAD, OHM_H_RAD)
!
! FUNCTION INFORMATION:
! AUTHOR ASHRAE 1311-RP
!
! DATE WRITTEN unknown
! MODIFIED na
!
! RE-ENGINEERED na
! PURPOSE OF THIS FUNCTION:
! Modifies drape fabric shortwave properties for openness. If not drape Fabric layer
! returns false. If profile angles not specified diffuse properties are returned.
!
!
! METHODOLOGY EMPLOYED:
! na
!
! REFERENCES:
! na
!
! USE STATEMENTS:
! na
!
IMPLICIT NONE
! FUNCTION ARGUMENT DEFINITIONS:
TYPE( CFSLAYER), INTENT(IN) :: L ! PD layer
TYPE( CFSSWP), INTENT(INOUT) :: LSWP ! returned: equivalent layer properties set
REAL(r64), OPTIONAL, INTENT (IN) :: OHM_V_RAD ! vertical VB profile angles, radians
REAL(r64), OPTIONAL, INTENT (IN) :: OHM_H_RAD ! horizonatl VB profile angles, radians
!
! FUNCTION PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
!
! FUNCTION LOCAL VARIABLE DECLARATIONS:
LOGICAL :: DODIFFUSE
REAL(r64) :: RHOBF_BT0
REAL(r64) :: RHOFF_BT0
REAL(r64) :: TAUBF_BT0
REAL(r64) :: TAUFF_BT0
REAL(r64) :: TAUX
! Flow
PD_SWP = .FALSE.
IF (.NOT.L%LTYPE == ltyDRAPE) RETURN
DODIFFUSE = .NOT.( PRESENT( OHM_V_RAD) .AND. PRESENT( OHM_H_RAD))
IF (DODIFFUSE) THEN
CALL PD_DIFF( L%S, L%W, L%SWP_MAT%RHOSFDD, L%SWP_MAT%RHOSBDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSFDD, LSWP%TAUS_DD)
CALL PD_DIFF( L%S, L%W, L%SWP_MAT%RHOSBDD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSBDD, TAUX)
ELSE
! normal beam-total properties of fabric
RHOFF_BT0 = L%SWP_MAT%RHOSFBB + L%SWP_MAT%RHOSFBD ! front rho
RHOBF_BT0 = L%SWP_MAT%RHOSBBB + L%SWP_MAT%RHOSBBD ! back rho
! drape front properties
CALL PD_BEAM( L%S, L%W, OHM_V_RAD, OHM_H_RAD, &
RHOFF_BT0, L%SWP_MAT%TAUSFBB, L%SWP_MAT%TAUSFBD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
RHOBF_BT0, L%SWP_MAT%TAUSBBB, L%SWP_MAT%TAUSBBD, L%SWP_MAT%RHOSBDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSFBD, LSWP%TAUSFBB, LSWP%TAUSFBD)
! drape back properties: call with reversed fabric properies
CALL PD_BEAM( L%S, L%W, OHM_V_RAD, OHM_H_RAD, &
RHOBF_BT0, L%SWP_MAT%TAUSBBB, L%SWP_MAT%TAUSBBD, L%SWP_MAT%RHOSBDD, L%SWP_MAT%TAUS_DD, &
RHOFF_BT0, L%SWP_MAT%TAUSFBB, L%SWP_MAT%TAUSFBD, L%SWP_MAT%RHOSFDD, L%SWP_MAT%TAUS_DD, &
LSWP%RHOSBBD, LSWP%TAUSBBB, LSWP%TAUSBBD)
ENDIF
PD_SWP = .TRUE.
RETURN
END FUNCTION PD_SWP