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 ReportFiniteDiffInits
! SUBROUTINE INFORMATION:
! AUTHOR Richard Liesen
! DATE WRITTEN November 2003
! MODIFIED B. Griffith, May 2011 add reporting of node x locations
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This routine gives a detailed report to the user about
! the initializations for the Fintie Difference calculations
! of each construction.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE General, ONLY: ScanForReports, RoundSigDigits
USE DataHeatBalance, ONLY: MaxAllowedDelTempCondFD, CondFDRelaxFactorInput, HeatTransferAlgosUsed
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:
LOGICAL :: DoReport
CHARACTER(len=MaxNameLength) :: InodesChar
INTEGER :: ThisNum
INTEGER :: Layer
INTEGER :: OutwardMatLayerNum
INTEGER :: layerNode
INTEGER :: Inodes
Write(OutputFileInits,'(A)') '! <ConductionFiniteDifference HeatBalanceSettings>,Scheme Type,Space Discretization Constant,'// &
'Relaxation Factor,Inside Face Surface Temperature Convergence Criteria'
Write(OutputFileInits,'(A)') ' ConductionFiniteDifference HeatBalanceSettings,'// &
trim(cCondFDSchemeType(CondFDSchemeType))//','// &
trim(RoundSigDigits(SpaceDescritConstant,2))//','//trim(RoundSigDigits(CondFDRelaxFactorInput,2))//','// &
trim(RoundSigDigits(MaxAllowedDelTempCondFD,4))
CALL ScanForReports('Constructions',DoReport,'Constructions')
IF (DoReport) THEN
! Write Descriptions
Write(OutputFileInits,'(A)') '! <Construction CondFD>,Construction Name,Index,#Layers,#Nodes,Time Step {hours}'
Write(OutputFileInits,'(A)') '! <Material CondFD Summary>,Material Name,Thickness {m},#Layer Elements,Layer Delta X,'// &
'Layer Alpha*Delt/Delx**2,Layer Moisture Stability'
!HT Algo issue
IF (ANY(HeatTransferAlgosUsed == UseCondFD)) &
WRITE(OutputFileInits,'(A)') '! <ConductionFiniteDifference Node>,Node Identifier, '// &
' Node Distance From Outside Face {m}, Construction Name, Outward Material Name (or Face), Inward Material Name (or Face)'
DO ThisNum=1,TotConstructs
IF (Construct(ThisNum)%TypeIsWindow) CYCLE
IF (Construct(ThisNum)%TypeIsIRT) CYCLE
Write(OutputFileInits,700) TRIM(Construct(ThisNum)%Name),trim(RoundSigDigits(ThisNum)), &
trim(RoundSigDigits(Construct(ThisNum)%TotLayers)), &
trim(RoundSigDigits(Int(ConstructFD(ThisNum)%TotNodes+1))), &
trim(RoundSigDigits(ConstructFD(ThisNum)%DeltaTime/SecInHour,6))
!
700 FORMAT(' Construction CondFD,',A,2(',',A),',',A,',',A)
701 FORMAT(' Material CondFD Summary,',A,',',A,',',A,',',A,',',A,',',A)
702 FORMAT(' ConductionFiniteDifference Node,', A, ',', A, ',', A, ',', A, ',', A)
DO Layer=1,Construct(ThisNum)%TotLayers
Write(OutputFileInits,701) TRIM(ConstructFD(ThisNum)%Name(Layer)), &
trim(RoundSigDigits(ConstructFD(ThisNum)%Thickness(Layer),4)), &
trim(RoundSigDigits(ConstructFD(ThisNum)%NodeNumPoint(Layer))), &
trim(RoundSigDigits(ConstructFD(ThisNum)%Delx(Layer),8)), &
trim(RoundSigDigits(ConstructFD(ThisNum)%TempStability(Layer),8)), &
trim(RoundSigDigits(ConstructFD(ThisNum)%MoistStability(Layer),8))
ENDDO
!now list each CondFD Node with its X distance from outside face in m along with other identifiers
Inodes = 0
DO Layer=1,Construct(ThisNum)%TotLayers
OutwardMatLayerNum = Layer - 1
DO layerNode = 1, ConstructFD(ThisNum)%NodeNumPoint(Layer)
Inodes = Inodes + 1
WRITE(InodesChar,*)Inodes
IF (Inodes == 1) THEN
WRITE(OutputFileInits,702) TRIM('Node #'//TRIM(ADJUSTL(InodesChar))), &
TRIM(RoundSigDigits(ConstructFD(ThisNum)%NodeXlocation(Inodes), 8)), &
TRIM(Construct(ThisNum)%Name) , &
TRIM('Surface Outside Face'), &
TRIM(ConstructFD(ThisNum)%Name(Layer))
ELSEIF (layerNode== 1 ) THEN
IF ( OutwardMatLayerNum > 0 .AND. OutwardMatLayerNum <= Construct(ThisNum)%TotLayers ) THEN
WRITE(OutputFileInits,702) TRIM('Node #'//TRIM(ADJUSTL(InodesChar))), &
TRIM(RoundSigDigits(ConstructFD(ThisNum)%NodeXlocation(Inodes), 8)), &
TRIM(Construct(ThisNum)%Name) , &
TRIM(ConstructFD(ThisNum)%Name(OutwardMatLayerNum)), &
TRIM(ConstructFD(ThisNum)%Name(Layer))
ENDIF
ELSEIF (layerNode >1) THEN
OutwardMatLayerNum = Layer
WRITE(OutputFileInits,702) TRIM('Node #'//TRIM(ADJUSTL(InodesChar))), &
TRIM(RoundSigDigits(ConstructFD(ThisNum)%NodeXlocation(Inodes), 8)), &
TRIM(Construct(ThisNum)%Name) , &
TRIM(ConstructFD(ThisNum)%Name(OutwardMatLayerNum)), &
TRIM(ConstructFD(ThisNum)%Name(Layer))
ENDIF
ENDDO
ENDDO
Layer = Construct(ThisNum)%TotLayers
Inodes = Inodes + 1
WRITE(InodesChar,*)Inodes
WRITE(OutputFileInits,702) TRIM('Node #'//TRIM(ADJUSTL(InodesChar))), &
TRIM(RoundSigDigits(ConstructFD(ThisNum)%NodeXlocation(Inodes), 8)), &
TRIM(Construct(ThisNum)%Name) , &
TRIM(ConstructFD(ThisNum)%Name(Layer)), &
TRIM('Surface Inside Face')
ENDDO
ENDIF
RETURN
END SUBROUTINE ReportFiniteDiffInits