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) | :: | WindACNum |
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 SizeWindowAC(WindACNum)
! SUBROUTINE INFORMATION:
! AUTHOR Fred Buhl
! DATE WRITTEN January 2002
! MODIFIED August 2013 Daeho Kang, add component sizing table entries
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for sizing Window AC Unit components for which flow rates have not been
! specified in the input.
! METHODOLOGY EMPLOYED:
! Obtains flow rates from the zone or system sizing arrays
! REFERENCES:
! na
! USE STATEMENTS:
USE InputProcessor
USE ReportSizingManager, ONLY: ReportSizingOutput
USE General, ONLY: RoundSigDigits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
Integer, Intent(IN) :: WindACNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: MaxAirVolFlowDes ! Autosized maximum air flow for reproting
REAL(r64) :: MaxAirVolFlowUser ! Hardsized maximum air flow for reproting
REAL(r64) :: OutAirVolFlowDes ! Autosized outdoor air flow for reproting
REAL(r64) :: OutAirVolFlowUser ! Hardsized outdoor ari flow for reporting
LOGICAL :: IsAutosize ! Indicator to autosize
IsAutosize = .FALSE.
MaxAirVolFlowDes = 0.0d0
MaxAirVolFlowUser = 0.0d0
OutAirVolFlowDes = 0.0d0
OutAirVolFlowUser = 0.0d0
IF (WindAC(WindACNum)%MaxAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
IF (.NOT. IsAutosize .AND. .NOT. ZoneSizingRunDone) THEN ! Simulation continue
IF (WindAC(WindACNum)%MaxAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType), WindAC(WindACNum)%Name, &
'Maximum Supply Air Flow Rate [m3/s]', WindAC(WindACNum)%MaxAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType), WindAC(WindACNum)%Name)
MaxAirVolFlowDes = FinalZoneSizing(CurZoneEqNum)%DesCoolVolFlow
IF (MaxAirVolFlowDes < SmallAirVolFlow) THEN
MaxAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
WindAC(WindACNum)%MaxAirVolFlow = MaxAirVolFlowDes
CALL ReportSizingOutput(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType), WindAC(WindACNum)%Name, &
'Design Size Maximum Supply Air Flow Rate [m3/s]', MaxAirVolFlowDes)
ELSE
IF (WindAC(WindACNum)%MaxAirVolFlow > 0.0d0 .AND. MaxAirVolFlowDes > 0.0d0) THEN
MaxAirVolFlowUser = WindAC(WindACNum)%MaxAirVolFlow
CALL ReportSizingOutput(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType), WindAC(WindACNum)%Name, &
'Design Size Maximum Supply Air Flow Rate [m3/s]', MaxAirVolFlowDes, &
'User-Specified Maximum Supply Air Flow Rate [m3/s]', MaxAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(MaxAirVolFlowDes - MaxAirVolFlowUser)/MaxAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeWindowAC: Potential issue with equipment sizing for ' &
//TRIM(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType))//' '// &
TRIM(WindAC(WindACNum)%Name))
CALL ShowContinueError('User-Specified Maximum Supply Air Flow Rate of '// &
TRIM(RoundSigDigits(MaxAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Maximum Supply Air Flow Rate of ' // &
TRIM(RoundSigDigits(MaxAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IF (WindAC(WindACNum)%OutAirVolFlow == AutoSize) THEN
IF (CurZoneEqNum > 0) THEN
CALL CheckZoneSizing(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType), WindAC(WindACNum)%Name)
WindAC(WindACNum)%OutAirVolFlow = MIN(FinalZoneSizing(CurZoneEqNum)%MinOA,WindAC(WindACNum)%MaxAirVolFlow)
IF (WindAC(WindACNum)%OutAirVolFlow < SmallAirVolFlow) THEN
WindAC(WindACNum)%OutAirVolFlow = 0.0d0
END IF
CALL ReportSizingOutput(cWindowAC_UnitTypes(WindAC(WindACNum)%UnitType), WindAC(WindACNum)%Name, &
'Maximum Outdoor Air Flow Rate [m3/s]',WindAC(WindACNum)%OutAirVolFlow)
END IF
END IF
IF (CurZoneEqNum > 0) THEN
ZoneEqSizing(CurZoneEqNum)%OAVolFlow = WindAC(WindACNum)%OutAirVolFlow
ZoneEqSizing(CurZoneEqNum)%AirVolFlow = WindAC(WindACNum)%MaxAirVolFlow
END IF
RETURN
END SUBROUTINE SizeWindowAC