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 | ||
---|---|---|---|---|---|---|
logical, | intent(inout) | :: | ErrFound |
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 CheckControllerLists(ErrFound)
! SUBROUTINE INFORMATION:
! AUTHOR Linda Lawrie
! DATE WRITTEN May 2009
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This routine checks for a "dangling" controller list (AirLoopHVAC:ControllerList).
! It must be either found on a AirLoopHVAC or AirLoopHVAC:OutdoorAirSystem.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE DataIPShortCuts
USE InputProcessor, ONLY: GetNumObjectsFound,MakeUPPERCase,GetObjectItem,FindItemInList
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(INOUT) :: ErrFound
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: RoutineName='CheckControllerLists'
CHARACTER(len=*), PARAMETER :: CurrentModuleObject='AirLoopHVAC:ControllerList'
CHARACTER(len=*), PARAMETER :: AirLoopObject='AirLoopHVAC'
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: NumAlphas
INTEGER :: NumNumbers
INTEGER :: NumControllers
INTEGER :: NumAirLoop
CHARACTER(len=MaxNameLength) :: ControllerListName
INTEGER :: Item
INTEGER :: IOSTAT
INTEGER :: Found
INTEGER :: Count
INTEGER :: Loop
CHARACTER(len=MaxNameLength) :: AirLoopName
IF (GetOASysInputFlag) THEN
CALL GetOutsideAirSysInputs
GetOASysInputFlag=.false.
ENDIF
NumControllers=GetNumObjectsFound(CurrentModuleObject)
NumAirLoop=GetNumObjectsFound(AirLoopObject)
AirLoopName=' '
DO Item=1,NumControllers
CALL GetObjectItem(CurrentModuleObject,Item,cAlphaArgs,NumAlphas,rNumericArgs,NumNumbers,IOSTAT)
ControllerListName=cAlphaArgs(1)
Count=0
! Check AirLoopHVAC -- brute force, get each AirLoopHVAC
DO Loop=1,NumAirLoop
CALL GetObjectItem(AirLoopObject,Loop,cAlphaArgs,NumAlphas,rNumericArgs,NumNumbers,IOSTAT)
IF (cAlphaArgs(2) /= ControllerListName) CYCLE
Count=Count+1
IF (Count == 1) AirLoopName=cAlphaArgs(1)
ENDDO
! Now check AirLoopHVAC and AirLoopHVAC:OutdoorAirSystem
Found=0
IF (NumOASystems > 0) THEN
Found=FindItemInList(ControllerListName,OutsideAirSys%ControllerListName,NumOASystems)
IF (Found > 0) Count=Count+1
ENDIF
IF (Count == 0) THEN
CALL ShowSevereError(CurrentModuleObject//'="'//trim(ControllerListName)//'" is not referenced on a '// &
'AirLoopHVAC or AirLoopHVAC:OutdoorAirSystem object.')
ErrFound=.true.
ELSEIF (Count > 1) THEN
CALL ShowSevereError(CurrentModuleObject//'="'//trim(ControllerListName)//'" has too many references on '// &
'AirLoopHVAC or AirLoopHVAC:OutdoorAirSystem objects.')
IF (Found > 0) THEN
CALL ShowContinueError('...AirLoopHVAC:OutdoorAirSystem="'//trim(OutsideAirSys(Found)%Name)//'".')
ENDIF
CALL ShowContinueError('...also on AirLoopHVAC="'//trim(AirLoopName)//'".')
ErrFound=.true.
ENDIF
ENDDO
RETURN
END SUBROUTINE CheckControllerLists