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) | :: | PeopleListNum |
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.
REAL(r64) FUNCTION CalcRadTemp(PeopleListNum)
! FUNCTION INFORMATION:
! AUTHOR Jaewook Lee
! DATE WRITTEN November 2000
! MODIFIED Rick Strand (for E+ implementation November 2000)
! Rick Strand (for high temperature radiant heaters March 2001)
! RE-ENGINEERED na
! PURPOSE OF THIS FUNCTION:
! THIS IS A FUNCTION TO CALCULATE EITHER ZONE AVERAGED MRT OR
! SURFACE WEIGHTED MRT
! METHODOLOGY EMPLOYED:
! The method here is fairly straight-forward. If the user has selected
! a zone average MRT calculation, then there is nothing to do other than
! to assign the function value because the zone MRT has already been
! calculated. Note that this value is an "area-emissivity" weighted value.
! If the user wants to place the occupant "near" a particular surface,
! then at the limit half of the radiant field will be from this surface.
! As a result, an average of the zone MRT and the surface temperature
! is taken to arrive at an approximate radiant temperature.
! If a high temperature radiant heater is present, then this must also be
! taken into account. The equation used to account for this factor is
! based on equation 49 on page 150 of Fanger's text (see reference below).
! The additional assumptions for EnergyPlus are that the radiant energy
! from the heater must be spread over the average area of a human being
! (see parameter below) and that the emissivity and absorptivity of the
! occupant are equivalent for the dominant wavelength of radiant energy
! from the heater. These assumptions might be off slightly, but it does
! allow for an approximation of the effects of surfaces and heaters
! within a space. Future additions might include the effect of direct
! solar energy on occupants.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataHeatBalFanSys, ONLY : QHTRadSysToPerson, QHWBaseboardToPerson, QSteamBaseboardToPerson, QElecBaseboardToPerson
USE DataHeatBalSurface, ONLY : TH
IMPLICIT NONE ! Enforce explicit typing of all variables in this function
! FUNCTION ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: PeopleListNum ! Type of MRT calculation (zone averaged or surface weighted)
! FUNCTION PARAMETER DEFINITIONS:
REAL(r64), PARAMETER :: AreaEff = 1.8d0 ! Effective area of a "standard" person in meters squared
! REAL(r64), PARAMETER :: KelvinConv = KelvinConv ! Conversion from Celsius to Kelvin
REAL(r64), PARAMETER :: StefanBoltzmannConst = 5.6697d-8 ! Stefan-Boltzmann constant in W/(m2*K4)
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: SurfaceTemp
REAL(r64) :: ZoneRadTemp
! FLOW:
SELECT CASE (People(PeopleListNum)%MRTCalcType)
CASE (ZoneAveraged)
RadTemp = MRT(ZoneNum)
CASE (SurfaceWeighted)
ZoneRadTemp = MRT(ZoneNum)
SurfaceTemp = TH(People(PeopleListNum)%SurfacePtr,1,2)
RadTemp = (ZoneRadTemp + SurfaceTemp)/2.0d0
CASE (AngleFactor)
RadTemp = CalcAngleFactorMRT(People(PeopleListNum)%AngleFactorListPtr)
END SELECT
! If high temperature radiant heater present and on, then must account for this in MRT calculation
IF (QHTRadSysToPerson(ZoneNum) > 0.0d0 .OR. QHWBaseboardToPerson(ZoneNum) > 0.0d0 .OR. &
QSteamBaseboardToPerson(ZoneNum) > 0.0d0 .OR. QElecBaseboardToPerson(ZoneNum) > 0.0d0) THEN
RadTemp = RadTemp + KelvinConv ! Convert to Kelvin
RadTemp = ((RadTemp**4)+((QHTRadSysToPerson(ZoneNum)+QHWBaseboardToPerson(ZoneNum)+ &
QSteamBaseboardToPerson(ZoneNum) + QElecBaseboardToPerson(ZoneNum))/ &
AreaEff/StefanBoltzmannConst))**(1.0d0/4.0d0)
RadTemp = RadTemp - KelvinConv ! Convert back to Celsius
END IF
CalcRadTemp = RadTemp
RETURN
END FUNCTION CalcRadTemp