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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ZoneNum |
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 CheckScheduledSurfaceGains(ZoneNum)
! SUBROUTINE INFORMATION:
! AUTHOR Simon Vidanovic
! DATE WRITTEN July 2013
! MODIFIED
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Check if all surfaces within zone are scheduled with surface gains. If not all surfaces within zone are scheduled,
! warning message will be issued and program will continue to execute.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
use SolarShading, only: WindowScheduledSolarAbs, SurfaceScheduledSolarInc
use DataSurfaces
implicit none ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
integer, intent(in) :: ZoneNum ! Zone number for which error check will be performed
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
integer :: iSurf
integer :: iConst
integer :: SchedPtr ! scheduled surface gains pointer
logical :: ZoneUnscheduled ! true if all surfaces in the zone are unscheduled
logical :: ZoneScheduled ! true if all surfaces in the zone are scheduled
ZoneUnscheduled = .false.
ZoneScheduled = .false.
do iSurf = Zone(ZoneNum)%SurfaceFirst, Zone(ZoneNum)%SurfaceLast
iConst = Surface(iSurf)%Construction
if (Surface(iSurf)%Class == SurfaceClass_Window) then
SchedPtr = WindowScheduledSolarAbs(iSurf, iConst)
else
SchedPtr = SurfaceScheduledSolarInc(iSurf, iConst)
end if
if (iSurf == Zone(ZoneNum)%SurfaceFirst) then
if (SchedPtr /= 0) then
ZoneScheduled = .true.
ZoneUnscheduled = .false.
else
ZoneScheduled = .false.
ZoneUnscheduled = .true.
end if
else
if (SchedPtr /= 0) then
ZoneScheduled = ZoneScheduled
ZoneUnscheduled = .false.
else
ZoneScheduled = .false.
ZoneUnscheduled = ZoneUnscheduled
end if
end if
if ((.not.ZoneScheduled).and.(.not.ZoneUnscheduled)) then
! zone is nor scheduled nor unscheduled
call ShowWarningError('Zone '//trim(Zone(ZoneNum)%Name)//' does not have all surfaces scheduled with surface gains.')
call ShowContinueError('If at least one surface in the zone is scheduled with surface gains, then all other surfaces'//&
' within the same zone should be scheduled as well.')
exit
end if
end do
if ((.not.ZoneScheduled).and.(.not.ZoneUnscheduled)) then
do iSurf = Zone(ZoneNum)%SurfaceFirst, Zone(ZoneNum)%SurfaceLast
iConst = Surface(iSurf)%Construction
if (Surface(iSurf)%Class == SurfaceClass_Window) then
SchedPtr = WindowScheduledSolarAbs(iSurf, iConst)
else
SchedPtr = SurfaceScheduledSolarInc(iSurf, iConst)
end if
if (SchedPtr == 0) then
call ShowContinueError('Surface '//trim(Surface(iSurf)%Name)//' does not have scheduled surface gains.')
end if
end do
end if
END SUBROUTINE CheckScheduledSurfaceGains