Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CFSTY), | intent(inout) | :: | FS |
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 FinalizeCFS(FS)
!
! SUBROUTINE INFORMATION:
! AUTHOR The University of WaterLoo
! DATE WRITTEN unknown
! MODIFIED Bereket Nigusse/FSEC, May 2013
!
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Complete CFS after BuildCFS by checking the shade type and
! gap type
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE
! FUNCTION ARGUMENT DEFINITIONS:
TYPE( CFSTY), INTENT( INOUT) :: FS
!
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: RoutineName='FinalizeCFS: ' ! include trailing blank space
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: iL
INTEGER :: gType
LOGICAL :: LVBPREV
CHARACTER (len=MaxNameLength) :: CurrentModuleObject
LOGICAL :: ErrorsFound
! Flow
CurrentModuleObject = 'WindowConstruction:EquivalentLayer'
ErrorsFound = .FALSE.
LVBPREV = .FALSE. ! .TRUE. if previous layer is VB
DO iL = 1, FS%NL
IF (.NOT. IsVBLayer( FS%L( iL))) THEN
LVBPREV = .FALSE.
ELSE IF (LVBPREV) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//trim(FS%Name)//'", illegal.')
CALL ShowContinueError('...adjacent VB layers are specified.')
ErrorsFound=.true.
ELSE
LVBPREV = .TRUE.
IF (IL > 1) CALL AdjustVBGap( FS%G( iL-1), FS%L( iL))
IF (IL < FS%NL) CALL AdjustVBGap( FS%G( iL), FS%L( iL))
END IF
IF (iL < FS%NL) THEN
gType = FS%G( iL)%GTYPE
IF (gType == gtyOPENOut .AND. iL /= 1) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//trim(FS%Name))
CALL ShowContinueError('...invalid EquivalentLayer window gap type specified ='//trim(FS%G(iL)%Name)//'.')
CALL ShowContinueError('...VentedOutDoor gap is not outermost.')
END IF
IF (gType == gtyOPENIn .AND. iL /= FS%NL-1) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//trim(FS%Name))
CALL ShowContinueError('...invalid EquivalentLayer window gap type specified ='//trim(FS%G(iL)%Name)//'.')
CALL ShowContinueError('...VentedIndoor gap is not innermost.')
END IF
END IF
END DO
IF (ErrorsFound) THEN
CALL ShowFatalError(RoutineName//'Program terminates for preceding reason(s).')
ENDIF
RETURN
END SUBROUTINE FinalizeCFS