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