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.
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 RecKeepHeatBalance ! Heat Balance Record Keeping Manager
! SUBROUTINE INFORMATION:
! AUTHOR Rick Strand
! DATE WRITTEN April 1997
! MODIFIED June 2011, Daeho Kang for individual zone maximums & convergence outputs
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is the main driver for record keeping within the
! heat balance.
! METHODOLOGY EMPLOYED:
! Uses the status flags to trigger record keeping events.
! REFERENCES:
! na
! USE STATEMENTS:
USE General, ONLY: RoundSigDigits
USE DataSystemVariables, ONLY: ReportDetailedWarmupConvergence
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
! na
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
! CHARACTER(len=MaxNameLength) :: ZoneName
INTEGER :: ZoneNum
LOGICAL,SAVE :: FirstWarmupWrite=.true.
! FLOW:
! Always do the following record keeping (every time step):
! Record Maxs & Mins for individual zone
DO ZoneNum = 1, NumOfZones
IF (ZTAV(ZoneNum) > MaxTempZone(ZoneNum)) THEN
MaxTempZone(ZoneNum) = ZTAV(ZoneNum)
END IF
IF (ZTAV(ZoneNum) < MinTempZone(ZoneNum)) THEN
MinTempZone(ZoneNum) = ZTAV(ZoneNum)
END IF
IF (SNLoadHeatRate(ZoneNum) > MaxHeatLoadZone(ZoneNum)) THEN
MaxHeatLoadZone(ZoneNum) = SNLoadHeatRate(ZoneNum)
END IF
IF (SNLoadCoolRate(ZoneNum) > MaxCoolLoadZone(ZoneNum)) THEN
MaxCoolLoadZone(ZoneNum) = SNLoadCoolRate(ZoneNum)
END IF
! Record temperature and load for individual zone
TempZoneSecPrevDay(ZoneNum)=TempZonePrevDay(ZoneNum)
LoadZoneSecPrevDay(ZoneNum)=LoadZonePrevDay(ZoneNum)
TempZonePrevDay(ZoneNum)=TempZone(ZoneNum)
LoadZonePrevDay(ZoneNum)=LoadZone(ZoneNum)
TempZone(ZoneNum)=ZTAV(ZoneNum)
LoadZone(ZoneNum)=Max(SNLoadHeatRate(ZoneNum),ABS(SNLoadCoolRate(ZoneNum)))
! Calculate differences in temperature and load for the last two warmup days
IF (.NOT. WarmupFlag .AND. DayOfSim == 1 .AND. .NOT. DoingSizing) THEN
WarmupTempDiff(ZoneNum)=ABS(TempZoneSecPrevDay(ZoneNum)-TempZonePrevDay(ZoneNum))
WarmupLoadDiff(ZoneNum)=ABS(LoadZoneSecPrevDay(ZoneNum)-LoadZonePrevDay(ZoneNum))
IF (ZoneNum == 1) CountWarmupDayPoints=CountWarmupDayPoints+1
TempZoneRpt(CountWarmupDayPoints,ZoneNum)=WarmupTempDiff(ZoneNum)
LoadZoneRpt(CountWarmupDayPoints,ZoneNum)=WarmupLoadDiff(ZoneNum)
MaxLoadZoneRpt(CountWarmupDayPoints,ZoneNum)=LoadZone(ZoneNum)
IF (ReportDetailedWarmupConvergence) THEN ! only do this detailed thing when requested by user is on
! Write Warmup Convergence Information to the initialization output file
IF (FirstWarmupWrite) THEN
Write(OutputFileInits,732)
FirstWarmupWrite=.false.
ENDIF
Write(OutputFileInits,731) TRIM(Zone(ZoneNum)%Name),trim(RoundSigDigits(TimeStep)),trim(RoundSigDigits(HourofDay)), &
trim(RoundSigDigits(WarmupTempDiff(ZoneNum),10)),trim(RoundSigDigits(WarmupLoadDiff(ZoneNum),10))
ENDIF
ENDIF
END DO
731 Format(' Warmup Convergence Information, ',A,',',A,',',A,',',A,',',A)
732 Format('! <Warmup Convergence Information>,Zone Name,Time Step,Hour of Day,Warmup Temperature Difference {deltaC},', &
'Warmup Load Difference {W}')
! There is no hourly record keeping in the heat balance.
! There is no daily record keeping in the heat balance.
! There is no environment level record keeping in the heat balance.
! There is no simulation level record keeping in the heat balance.
RETURN
END SUBROUTINE RecKeepHeatBalance