Nodes of different colours represent the following:
Solid arrows point from a parent (sub)module to the submodule which is descended from it. Dashed arrows point from a module being used to the module or program unit using it. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | ProfAng | |||
real(kind=r64), | intent(in), | DIMENSION(37) | :: | PropArray |
REAL(r64) FUNCTION InterpBlind(ProfAng,PropArray)
! SUBROUTINE INFORMATION:
! AUTHOR Fred Winkelmann
! DATE WRITTEN May 2001
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Does profile-angle interpolation of window blind solar-thermal properties
! METHODOLOGY EMPLOYED:
! Linear interpolation.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataGlobals, ONLY: Pi,PiOvr2
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! FUNCTION ARGUMENT DEFINITIONS:
REAL(r64), INTENT(IN) :: ProfAng ! Profile angle (rad)
REAL(r64), INTENT(IN), DIMENSION(37) :: PropArray ! Array of blind properties
! FUNCTION PARAMETER DEFINITIONS:
REAL(r64), PARAMETER :: DeltaAngRad = Pi/36.d0 ! Profile angle increment (rad)
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) InterpFac ! Interpolation factor
INTEGER IAlpha ! Profile angle index
IF(ProfAng > PiOvr2 .OR. ProfAng < -PiOvr2) THEN
InterpBlind = 0.0d0
ELSE
IAlpha = 1 + INT((ProfAng+PiOvr2)/DeltaAngRad)
InterpFac = (ProfAng - (-PiOvr2 + DeltaAngRad*(IAlpha-1)))/DeltaAngRad
InterpBlind = (1.d0-InterpFac)*PropArray(IAlpha) + InterpFac*PropArray(IAlpha+1)
END IF
RETURN
END FUNCTION InterpBlind