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) | :: | EquipTypeNum | |||
character(len=*), | intent(in) | :: | CompName | |||
integer, | intent(inout) | :: | CompIndex | |||
logical, | intent(in) | :: | InitLoopEquip | |||
logical, | intent(in) | :: | FirstHVACIteration |
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 SimSolarCollector( EquipTypeNum, CompName, CompIndex, InitLoopEquip, FirstHVACIteration)
! SUBROUTINE INFORMATION:
! AUTHOR Peter Graham Ellis
! DATE WRITTEN December 2003
! MODIFIED Brent Griffith, March 2010
! Bereket Nigusse, March 2012 Added ICS collector
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Simulates solar collector objects.
! METHODOLOGY EMPLOYED:
! Standard EnergyPlus methodology.
! USE STATEMENTS:
USE InputProcessor, ONLY: FindItemInList
USE General, ONLY: TrimSigDigits
USE DataPlant, ONLY: TypeOf_SolarCollectorFlatPlate, TypeOf_SolarCollectorICS
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: EquipTypeNum
CHARACTER(len=*), INTENT(IN) :: CompName
INTEGER, INTENT(INOUT) :: CompIndex
LOGICAL, INTENT(IN) :: InitLoopEquip
LOGICAL, INTENT(IN) :: FirstHVACIteration
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
LOGICAL,SAVE :: GetInputFlag = .TRUE.
INTEGER :: CollectorNum
! FLOW:
IF (GetInputFlag) THEN
CALL GetSolarCollectorInput
GetInputFlag = .FALSE.
END IF
IF (CompIndex == 0) THEN
CollectorNum = FindItemInList(CompName, Collector%Name, NumOfCollectors)
IF (CollectorNum == 0) THEN
CALL ShowFatalError('SimSolarCollector: Specified solar collector not Valid ='//TRIM(CompName))
ENDIF
CompIndex = CollectorNum
ELSE
CollectorNum = CompIndex
IF (CollectorNum > NumOfCollectors .OR. CollectorNum < 1) THEN
CALL ShowFatalError('SimSolarCollector: Invalid CompIndex passed='// &
TRIM(TrimSigDigits(CollectorNum))// &
', Number of Units='//Trim(TrimSigDigits(NumOfCollectors))// &
', Entered Unit name='//Trim(CompName))
ENDIF
IF (CheckEquipName(CollectorNum)) THEN
IF (CompName /= Collector(CollectorNum)%Name ) THEN
CALL ShowFatalError('SimSolarCollector: Invalid CompIndex passed='// &
TRIM(TrimSigDigits(CollectorNum))// &
', Unit name='//Trim(CompName )// ', stored Unit Name for that index='// &
TRIM(Collector(CollectorNum)%Name) )
ENDIF
CheckEquipName(CollectorNum) = .FALSE.
ENDIF
ENDIF
CALL InitSolarCollector(CollectorNum)
SELECT CASE (Collector(CollectorNum)%TypeNum)
! Select and CALL models based on collector type
CASE (TypeOf_SolarCollectorFlatPlate)
CALL CalcSolarCollector(CollectorNum)
CASE (TypeOf_SolarCollectorICS)
CALL CalcICSSolarCollector(CollectorNum)
CASE Default
END SELECT
CALL UpdateSolarCollector(CollectorNum)
CALL ReportSolarCollector(CollectorNum)
RETURN
END SUBROUTINE SimSolarCollector