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 | ||
---|---|---|---|---|---|---|
logical, | intent(inout) | :: | ErrorsFound |
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 CreateTCConstructions(ErrorsFound)
! SUBROUTINE INFORMATION:
! AUTHOR Tianzhen Hong
! DATE WRITTEN January 2009
! MODIFIED
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine goes through each TC master construction and creates a complete series
! of the slave thermochromic constructions.
! This subroutine only gets called once in the GetHeatBalanceInput subroutine
! after materials, constructions and building geometry data are read.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE DataStringGlobals
USE General, ONLY: RoundSigDigits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(INOUT) :: ErrorsFound ! If errors found in input
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: Loop
INTEGER :: iTC = 0
INTEGER :: iMat = 0
INTEGER :: NumNewConst = 0
INTEGER :: iTCG = 0
NumNewConst = 0
DO Loop = 1, TotConstructs
IF (Construct(Loop)%TCFlag == 1) THEN
iTCG = Material(Construct(Loop)%TCLayer)%TCParent
IF (iTCG == 0) CYCLE ! hope this was caught already
iMat = TCGlazings(iTCG)%NumGlzMat
DO iTC = 1, iMat
NumNewConst = NumNewConst +1
ENDDO
ENDIF
ENDDO
IF (NumNewConst == 0) RETURN ! no need to go further
! Increase Construct() and copy the extra constructions
ALLOCATE(ConstructSave(TotConstructs))
ALLOCATE(NominalRSave(TotConstructs))
ALLOCATE(NominalUSave(TotConstructs))
DO Loop = 1,TotConstructs
ConstructSave(Loop) = Construct(Loop)
NominalRSave(Loop) = NominalRforNominalUCalculation(Loop)
NominalUSave(Loop) = NominalU(Loop)
END DO
DEALLOCATE(Construct)
DEALLOCATE(NominalRforNominalUCalculation)
DEALLOCATE(NominalU)
ALLOCATE(Construct(TotConstructs+NumNewConst))
ALLOCATE(NominalRforNominalUCalculation(TotConstructs+NumNewConst))
ALLOCATE(NominalU(TotConstructs+NumNewConst))
DO Loop = 1, TotConstructs
Construct(Loop) = ConstructSave(Loop)
NominalRforNominalUCalculation(Loop) = NominalRSave(Loop)
NominalU(Loop) = NominalUSave(Loop)
END DO
DEALLOCATE(ConstructSave)
DEALLOCATE(NominalRSave)
DEALLOCATE(NominalUSave)
NumNewConst=TotConstructs
DO Loop = 1, TotConstructs
IF (Construct(Loop)%TCFlag == 1) THEN
iTCG = Material(Construct(Loop)%TCLayer)%TCParent
IF (iTCG == 0) CYCLE ! hope this was caught already
iMat = TCGlazings(iTCG)%NumGlzMat
DO iTC = 1, iMat
NumNewConst = NumNewConst +1
Construct(NumNewConst) = Construct(Loop) ! copy data
Construct(NumNewConst)%Name = TRIM(Construct(Loop)%Name) // '_TC_'//RoundSigDigits(TCGlazings(iTCG)%SpecTemp(iTC),0)
Construct(NumNewConst)%TCLayer = TCGlazings(iTCG)%LayerPoint(iTC)
Construct(NumNewConst)%LayerPoint(Construct(Loop)%TCLayerID) = Construct(NumNewConst)%TCLayer
Construct(NumNewConst)%TCFlag = 1
Construct(NumNewConst)%TCMasterConst = Loop
Construct(NumNewConst)%TCLayerID = Construct(Loop)%TCLayerID
Construct(NumNewConst)%TCGlassID = Construct(Loop)%TCGlassID
Construct(NumNewConst)%TypeIsWindow = .True.
ENDDO
ENDIF
ENDDO
TotConstructs = NumNewConst
RETURN
END SUBROUTINE CreateTCConstructions