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 | |||
real(kind=r64), | intent(inout) | :: | TempSetPoint | |||
real(kind=r64), | intent(inout) | :: | HumRatSetPoint | |||
real(kind=r64), | intent(in) | :: | BaroPress | |||
real(kind=r64), | intent(in) | :: | TfrostControl | |||
integer, | intent(in) | :: | ControlMode |
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 FrostControlSetPointLimit(UnitarySysNum,TempSetPoint,HumRatSetPoint,BaroPress,TfrostControl,ControlMode)
! SUBROUTINE INFORMATION:
! AUTHOR Bereket Nigusse, FSEC
! DATE WRITTEN January 2013
! MODIFIED na
! RE-ENGINEERED na
!
! PURPOSE OF THIS SUBROUTINE:
! Controls the forst formation condition based on user specified minimum DX coil outlet
! air temperature. Resets the cooling setpoint based on the user specified limiting
! temperature for frost control.
!
! METHODOLOGY EMPLOYED:
! Based on FrostControlSetPointLimit by Bereket Nigusse in HVACDXSystem
!
! REFERENCES:
! na
! USE STATEMENTS:
USE Psychrometrics, ONLY: PsyWFnTdpPb
!
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
!
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: UnitarySysNum ! dx cooling coil system index
REAL(r64), INTENT(INOUT) :: TempSetPoint ! temperature setpoint of the sensor node
REAL(r64), INTENT(INOUT) :: HumRatSetPoint ! humidity ratio setpoint of the sensor node
REAL(r64), INTENT(IN) :: BaroPress ! baromtric pressure, Pa [N/m^2]
REAL(r64), INTENT(IN) :: TfrostControl ! minimum temperature limit for forst control
INTEGER, INTENT(IN) :: ControlMode ! temperature or humidity control mode
! SUBROUTINE PARAMETER DEFINITIONS:
INTEGER, PARAMETER :: RunOnSensible = 1 ! identifier for temperature (sensible load) control
INTEGER, PARAMETER :: RunOnLatent = 2 ! identifier for humidity (latent load) control
! INTERFACE BLOCK SPECIFICATIONS
! na
!
! DERIVED TYPE DEFINITIONS
! na
!
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: HumRatioSat ! saturation humidity ratio at forst control temperature
REAL(r64) :: AirMassFlow ! air masss flow rate through the DX coil
!
AirMassFlow = Node(UnitarySystem(UnitarySysNum)%CoolCoilInletNodeNum)%MassFlowRate
IF (ControlMode == RunOnSensible .AND. AirMassFlow > MinAirMassFlow .AND. &
TempSetPoint .LT. Node(UnitarySystem(UnitarySysNum)%CoolCoilInletNodeNum)%Temp) THEN
IF (TempSetPoint .lt. TfrostControl) THEN
TempSetPoint = TfrostControl
UnitarySystem(UnitarySysNum)%FrostControlStatus = 1
END IF
ELSEIF(ControlMode == RunOnLatent .AND. AirMassFlow > MinAirMassFlow .AND. &
HumRatSetPoint .LT. Node(UnitarySystem(UnitarySysNum)%CoolCoilInletNodeNum)%HumRat) THEN
HumRatioSat = PsyWFnTdpPb(TfrostControl,BaroPress,'FrostControlSetPointLimit')
IF (HumRatioSat .gt. HumRatSetPoint) THEN
HumRatSetPoint = HumRatioSat
UnitarySystem(UnitarySysNum)%FrostControlStatus = 2
END IF
ELSE
UnitarySystem(UnitarySysNum)%FrostControlStatus = 0
END IF
RETURN
END SUBROUTINE FrostControlSetPointLimit