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