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) | :: | PropArray(37) |
REAL(r64) FUNCTION InterpProfAng(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
! FUNCTION ARGUMENT DEFINITIONS:
REAL(r64),INTENT(IN) :: PropArray(37) ! Array of blind properties
REAL(r64),INTENT(IN) :: ProfAng ! Profile angle (rad)
! FUNCTION PARAMETER DEFINITIONS:
REAL(r64), PARAMETER :: DeltaAngRad = Pi/36.d0 ! Profile angle increment (rad)
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) InterpFac ! Interpolation factor
INTEGER IAlpha ! Profile angle index
! DeltaAng = Pi/36
IF(ProfAng > PiOvr2 .OR. ProfAng < -PiOvr2) THEN
InterpProfAng = 0.0d0
ELSE
IAlpha = 1 + INT((ProfAng+PiOvr2)/DeltaAngRad)
InterpFac = (ProfAng - (-PiOvr2 + DeltaAngRad*(IAlpha-1)))/DeltaAngRad
InterpProfAng = (1.0d0-InterpFac)*PropArray(IAlpha) + InterpFac*PropArray(IAlpha+1)
END IF
RETURN
END FUNCTION InterpProfAng