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 GetUFADZoneData(ErrorsFound)
! SUBROUTINE INFORMATION:
! AUTHOR Fred Buhl
! DATE WRITTEN August 2005
! MODIFIED
! RE-ENGINEERED
! PURPOSE OF THIS SUBROUTINE:
! Get UCSD UFAD interior zone model controls for all zones at once
! METHODOLOGY EMPLOYED:
! Use input processor to get input from idf file
! REFERENCES:
! na
! USE STATEMENTS:
USE InputProcessor, ONLY : GetNumObjectsFound, GetObjectItem, FindItemInList, SameString
USE DataIPShortCuts
USE DataHeatBalance, ONLY : Zone
USE ScheduleManager
USE DataSurfaces, ONLY : TotSurfaces
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(INOUT) :: ErrorsFound ! True if errors found during this get input routine
! SUBROUTINE PARAMETER DEFINITIONS
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: IOStat
INTEGER :: NumAlpha
INTEGER :: NumNumber
INTEGER :: Loop
IF (.not. UCSDModelUsed) THEN
TotUCSDUI = 0
TotUCSDUE = 0
RETURN
END IF
cCurrentModuleObject = 'RoomAirSettings:UnderFloorAirDistributionInterior'
TotUCSDUI=GetNumObjectsFound(cCurrentModuleObject)
cCurrentModuleObject = 'RoomAirSettings:UnderFloorAirDistributionExterior'
TotUCSDUE=GetNumObjectsFound(cCurrentModuleObject)
IF (TotUCSDUI <= 0 .AND. TotUCSDUE <= 0) RETURN
ALLOCATE(ZoneUCSDUI(TotUCSDUI))
ALLOCATE(ZoneUCSDUE(TotUCSDUE))
ALLOCATE(ZoneUFPtr(NumOfZones))
ZoneUFPtr = 0
cCurrentModuleObject = 'RoomAirSettings:UnderFloorAirDistributionInterior'
DO Loop=1,TotUCSDUI
CALL GetObjectItem(cCurrentModuleObject,Loop,cAlphaArgs,NumAlpha,rNumericArgs,NumNumber,IOStat, &
AlphaBlank=lAlphaFieldBlanks, AlphaFieldnames=cAlphaFieldNames, &
NumericFieldNames=cNumericFieldNames)
! First is Zone Name
ZoneUCSDUI(Loop)%ZoneName = cAlphaArgs(1)
ZoneUCSDUI(Loop)%ZonePtr = FindIteminList(cAlphaArgs(1),Zone%Name,NumOfZones)
ZoneUFPtr(ZoneUCSDUI(Loop)%ZonePtr) = Loop
IF (ZoneUCSDUI(Loop)%ZonePtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(1))//' = '//TRIM(cAlphaArgs(1)) )
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//' = '//TRIM(cAlphaArgs(1)) )
CALL ShowContinueError('Zone name was not found.')
ErrorsFound=.true.
ELSE
IsZoneUI(ZoneUCSDUI(Loop)%ZonePtr)=.true.
ENDIF
! 2nd alpha is diffuser type
IF (SameString(cAlphaArgs(2),'Swirl')) THEN
ZoneUCSDUI(Loop)%DiffuserType = Swirl
ELSE IF (SameString(cAlphaArgs(2),'VariableArea')) THEN
ZoneUCSDUI(Loop)%DiffuserType = VarArea
ELSE IF (SameString(cAlphaArgs(2),'HorizontalSwirl')) THEN
ZoneUCSDUI(Loop)%DiffuserType = DisplVent
ELSE IF (SameString(cAlphaArgs(2),'Custom')) THEN
ZoneUCSDUI(Loop)%DiffuserType = Custom
ELSE IF (SameString(cAlphaArgs(2),'LinearBarGrille')) THEN
ZoneUCSDUI(Loop)%DiffuserType = LinBarGrille
ELSE
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//' = '//TRIM(cAlphaArgs(2)) )
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//' = '//TRIM(cAlphaArgs(1)) )
ErrorsFound = .TRUE.
END IF
! 1st number is Number of Diffusers per Zone
ZoneUCSDUI(Loop)%DiffusersPerZone = rNumericArgs(1)
! 2nd number is Power per Plume
ZoneUCSDUI(Loop)%PowerPerPlume = rNumericArgs(2)
! 3rd number is Design Effective Area of Diffuser
ZoneUCSDUI(Loop)%DiffArea = rNumericArgs(3)
! 4th number is Diffuser Slot Angle from Vertical
ZoneUCSDUI(Loop)%DiffAngle = rNumericArgs(4)
! 5th number is Thermostat Height
ZoneUCSDUI(Loop)%ThermostatHeight = rNumericArgs(5)
! 6th number is Comfort Height
ZoneUCSDUI(Loop)%ComfortHeight = rNumericArgs(6)
! 7th number is Temperature Difference Threshold for Reporting
ZoneUCSDUI(Loop)%TempTrigger = rNumericArgs(7)
! 8th number user-specified transition height
ZoneUCSDUI(Loop)%TransHeight = rNumericArgs(8)
! 9th number is Coefficient A in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUI(Loop)%A_Kc = rNumericArgs(9)
! 10th number is Coefficient B in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUI(Loop)%B_Kc = rNumericArgs(10)
! 11th number is Coefficient C in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUI(Loop)%C_Kc = rNumericArgs(11)
! 12th number is Coefficient D in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUI(Loop)%D_Kc = rNumericArgs(12)
! 13th number is Coefficient E in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUI(Loop)%E_Kc = rNumericArgs(13)
END DO
cCurrentModuleObject = 'RoomAirSettings:UnderFloorAirDistributionExterior'
DO Loop=1,TotUCSDUE
CALL GetObjectItem(cCurrentModuleObject,Loop,cAlphaArgs,NumAlpha,rNumericArgs,NumNumber,IOStat, &
AlphaBlank=lAlphaFieldBlanks, AlphaFieldnames=cAlphaFieldNames, &
NumericFieldNames=cNumericFieldNames)
! First is Zone Name
ZoneUCSDUE(Loop)%ZoneName = cAlphaArgs(1)
ZoneUCSDUE(Loop)%ZonePtr = FindIteminList(cAlphaArgs(1),Zone%Name,NumOfZones)
ZoneUFPtr(ZoneUCSDUE(Loop)%ZonePtr) = Loop
IF (ZoneUCSDUE(Loop)%ZonePtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(1))//' = '//TRIM(cAlphaArgs(1)) )
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//' = '//TRIM(cAlphaArgs(1)) )
CALL ShowContinueError('Zone name was not found.')
ErrorsFound=.true.
ELSE
IsZoneUI(ZoneUCSDUE(Loop)%ZonePtr)=.true.
ENDIF
! 2nd alpha is diffuser type
IF (SameString(cAlphaArgs(2),'Swirl')) THEN
ZoneUCSDUE(Loop)%DiffuserType = Swirl
ELSE IF (SameString(cAlphaArgs(2),'VariableArea')) THEN
ZoneUCSDUE(Loop)%DiffuserType = VarArea
ELSE IF (SameString(cAlphaArgs(2),'HorizontalSwirl')) THEN
ZoneUCSDUE(Loop)%DiffuserType = DisplVent
ELSE IF (SameString(cAlphaArgs(2),'Custom')) THEN
ZoneUCSDUE(Loop)%DiffuserType = Custom
ELSE IF (SameString(cAlphaArgs(2),'LinearBarGrille')) THEN
ZoneUCSDUE(Loop)%DiffuserType = LinBarGrille
ELSE
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//' = '//TRIM(cAlphaArgs(2)) )
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//' = '//TRIM(cAlphaArgs(1)) )
ErrorsFound = .TRUE.
END IF
! 1st number is Number of Diffusers per Zone
ZoneUCSDUE(Loop)%DiffusersPerZone = rNumericArgs(1)
! 2nd number is Power per Plume
ZoneUCSDUE(Loop)%PowerPerPlume = rNumericArgs(2)
! 3rd number is Design Effective Area of Diffuser
ZoneUCSDUE(Loop)%DiffArea = rNumericArgs(3)
! 4th number is Diffuser Slot Angle from Vertical
ZoneUCSDUE(Loop)%DiffAngle = rNumericArgs(4)
! 5th number is Thermostat Height
ZoneUCSDUE(Loop)%ThermostatHeight = rNumericArgs(5)
! 6th number is Comfort Height
ZoneUCSDUE(Loop)%ComfortHeight = rNumericArgs(6)
! 7th number is Temperature Difference Threshold for Reporting
ZoneUCSDUE(Loop)%TempTrigger = rNumericArgs(7)
! 8th number user-specified transition height
ZoneUCSDUE(Loop)%TransHeight = rNumericArgs(8)
! 9th number is Coefficient A in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUE(Loop)%A_Kc = rNumericArgs(9)
! 10th number is Coefficient B in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUE(Loop)%B_Kc = rNumericArgs(10)
! 11th number is Coefficient C in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUE(Loop)%C_Kc = rNumericArgs(11)
! 12th number is Coefficient D in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUE(Loop)%D_Kc = rNumericArgs(12)
! 13th number is Coefficient E in formula Kc = A*Gamma**B + C + D*Gamma + E*Gamma**2
ZoneUCSDUE(Loop)%E_Kc = rNumericArgs(13)
END DO
RETURN
END SUBROUTINE GetUFADZoneData