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 InitHeatBalance ! Heat Balance Initialization Manager
! SUBROUTINE INFORMATION:
! AUTHOR Rick Strand
! DATE WRITTEN April 1997
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is the main driver for initializations within the
! heat balance.
! METHODOLOGY EMPLOYED:
! Uses the status flags to trigger initialization events. Some of the files
! have been moved to other heat balance managers. More of these initializations
! will have to continue to be re-structured.
! REFERENCES:
! na
! USE STATEMENTS:
USE ConductionTransferFunctionCalc
USE WindowManager
USE SolarShading
USE DaylightingDevices, ONLY: InitDaylightingDevices
USE DataSystemVariables, ONLY: DetailedSolarTimestepIntegration
! USE DataRoomAirModel, ONLY: IsZoneDV,IsZoneCV,HVACMassFlow, ZoneDVMixedFlag
USE WindowEquivalentLayer, ONLY: InitEquivalentLayerWindowCalculations
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:
INTEGER :: StormWinNum ! Number of StormWindow object
INTEGER :: SurfNum ! Surface number
INTEGER :: Num ! Loop counter
LOGICAL,SAVE :: ChangeSet=.true. ! Toggle for checking storm windows
! FLOW:
IF (BeginSimFlag) THEN
CAll AllocateHeatBalArrays ! Allocate the Module Arrays
IF (ANY(HeatTransferAlgosUsed == UseCTF) .or. ANY(HeatTransferAlgosUsed == UseEMPD)) THEN
CALL DisplayString('Initializing Response Factors')
CALL InitConductionTransferFunctions ! Initialize the response factors
END IF
CALL DisplayString('Initializing Window Optical Properties')
CALL InitEquivalentLayerWindowCalculations ! Initialize the EQL window optical properties
CALL InitGlassOpticalCalculations ! Initialize the window optical properties
CALL InitDaylightingDevices ! Initialize any daylighting devices
CALL DisplayString('Initializing Solar Calculations')
CALL InitSolarCalculations ! Initialize the shadowing calculations
END IF
IF (BeginEnvrnFlag) THEN
MaxHeatLoadPrevDay = 0.0d0
MaxCoolLoadPrevDay = 0.0d0
MaxTempPrevDay = 0.0d0
MinTempPrevDay = 0.0d0
MaxHeatLoadZone=-9999.d0
MaxCoolLoadZone=-9999.d0
MaxTempZone=-9999.d0
MinTempZone=1000.d0
TempZone=-9999.d0
LoadZone=-9999.d0
TempZonePrevDay=1000.d0
LoadZonePrevDay=-9999.d0
TempZoneSecPrevDay=1000.d0
TempZoneSecPrevDay=-9999.d0
WarmupTempDiff=0.0d0
WarmupLoadDiff=0.0d0
TempZoneRpt=0.0d0
LoadZoneRpt=0.0d0
MaxLoadZoneRpt=0.0d0
CountWarmupDayPoints=0
DO Num=1,10
SurfaceWindow%ThetaFace(Num) = 296.15d0
ENDDO
SurfaceWindow%EffInsSurfTemp = 23.d0
END IF
IF(TotStormWin > 0) THEN
IF (BeginDayFlag) THEN
CALL SetStormWindowControl
ChangeSet=.false.
ELSEIF (.not. ChangeSet) THEN
StormWinChangeThisDay = .false.
DO StormWinNum = 1,TotStormWin
SurfNum = StormWindow(StormWinNum)%BaseWindowNum
SurfaceWindow(SurfNum)%StormWinFlagPrevDay = SurfaceWindow(SurfNum)%StormWinFlag
END DO
ChangeSet=.true.
END IF
END IF
IF (BeginDayFlag) THEN
IF (.NOT. WarmupFlag) THEN
IF (DayOfSim == 1) THEN
MaxHeatLoadZone=-9999.d0
MaxCoolLoadZone=-9999.d0
MaxTempZone=-9999.d0
MinTempZone=1000.d0
END IF
END IF
IF (.NOT. DetailedSolarTimestepIntegration) THEN
CALL PerformSolarCalculations
ENDIF
END IF
IF (DetailedSolarTimestepIntegration) THEN ! always redo solar calcs
CALL PerformSolarCalculations
ENDIF
RETURN
END SUBROUTINE InitHeatBalance