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) | :: | ZoneNum |
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.
SUBROUTINE CalcCeilingDiffuserIntConvCoeff(ZoneNum)
! SUBROUTINE INFORMATION:
! AUTHOR Rick Strand
! DATE WRITTEN August 2000
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS FUNCTION:
! This subroutine calculates the interior convection coefficients
! for ceiling diffusers correlated to the outlet air temperature.
! METHODOLOGY EMPLOYED:
! call functions with the actual model equations
! REFERENCES:
! Fisher, D.E. and C.O. Pedersen, Convective Heat Transfer in Building Energy and
! Thermal Load Calculations, ASHRAE Transactions, vol. 103, Pt. 2, 1997, p.137
! OTHER NOTES:
! The correlations shown below differ from (and are less accurate than) those shown
! in the reference above (Fisher 1997). They have been reformulated with an outlet
! temperature reference in order to accomodate the structure of the EnergyPlus code.
! USE STATEMENTS:
USE DataEnvironment, ONLY: OutBaroPress
USE Psychrometrics, ONLY: PsyRhoAirFnPbTdbW, PsyWFnTdpPb
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: ZoneNum ! zone number for which coefficients are being calculated
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: SurfNum ! DO loop counter for surfaces
REAL(r64) :: ACH ! Air changes per hour
INTEGER :: ZoneNode ! Zone node as defined in system simulation
REAL(r64) :: ZoneVolume ! Zone node as defined in system simulation
REAL(r64) :: ZoneMassFlowRate ! Zone node as defined in system simulation
REAL(r64) :: AirDensity ! zone air density
REAL(r64) :: ZoneMult
! FLOW:
IF (SysSizingCalc .OR. ZoneSizingCalc .OR. .NOT. ALLOCATED(Node)) THEN
ACH = 0.0d0
ELSE
! Set local variables
ZoneVolume = Zone(ZoneNum)%Volume
ZoneNode = Zone(ZoneNum)%SystemZoneNodeNumber
ZoneMult = Zone(ZoneNum)%Multiplier * Zone(ZoneNum)%ListMultiplier
IF (.not. BeginEnvrnFlag) THEN
AirDensity = PsyRhoAirFnPbTdbW(OutBaroPress,Node(ZoneNode)%Temp,PsyWFnTdpPb(Node(ZoneNode)%Temp,OutBaroPress))
ZoneMassFlowRate = Node(ZoneNode)%MassFlowRate / ZoneMult
ELSE ! because these are not updated yet for new environment
AirDensity = PsyRhoAirFnPbTdbW(OutBaroPress,0.0d0,PsyWFnTdpPb(0.0d0,OutBaroPress))
ZoneMassFlowRate = 0.0d0
ENDIF
IF (ZoneMassFlowRate < MinFlow) THEN
ACH = 0.0d0
ELSE
! Calculate ACH
ACH = ZoneMassFlowRate/AirDensity/ZoneVolume*SecInHour
! Limit ACH to range of correlation
ACH = MIN(ACH, MaxACH)
ACH = MAX(ACH, 0.0d0)
END IF
END IF
! If the Ceiling Diffuser option is selected the following correlations are used.
! The development of the ceiling diffuser convection correlations is shown in reference 4.
! The correlations shown below differ from (and are less accurate than) those shown in reference 4 because they have been
! reformulated with an outlet temperature reference in order to accomodate the structure of the
! EnergyPlus code.
DO SurfNum = Zone(ZoneNum)%SurfaceFirst,Zone(ZoneNum)%SurfaceLast
IF (.NOT. Surface(SurfNum)%HeatTransSurf) CYCLE ! Skip non-heat transfer surfaces
! Set HConvIn using the proper correlation based on Surface Tilt
IF (Surface(SurfNum)%Tilt > 135.0d0) THEN
HConvIn(SurfNum) = CalcFisherPedersenCeilDiffuserFloor(ACH) ! Floor correlation
ELSEIF (Surface(SurfNum)%Tilt < 45.0d0 ) THEN
HConvIn(SurfNum) =CalcFisherPedersenCeilDiffuserCeiling(ACH) ! Ceiling correlation
ELSE
HConvIn(SurfNum) = CalcFisherPedersenCeilDiffuserWalls(ACH) ! Wall correlation
END IF
! Establish some lower limit to avoid a zero convection coefficient (and potential divide by zero problems)
IF (HConvIn(SurfNum) < LowHConvLimit) HConvIn(SurfNum) = LowHConvLimit
END DO ! SurfNum
RETURN
END SUBROUTINE CalcCeilingDiffuserIntConvCoeff