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 ReportSurfaceHeatBalance
! SUBROUTINE INFORMATION:
! AUTHOR Linda Lawrie
! DATE WRITTEN Oct 2000
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine puts the reporting part of the HBSurface Module in one area.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE SolarShading, ONLY: ReportSurfaceShading
USE OutputReportTabular, ONLY: lightSWRadSeq,feneSolarRadSeq
USE DataGlobals, ONLY: NumOfTimeStepInHour, CompLoadReportIsReq, isPulseZoneSizing
USE DataSizing, ONLY: CurOverallSimDay
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 :: SurfNum
INTEGER :: ZoneNum
INTEGER :: TimeStepInDay = 0
ZoneMRT(1:NumOfZones) = MRT(1:NumOfZones)
CALL ReportSurfaceShading
! update inside face radiation reports
DO SurfNum = 1, TotSurfaces
QdotRadNetSurfInRep(SurfNum) = NetLWRadToSurf(SurfNum) * Surface(SurfNum)%Area
QdotRadNetSurfInRepPerArea(SurfNum) = NetLWRadToSurf(SurfNum)
QRadNetSurfInReport(SurfNum) = QdotRadNetSurfInRep(SurfNum) * SecInHour * TimeStepZone
IF(Surface(SurfNum)%Class /= SurfaceClass_Window) THEN ! not a window...
QdotRadSolarInRepPerArea(SurfNum) = QRadSWInAbs(SurfNum) - QRadSWLightsInAbs(SurfNum)
QdotRadSolarInRep(SurfNum) = QdotRadSolarInRepPerArea(SurfNum) * Surface(SurfNum)%Area
QRadSolarInReport(SurfNum) = QdotRadSolarInRep(SurfNum) * SecInHour * TimeStepZone
QdotRadLightsInRepPerArea(SurfNum) = QRadSWLightsInAbs(SurfNum)
QdotRadLightsInRep(SurfNum) = QdotRadLightsInRepPerArea(SurfNum) * Surface(SurfNum)%Area
QRadLightsInReport(SurfNum) = QdotRadLightsInRep(SurfNum) * SecInHour * TimeStepZone
IF (ZoneSizingCalc .AND. CompLoadReportIsReq) THEN
TimeStepInDay = (HourOfDay-1)*NumOfTimeStepInHour + TimeStep
lightSWRadSeq(SurfNum,TimeStepInDay,CurOverallSimDay) = QdotRadLightsInRep(SurfNum)
feneSolarRadSeq(SurfNum,TimeStepInDay,CurOverallSimDay) = QdotRadSolarInRep(SurfNum)
END IF
ELSE ! can we fill these for windows?
ENDIF
QdotRadIntGainsInRepPerArea(SurfNum)= QRadThermInAbs(SurfNum)
QdotRadIntGainsInRep(SurfNum) = QdotRadIntGainsInRepPerArea(SurfNum) * Surface(SurfNum)%Area
QRadIntGainsInReport(SurfNum) = QdotRadIntGainsInRep(SurfNum) * SecInHour * TimeStepZone
QdotRadHVACInRepPerArea(SurfNum) = QHTRadSysSurf(SurfNum) + QHWBaseboardSurf(SurfNum) &
+ QSteamBaseboardSurf(SurfNum) + QElecBaseboardSurf(SurfNum)
QdotRadHVACInRep(SurfNum) = QdotRadHVACInRepPerArea(SurfNum) * Surface(SurfNum)%Area
QRadHVACInReport(SurfNum) = QdotRadHVACInRep(SurfNum) * SecInHour * TimeStepZone
IF(Surface(SurfNum)%Class==SurfaceClass_Floor .OR. Surface(SurfNum)%Class==SurfaceClass_Wall .OR. &
Surface(SurfNum)%Class==SurfaceClass_IntMass .or. &
Surface(SurfNum)%Class==SurfaceClass_Roof .OR. Surface(SurfNum)%Class==SurfaceClass_Door) THEN
! inside face conduction updates
OpaqSurfInsFaceConductionEnergy(SurfNum) = OpaqSurfInsFaceConduction(SurfNum) * SecInHour * TimeStepZone
ZoneOpaqSurfInsFaceCond(Surface(SurfNum)%Zone) = ZoneOpaqSurfInsFaceCond(Surface(SurfNum)%Zone) + &
OpaqSurfInsFaceConduction(SurfNum)
OpaqSurfInsFaceCondGainRep(SurfNum) = 0.0d0
OpaqSurfInsFaceCondLossRep(SurfNum) = 0.0d0
IF(OpaqSurfInsFaceConduction(SurfNum) >= 0.0d0) THEN
OpaqSurfInsFaceCondGainRep(SurfNum) = OpaqSurfInsFaceConduction(SurfNum)
ELSE
OpaqSurfInsFaceCondLossRep(SurfNum) = -OpaqSurfInsFaceConduction(SurfNum)
END IF
! outside face conduction updates
OpaqSurfOutsideFaceConductionEnergy(SurfNum) = OpaqSurfOutsideFaceConduction(SurfNum) * SecInHour * TimeStepZone
ZoneOpaqSurfExtFaceCond(Surface(SurfNum)%Zone) = ZoneOpaqSurfExtFaceCond(Surface(SurfNum)%Zone) + &
OpaqSurfOutsideFaceConduction(SurfNum)
OpaqSurfExtFaceCondGainRep(SurfNum) = 0.d0
OpaqSurfExtFaceCondLossRep(SurfNum) = 0.d0
IF(OpaqSurfOutsideFaceConduction(SurfNum) >= 0.d0) THEN
OpaqSurfExtFaceCondGainRep(SurfNum) = OpaqSurfOutsideFaceConduction(SurfNum)
ELSE
OpaqSurfExtFaceCondLossRep(SurfNum) = -OpaqSurfOutsideFaceConduction(SurfNum)
END IF
! do average surface conduction updates
OpaqSurfAvgFaceConduction(SurfNum) = (OpaqSurfInsFaceConduction(SurfNum) - OpaqSurfOutsideFaceConduction(SurfNum)) / 2.d0
OpaqSurfAvgFaceConductionFlux(SurfNum) = (OpaqSurfInsFaceConductionFlux(SurfNum) &
- OpaqSurfOutsideFaceConductionFlux(SurfNum)) / 2.d0
OpaqSurfAvgFaceConductionEnergy(SurfNum) = OpaqSurfAvgFaceConduction(SurfNum) * SecInHour * TimeStepZone
OpaqSurfAvgFaceCondGainRep(SurfNum) = 0.d0
OpaqSurfAvgFaceCondLossRep(SurfNum) = 0.d0
IF (OpaqSurfAvgFaceConduction(SurfNum) >= 0.d0) THEN
OpaqSurfAvgFaceCondGainRep(SurfNum) = OpaqSurfAvgFaceConduction(SurfNum)
ELSE
OpaqSurfAvgFaceCondLossRep(SurfNum) = - OpaqSurfAvgFaceConduction(SurfNum)
ENDIF
! do surface storage rate updates
OpaqSurfStorageConductionFlux(SurfNum) = &
- (OpaqSurfInsFaceConductionFlux(SurfNum) + OpaqSurfOutsideFaceConductionFlux(SurfNum))
OpaqSurfStorageConduction(SurfNum) = - (OpaqSurfInsFaceConduction(SurfNum) + OpaqSurfOutsideFaceConduction(SurfNum))
OpaqSurfStorageConductionEnergy(SurfNum) = OpaqSurfStorageConduction(SurfNum) * SecInHour * TimeStepZone
OpaqSurfStorageGainRep(SurfNum) = 0.d0
OpaqSurfStorageCondLossRep(SurfNum) = 0.d0
IF (OpaqSurfStorageConduction(SurfNum) >= 0.d0 ) THEN
OpaqSurfStorageGainRep(SurfNum) = OpaqSurfStorageConduction(SurfNum)
ELSE
OpaqSurfStorageCondLossRep(SurfNum) = - OpaqSurfStorageConduction(SurfNum)
ENDIF
ENDIF ! opaque heat transfer surfaces.
ENDDO ! loop over surfaces
DO ZoneNum = 1,NumOfZones
IF(ZoneOpaqSurfInsFaceCond(ZoneNum) >= 0.0d0) THEN
ZoneOpaqSurfInsFaceCondGainRep(ZoneNum) = ZoneOpaqSurfInsFaceCond(ZoneNum)
ZnOpqSurfInsFaceCondGnRepEnrg(ZoneNum) = ZoneOpaqSurfInsFaceCondGainRep(ZoneNum) * TimeStepZone * SecInHour
ELSE
ZoneOpaqSurfInsFaceCondLossRep(ZoneNum) = -ZoneOpaqSurfInsFaceCond(ZoneNum)
ZnOpqSurfInsFaceCondLsRepEnrg(ZoneNum) = ZoneOpaqSurfInsFaceCondLossRep(ZoneNum) * TimeStepZone * SecInHour
END IF
IF(ZoneOpaqSurfExtFaceCond(ZoneNum) >= 0.0d0) THEN
ZoneOpaqSurfExtFaceCondGainRep(ZoneNum) = ZoneOpaqSurfExtFaceCond(ZoneNum)
ZnOpqSurfExtFaceCondGnRepEnrg(ZoneNum) = ZoneOpaqSurfExtFaceCondGainRep(ZoneNum) * TimeStepZone * SecInHour
ELSE
ZoneOpaqSurfExtFaceCondLossRep(ZoneNum) = - ZoneOpaqSurfExtFaceCond(ZoneNum)
ZnOpqSurfExtFaceCondLsRepEnrg(ZoneNum) = ZoneOpaqSurfExtFaceCondLossRep(ZoneNum) * TimeStepZone * SecInHour
ENDIF
END DO ! loop over zones
RETURN
END SUBROUTINE ReportSurfaceHeatBalance