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) | :: | UnitarySysNum | |||
integer, | intent(in) | :: | AirLoopNum | |||
integer, | intent(in) | :: | ControlNode | |||
integer, | intent(in) | :: | CoilType | |||
real(kind=r64), | intent(in), | optional | :: | OAUCoilOutTemp |
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 CheckNodeSetPoint(UnitarySysNum,AirLoopNum, ControlNode, CoilType,OAUCoilOutTemp)
! SUBROUTINE INFORMATION:
! AUTHOR Richard Raustad
! DATE WRITTEN March 2013
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine checks for proper set point at control node.
! METHODOLOGY EMPLOYED:
! Uses the control node to test for set point.
! REFERENCES:
! na
! USE STATEMENTS:
USE EMSManager, ONLY: iTemperatureSetpoint, CheckIfNodeSetpointManagedByEMS, iHumidityRatioMaxSetpoint
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT (IN) :: UnitarySysNum ! number of the current DX Sys being simulated
INTEGER, INTENT (IN) :: AirLoopNum ! number of the current air loop being simulated
INTEGER, INTENT (IN) :: ControlNode ! Node to test for set point
INTEGER, INTENT (IN) :: CoilType ! True if cooling coil, then test for HumRatMax set point
REAL(r64), INTENT(IN), OPTIONAL :: OAUCoilOutTemp ! the coil inlet temperature of OutdoorAirUnit
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
! na
IF (AirLoopNum .EQ.-1) THEN ! Outdoor Air Unit
Node(ControlNode)%TempSetPoint = OAUCoilOutTemp ! Set the coil outlet temperature
IF(UnitarySystem(UnitarySysNum)%ISHundredPercentDOASDXCoil) THEN
CALL FrostControlSetPointLimit(UnitarySysNum,UnitarySystem(UnitarySysNum)%DesiredOutletTemp,Node(ControlNode)%HumRatMax, &
OutBaroPress, UnitarySystem(UnitarySysNum)%DOASDXCoolingCoilMinTout,1)
END IF
ELSEIF (AirLoopNum /= -1) THEN ! Not an Outdoor air unit
IF (Node(ControlNode)%TempSetPoint == SensedNodeFlagValue .AND. &
UnitarySystem(UnitarySysNum)%ControlType == SetPointBased) THEN
IF (.NOT. AnyEnergyManagementSystemInModel) THEN
CALL ShowSevereError(TRIM(UnitarySystem(UnitarySysNum)%UnitarySystemType)//&
': Missing temperature setpoint for unitary system = ' //TRIM(UnitarySystem(UnitarySysNum)%Name))
CALL ShowContinueError(' use a Setpoint Manager to establish a setpoint at the coil control node.')
SetPointErrorFlag = .TRUE.
ELSE
CALL CheckIfNodeSetpointManagedByEMS(ControlNode,iTemperatureSetpoint, SetpointErrorFlag)
IF (SetpointErrorFlag) THEN
CALL ShowSevereError(TRIM(UnitarySystem(UnitarySysNum)%UnitarySystemType)//&
': Missing temperature setpoint for unitary system = ' //TRIM(UnitarySystem(UnitarySysNum)%Name))
CALL ShowContinueError(' use a Setpoint Manager to establish a setpoint at the coil control node.')
CALL ShowContinueError(' or use an EMS actuator to establish a temperature setpoint at the coil control node.')
END IF
END IF
END IF
IF ((UnitarySystem(UnitarySysNum)%DehumidControlType_Num .NE. DehumidControl_None) .AND. &
(Node(ControlNode)%HumRatMax == SensedNodeFlagValue) .AND. &
UnitarySystem(UnitarySysNum)%ControlType == SetPointBased .AND. CoilType .EQ. CoolingCoil) THEN
IF (.NOT. AnyEnergyManagementSystemInModel) THEN
CALL ShowSevereError(TRIM(UnitarySystem(UnitarySysNum)%UnitarySystemType)//&
': Missing humidity ratio setpoint (HUMRATMAX) for unitary system = ' &
//TRIM(UnitarySystem(UnitarySysNum)%Name))
CALL ShowContinueError(' use a Setpoint Manager to establish a setpoint at the coil control node.')
SetPointErrorFlag = .TRUE.
ELSE
CALL CheckIfNodeSetpointManagedByEMS(ControlNode,iHumidityRatioMaxSetpoint, SetpointErrorFlag)
IF (SetpointErrorFlag) THEN
CALL ShowSevereError(TRIM(UnitarySystem(UnitarySysNum)%UnitarySystemType)//&
': Missing maximum humidity ratio setpoint (HUMRATMAX) for unitary system = ' &
//TRIM(UnitarySystem(UnitarySysNum)%Name))
CALL ShowContinueError(' use a Setpoint Manager to establish a setpoint at the coil control node.')
CALL ShowContinueError(' or use an EMS actuator to establish a maximum humidity ratio setpoint.')
END IF
END IF
END IF
END IF
RETURN
END SUBROUTINE CheckNodeSetPoint