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.
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.
SUBROUTINE DistributeTDDAbsorbedSolar
! SUBROUTINE INFORMATION:
! AUTHOR Peter Graham Ellis
! DATE WRITTEN July 2003
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Sums the absorbed solar gains from TDD pipes that pass through transition zones.
! METHODOLOGY EMPLOYED:
! The total absorbed solar gain is a sum of the following gains:
! 1. Inward bound solar absorbed by multiple pipe reflections (solar entering pipe - solar exiting pipe)
! 2. Outward bound solar absorbed by multiple pipe reflections due to:
! a. Reflection off of diffuser surface (inside of TDD)
! b. Zone diffuse interior shortwave incident on the diffuser from windows, lights, etc.
! 3. Inward absorbed solar in dome and diffuser glass
!
! This subroutine is called by InitIntSolarDistribution in HeatBalanceSurfaceManager.f90.
! REFERENCES: na
! USE STATEMENTS:
USE DataHeatBalance, ONLY: QRadSWOutIncident, QRadSWwinAbs, QRadSWwinAbsTot, QS, ZoneIntGain
USE DataSurfaces, ONLY: WinTransSolar
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS: na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: PipeNum ! TDD pipe object number
INTEGER :: DiffSurf ! Surface number of TDD:DIFFUSER
INTEGER :: TZoneNum ! Transition zone index
! INTEGER :: ActualZone ! Actual transition zone number
REAL(r64) :: transDiff ! Diffuse transmittance of TDD:DIFFUSER
REAL(r64) :: QRefl ! Diffuse radiation reflected back up the pipe
REAL(r64) :: TotTDDPipeGain ! Total absorbed solar gain in the tubular daylighting device pipe
! FLOW:
DO PipeNum = 1, NumOfTDDPipes
DiffSurf = TDDPipe(PipeNum)%Diffuser
transDiff = Construct(Surface(DiffSurf)%Construction)%TransDiff
! Calculate diffuse solar reflected back up the pipe by the inside surface of the TDD:DIFFUSER
! All solar arriving at the diffuser is assumed to be isotropically diffuse by this point
QRefl = (QRadSWOutIncident(DiffSurf) - QRadSWwinAbsTot(DiffSurf)) * Surface(DiffSurf)%Area - WinTransSolar(DiffSurf)
! Add diffuse interior shortwave reflected from zone surfaces and from zone sources, lights, etc.
QRefl = QRefl + QS(Surface(DiffSurf)%Zone) * Surface(DiffSurf)%Area * transDiff
TotTDDPipeGain = WinTransSolar(TDDPipe(PipeNum)%Dome) & ! Solar entering pipe
- QRadSWOutIncident(DiffSurf) * Surface(DiffSurf)%Area & ! Solar exiting pipe
+ QRefl * (1.0d0 - TDDPipe(PipeNum)%TransSolIso / transDiff) & ! Absorbed due to reflections on the way out
+ QRadSWwinAbs(TDDPipe(PipeNum)%Dome,1) * Surface(DiffSurf)%Area / 2.0d0 & ! Inward absorbed solar from dome glass
+ QRadSWwinAbs(DiffSurf,1) * Surface(DiffSurf)%Area / 2.0d0 ! Inward absorbed solar from diffuser glass
TDDPipe(PipeNum)%PipeAbsorbedSolar = MAX(0.0d0, TotTDDPipeGain) ! Report variable [W]
DO TZoneNum = 1, TDDPipe(PipeNum)%NumOfTZones
! Distribute absorbed solar gain in proportion to transition zone length
TDDPipe(PipeNum)%TZoneHeatGain(TZoneNum) = &
TotTDDPipeGain * (TDDPipe(PipeNum)%TZoneLength(TZoneNum) / TDDPipe(PipeNum)%TotLength)
END DO ! TZoneNum
END DO
RETURN
END SUBROUTINE DistributeTDDAbsorbedSolar