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 | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | NodeNum | |||
| integer, | intent(in) | :: | SetpointType | |||
| logical, | intent(inout) | :: | ErrorFlag | 
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 CheckIfNodeSetpointManagedByEMS(NodeNum, SetpointType, ErrorFlag )
          ! SUBROUTINE INFORMATION:
          !       AUTHOR         Brent Griffith
          !       DATE WRITTEN   May 2009
          !       MODIFIED       na
          !       RE-ENGINEERED  na
          ! PURPOSE OF THIS SUBROUTINE:
          ! Provide method to verify that a specific node is (probably) managed by EMS
          ! METHODOLOGY EMPLOYED:
          ! <description>
          ! REFERENCES:
          ! na
          ! USE STATEMENTS:
  USE InputProcessor, ONLY: SameString
  USE DataLoopNode,   ONLY: NodeID
  IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
          ! SUBROUTINE ARGUMENT DEFINITIONS:
  INTEGER, INTENT(IN)    :: NodeNum ! index of node being checked.
  INTEGER, INTENT(IN)    :: SetpointType
  LOGICAL, INTENT(INOUT) :: ErrorFlag
          ! SUBROUTINE PARAMETER DEFINITIONS:
          ! na
          ! INTERFACE BLOCK SPECIFICATIONS:
          ! na
          ! DERIVED TYPE DEFINITIONS:
          ! na
          ! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
  INTEGER :: Loop = 0 ! local do loop index
  CHARACTER(len=MaxNameLength) :: cControlTypeName
  CHARACTER(len=MaxNameLength) :: cComponentTypeName
  CHARACTER(len=MaxNameLength) :: cNodeName
  LOGICAL  :: FoundControl = .FALSE.
  FoundControl = .FALSE.
  cNodeName = NodeID(NodeNum)
  cComponentTypeName = 'System Node Setpoint'
  SELECT CASE (SetpointType)
  CASE (iTemperatureSetpoint)
    cControlTypeName = 'Temperature Setpoint'
  CASE (iTemperatureMinSetpoint)
    cControlTypeName = 'Temperature Minimum Setpoint'
  CASE (iTemperatureMaxSetpoint)
    cControlTypeName = 'Temperature Maximum Setpoint'
  CASE (iHumidityRatioSetpoint)
    cControlTypeName = 'Humidity Ratio Setpoint'
  CASE (iHumidityRatioMinSetpoint)
    cControlTypeName = 'Humidity Ratio Minimum Setpoint'
  CASE (iHumidityRatioMaxSetpoint)
    cControlTypeName = 'Humidity Ratio Maximum Setpoint'
  CASE (iMassFlowRateSetpoint)
    cControlTypeName = 'Mass Flow Rate Setpoint'
  CASE (iMassFlowRateMinSetpoint)
    cControlTypeName = 'Mass Flow Rate Minimum Available Setpoint'
  CASE (iMassFlowRateMaxSetpoint)
    cControlTypeName = 'Mass Flow Rate Maximum Available Setpoint'
  END SELECT
  DO loop = 1, numActuatorsUsed + NumExternalInterfaceActuatorsUsed
    IF ( (SameString( EMSActuatorUsed(loop)%ComponentTypeName, cComponentTypeName)) &
        .AND. (SameString( EMSActuatorUsed(loop)%UniqueIDName, cNodeName ))  &
        .AND. (SameString( EMSActuatorUsed(loop)%ControlTypeName, cControlTypeName)) ) THEN
      FoundControl = .TRUE.
    ENDIF
  ENDDO
  IF ((.NOT. ErrorFlag) .AND. (.NOT. FoundControl)) ErrorFlag = .TRUE.
  RETURN
END SUBROUTINE CheckIfNodeSetpointManagedByEMS