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 CalcMultiZoneMaxHumSetPoint(SetPtMgrNum)
! SUBROUTINE INFORMATION:
! AUTHOR Bereket Nigusse, FSEC/UCF
! DATE WRITTEN August 2010
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculates the maximum supply air humidity ratio based on dehumidification requirements of
! a controlled zone with critical dehumidification need (i.e., a zone with the lowest
! humidity ratio setpoint) in an air loop served by a central air-conditioner.
! METHODOLOGY EMPLOYED:
! Uses moisture mass balance to calculate the humidity ratio setpoint. The algorithm loops
! over all the zones that a central air system can dehumidify and calculates the setpoint
! based on a zone with the lowest humidity ratio setpoint requirement:
! REFERENCES:
! na
! USE STATEMENTS:
USE DataZoneEquipment, ONLY: ZoneEquipConfig
USE DataZoneEnergyDemands, ONLY: ZoneSysMoistureDemand
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:
INTEGER :: AirLoopNum ! the index of the air loop served by this setpoint manager
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
INTEGER :: ZoneNode ! the zone node number of the current zone
REAL(r64) :: ZoneHum ! zone air node humidity ratio [kg/kg]
REAL(r64) :: SetPointHum ! system setpoint humidity ratio [kg/kg]
REAL(r64) :: ZoneSetPointHum ! Zone setpoint humidity ratio [kg/kg]
REAL(r64) :: MoistureLoad ! zone's moisture load predicted to the setpoint [kgH20/s]
REAL(r64) :: ZoneMassFlowRate ! zone inlet node actual supply air mass flow rate [kg/s]
REAL(r64) :: SumMoistureLoad = 0.0d0 ! sum of the zone moisture loads for this air loop [W]
REAL(r64) :: SmallMoistureLoad = 0.00001d0 ! small moisture load [kgH2O/s]
AirLoopNum = MZMaxHumSetPtMgr(SetPtMgrNum)%AirLoopNum
SetPointHum = MZMaxHumSetPtMgr(SetPtMgrNum)%MaxSetHum
DO ZonesCooledIndex=1,AirToZoneNodeInfo(AirLoopNum)%NumZonesCooled
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesCooledIndex)
ZoneInletNode = AirToZoneNodeInfo(AirLoopNum)%CoolZoneInletNodes(ZonesCooledIndex)
ZoneNode = ZoneEquipConfig(CtrlZoneNum)%ZoneNode
ZoneMassFlowRate = Node(ZoneInletNode)%MassFlowRate
MoistureLoad = ZoneSysMoistureDemand(CtrlZoneNum)%OutputRequiredToDehumidifyingSP
ZoneHum = Node(ZoneNode)%HumRat
ZoneSetPointHum = MZMaxHumSetPtMgr(SetPtMgrNum)%MaxSetHum
! For dehumidification the mositure load is negative
IF (MoistureLoad < 0.0d0) THEN
SumMoistureLoad = SumMoistureLoad + MoistureLoad
IF (ZoneMassFlowRate > SmallMassFlow) THEN
ZoneSetPointHum = MAX(0.0d0, ZoneHum + MoistureLoad/ZoneMassFlowRate)
ENDIF
ENDIF
SetPointHum = MIN(SetPointHum, ZoneSetPointHum)
END DO
SetPointHum = MAX(MZMaxHumSetPtMgr(SetPtMgrNum)%MinSetHum,MIN(SetPointHum, &
MZMaxHumSetPtMgr(SetPtMgrNum)%MaxSetHum))
IF (ABS(SumMoistureLoad) < SmallMoistureLoad) THEN
SetPointHum = MZMaxHumSetPtMgr(SetPtMgrNum)%MaxSetHum
END IF
MZMaxHumSetPtMgr(SetPtMgrNum)%SetPt = SetPointHum
RETURN
END SUBROUTINE CalcMultiZoneMaxHumSetPoint