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