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) | :: | SetPtMgrNum | 
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 CalcWarmestSetPoint(SetPtMgrNum)
          ! SUBROUTINE INFORMATION:
          !       AUTHOR         Fred Buhl
          !       DATE WRITTEN   May 2002
          !       MODIFIED       na
          !       RE-ENGINEERED  na
          ! PURPOSE OF THIS SUBROUTINE:
          ! Calculate the "warmest" supply air setpoint temperature that will satisfy the cooling
          ! requirements of all the zones served by a central air system.
          ! METHODOLOGY EMPLOYED:
          ! Zone sensible heat balance
          ! REFERENCES:
          ! na
          ! USE STATEMENTS:
  USE DataZoneEquipment, ONLY: ZoneEquipConfig
  USE DataZoneEnergyDemands, ONLY: ZoneSysEnergyDemand
  USE DataHVACGlobals, ONLY: SmallMassFlow, SmallLoad
  IMPLICIT NONE    ! Enforce explicit typing of all variables in this routine
          ! SUBROUTINE ARGUMENT DEFINITIONS:
  INTEGER, INTENT (IN)  :: SetPtMgrNum         ! number of the current setpoint manager being simulated
          ! SUBROUTINE PARAMETER DEFINITIONS:
          ! INTERFACE BLOCK SPECIFICATIONS
          ! DERIVED TYPE DEFINITIONS
          ! na
          ! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
  REAL(r64)      :: ZoneLoad         ! required zone load [W]
  REAL(r64)      :: ZoneMassFlowMax  ! zone inlet maximum mass flow rate [kg/s]
  REAL(r64)      :: CpAir            ! inlet air specific heat [J/kg-C]
  INTEGER        :: AirLoopNum       ! the index of the air loop served by this setpoint manager
  REAL(r64)      :: TotCoolLoad      ! sum of the zone cooling loads for this air loop [W]
  INTEGER        :: ZonesCooledIndex ! DO loop index for zones cooled by the air loop
  INTEGER        :: CtrlZoneNum      ! the controlled zone index
  INTEGER        :: ZoneInletNode    ! the zone inlet node number
  REAL(r64)      :: ZoneTemp         ! zone temperature [C]
  REAL(r64)      :: ZoneSetPointTemp ! zone supply air temperature [C]
  REAL(r64)      :: SetPointTemp     ! the system setpoint temperature [C]
  INTEGER        :: ZoneNode         ! the zone node number of the current zone
  INTEGER        :: ZoneNum          ! the actual zone number
  AirLoopNum =  WarmestSetPtMgr(SetPtMgrNum)%AirLoopNum
  TotCoolLoad = 0.0d0
  SetPointTemp = WarmestSetPtMgr(SetPtMgrNum)%MaxSetTemp
  DO ZonesCooledIndex=1,AirToZoneNodeInfo(AirLoopNum)%NumZonesCooled
    CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesCooledIndex)
    ZoneInletNode = AirToZoneNodeInfo(AirLoopNum)%CoolZoneInletNodes(ZonesCooledIndex)
    ZoneNode = ZoneEquipConfig(CtrlZoneNum)%ZoneNode
    ZoneNum = ZoneEquipConfig(CtrlZoneNum)%ActualZoneNum
    ZoneMassFlowMax = Node(ZoneInletNode)%MassFlowRateMax
    ZoneLoad = ZoneSysEnergyDemand(ZoneNum)%TotalOutputRequired
    ZoneTemp = Node(ZoneNode)%Temp
    ZoneSetPointTemp = WarmestSetPtMgr(SetPtMgrNum)%MaxSetTemp
    IF (ZoneLoad < 0.0d0) THEN
      TotCoolLoad = TotCoolLoad + ABS(ZoneLoad)
      CpAir = PsyCpAirFnWTdb(Node(ZoneInletNode)%HumRat,Node(ZoneInletNode)%Temp)
      IF (ZoneMassFlowMax > SmallMassFlow) THEN
        ZoneSetPointTemp = ZoneTemp + ZoneLoad/(CpAir*ZoneMassFlowMax)
      END IF
    END IF
    SetPointTemp = MIN(SetPointTemp,ZoneSetPointTemp)
  END DO
  SetPointTemp = MAX(WarmestSetPtMgr(SetPtMgrNum)%MinSetTemp,MIN(SetPointTemp,WarmestSetPtMgr(SetPtMgrNum)%MaxSetTemp))
  IF (TotCoolLoad < SmallLoad) THEN
    SetPointTemp = WarmestSetPtMgr(SetPtMgrNum)%MaxSetTemp
  END IF
  WarmestSetPtMgr(SetPtMgrNum)%SetPt = SetPointTemp
  RETURN
END SUBROUTINE CalcWarmestSetPoint