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 CalcIfSetpointMet
! SUBROUTINE INFORMATION:
! AUTHOR Jason Glazer
! DATE WRITTEN July 2005
! MODIFIED
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Report if the setpoint temperature has been met.
! Add calculation of how far away from setpoint and if setpoint was not met
! during all times and during occupancy.
! METHODOLOGY EMPLOYED:
! REFERENCES:
! USE STATEMENTS:
USE DataZoneEnergyDemands, ONLY: ZoneSysEnergyDemand
USE DataHeatBalFanSys, ONLY: ZoneThermostatSetPointHi, ZoneThermostatSetPointLo, TempTstatAir,TempControlType
USE OutputReportPredefined
USE DataHVACGlobals, ONLY: SingleHeatingSetPoint, SingleCoolingSetPoint, SingleHeatCoolSetPoint, DualSetPointWithDeadBand, &
deviationFromSetPtThresholdHtg, deviationFromSetPtThresholdClg
USE DataRoomAirModel, ONLY: AirModel, RoomAirModel_Mixing
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:
REAL(r64) :: SensibleLoadPredictedNoAdj
REAL(r64) :: deltaT
INTEGER :: iZone
LOGICAL :: testHeating
LOGICAL :: testCooling
! Get the load predicted - the sign will indicate if heating or cooling
! was called for
AnyZoneNotMetHeating = 0.0d0
AnyZoneNotMetCooling = 0.0d0
AnyZoneNotMetOccupied = 0.0d0
AnyZoneNotMetHeatingOccupied = 0.0d0
AnyZoneNotMetCoolingOccupied = 0.0d0
DO iZone = 1, NumOfZones
SensibleLoadPredictedNoAdj = ZoneSysEnergyDemand(iZone)%TotalOutputRequired
ThermalComfortSetpoint(iZone)%notMetCooling = 0.0d0
ThermalComfortSetpoint(iZone)%notMetHeating = 0.0d0
ThermalComfortSetpoint(iZone)%notMetCoolingOccupied = 0.0d0
ThermalComfortSetpoint(iZone)%notMetHeatingOccupied = 0.0d0
SELECT CASE (TempControlType(iZone))
CASE (SingleHeatingSetPoint)
testHeating = .TRUE.
testCooling = .FALSE.
CASE (SingleCoolingSetPoint)
testHeating = .FALSE.
testCooling = .TRUE.
CASE (SingleHeatCoolSetPoint)
testHeating = .TRUE.
testCooling = .TRUE.
CASE (DualSetPointWithDeadBand)
testHeating = .TRUE.
testCooling = .TRUE.
CASE DEFAULT
testHeating = .TRUE.
testCooling = .TRUE.
END SELECT
IF (testHeating .AND. (SensibleLoadPredictedNoAdj .GT. 0)) THEN !heating
IF (AirModel(iZone)%AirModelType /= RoomAirModel_Mixing) THEN
deltaT = TempTstatAir(iZone) - ZoneThermostatSetPointLo(iZone)
ELSE
deltaT = ZTAV(iZone) - ZoneThermostatSetPointLo(iZone)
ENDIF
IF (deltaT .LT. deviationFromSetPtThresholdHtg) THEN
ThermalComfortSetpoint(iZone)%notMetHeating = TimeStepZone
ThermalComfortSetpoint(iZone)%totalNotMetHeating = &
ThermalComfortSetpoint(iZone)%totalNotMetHeating + TimeStepZone
IF (AnyZoneNotMetHeating .EQ. 0.0d0) AnyZoneNotMetHeating = TimeStepZone
IF (ThermalComfortInASH55(iZone)%ZoneIsOccupied) THEN
ThermalComfortSetpoint(iZone)%notMetHeatingOccupied = TimeStepZone
ThermalComfortSetpoint(iZone)%totalNotMetHeatingOccupied = &
ThermalComfortSetpoint(iZone)%totalNotMetHeatingOccupied + TimeStepZone
IF (AnyZoneNotMetHeatingOccupied .EQ. 0.0d0) AnyZoneNotMetHeatingOccupied = TimeStepZone
IF (AnyZoneNotMetOccupied .EQ. 0.0d0) AnyZoneNotMetOccupied = TimeStepZone
END IF
END IF
ELSEIF (testCooling .AND. (SensibleLoadPredictedNoAdj .LT. 0)) THEN !cooling
IF (AirModel(iZone)%AirModelType /= RoomAirModel_Mixing) THEN
deltaT = TempTstatAir(iZone) - ZoneThermostatSetPointHi(iZone)
ELSE
deltaT = ZTAV(iZone) - ZoneThermostatSetPointHi(iZone)
ENDIF
IF (deltaT .GT. deviationFromSetPtThresholdClg) THEN
ThermalComfortSetpoint(iZone)%notMetCooling = TimeStepZone
ThermalComfortSetpoint(iZone)%totalNotMetCooling = &
ThermalComfortSetpoint(iZone)%totalNotMetCooling + TimeStepZone
IF (AnyZoneNotMetCooling .EQ. 0.0d0) AnyZoneNotMetCooling = TimeStepZone
IF (ThermalComfortInASH55(iZone)%ZoneIsOccupied) THEN
ThermalComfortSetpoint(iZone)%notMetCoolingOccupied = TimeStepZone
ThermalComfortSetpoint(iZone)%totalNotMetCoolingOccupied = &
ThermalComfortSetpoint(iZone)%totalNotMetCoolingOccupied + TimeStepZone
IF (AnyZoneNotMetCoolingOccupied .EQ. 0.0d0) AnyZoneNotMetCoolingOccupied = TimeStepZone
IF (AnyZoneNotMetOccupied .EQ. 0.0d0) AnyZoneNotMetOccupied = TimeStepZone
END IF
END IF
ENDIF
END DO
TotalAnyZoneNotMetHeating = TotalAnyZoneNotMetHeating + AnyZoneNotMetHeating
TotalAnyZoneNotMetCooling = TotalAnyZoneNotMetCooling + AnyZoneNotMetCooling
TotalAnyZoneNotMetHeatingOccupied = TotalAnyZoneNotMetHeatingOccupied + AnyZoneNotMetHeatingOccupied
TotalAnyZoneNotMetCoolingOccupied = TotalAnyZoneNotMetCoolingOccupied + AnyZoneNotMetCoolingOccupied
TotalAnyZoneNotMetOccupied = TotalAnyZoneNotMetOccupied + AnyZoneNotMetOccupied
!was EndEnvrnsFlag prior to CR7562
IF (EndDesignDayEnvrnsFlag) THEN
DO iZone = 1, NumOfZones
CALL PreDefTableEntry(pdchULnotMetHeat,Zone(iZone)%Name,ThermalComfortSetpoint(iZone)%totalNotMetHeating)
CALL PreDefTableEntry(pdchULnotMetCool,Zone(iZone)%Name,ThermalComfortSetpoint(iZone)%totalNotMetCooling)
CALL PreDefTableEntry(pdchULnotMetHeatOcc,Zone(iZone)%Name,ThermalComfortSetpoint(iZone)%totalNotMetHeatingOccupied)
CALL PreDefTableEntry(pdchULnotMetCoolOcc,Zone(iZone)%Name,ThermalComfortSetpoint(iZone)%totalNotMetCoolingOccupied)
END DO
CALL PreDefTableEntry(pdchULnotMetHeat,'Facility',TotalAnyZoneNotMetHeating)
CALL PreDefTableEntry(pdchULnotMetCool,'Facility',TotalAnyZoneNotMetCooling)
CALL PreDefTableEntry(pdchULnotMetHeatOcc,'Facility',TotalAnyZoneNotMetHeatingOccupied)
CALL PreDefTableEntry(pdchULnotMetCoolOcc,'Facility',TotalAnyZoneNotMetCoolingOccupied)
!set value for ABUPS report
TotalNotMetHeatingOccupiedForABUPS = TotalAnyZoneNotMetHeatingOccupied
TotalNotMetCoolingOccupiedForABUPS = TotalAnyZoneNotMetCoolingOccupied
TotalNotMetOccupiedForABUPS = TotalAnyZoneNotMetOccupied
!reset counters
DO iZone = 1, NumOfZones
ThermalComfortSetpoint(iZone)%totalNotMetHeating = 0.0d0
ThermalComfortSetpoint(iZone)%totalNotMetCooling = 0.0d0
ThermalComfortSetpoint(iZone)%totalNotMetHeatingOccupied = 0.0d0
ThermalComfortSetpoint(iZone)%totalNotMetCoolingOccupied = 0.0d0
END DO
TotalAnyZoneNotMetHeating = 0.0d0
TotalAnyZoneNotMetCooling = 0.0d0
TotalAnyZoneNotMetHeatingOccupied = 0.0d0
TotalAnyZoneNotMetCoolingOccupied = 0.0d0
! report how the aggregation is conducted
SELECT CASE (kindOfSim)
CASE(ksDesignDay)
CALL addFootNoteSubTable(pdstUnmetLoads,'Aggregated over the Design Days')
CASE(ksRunPeriodDesign)
CALL addFootNoteSubTable(pdstUnmetLoads,'Aggregated over the RunPeriods for Design')
CASE(ksRunPeriodWeather)
CALL addFootNoteSubTable(pdstUnmetLoads,'Aggregated over the RunPeriods for Weather')
END SELECT
END IF
END SUBROUTINE CalcIfSetpointMet