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) | :: | OACtrlNum | |||
logical, | intent(inout) | :: | ErrorsFound | |||
character(len=*), | optional | :: | Name | |||
character(len=*), | optional | :: | ControllerType | |||
integer, | optional | :: | ControllerType_Num | |||
character(len=*), | optional | :: | LockoutType | |||
logical, | optional | :: | FixedMin | |||
real(kind=r64), | optional | :: | TempLim | |||
real(kind=r64), | optional | :: | TempLowLim | |||
real(kind=r64), | optional | :: | EnthLim | |||
real(kind=r64), | optional | :: | DPTempLim | |||
integer, | optional | :: | EnthalpyCurvePtr | |||
real(kind=r64), | optional | :: | MaxOA | |||
real(kind=r64), | optional | :: | MinOA | |||
character(len=*), | optional | :: | EconoType | |||
integer, | optional | :: | MixNode | |||
integer, | optional | :: | OANode | |||
integer, | optional | :: | InletNode | |||
integer, | optional | :: | RelNode | |||
integer, | optional | :: | RetNode | |||
integer, | optional | :: | HumidistatZoneNum | |||
real(kind=r64), | optional | :: | HighRHOAFlowRatio | |||
logical, | optional | :: | ModifyDuringHighOAMoisture | |||
integer, | optional | :: | NodeNumofHumidistatZone | |||
integer, | optional | :: | EconomizerOASchedPtr | |||
character(len=*), | optional | :: | Bypasstype |
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 SetOAControllerData(OACtrlNum,ErrorsFound,Name,ControllerType,ControllerType_Num, &
LockoutType,FixedMin,TempLim,TempLowLim,EnthLim, &
DPTempLim,EnthalpyCurvePtr, &
MaxOA,MinOA,EconoType,MixNode,OANode,InletNode,RelNode,RetNode, &
HumidistatZoneNum,HighRHOAFlowRatio,ModifyDuringHighOAMoisture, &
NodeNumofHumidistatZone,EconomizerOASchedPtr,Bypasstype)
! SUBROUTINE INFORMATION:
! AUTHOR Linda Lawrie
! DATE WRITTEN October 2006
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This routine was designed for the ERV Controller which really needs some data from
! the ERV stand alone unit but caused a circular reference when it was here in the
! Mixed Air module setting OAController Data. Also, this is an illustration of setting
! Data from an outside source.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE General, ONLY: TrimSigDigits
USE InputProcessor, ONLY: FindItemInList, SameString
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: OACtrlNum ! Number of OA Controller
LOGICAL, INTENT(INOUT) :: ErrorsFound ! Set to true if certain errors found
CHARACTER(len=*),OPTIONAL :: Name ! Name of Controller
CHARACTER(len=*),OPTIONAL :: ControllerType ! Controller Type
INTEGER,OPTIONAL :: ControllerType_Num ! Parameter equivalent of Controller Type
CHARACTER(len=*),OPTIONAL :: LockoutType ! Lock out type
LOGICAL,OPTIONAL :: FixedMin ! Fixed Minimum or Proportional Minimum
REAL(r64),OPTIONAL :: TempLim ! Temperature Limit
REAL(r64),OPTIONAL :: TempLowLim ! Temperature Lower Limit
REAL(r64),OPTIONAL :: EnthLim ! Enthalpy Limit
REAL(r64),OPTIONAL :: DPTempLim ! Dew Point Temperature Limit
INTEGER,OPTIONAL :: EnthalpyCurvePtr ! Electronic Enthalpy Limit Curve Index
REAL(r64),OPTIONAL :: MinOA ! Minimum outside air flow (m3/sec)
REAL(r64),OPTIONAL :: MaxOA ! Maximum outside air flow (m3/sec)
CHARACTER(len=*),OPTIONAL :: EconoType ! EconoType = No Economizer,Differential Enthalpy, Differential Dry bulb,
! Differential Dry Bulb and Enthalpy and Any other Economizer Strategy present.
INTEGER,OPTIONAL :: MixNode ! Controlled node (mixed air node)
INTEGER,OPTIONAL :: OANode ! Actuated node (outside air node)
INTEGER,OPTIONAL :: InletNode ! Inlet Air Node for into Mixer (BTG Nov 2004)
INTEGER,OPTIONAL :: RelNode ! Relief Air Node Number
INTEGER,OPTIONAL :: RetNode ! Return Air Node Number
INTEGER,OPTIONAL :: HumidistatZoneNum ! Zone number where humidistat is located
REAL(r64),OPTIONAL :: HighRHOAFlowRatio ! Ratio of outside air flow to maximum outside air flow rate for high RH
LOGICAL,OPTIONAL :: ModifyDuringHighOAMoisture ! TRUE if modify air flow is allowed during high OA humrat conditions
INTEGER,OPTIONAL :: NodeNumofHumidistatZone ! actual node number of controlled zone
INTEGER,OPTIONAL :: EconomizerOASchedPtr ! Time of day schedule for increasing outdoor air
CHARACTER(len=*),OPTIONAL :: Bypasstype ! ActivateBypassAtMinOAFlow, SetOAFlowRate
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
! na
IF (GetOAControllerInputFlag) THEN
! Make sure OAControllers are "gotten"
CALL GetOAControllerInputs
GetOAControllerInputFlag=.false.
ENDIF
IF (OACtrlNum <= 0 .or. OACtrlNum > NumOAControllers) THEN
CALL ShowSevereError('SetOAControllerData: called with OA Controller Number out of range='// &
TRIM(TrimSigDigits(OACtrlNum))//' should be >0 and <'//TRIM(TrimSigDigits(NumOAControllers)))
ErrorsFound=.true.
RETURN
ENDIF
IF (PRESENT(Name)) THEN
OAController(OACtrlNum)%Name=Name
ENDIF
IF (PRESENT(ControllerType)) THEN
OAController(OACtrlNum)%ControllerType=ControllerType
ENDIF
IF (PRESENT(ControllerType_Num))THEN
OAController(OACtrlNum)%ControllerType_Num = ControllerType_Num
END IF
IF (PRESENT(LockoutType)) THEN
IF (SameString(LockoutType,'NOLOCKOUT')) THEN
OAController(OACtrlNum)%Lockout = NoLockoutPossible
ELSE IF (SameString(LockoutType,'LOCKOUTWITHHEATING')) THEN
OAController(OACtrlNum)%Lockout = LockoutWithHeatingPossible
ELSE IF (SameString(LockoutType,'LOCKOUTWITHCOMPRESSOR')) THEN
OAController(OACtrlNum)%Lockout = LockoutWithCompressorPossible
ELSE
CALL ShowSevereError('SetOAControllerData: Illegal Lockout type specified='//TRIM(LockoutType))
ErrorsFound=.true.
END IF
ENDIF
IF (PRESENT(FixedMin)) THEN
OAController(OACtrlNum)%FixedMin=FixedMin
ENDIF
IF (PRESENT(TempLim)) THEN
OAController(OACtrlNum)%TempLim=TempLim
ENDIF
IF (PRESENT(TempLowLim)) THEN
OAController(OACtrlNum)%TempLowLim=TempLowLim
ENDIF
IF (PRESENT(EnthLim)) THEN
OAController(OACtrlNum)%EnthLim=EnthLim
ENDIF
IF (PRESENT(DPTempLim)) THEN
OAController(OACtrlNum)%DPTempLim=DPTempLim
ENDIF
IF (PRESENT(EnthalpyCurvePtr)) THEN
OAController(OACtrlNum)%EnthalpyCurvePtr=EnthalpyCurvePtr
ENDIF
IF (PRESENT(MinOA)) THEN
OAController(OACtrlNum)%MinOA=MinOA
ENDIF
IF (PRESENT(MaxOA)) THEN
OAController(OACtrlNum)%MaxOA=MaxOA
ENDIF
IF (PRESENT(EconoType)) THEN
IF (SameString(EconoType,'NoEconomizer')) THEN
OAController(OACtrlNum)%Econo = NoEconomizer
ELSE IF (SameString(EconoType,'DifferentialDryBulbandenthalpy')) THEN
OAController(OACtrlNum)%Econo = DifferentialDryBulbAndEnthalpy
ELSE IF (SameString(EconoType,'DifferentialDryBulb')) THEN
OAController(OACtrlNum)%Econo = DifferentialDryBulb
ELSE IF (SameString(EconoType,'DifferentialEnthalpy')) THEN
OAController(OACtrlNum)%Econo = DifferentialEnthalpy
ELSE IF (SameString(EconoType,'Economizer Strategy Present')) THEN ! from routines, not from input
OAController(OACtrlNum)%Econo = FixedDryBulb
ELSE
CALL ShowSevereError('SetOAControllerData: Illegal Economizer type specified='//TRIM(EconoType))
ErrorsFound=.true.
END IF
ENDIF
IF(PRESENT(BypassType)) THEN
IF (SameString(BypassType,'MINIMUMFLOWWITHBYPASS')) THEN
OAController(OACtrlNum)%EconBypass = .TRUE.
ELSE IF(SameString(BypassType,'MODULATEFLOW')) THEN
OAController(OACtrlNum)%EconBypass = .FALSE.
ELSE
CALL ShowSevereError('SetOAControllerData:Illegal Economizer Bypass type specified ='//TRIM(BypassType))
Errorsfound = .TRUE.
END IF
END IF
IF (PRESENT(MixNode)) THEN
OAController(OACtrlNum)%MixNode=MixNode
ENDIF
IF (PRESENT(OANode)) THEN
OAController(OACtrlNum)%OANode=OANode
ENDIF
IF (PRESENT(InletNode)) THEN
OAController(OACtrlNum)%InletNode=InletNode
ENDIF
IF (PRESENT(RelNode)) THEN
OAController(OACtrlNum)%RelNode=RelNode
ENDIF
IF (PRESENT(RetNode)) THEN
OAController(OACtrlNum)%RetNode=RetNode
ENDIF
IF (PRESENT(HumidistatZoneNum)) THEN
OAController(OACtrlNum)%HumidistatZoneNum=HumidistatZoneNum
ENDIF
IF (PRESENT(HighRHOAFlowRatio)) THEN
OAController(OACtrlNum)%HighRHOAFlowRatio=HighRHOAFlowRatio
ENDIF
IF (PRESENT(ModifyDuringHighOAMoisture)) THEN
OAController(OACtrlNum)%ModifyDuringHighOAMoisture=ModifyDuringHighOAMoisture
ENDIF
IF (PRESENT(NodeNumofHumidistatZone)) THEN
OAController(OACtrlNum)%NodeNumofHumidistatZone=NodeNumofHumidistatZone
ENDIF
IF (PRESENT(EconomizerOASchedPtr)) THEN
OAController(OACtrlNum)%EconomizerOASchedPtr=EconomizerOASchedPtr
END IF
RETURN
END SUBROUTINE SetOAControllerData