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