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 ReportLoopConnections
! SUBROUTINE INFORMATION:
! AUTHOR Linda Lawrie
! DATE WRITTEN December 2001
! MODIFIED March 2003; added other reporting
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine reports on the node connections in various parts of the
! HVAC syste: Component Sets, Air Loop, Plant and Condenser Loop, Supply and
! return air paths, controlled zones.
! This information should be useful in diagnosing node connection input errors.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE InputProcessor, ONLY: SameString
USE DataAirLoop
USE DataBranchNodeConnections
USE DataLoopNode, ONLY: NumOfNodes,NodeID
USE DataHVACGlobals
USE DataHeatBalance, ONLY: Zone
USE DataPlant
USE DataZoneEquipment
USE OutAirNodeManager, ONLY: OutsideAirNodeList, NumOutsideAirNodes
USE DataErrorTracking, ONLY: AbortProcessing,AskForConnectionsReport ! used here to turn off Node Connection Error reporting
USE DualDuct, ONLY: ReportDualDuctConnections
USE DataGlobals, ONLY: OutputFileBNDetails
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
! na
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: errstring='**error**'
CHARACTER(len=*), PARAMETER :: Blank=' '
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
CHARACTER(len=20) ChrOut
CHARACTER(len=20) ChrOut2
CHARACTER(len=20) ChrOut3
CHARACTER(len=6) LoopString
CHARACTER(len=MaxNameLength) ChrName
INTEGER Count
INTEGER Count1
INTEGER LoopSideNum
INTEGER Num
LOGICAL :: WarningOut=.true.
INTEGER :: NumOfControlledZones
! Report outside air node names on the Branch-Node Details file
WRITE(OutputFileBNDetails,701) '! ==============================================================='
WRITE(OutputFileBNDetails,701) '! #Outdoor Air Nodes,<Number of Outdoor Air Nodes>'
WRITE(ChrOut,*) NumOutsideAirNodes
WRITE(OutputFileBNDetails,701) ' #Outdoor Air Nodes,'//ADJUSTL(ChrOut)
IF (NumOutsideAirNodes > 0) THEN
WRITE(OutputFileBNDetails,701) '! <Outdoor Air Node>,<NodeNumber>,<Node Name>'
ENDIF
DO Count = 1, NumOutsideAirNodes
WRITE(ChrOut,*) OutsideAirNodeList(Count)
ChrOut=ADJUSTL(ChrOut)
WRITE(OutputFileBNDetails,701) ' Outdoor Air Node,'//TRIM(ChrOut)//','//TRIM(NodeID(OutsideAirNodeList(Count)))
ENDDO
! Component Sets
WRITE(OutputFileBNDetails,701) '! ==============================================================='
WRITE(OutputFileBNDetails,700)
WRITE(ChrOut,*) NumCompSets
WRITE(OutputFileBNDetails,701) ' #Component Sets,'//TRIM(ADJUSTL(ChrOut))
WRITE(OutputFileBNDetails,702)
700 FORMAT('! <#Component Sets>,<Number of Component Sets>')
701 FORMAT(A)
702 FORMAT('! <Component Set>,<Component Set Count>,<Parent Object Type>,<Parent Object Name>,', &
'<Component Type>,<Component Name>,<Inlet Node ID>,<Outlet Node ID>,<Description>')
707 FORMAT(1X,A)
713 FORMAT(A)
DO Count=1,NumCompSets
WRITE(ChrOut,*) Count
ChrOut=ADJUSTL(ChrOut)
WRITE(OutputFileBNDetails,701) ' Component Set,'//TRIM(ChrOut)//','// &
TRIM(CompSets(Count)%ParentCType)//','//TRIM(CompSets(Count)%ParentCName)//','// &
TRIM(CompSets(Count)%CType)//','//TRIM(CompSets(Count)%CName)//','// &
TRIM(CompSets(Count)%InletNodeName)//','//TRIM(CompSets(Count)%OutletNodeName)//','// &
TRIM(CompSets(Count)%Description)
IF (CompSets(Count)%ParentCType == 'UNDEFINED' .or. &
CompSets(Count)%InletNodeName == 'UNDEFINED' .or. &
CompSets(Count)%OutletNodeName == 'UNDEFINED') THEN
IF (AbortProcessing .and. WarningOut) THEN
CALL ShowWarningError('Node Connection errors shown during "fatal error" processing may be false '// &
'because not all inputs may have been retrieved.')
WarningOut=.false.
ENDIF
CALL ShowWarningError ('Node Connection Error for object '//TRIM(CompSets(Count)%CType)// &
', name='//TRIM(CompSets(Count)%CName))
CALL ShowContinueError(' '//TRIM(CompSets(Count)%Description)//' not on any Branch or Parent Object')
CALL ShowContinueError(' Inlet Node : '//TRIM(CompSets(Count)%InletNodeName))
CALL ShowContinueError(' Outlet Node: '//TRIM(CompSets(Count)%OutletNodeName))
NumNodeConnectionErrors=NumNodeConnectionErrors+1
IF (SameString(CompSets(Count)%CType, 'SolarCollector:UnglazedTranspired') ) Then
CALL ShowContinueError('This report does not necessarily indicate a problem for a MultiSystem Transpired Collector')
ENDIF
ENDIF
IF (CompSets(Count)%Description == 'UNDEFINED') THEN
IF (AbortProcessing .and. WarningOut) THEN
CALL ShowWarningError('Node Connection errors shown during "fatal error" processing may be false '// &
'because not all inputs may have been retrieved.')
WarningOut=.false.
ENDIF
CALL ShowWarningError ('Potential Node Connection Error for object '//TRIM(CompSets(Count)%CType)// &
', name='//TRIM(CompSets(Count)%CName))
CALL ShowContinueError(' Node Types are still UNDEFINED -- See Branch/Node Details file for further information')
CALL ShowContinueError(' Inlet Node : '//TRIM(CompSets(Count)%InletNodeName))
CALL ShowContinueError(' Outlet Node: '//TRIM(CompSets(Count)%OutletNodeName))
NumNodeConnectionErrors=NumNodeConnectionErrors+1
ENDIF
ENDDO
DO Count=1,NumCompSets
DO Count1=Count+1,NumCompSets
IF (CompSets(Count)%CType /= CompSets(Count1)%CType) CYCLE
IF (CompSets(Count)%CName /= CompSets(Count1)%CName) CYCLE
IF (CompSets(Count)%InletNodeName /= CompSets(Count1)%InletNodeName) CYCLE
IF (CompSets(Count)%OutletNodeName /= CompSets(Count1)%OutletNodeName) CYCLE
IF (AbortProcessing .and. WarningOut) THEN
CALL ShowWarningError('Node Connection errors shown during "fatal error" processing may be false '// &
'because not all inputs may have been retrieved.')
WarningOut=.false.
ENDIF
CALL ShowWarningError ('Component plus inlet/outlet node pair used more than once:')
CALL ShowContinueError (' Component : '//TRIM(CompSets(Count)%CType)//', name='//TRIM(CompSets(Count)%CName))
CALL ShowContinueError (' Inlet Node : '//TRIM(CompSets(Count)%InletNodeName))
CALL ShowContinueError (' Outlet Node: '//TRIM(CompSets(Count)%OutletNodeName))
CALL ShowContinueError (' Used by : '//TRIM(CompSets(Count)%ParentCType)//' '//TRIM(CompSets(Count)%ParentCName))
CALL ShowContinueError (' and by : '//TRIM(CompSets(Count1)%ParentCType)//' '//TRIM(CompSets(Count1)%ParentCName))
NumNodeConnectionErrors=NumNodeConnectionErrors+1
ENDDO
ENDDO
! Plant Loops
WRITE(OutputFileBNDetails,701) '! ==============================================================='
WRITE(ChrOut,*) NumPlantLoops
ChrOut=ADJUSTL(ChrOut)
WRITE(OutputFileBNDetails,713) '! <# Plant Loops>,<Number of Plant Loops>'
WRITE(OutputFileBNDetails,707) '#Plant Loops,'//TRIM(ChrOut)
WRITE(OutputFileBNDetails,713) '! <Plant Loop>,<Plant Loop Name>,<Loop Type>,<Inlet Node Name>,'// &
'<Outlet Node Name>,<Branch List>,<Connector List>'
WRITE(OutputFileBNDetails,713) '! <Plant Loop Connector>,<Connector Type>,<Connector Name>,'// &
'<Loop Name>,<Loop Type>,<Number of Inlets/Outlets>'
WRITE(OutputFileBNDetails,713) '! <Plant Loop Connector Branches>,<Connector Node Count>,<Connector Type>,'// &
'<Connector Name>,<Inlet Branch>,<Outlet Branch>,'// &
'<Loop Name>,<Loop Type>'
WRITE(OutputFileBNDetails,713) '! <Plant Loop Connector Nodes>,<Connector Node Count>,<Connector Type>,'// &
'<Connector Name>,<Inlet Node>,<Outlet Node>,'// &
'<Loop Name>,<Loop Type>'
WRITE(OutputFileBNDetails,713) '! <Plant Loop Supply Connection>,<Plant Loop Name>,<Supply Side Outlet Node Name>,'// &
'<Demand Side Inlet Node Name>'
WRITE(OutputFileBNDetails,713) '! <Plant Loop Return Connection>,<Plant Loop Name>,<Demand Side Outlet Node Name>,'// &
'<Supply Side Inlet Node Name>'
DO Count=1,NumPlantLoops
DO LoopSideNum = DemandSide, SupplySide
! Plant Supply Side Loop
! Demandside and supplyside is parametrized in DataPlant
IF (LoopSideNum == DemandSide) THEN
LoopString = 'Demand'
ELSE IF(LoopSideNum == SupplySide) THEN
LoopString = 'Supply'
END IF
WRITE(OutputFileBNDetails,713) ' Plant Loop,'//TRIM(PlantLoop(Count)%Name)//','//LoopString//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%NodeNameIn)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%BranchList)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%ConnectList)
! Plant Supply Side Splitter
DO Num = 1,PlantLoop(Count)%LoopSide(LoopSideNum)%NumSplitters
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Exists) THEN
WRITE(ChrOut,*) PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%TotalOutletNodes
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector,Splitter,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString//','// &
TRIM(ADJUSTL(ChrOut))
DO Count1=1,PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%TotalOutletNodes
WRITE(ChrOut,*) Count1
ChrOut2=Blank
ChrOut3=Blank
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%BranchNumIn <= 0) THEN
ChrOut2=errstring
ENDIF
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%BranchNumOut(Count1) <= 0) THEN
ChrOut3=errstring
ENDIF
WRITE(OutputFileBNDetails,713,advance='No') ' Plant Loop Connector Branches,'//TRIM(ADJUSTL(ChrOut))//',Splitter,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Name)//','
IF (ChrOut2 /= errstring) THEN
WRITE(OutputFileBNDetails,713,advance='No') &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Splitter(Num)%BranchNumIn)%Name)//','
ELSE
WRITE(OutputFileBNDetails,713,advance='No') TRIM(ChrOut2)//','
ENDIF
IF (ChrOut3 /= errstring) THEN
WRITE(OutputFileBNDetails,713) &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Splitter(Num)%BranchNumOut(Count1))%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ELSE
WRITE(OutputFileBNDetails,713) &
TRIM(ChrOut3)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ENDIF
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector Nodes, '//TRIM(ADJUSTL(ChrOut))//',Splitter,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%NodeNameIn)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%NodeNameOut(Count1))//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ENDDO
ENDIF
END DO
! Plant Supply Side Mixer
DO Num = 1, PlantLoop(Count)%LoopSide(LoopSideNum)%NumMixers
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Exists) THEN
WRITE(ChrOut,*) PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%TotalInletNodes
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector,Mixer,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString//','// & !',Supply,'// &
TRIM(ADJUSTL(ChrOut))
DO Count1=1,PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%TotalInletNodes
WRITE(ChrOut,*) Count1
ChrOut2=Blank
ChrOut3=Blank
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%BranchNumIn(Count1) <= 0) THEN
ChrOut2=errstring
ENDIF
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%BranchNumOut <= 0) THEN
ChrOut3=errstring
ENDIF
WRITE(OutputFileBNDetails,713,advance='No') ' Plant Loop Connector Branches,'//TRIM(ADJUSTL(ChrOut))//',Mixer,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Name)//','
IF (ChrOut2 /= errstring) THEN
WRITE(OutputFileBNDetails,713,advance='No') &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Mixer(Num)%BranchNumIn(Count1))%Name)//','
ELSE
WRITE(OutputFileBNDetails,713,advance='No') TRIM(ChrOut2)//','
ENDIF
IF (ChrOut3 /= errstring) THEN
WRITE(OutputFileBNDetails,713) &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Mixer(Num)%BranchNumOut)%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ELSE
WRITE(OutputFileBNDetails,713) &
TRIM(ChrOut3)//','// &
TRIM(PlantLoop(Count)%Name)//',Supply'
ENDIF
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector Nodes, '//TRIM(ADJUSTL(ChrOut))//',Mixer,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%NodeNameIn(Count1))//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ENDDO
ENDIF
END DO
END DO
WRITE(OutputFileBNDetails,713) ' Plant Loop Supply Connection,'//TRIM(PlantLoop(Count)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(SupplySide)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%LoopSide(DemandSide)%NodeNameIn)
WRITE(OutputFileBNDetails,713) ' Plant Loop Return Connection,'//TRIM(PlantLoop(Count)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(DemandSide)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%LoopSide(SupplySide)%NodeNameIn)
END DO ! Plant Demand Side Loop
! Condenser Loops
WRITE(OutputFileBNDetails,701) '! ==============================================================='
WRITE(ChrOut,*) NumCondLoops
ChrOut=ADJUSTL(ChrOut)
WRITE(OutputFileBNDetails,713) '! <# Condenser Loops>,<Number of Condenser Loops>'
WRITE(OutputFileBNDetails,707) '#Condenser Loops,'//TRIM(ChrOut)
WRITE(OutputFileBNDetails,713) '! <Condenser Loop>,<Condenser Loop Name>,<Loop Type>,<Inlet Node Name>,'// &
'<Outlet Node Name>,<Branch List>,<Connector List>'
WRITE(OutputFileBNDetails,713) '! <Condenser Loop Connector>,<Connector Type>,<Connector Name>,'// &
'<Loop Name>,<Loop Type>,<Number of Inlets/Outlets>'
WRITE(OutputFileBNDetails,713) '! <Condenser Loop Connector Branches>,<Connector Node Count>,<Connector Type>,'// &
'<Connector Name>,<Inlet Branch>,<Outlet Branch>,'// &
'<Loop Name>,<Loop Type>'
WRITE(OutputFileBNDetails,713) '! <Condenser Loop Connector Nodes>,<Connector Node Count>,<Connector Type>,'// &
'<Connector Name>,<Inlet Node>,<Outlet Node>,'// &
'<Loop Name>,<Loop Type>'
WRITE(OutputFileBNDetails,713) '! <Condenser Loop Supply Connection>,<Condenser Loop Name>,<Supply Side Outlet Node Name>,'// &
'<Demand Side Inlet Node Name>'
WRITE(OutputFileBNDetails,713) '! <Condenser Loop Return Connection>,<Condenser Loop Name>,<Demand Side Outlet Node Name>,'// &
'<Supply Side Inlet Node Name>'
DO Count=NumPlantLoops+1,TotNumLoops
DO LoopSideNum = DemandSide, SupplySide
! Plant Supply Side Loop
! Demandside and supplyside is parametrized in DataPlant
IF (LoopSideNum == DemandSide) THEN
LoopString = 'Demand'
ELSE IF(LoopSideNum == SupplySide) THEN
LoopString = 'Supply'
END IF
WRITE(OutputFileBNDetails,713) ' Plant Loop,'//TRIM(PlantLoop(Count)%Name)//','//LoopString//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%NodeNameIn)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%BranchList)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%ConnectList)
! Plant Supply Side Splitter
DO Num = 1,PlantLoop(Count)%LoopSide(LoopSideNum)%NumSplitters
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Exists) THEN
WRITE(ChrOut,*) PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%TotalOutletNodes
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector,Splitter,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString//','// &
TRIM(ADJUSTL(ChrOut))
DO Count1=1,PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%TotalOutletNodes
WRITE(ChrOut,*) Count1
ChrOut2=Blank
ChrOut3=Blank
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%BranchNumIn <= 0) THEN
ChrOut2=errstring
ENDIF
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%BranchNumOut(Count1) <= 0) THEN
ChrOut3=errstring
ENDIF
WRITE(OutputFileBNDetails,713,advance='No') ' Plant Loop Connector Branches,'//TRIM(ADJUSTL(ChrOut))//',Splitter,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Name)//','
IF (ChrOut2 /= errstring) THEN
WRITE(OutputFileBNDetails,713,advance='No') &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Splitter(Num)%BranchNumIn)%Name)//','
ELSE
WRITE(OutputFileBNDetails,713,advance='No') TRIM(ChrOut2)//','
ENDIF
IF (ChrOut3 /= errstring) THEN
WRITE(OutputFileBNDetails,713) &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Splitter(Num)%BranchNumOut(Count1))%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ELSE
WRITE(OutputFileBNDetails,713) &
TRIM(ChrOut3)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ENDIF
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector Nodes, '//TRIM(ADJUSTL(ChrOut))//',Splitter,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%NodeNameIn)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Splitter(Num)%NodeNameOut(Count1))//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ENDDO
ENDIF
END DO
! Plant Supply Side Mixer
DO Num = 1, PlantLoop(Count)%LoopSide(LoopSideNum)%NumMixers
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Exists) THEN
WRITE(ChrOut,*) PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%TotalInletNodes
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector,Mixer,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString//','// & !',Supply,'// &
TRIM(ADJUSTL(ChrOut))
DO Count1=1,PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%TotalInletNodes
WRITE(ChrOut,*) Count1
ChrOut2=Blank
ChrOut3=Blank
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%BranchNumIn(Count1) <= 0) THEN
ChrOut2=errstring
ENDIF
IF (PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%BranchNumOut <= 0) THEN
ChrOut3=errstring
ENDIF
WRITE(OutputFileBNDetails,713,advance='No') ' Plant Loop Connector Branches,'//TRIM(ADJUSTL(ChrOut))//',Mixer,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Name)//','
IF (ChrOut2 /= errstring) THEN
WRITE(OutputFileBNDetails,713,advance='No') &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Mixer(Num)%BranchNumIn(Count1))%Name)//','
ELSE
WRITE(OutputFileBNDetails,713,advance='No') TRIM(ChrOut2)//','
ENDIF
IF (ChrOut3 /= errstring) THEN
WRITE(OutputFileBNDetails,713) &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Branch(PlantLoop(Count)% &
LoopSide(LoopSideNum)%Mixer(Num)%BranchNumOut)%Name)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ELSE
WRITE(OutputFileBNDetails,713) &
TRIM(ChrOut3)//','// &
TRIM(PlantLoop(Count)%Name)//',Supply'
ENDIF
WRITE(OutputFileBNDetails,713) ' Plant Loop Connector Nodes, '//TRIM(ADJUSTL(ChrOut))//',Mixer,'// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%NodeNameIn(Count1))//','// &
TRIM(PlantLoop(Count)%LoopSide(LoopSideNum)%Mixer(Num)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%Name)//','//LoopString
ENDDO
ENDIF
END DO
END DO
WRITE(OutputFileBNDetails,713) ' Plant Loop Supply Connection,'//TRIM(PlantLoop(Count)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(SupplySide)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%LoopSide(DemandSide)%NodeNameIn)
WRITE(OutputFileBNDetails,713) ' Plant Loop Return Connection,'//TRIM(PlantLoop(Count)%Name)//','// &
TRIM(PlantLoop(Count)%LoopSide(DemandSide)%NodeNameOut)//','// &
TRIM(PlantLoop(Count)%LoopSide(SupplySide)%NodeNameIn)
END DO ! Plant Demand Side Loop
WRITE(OutputFileBNDetails,701) '! ==============================================================='
NumOfControlledZones=0
DO Count=1,NumOfZones
IF (.not. ALLOCATED(ZoneEquipConfig)) CYCLE
IF (ZoneEquipConfig(Count)%IsControlled) NumOfControlledZones=NumOfControlledZones+1
ENDDO
WRITE(ChrOut,*) NumOfControlledZones
ChrOut=ADJUSTL(ChrOut)
IF (NumOfControlledZones > 0) THEN
WRITE(OutputFileBNDetails,713) '! <# Controlled Zones>,<Number of Controlled Zones>'
WRITE(OutputFileBNDetails,707) '#Controlled Zones,'//TRIM(ChrOut)
WRITE(OutputFileBNDetails,713) '! <Controlled Zone>,<Controlled Zone Name>,<Equip List Name>,<Control List Name>,'// &
'<Zone Node Name>,<Return Air Node Name>,<# Inlet Nodes>,<# Exhaust Nodes>'
WRITE(OutputFileBNDetails,713) '! <Controlled Zone Inlet>,<Inlet Node Count>,<Controlled Zone Name>,'// &
'<Supply Air Inlet Node Name>,<SD Sys:Cooling/Heating [DD:Cooling] Inlet Node Name>,'// &
'<DD Sys:Heating Inlet Node Name>'
WRITE(OutputFileBNDetails,713) '! <Controlled Zone Exhaust>,<Exhaust Node Count>,<Controlled Zone Name>,'// &
'<Exhaust Air Node Name>'
DO Count=1,NumOfZones
IF (.not. ZoneEquipConfig(Count)%IsControlled) CYCLE
WRITE(ChrOut,*) ZoneEquipConfig(Count)%NumInletNodes
WRITE(ChrOut2,*) ZoneEquipConfig(Count)%NumExhaustNodes
ChrOut=ADJUSTL(ChrOut)
ChrOut2=ADJUSTL(ChrOut2)
WRITE(OutputFileBNDetails,713) ' Controlled Zone,'//TRIM(ZoneEquipConfig(Count)%ZoneName)//','// &
TRIM(ZoneEquipConfig(Count)%EquipListName)//','//TRIM(ZoneEquipConfig(Count)%ControlListName)//','// &
TRIM(NodeID(ZoneEquipConfig(Count)%ZoneNode))//','// &
TRIM(NodeID(ZoneEquipConfig(Count)%ReturnAirNode))//','//TRIM(ChrOut)//','//TRIM(ChrOut2)
DO Count1=1,ZoneEquipConfig(Count)%NumInletNodes
WRITE(ChrOut,*) Count1
ChrOut=ADJUSTL(ChrOut)
ChrName=NodeID(ZoneEquipConfig(Count)%AirDistUnitHeat(Count1)%InNode)
IF (ChrName == 'Undefined') ChrName='N/A'
WRITE(OutputFileBNDetails,713) ' Controlled Zone Inlet,'//TRIM(ChrOut)//','// &
TRIM(ZoneEquipConfig(Count)%ZoneName)//','// &
TRIM(NodeID(ZoneEquipConfig(Count)%InletNode(Count1)))//','// &
TRIM(NodeID(ZoneEquipConfig(Count)%AirDistUnitCool(Count1)%InNode))//','// &
TRIM(ChrName)
ENDDO
DO Count1=1,ZoneEquipConfig(Count)%NumExhaustNodes
WRITE(ChrOut,*) Count1
ChrOut=ADJUSTL(ChrOut)
WRITE(OutputFileBNDetails,713) ' Controlled Zone Exhaust,'//TRIM(ChrOut)//','// &
TRIM(ZoneEquipConfig(Count)%ZoneName)//','// &
TRIM(NodeID(ZoneEquipConfig(Count)%ExhaustNode(Count1)))
ENDDO
ENDDO
!Report Zone Equipment Lists to BND File
WRITE(OutputFileBNDetails,721) '! ==============================================================='
WRITE(OutputFileBNDetails,720)
WRITE(ChrOut,*) NumOfControlledZones
WRITE(OutputFileBNDetails,721) ' #Zone Equipment Lists,'//TRIM(ADJUSTL(ChrOut))
WRITE(OutputFileBNDetails,722)
WRITE(OutputFileBNDetails,723)
720 FORMAT('! <#Zone Equipment Lists>,<Number of Zone Equipment Lists>')
721 FORMAT(A)
722 FORMAT('! <Zone Equipment List>,<Zone Equipment List Count>,<Zone Equipment List Name>,<Zone Name>,<Number of Components>')
723 FORMAT('! <Zone Equipment Component>,<Component Count>,<Component Type>,<Component Name>,', &
'<Zone Name>,<Heating Priority>,<Cooling Priority>')
DO Count=1,NumOfZones
! Zone equipment list array parallels controlled zone equipment array, so
! same index finds corresponding data from both arrays
IF (.not. ZoneEquipConfig(Count)%IsControlled) CYCLE
WRITE(ChrOut,*) Count
WRITE(ChrOut2,*) ZoneEquipList(Count)%NumOfEquipTypes
WRITE(OutputFileBNDetails,721) ' Zone Equipment List,'//TRIM(ADJUSTL(ChrOut))//','// &
TRIM(ZoneEquipList(Count)%Name)//','// &
TRIM(ZoneEquipConfig(Count)%ZoneName)//','// &
TRIM(ADJUSTL(ChrOut2))
DO Count1=1,ZoneEquipList(Count)%NumOfEquipTypes
WRITE(ChrOut,*) Count1
WRITE(ChrOut2,*) ZoneEquipList(Count)%CoolingPriority(Count1)
WRITE(ChrOut3,*) ZoneEquipList(Count)%HeatingPriority(Count1)
WRITE(OutputFileBNDetails,721) ' Zone Equipment Component,'//TRIM(ADJUSTL(ChrOut))//','// &
TRIM(ZoneEquipList(Count)%EquipType(Count1))//','// &
TRIM(ZoneEquipList(Count)%EquipName(Count1))//','// &
TRIM(ZoneEquipConfig(Count)%ZoneName)//','// &
TRIM(ADJUSTL(ChrOut2))//','// &
TRIM(ADJUSTL(ChrOut3))
ENDDO
ENDDO
ENDIF
!Report Dual Duct Dampers to BND File
CALL ReportDualDuctConnections
IF (NumNodeConnectionErrors == 0) THEN
CALL ShowMessage('No node connection errors were found.')
ELSE
WRITE(ChrOut,*) NumNodeConnectionErrors
ChrOut=ADJUSTL(ChrOut)
IF (NumNodeConnectionErrors > 1) THEN
CALL ShowMessage('There were '//TRIM(ChrOut)//' node connection errors noted.')
ELSE
CALL ShowMessage('There was '//TRIM(ChrOut)//' node connection error noted.')
ENDIF
ENDIF
AskForConnectionsReport=.false.
RETURN
END SUBROUTINE ReportLoopConnections