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) | :: | DamperNum | |||
real(kind=r64), | intent(inout) | :: | OAMassFlow | |||
real(kind=r64), | intent(out), | optional | :: | MaxOAVolFlow |
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 CalcOAOnlyMassFlow(DamperNum, OAMassFlow, MaxOAVolFlow)
! FUNCTION INFORMATION:
! AUTHOR C. Miller (Mod of CaclOAMassFlow by R. Raustad (FSEC))
! DATE WRITTEN Aug 2010
! MODIFIED B. Griffith, Dec 2010 clean up, sizing optional, scheduled OA
! RE-ENGINEERED na
! PURPOSE OF THIS FUNCTION:
! Calculates the amount of outside air required based on optional user input. Returns
! ONLY calculated OAMassFlow without consideration of AirLoopOAFrac. Used for
! the DualDuct:VAV:OutdoorAir object which does not mix OA with RA
! METHODOLOGY EMPLOYED:
! User input defines method used to calculate OA.
! REFERENCES:
! USE STATEMENTS:
USE DataZoneEquipment, ONLY: CalcDesignSpecificationOutdoorAir
USE Psychrometrics, ONLY: PsyRhoAirFnPbTdbW
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: DamperNum ! index to terminal unit
REAL(r64), INTENT(INOUT) :: OAMassFlow ! outside air flow from user input kg/s
REAL(r64), INTENT(OUT), OPTIONAL :: MaxOAVolFlow ! design level for outside air m3/s
! FUNCTION PARAMETER DEFINITIONS:
LOGICAL, PARAMETER :: UseMinOASchFlag = .TRUE. ! Always use min OA schedule in calculations.
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: RhoAir ! density of terminal unit inlet air
REAL(r64) :: OAVolumeFlowRate ! outside air volume flow rate (m3/s)
LOGICAL :: UseOccSchFlag ! TRUE = use actual occupancy, FALSE = use total zone people
LOGICAL :: PerPersonNotSet
! Calculate the amount of OA based on optional user inputs
OAMassFlow = 0.d0
! If no additional input from user, RETURN from subroutine
IF(Damper(DamperNum)%NoOAFlowInputFromUser) THEN
CALL ShowSevereError('CalcOAOnlyMassFlow: Problem in AirTerminal:DualDuct:VAV:OutdoorAir = ' // &
Trim(Damper(DamperNum)%DamperName) // ', check outdoor air specification' )
IF(PRESENT(MaxOAVolFlow))MaxOAVolFlow = 0.d0
RETURN
ENDIF
IF (Damper(DamperNum)%OAPerPersonMode == PerPersonDCVByCurrentLevel) THEN
UseOccSchFlag = .TRUE.
PerPersonNotSet = .FALSE.
ELSE
UseOccSchFlag = .FALSE.
PerPersonNotSet = .FALSE.
IF (Damper(DamperNum)%OAPerPersonMode == PerPersonModeNotSet) PerPersonNotSet = .TRUE.
END IF
OAVolumeFlowRate = CalcDesignSpecificationOutdoorAir(Damper(DamperNum)%OARequirementsPtr, &
Damper(DamperNum)%ActualZoneNum, UseOccSchFlag, UseMinOASchFlag, PerPersonNotSet = PerPersonNotSet)
RhoAir = PsyRhoAirFnPbTdbW(Node(Damper(DamperNum)%OutletNodeNum)%Press, &
Node(Damper(DamperNum)%OutletNodeNum)%Temp, &
Node(Damper(DamperNum)%OutletNodeNum)%HumRat, &
'HVACDualDuctSystem:CalcOAOnlyMassFlow')
OAMassFlow = OAVolumeFlowRate * RhoAir
IF (PRESENT(MaxOAVolFlow)) THEN
OAVolumeFlowRate = CalcDesignSpecificationOutdoorAir(Damper(DamperNum)%OARequirementsPtr, &
Damper(DamperNum)%ActualZoneNum, UseOccSchFlag, UseMinOASchFlag, MaxOAVolFlowFlag = .TRUE.)
MaxOAVolFlow = OAVolumeFlowRate
ENDIF
RETURN
END SUBROUTINE CalcOAOnlyMassFlow