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.
SUBROUTINE ReportDualDuctConnections
! SUBROUTINE INFORMATION:
! AUTHOR Michael J. Witte
! DATE WRITTEN February 2004
! MODIFIED B. Griffith, DOAS VAV dual duct
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Report dual duct damper connections to the BND file.
! METHODOLOGY EMPLOYED:
! Needs description, as appropriate.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataGlobals, ONLY: OutputFileBNDetails
USE DataAirLoop, ONLY: AirToZoneNodeInfo
USE DataHVACGlobals, ONLY: NumPrimaryAirSys
USE DataZoneEquipment, ONLY: SupplyAirPath, NumSupplyAirPaths
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:
INTEGER Count1
INTEGER Count2
INTEGER Count3
INTEGER Found
INTEGER SupplyAirPathNum ! Supply air path ID
CHARACTER(len=20) ChrOut
CHARACTER(len=MaxNameLength) ChrName
CHARACTER(len=MaxNameLength) DamperType
!Report Dual Duct Dampers to BND File
WRITE(OutputFileBNDetails,101) '! ==============================================================='
WRITE(OutputFileBNDetails,100)
WRITE(ChrOut,*) NumDampers*2
WRITE(OutputFileBNDetails,101) ' #Dual Duct Damper Connections,'//TRIM(ADJUSTL(ChrOut))
WRITE(OutputFileBNDetails,102)
100 FORMAT('! <#Dual Duct Damper Connections>,<Number of Dual Duct Damper Connections>')
101 FORMAT(A)
102 FORMAT('! <Dual Duct Damper>,<Dual Duct Damper Count>,<Dual Duct Damper Name>,<Inlet Node>,', &
'<Outlet Node>,<Inlet Node Type>,<AirLoopHVAC Name>')
DO Count1=1,NumDampers
! Determine if this damper is connected to a supply air path
Found = 0
DO Count2 = 1, NumSupplyAirPaths
SupplyAirPathNum = Count2
Found = 0
DO Count3=1,SupplyAirPath(Count2)%NumOutletNodes
IF (Damper(Count1)%HotAirInletNodeNum == SupplyAirPath(Count2)%OutletNode(Count3)) Found = Count3
IF (Damper(Count1)%ColdAirInletNodeNum == SupplyAirPath(Count2)%OutletNode(Count3)) Found = Count3
IF (Damper(Count1)%OAInletNodeNum == SupplyAirPath(Count2)%OutletNode(Count3)) Found = Count3
IF (Damper(Count1)%RecircAirInletNodeNum == SupplyAirPath(Count2)%OutletNode(Count3)) Found = Count3
ENDDO
IF (Found /= 0) EXIT
ENDDO
IF (Found == 0) SupplyAirPathNum = 0
! Determine which air loop this dual duct damper is connected to
Found = 0
DO Count2 = 1, NumPrimaryAirSys
ChrName = TRIM(AirToZoneNodeInfo(Count2)%AirLoopName)
Found = 0
DO Count3=1,AirToZoneNodeInfo(Count2)%NumSupplyNodes
IF (SupplyAirPathNum /=0) THEN
IF (SupplyAirPath(SupplyAirPathNum)%InletNodeNum == AirToZoneNodeInfo(Count2)%ZoneEquipSupplyNodeNum(Count3)) &
Found = Count3
ELSE
IF (Damper(Count1)%HotAirInletNodeNum == AirToZoneNodeInfo(Count2)%ZoneEquipSupplyNodeNum(Count3)) Found = Count3
IF (Damper(Count1)%ColdAirInletNodeNum == AirToZoneNodeInfo(Count2)%ZoneEquipSupplyNodeNum(Count3)) Found = Count3
IF (Damper(Count1)%OAInletNodeNum == AirToZoneNodeInfo(Count2)%ZoneEquipSupplyNodeNum(Count3)) Found = Count3
IF (Damper(Count1)%RecircAirInletNodeNum == AirToZoneNodeInfo(Count2)%ZoneEquipSupplyNodeNum(Count3)) Found = Count3
ENDIF
ENDDO
IF (Found /= 0) EXIT
ENDDO
IF (Found == 0) ChrName = '**Unknown**'
WRITE(ChrOut,*) Count1
IF (Damper(Count1)%DamperType == DualDuct_ConstantVolume) THEN
DamperType=cCMO_DDConstantVolume
ELSEIF (Damper(Count1)%DamperType == DualDuct_VariableVolume) THEN
DamperType=cCMO_DDVariableVolume
ELSEIF (Damper(Count1)%DamperType == DualDuct_OutdoorAir) THEN
DamperType=cCMO_DDVarVolOA
ELSE
DamperType='Invalid/Unknown'
ENDIF
IF ((Damper(Count1)%DamperType == DualDuct_ConstantVolume) .OR. &
(Damper(Count1)%DamperType == DualDuct_VariableVolume) ) THEN
WRITE(OutputFileBNDetails,101) ' Dual Duct Damper,'//TRIM(ADJUSTL(ChrOut))//','// &
TRIM(DamperType)//','// &
TRIM(Damper(Count1)%DamperName)//','// &
TRIM(NodeID(Damper(Count1)%HotAirInletNodeNum))//','// &
TRIM(NodeID(Damper(Count1)%OutletNodeNum))//','// &
'Hot Air'//','//TRIM(ChrName)
WRITE(OutputFileBNDetails,101) ' Dual Duct Damper,'//TRIM(ADJUSTL(ChrOut))//','// &
TRIM(DamperType)//','// &
TRIM(Damper(Count1)%DamperName)//','// &
TRIM(NodeID(Damper(Count1)%ColdAirInletNodeNum))//','// &
TRIM(NodeID(Damper(Count1)%OutletNodeNum))//','// &
'Cold Air'//','//TRIM(ChrName)
ELSEIF (Damper(Count1)%DamperType == DualDuct_OutdoorAir) THEN
WRITE(OutputFileBNDetails, 101 ) 'Dual Duct Damper, '//Trim(Adjustl(ChrOut))//','// &
TRIM(DamperType)//','// &
TRIM(Damper(Count1)%DamperName)//','// &
Trim(NodeID(Damper(Count1)%OAInletNodeNum))//','// &
TRIM(NodeID(Damper(Count1)%OutletNodeNum))//','// &
'Outdoor Air'//','//TRIM(ChrName)
WRITE(OutputFileBNDetails, 101 ) 'Dual Duct Damper, '//Trim(Adjustl(ChrOut))//','// &
TRIM(DamperType)//','// &
TRIM(Damper(Count1)%DamperName)//','// &
Trim(NodeID(Damper(Count1)%RecircAirInletNodeNum))//','// &
TRIM(NodeID(Damper(Count1)%OutletNodeNum))//','// &
'Recirculated Air'//','//TRIM(ChrName)
ENDIF
ENDDO
RETURN
END SUBROUTINE ReportDualDuctConnections