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 | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | PipeNum | |||
real(kind=r64), | intent(in) | :: | COSI | |||
integer, | intent(in) | :: | RadiationType |
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.
RECURSIVE REAL(r64) FUNCTION TransTDD(PipeNum, COSI, RadiationType)
! SUBROUTINE INFORMATION:
! AUTHOR Peter Graham Ellis
! DATE WRITTEN May 2003
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculates the total transmittance of the TDD for specified radiation type.
! METHODOLOGY EMPLOYED:
! The transmittances for each component (i.e. TDD:DIFFUSER, TDD:DOME, and pipe) are calculated.
! All transmittances are multiplied to get the total for the TDD:
! TransTDD = transDome * transPipe * transDiff
!
! Transmittance of beam radiation is calculated by interpolating the values in a
! table created during initialization. The table values are from Swift and Smith's
! numerical integral for collimated beam radiation.
!
! Transmittances of isotropic and anisotropic diffuse radiation are more complicated and call
! other subroutines in this module.
!
! All light reaching the TDD:DIFFUSER is assumed to be diffuse.
! NOTE: Dome transmittance could be improved by taking into account curvature of the dome.
! REFERENCES:
! Swift, P. D., and Smith, G. B. "Cylindrical Mirror Light Pipes",
! Solar Energy Materials and Solar Cells 36 (1995), pp. 159-168.
! USE STATEMENTS:
USE General, ONLY: POLYF
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! FUNCTION ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: PipeNum ! TDD pipe object number
REAL(r64), INTENT(IN) :: COSI ! Cosine of the incident angle
INTEGER, INTENT(IN) :: RadiationType ! Radiation type flag
! FUNCTION LOCAL VARIABLE DECLARATIONS:
INTEGER :: constDome ! Construction object number for TDD:DOME
INTEGER :: constDiff ! Construction object number for TDD:DIFFUSER
REAL(r64) :: transDome
REAL(r64) :: transPipe
REAL(r64) :: transDiff
! FLOW:
TransTDD = 0.0d0
! Get constructions of each TDD component
constDome = Surface(TDDPipe(PipeNum)%Dome)%Construction
constDiff = Surface(TDDPipe(PipeNum)%Diffuser)%Construction
! Get the transmittance of each component and of total TDD
SELECT CASE (RadiationType)
CASE (VisibleBeam)
transDome = POLYF(COSI, Construct(constDome)%TransVisBeamCoef)
transPipe = InterpolatePipeTransBeam(COSI, TDDPipe(PipeNum)%PipeTransVisBeam)
transDiff = Construct(constDiff)%TransDiffVis ! May want to change to POLYF also!
TransTDD = transDome * transPipe * transDiff
CASE (SolarBeam)
transDome = POLYF(COSI, Construct(constDome)%TransSolBeamCoef)
transPipe = InterpolatePipeTransBeam(COSI, TDDPipe(PipeNum)%PipeTransSolBeam)
transDiff = Construct(constDiff)%TransDiff ! May want to change to POLYF also!
TransTDD = transDome * transPipe * transDiff
CASE (SolarAniso)
TransTDD = CalcTDDTransSolAniso(PipeNum, COSI)
CASE (SolarIso)
TransTDD = TDDPipe(PipeNum)%TransSolIso
END SELECT
RETURN
END FUNCTION TransTDD