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 InitThermalAndFluxHistories
! SUBROUTINE INFORMATION:
! AUTHOR George Walton
! DATE WRITTEN March 1978
! MODIFIED na
! RE-ENGINEERED Feb98 (RKS)
! PURPOSE OF THIS SUBROUTINE:
! This subroutine sets the initial temperature and flux histories
! needed for a stable and reasonable heat balance solution starting
! point.
! METHODOLOGY EMPLOYED:
! This subroutine assumes that the simulation is at steady state at
! the beginning and then begins to vary. Thus, the temperatures, the
! fluxes. and their histories can all be set to the same value. Some
! of the initializations depend on the surface characteristics. This
! requires a DO loop to perform the proper calculation.
! REFERENCES:
! (I)BLAST legacy routine INITTH
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: SurfNum ! DO loop counter for surfaces
INTEGER :: OSCMnum ! DO loop counter for Other side conditions modeled (OSCM)
! FLOW:
! First do the "bulk" initializations of arrays sized to NumOfZones
MRT = 23.D0 ! module level array
MAT = 23.d0 ! DataHeatBalFanSys array
ZT = 23.d0
ZTAV = 23.D0
XMAT = 23.d0 ! DataHeatBalFanSys array
XM2T = 23.d0 ! DataHeatBalFanSys array
XM3T = 23.d0 ! DataHeatBalFanSys array
XM4T = 23.d0
XMPT = 23.d0
DSXMAT = 23.d0 ! DataHeatBalFanSys array
DSXM2T = 23.d0 ! DataHeatBalFanSys array
DSXM3T = 23.d0 ! DataHeatBalFanSys array
DSXM4T = 23.d0
ZoneTMX = 23.d0 ! DataHeatBalFanSys array
ZoneTM2 = 23.d0 ! DataHeatBalFanSys array
!Initialize the Zone Humidity Ratio here so that it is available for EMPD implementations
ZoneAirHumRatAvg = OutHumRat
ZoneAirHumRat=OutHumRat
ZoneAirHumRatOld=OutHumRat
SumHmAW= 0.0D0
SumHmARa= 0.0D0
SumHmARaW= 0.0D0
! "Bulk" initializations of arrays sized to TotSurfaces
SUMH = 0 ! module level array
TempSurfIn = 23.d0 ! module level array
TempSurfInTmp = 23.d0 ! module level array
HConvIn = 3.076d0 ! module level array
HcExtSurf = 0.d0
HAirExtSurf = 0.d0
HSkyExtSurf = 0.d0
HGrdExtSurf = 0.d0
TempSurfOut = 0.d0
TempSurfInRep = 0.d0
QConvInReport = 0.d0
QdotConvInRep = 0.d0
QdotConvInRepPerArea = 0.d0
QRadNetSurfInReport = 0.d0
QdotRadNetSurfInRep = 0.d0
QdotRadNetSurfInRepPerArea = 0.d0
QRadSolarInReport = 0.d0
QdotRadSolarInRep = 0.d0
QdotRadSolarInRepPerArea = 0.d0
QRadLightsInReport = 0.d0
QdotRadLightsInRep = 0.d0
QdotRadLightsInRepPerArea = 0.d0
QRadIntGainsInReport = 0.d0
QdotRadIntGainsInRep = 0.d0
QdotRadIntGainsInRepPerArea = 0.d0
QRadHVACInReport = 0.d0
QdotRadHVACInRep = 0.d0
QdotRadHVACInRepPerArea = 0.d0
QConvOutReport = 0.d0
QdotConvOutRep = 0.d0
QdotConvOutRepPerArea = 0.d0
QRadOutReport = 0.d0
QdotRadOutRep = 0.d0
QdotRadOutRepPerArea = 0.0d0
OpaqSurfInsFaceConduction = 0.d0
OpaqSurfInsFaceConductionFlux = 0.d0
OpaqSurfInsFaceConductionEnergy = 0.d0
OpaqSurfInsFaceBeamSolAbsorbed = 0.d0
TempEffBulkAir=23.0d0
TempTstatAir=23.0d0
! "Bulk" initializations of temperature arrays with dimensions (TotSurface,MaxCTFTerms,2)
TH = 23.D0 ! module level array
THM = 23.D0 ! module level array
TsrcHist = 23.D0
TsrcHistM = 23.D0
QH = 0.0D0
QHM = 0.0D0
QsrcHist = 0.0D0
QsrcHistM = 0.0D0
CondFDRelaxFactor=CondFDRelaxFactorInput
! Initialize window frame and divider temperatures
SurfaceWindow%FrameTempSurfIn = 23.d0
SurfaceWindow%FrameTempSurfInOld = 23.d0
SurfaceWindow%FrameTempSurfOut = 23.d0
SurfaceWindow%DividerTempSurfIn = 23.d0
SurfaceWindow%DividerTempSurfInOld = 23.d0
SurfaceWindow%DividerTempSurfOut = 23.d0
! Initialize previous-timestep shading indicators
SurfaceWindow%ExtIntShadePrevTS = 0
SurfaceWindow%ShadingFlag = ShadeOff
! Perform other initializations that depend on the surface characteristics
DO SurfNum = 1, TotSurfaces
IF (.NOT. Surface(SurfNum)%HeatTransSurf) CYCLE ! Skip non-heat transfer surfaces
! Reset outside boundary conditions if necessary
IF ((Surface(SurfNum)%ExtBoundCond == ExternalEnvironment) .OR. (Surface(SurfNum)%ExtBoundCond == OtherSideCondModeledExt)) THEN
THM(SurfNum,1:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = Surface(SurfNum)%OutDryBulbTemp
TH(SurfNum,1:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = Surface(SurfNum)%OutDryBulbTemp
ELSEIF (Surface(SurfNum)%ExtBoundCond == Ground) THEN
THM(SurfNum,1:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = GroundTemp
TH(SurfNum,1:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = GroundTemp
ELSEIF (Surface(SurfNum)%ExtBoundCond == GroundFCfactorMethod) THEN
THM(SurfNum,1:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = GroundTempFC
TH(SurfNum,1:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = GroundTempFC
END IF
IF (Surface(SurfNum)%ExtCavityPresent) THEN
ExtVentedCavity(Surface(SurfNum)%ExtCavNum)%TbaffleLast = 20.0d0
ExtVentedCavity(Surface(SurfNum)%ExtCavNum)%TairLast = 20.0d0
ENDIF
! Initialize the flux histories
QH(SurfNum,2:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = &
Construct(Surface(SurfNum)%Construction)%UValue*(TH(SurfNum,1,1)-TH(SurfNum,1,2))
QH(SurfNum,2:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,2) = QH(SurfNum,2,1)
QHM(SurfNum,2:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,1) = QH(SurfNum,2,1)
QHM(SurfNum,2:Construct(Surface(SurfNum)%Construction)%NumCTFTerms+1,2) = QH(SurfNum,2,1)
END DO
IF (TotOSCM > 1) THEN
DO OSCMnum =1,TotOSCM
OSCM(OSCMnum)%TConv = 20.0d0
OSCM(OSCMnum)%Hconv = 4.0d0 !
OSCM(OSCMnum)%TRad = 20.0d0 !
OSCM(OSCMnum)%Hrad = 4.0d0 !
ENDDO
ENDIF
RETURN
END SUBROUTINE InitThermalAndFluxHistories