Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | VRFCond | |||
integer, | intent(in) | :: | NumTUInList | |||
real(kind=r64), | intent(in) | :: | StartingCapacity | |||
real(kind=r64), | intent(in), | DIMENSION(:) | :: | CapArray | ||
real(kind=r64), | intent(inout) | :: | MaxLimit | |||
real(kind=r64), | intent(in) | :: | AltCapacity | |||
real(kind=r64), | intent(in), | DIMENSION(:) | :: | AltArray | ||
real(kind=r64), | intent(inout) | :: | AltLimit |
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 LimitTUCapacity(VRFCond,NumTUInList,StartingCapacity,CapArray,MaxLimit,AltCapacity,AltArray,AltLimit)
! SUBROUTINE INFORMATION:
! AUTHOR Richard Raustad
! DATE WRITTEN July 2012 (Moved from InitVRF)
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculate the maximum allowed terminal unit capacity. Total terminal unit capacity must not
! exceed the available condenser capacity. This variable, MaxCapacity (passed out to MaxCoolingCapacity
! or MaxHeatingCapacity), is used to limit the terminal units providing more capacity than allowed.
! Example: TU loads are 1-ton, 2-ton, 3-ton, and 4-ton connected to a condenser having only 9-tons available.
! This variable is will be set to 3-tons and the 4-ton terminal unit will be limited to 3-tons
! (see InitVRF where this variable is reset and CalcVRF where the call to the DX coils passes this argument).
! METHODOLOGY EMPLOYED:
! The coils are simulated and summed. This value is compared to the available capacity. If the summed
! TU capacity is greater than the available capacity, limit the TU's with the highest capacity so that
! the TU capacity equals the available capacity. The report variable Variable Refrigerant Flow Heat Pump
! Maximum Terminal Unit Cool/Heating Capacity holds the value for maximum TU capacity. This value may not
! match the maximum individual coil capacity exactly since the available capaity uses a load weighted
! average WB temperature to calculate available capacity. When the TU's are limited, this weighting changes.
! The extra iterations required for these values to converge is considered excessive.
! If the globabl flag SimZoneEquipment could be set for 1 additional iteration, these variables would
! converge more closely (setting this globabl flag is not yet implemented).
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT (IN) :: VRFCond ! Condenser Unit index
INTEGER, INTENT (IN) :: NumTUInList ! Number of terminal units in list
REAL(r64), INTENT (IN) :: StartingCapacity ! temporary variable holding condenser capacity [W]
REAL(r64),DIMENSION(:), INTENT (IN) :: CapArray ! Array of coil capacities in either cooling or heating mode [W]
REAL(r64), INTENT (INOUT) :: MaxLimit ! Maximum terminal unit capacity for coils in same operating mode [W]
! these variables hold information on coil in opposite operating mode (i.e., heat recovery)
REAL(r64), INTENT (IN) :: AltCapacity ! temporary variable holding heat recovery capacity [W]
REAL(r64),DIMENSION(:), INTENT (IN) :: AltArray ! Array of coil capacities of heat recovery [W]
REAL(r64), INTENT (INOUT) :: AltLimit ! Maximum terminal unit capacity of heat recovery coils [W]
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: RemainingCapacity ! decrement capacity counter to find limiting TU capacity [W]
! limit TU coil capacity to be equal to the condenser capacity (piping losses already accounted for)
CALL LimitCoilCapacity(NumTUInList,StartingCapacity,CapArray,MaxLimit)
! ** add in logic to limit coils operating opposite to mode when heat recovery is used
! ** this is a hard one since we are here because the system is overloaded. That means
! ** that we do not know at this point the actual operating capacity or compressor power.
IF(VRF(VRFCond)%HeatRecoveryUsed)THEN
IF(CoolingLoad(VRFCond))THEN
RemainingCapacity = StartingCapacity*(1+1/VRF(VRFCond)%CoolingCOP)
IF(AltCapacity .GT. RemainingCapacity)THEN
CALL LimitCoilCapacity(NumTUInList,RemainingCapacity,AltArray,AltLimit)
END IF
END IF
IF(HeatingLoad(VRFCond))THEN
RemainingCapacity = StartingCapacity/(1+1/VRF(VRFCond)%HeatingCOP)
IF(AltCapacity .GT. RemainingCapacity)THEN
CALL LimitCoilCapacity(NumTUInList,RemainingCapacity,AltArray,AltLimit)
END IF
END IF
END IF
RETURN
END SUBROUTINE LimitTUCapacity