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) | :: | ControlNum |
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 SizeController(ControlNum)
! SUBROUTINE INFORMATION:
! AUTHOR Fred Buhl
! DATE WRITTEN November 2001
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for sizing Controller Components for which max flow rates have not been
! specified in the input.
! METHODOLOGY EMPLOYED:
! Obtains flow rates from the actuated node. Should have been set by the water coils.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataSizing
USE DataConvergParams, ONLY: HVACEnergyToler, HVACTemperatureToler
USE ReportSizingManager, ONLY: ReportSizingOutput
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: ControlNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: ActuatedNode ! node number of actuated node
INTEGER :: WaterCompNum
ActuatedNode = ControllerProps(ControlNum)%ActuatedNode
IF (ControllerProps(ControlNum)%MaxVolFlowActuated == AutoSize) THEN
DO WaterCompNum=1,SaveNumPlantComps
IF (CompDesWaterFlow(WaterCompNum)%SupNode == ActuatedNode) THEN
ControllerProps(ControlNum)%MaxVolFlowActuated = CompDesWaterFlow(WaterCompNum)%DesVolFlowRate
ENDIF
ENDDO
IF (ControllerProps(ControlNum)%MaxVolFlowActuated < SmallWaterVolFlow) THEN
ControllerProps(ControlNum)%MaxVolFlowActuated = 0.0d0
END IF
CALL ReportSizingOutput(ControllerProps(ControlNum)%ControllerType, ControllerProps(ControlNum)%ControllerName, &
'Maximum Actuated Flow [m3/s]', ControllerProps(ControlNum)%MaxVolFlowActuated)
END IF
IF (ControllerProps(ControlNum)%Offset == AutoSize) THEN
! 2100 = 0.5 * 4.2 * 1000/1.2 * 1.2 where 0.5 is the ratio of chilled water delta T to supply air delta T,
! 4.2 is the ratio of water density to air density, 1000/1.2 is the ratio of water specific heat to
! air specific heat, and 1.2 converts the result from air volumetric flow rate to air mass flow rate.
! The assumption is that a temperatute tolerance of 0.001 C is good for an air mass flow rate of 1 kg/s.
! So we divide .001 by the air mass flow rate estimated from the water volumetric flow rate to come up
! with a temperature tolerance that won't exceed the loop energy error tolerance (10 W).
! Finally we need to take into account the fact that somebody might change the energy tolerance.
ControllerProps(ControlNum)%Offset = &
( 0.001d0 / (2100.d0 * MAX(ControllerProps(ControlNum)%MaxVolFlowActuated,SmallWaterVolFlow)) ) &
* (HVACEnergyToler/10.0d0)
! do not let the controller tolerance exceed 1/10 of the loop temperature tolerance.
ControllerProps(ControlNum)%Offset = MIN(0.1d0*HVACTemperatureToler, ControllerProps(ControlNum)%Offset)
CALL ReportSizingOutput( &
ControllerProps(ControlNum)%ControllerType, ControllerProps(ControlNum)%ControllerName, &
'Controller Convergence Tolerance', ControllerProps(ControlNum)%Offset )
END IF
RETURN
END SUBROUTINE SizeController