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) | :: | DXSystemNum | |||
integer, | intent(in) | :: | AirLoopNum | |||
integer, | intent(in), | optional | :: | OAUnitNum | ||
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 InitDXHeatPumpSystem(DXSystemNum,AirLoopNum,OAUnitNum,OAUCoilOutTemp)
! SUBROUTINE INFORMATION:
! AUTHOR Brent Griffith (derived from HVACDXSystem.f90 by R.Liesen)
!
! DATE WRITTEN May 2011
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for initializations of the DX heat pump Systems.
! METHODOLOGY EMPLOYED:
! Uses the status flags to trigger initializations.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataHVACGlobals, ONLY: DoSetPointTest
USE DataAirLoop, ONLY: AirLoopControlInfo
USE EMSManager, ONLY: iTemperatureSetpoint, CheckIfNodeSetpointManagedByEMS, iHumidityRatioMaxSetpoint
USE DataGlobals, ONLY: AnyEnergyManagementSystemInModel
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT (IN) :: DXSystemNum ! number of the current DX Sys being simulated
INTEGER, INTENT (IN) :: AirLoopNum ! number of the current air loop being simulated
INTEGER, INTENT (IN), OPTIONAL :: OAUnitNum ! number of the current outdoor air unit being simulated
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:
Integer :: OutNode ! outlet node number
INTEGER :: ControlNode ! control node number
INTEGER :: DXSysIndex
! LOGICAL,SAVE :: MyOneTimeFlag = .true.
LOGICAL,SAVE :: MySetPointCheckFlag = .TRUE.
INTEGER :: OutdoorAirUnitNum ! "ONLY" for ZoneHVAC:OutdoorAirUnit
REAL(r64) :: OAUCoilOutletTemp ! "ONLY" for zoneHVAC:OutdoorAirUnit
! FLOW:
! IF (MyOneTimeFlag) THEN
!
! MyOneTimeFlag = .false.
! END IF
IF (PRESENT(OAUnitNum)) THEN ! This Dx system is component of ZoneHVAC:OutdoorAirUnit
OutdoorAirUnitNum=OAUnitNum
OAUCoilOutletTemp=OAUCoilOutTemp
END IF
IF ( .NOT. SysSizingCalc .AND. MySetPointCheckFlag .AND. DoSetPointTest) THEN
DO DXSysIndex=1,NumDXHeatPumpSystems
ControlNode = DXHeatPumpSystem(DXSysIndex)%DXSystemControlNodeNum
IF (ControlNode > 0) THEN
IF (AirLoopNum .EQ.-1) THEN ! Outdoor Air Unit
Node(ControlNode)%TempSetPoint = OAUCoilOutletTemp ! Set the coil outlet temperature
ELSE IF (AirLoopNum /= -1) THEN ! Not an outdoor air unit
IF (Node(ControlNode)%TempSetPoint == SensedNodeFlagValue) THEN
IF (.NOT. AnyEnergyManagementSystemInModel) THEN
CALL ShowSevereError(TRIM(DXHeatPumpSystem(DXSysIndex)%DXHeatPumpSystemType)//&
': Missing temperature setpoint for DX unit= ' //TRIM(DXHeatPumpSystem(DXSysIndex)%Name))
CALL ShowContinueError(' use a Set Point Manager to establish a setpoint at the unit control node.')
SetPointErrorFlag = .TRUE.
ELSE
CALL CheckIfNodeSetpointManagedByEMS(ControlNode,iTemperatureSetpoint, SetpointErrorFlag)
IF (SetpointErrorFlag) THEN
CALL ShowSevereError(TRIM(DXHeatPumpSystem(DXSysIndex)%DXHeatPumpSystemType)//&
': Missing temperature setpoint for DX unit= ' //TRIM(DXHeatPumpSystem(DXSysIndex)%Name))
CALL ShowContinueError(' use a Set Point Manager to establish a setpoint at the unit control node.')
CALL ShowContinueError(' or use an EMS actuator to establish a temperature setpoint at the unit control node.')
ENDIF
ENDIF
END IF
END IF
END IF
END DO
MySetPointCheckFlag = .FALSE.
END IF
! These initializations are done every iteration
IF (AirLoopNum .EQ.-1) THEN ! This IF-Then routine is just for ZoneHVAC:OUTDOORAIRUNIT
DXHeatPumpSystem(DXSystemNum)%DesiredOutletTemp =OAUCoilOutletTemp
ELSEIF (AirLoopNum /=-1) THEN ! Not Outdoor Air Unit
ControlNode = DXHeatPumpSystem(DXSystemNum)%DXSystemControlNodeNum
EconomizerFlag = AirLoopControlInfo(AirLoopNum)%EconoActive
DXHeatPumpSystem(DXSystemNum)%DesiredOutletTemp = Node(ControlNode)%TempSetPoint
END IF
RETURN
END SUBROUTINE InitDXHeatPumpSystem