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(in) | :: | FirstHVACIteration | |||
integer, | intent(in) | :: | RadSysNum |
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 InitHighTempRadiantSystem(FirstHVACIteration,RadSysNum)
! SUBROUTINE INFORMATION:
! AUTHOR Rick Strand
! DATE WRITTEN February 2001
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine initializes variables relating to high temperature
! radiant heating systems.
! METHODOLOGY EMPLOYED:
! Simply initializes whatever needs initializing.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataGlobals, ONLY : NumOfZones, BeginEnvrnFlag
USE DataLoopNode, ONLY : Node
USE DataZoneEquipment, ONLY: ZoneEquipInputsFilled,CheckZoneEquipmentList
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(IN) :: FirstHVACIteration ! TRUE if 1st HVAC simulation of system timestep
INTEGER, INTENT(IN) :: RadSysNum ! Index for the low temperature radiant system under consideration within the derived types
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
LOGICAL, SAVE :: FirstTime = .TRUE. ! For one-time initializations
INTEGER :: ZoneNum ! Intermediate variable for keeping track of the zone number
LOGICAL, SAVE :: MyEnvrnFlag=.true.
LOGICAL,SAVE :: ZoneEquipmentListChecked = .false. ! True after the Zone Equipment List has been checked for items
Integer :: Loop
! FLOW:
IF (FirstTime) THEN
ALLOCATE(ZeroSourceSumHATsurf(NumOfZones))
ZeroSourceSumHATsurf = 0.0D0
ALLOCATE(QHTRadSource(NumOfHighTempRadSys))
QHTRadSource = 0.0D0
ALLOCATE(QHTRadSrcAvg(NumOfHighTempRadSys))
QHTRadSrcAvg = 0.0D0
ALLOCATE(LastQHTRadSrc(NumOfHighTempRadSys))
LastQHTRadSrc = 0.0D0
ALLOCATE(LastSysTimeElapsed(NumOfHighTempRadSys))
LastSysTimeElapsed = 0.0D0
ALLOCATE(LastTimeStepSys(NumOfHighTempRadSys))
LastTimeStepSys = 0.0D0
ALLOCATE(MySizeFlag(NumOfHighTempRadSys))
MySizeFlag = .TRUE.
FirstTime = .FALSE.
END IF
! need to check all units to see if they are on Zone Equipment List or issue warning
IF (.not. ZoneEquipmentListChecked .and. ZoneEquipInputsFilled) THEN
ZoneEquipmentListChecked=.true.
DO Loop=1,NumOfHighTempRadSys
IF (CheckZoneEquipmentList('ZoneHVAC:HighTemperatureRadiant',HighTempRadSys(Loop)%Name)) CYCLE
CALL ShowSevereError('InitHighTempRadiantSystem: Unit=[ZoneHVAC:HighTemperatureRadiant,'//TRIM(HighTempRadSys(Loop)%Name)// &
'] is not on any ZoneHVAC:EquipmentList. It will not be simulated.')
ENDDO
ENDIF
IF ( .NOT. SysSizingCalc .AND. MySizeFlag(RadSysNum)) THEN
! for each radiant systen do the sizing once.
CALL SizeHighTempRadiantSystem(RadSysNum)
MySizeFlag(RadSysNum) = .FALSE.
END IF
IF (BeginEnvrnFlag .and. MyEnvrnFlag) THEN
ZeroSourceSumHATsurf =0.0D0
QHTRadSource =0.0D0
QHTRadSrcAvg =0.0D0
LastQHTRadSrc =0.0D0
LastSysTimeElapsed =0.0D0
LastTimeStepSys =0.0D0
MyEnvrnFlag=.false.
ENDIF
IF (.not. BeginEnvrnFlag) THEN
MyEnvrnFlag=.true.
ENDIF
IF (BeginTimeStepFlag .AND. FirstHVACIteration) THEN ! This is the first pass through in a particular time step
ZoneNum = HighTempRadSys(RadSysNum)%ZonePtr
ZeroSourceSumHATsurf(ZoneNum) = SumHATsurf(ZoneNum) ! Set this to figure out what part of the load the radiant system meets
QHTRadSrcAvg(RadSysNum) = 0.0D0 ! Initialize this variable to zero (radiant system defaults to off)
LastQHTRadSrc(RadSysNum) = 0.0D0 ! At the beginning of a time step, reset to zero so average calculation can start again
LastSysTimeElapsed(RadSysNum) = 0.0D0 ! At the beginning of a time step, reset to zero so average calculation can start again
LastTimeStepSys(RadSysNum) = 0.0D0 ! At the beginning of a time step, reset to zero so average calculation can start again
END IF
RETURN
END SUBROUTINE InitHighTempRadiantSystem