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 GetMundtData(ErrorsFound)
          ! SUBROUTINE INFORMATION:
          !       AUTHOR         Brent Griffith
          !       DATE WRITTEN   August 2001
          !       MODIFIED       na
          !       RE-ENGINEERED  April 2003, Weixiu Kong
          !                      July 2003, CC
          ! PURPOSE OF THIS SUBROUTINE:
          !     Get Mundt model controls for all zones at once
          ! METHODOLOGY EMPLOYED:
          !     Use input processer to get input from idf file
          ! REFERENCES:
          ! na
          ! USE STATEMENTS:
    USE InputProcessor,             ONLY : GetNumObjectsFound, GetObjectItem, FindItemInList
    USE DataIPShortCuts
    USE DataHeatBalance,            ONLY : Zone
    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
          ! na
          ! INTERFACE BLOCK SPECIFICATIONS
          ! na
          ! DERIVED TYPE DEFINITIONS
          ! na
          ! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    INTEGER                                     :: NumAlphas    !
    INTEGER                                     :: NumNumbers   ! Number of numbers encountered
    INTEGER                                     :: Status       ! Notes if there was an error in processing the input
    INTEGER                                     :: ControlNum   ! Index number
    INTEGER                                     :: NumOfMundtContrl ! Number of Mundt Model Controls
    INTEGER                                     :: ZoneNum      ! Index number for zones
          ! FLOW:
    IF (.not. MundtModelUsed) RETURN
    ! Initialize default values for Mundt model controls
    ALLOCATE (ConvectiveFloorSplit(NumOfZones))
    ALLOCATE (InfiltratFloorSplit(NumOfZones))
    ConvectiveFloorSplit        = 0.0d0
    InfiltratFloorSplit         = 0.0d0
    cCurrentModuleObject = 'RoomAirSettings:OneNodeDisplacementVentilation'
    NumOfMundtContrl = GetNumObjectsFound(cCurrentModuleObject)
    IF (NumOfMundtContrl.GT.NumOfZones) THEN
        CALL ShowSevereError('Too many '//TRIM(cCurrentModuleObject)//' objects in input file')
        Call ShowContinueError('There cannot be more '//TRIM(cCurrentModuleObject)//' objects than number of zones.')
        ErrorsFound=.true.
    END IF
    IF (NumOfMundtContrl.EQ.0) THEN
        CALL ShowWarningError('No '//TRIM(cCurrentModuleObject)//' objects found, program assumes no convection '// &
                              ' or infiltration gains near floors')
        RETURN
    END IF
    ! this zone uses Mundt model so get Mundt Model Control
    ! loop through all 'RoomAirSettings:OneNodeDisplacementVentilation' objects
    Mundt_Control_Loop: DO ControlNum=1, NumOfMundtContrl
      CALL GetObjectItem(cCurrentModuleObject,ControlNum,cAlphaArgs,NumAlphas,rNumericArgs,NumNumbers,Status, &
                             AlphaFieldnames=cAlphaFieldNames, NumericFieldNames=cNumericFieldNames)
      ZoneNum=FindItemInList(cAlphaArgs(1),Zone%Name,NumOfZones)
      IF (ZoneNum == 0) THEN
        CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(1))//' = '//TRIM(cAlphaArgs(1)) )
        CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//' = '//TRIM(cAlphaArgs(1)) )
        CALL ShowContinueError('Not a valid zone name.')
        ErrorsFound=.true.
        CYCLE
      ENDIF
      IF (AirModel(ZoneNum)%AirModelType /= RoomAirModel_Mundt) THEN
        CALL ShowSevereError('Zone specified="'//TRIM(cAlphaArgs(1))//'", Air Model type is not OneNodeDisplacementVentilation.')
        CALL ShowContinueError('Air Model Type for zone='//TRIM(ChAirModel(AirModel(ZoneNum)%AirModelType)))
        ErrorsFound=.true.
        CYCLE
      ENDIF
      ConvectiveFloorSplit(ZoneNum) = rNumericArgs(1)
      InfiltratFloorSplit(ZoneNum)  = rNumericArgs(2)
    END DO Mundt_Control_Loop
    RETURN
END SUBROUTINE GetMundtData