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) | :: | PurchAirNum | |||
integer, | intent(in) | :: | ActualZoneNum | |||
real(kind=r64), | intent(out) | :: | OAMassFlowRate |
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 CalcPurchAirMinOAMassFlow(PurchAirNum, ActualZoneNum, OAMassFlowRate)
! SUBROUTINE INFORMATION:
! AUTHOR M. Witte (GARD)
! DATE WRITTEN Jun 2011 (taken from HVACSingleDuctSystem.f90 and adapted for Ideal Loads System)
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculates the amount of outside air required based on optional user input.
! Zone multipliers have been applied in GetInput.
! METHODOLOGY EMPLOYED:
! User input defines method used to calculate OA.
! REFERENCES:
! USE STATEMENTS:
USE DataHeatBalance, ONLY: ZoneIntGain, Zone
USE DataEnvironment, ONLY: StdRhoAir
USE DataSizing, ONLY: OAFlowPPer, OAFlow, OAFlowPerArea, OAFlowACH, OAFlowSum, OAFlowMax
USE DataContaminantBalance, ONLY: ZoneSysContDemand
USE DataZoneEquipment, ONLY: CalcDesignSpecificationOutdoorAir
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: PurchAirNum ! index to ideal loads unit
INTEGER, INTENT(IN) :: ActualZoneNum ! index to actual zone number
REAL(r64), INTENT(OUT) :: OAMassFlowRate ! outside air mass flow rate [kg/s] from volume flow using std density
! 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:
LOGICAL :: UseOccSchFlag ! TRUE = use actual occupancy, FALSE = use total zone people
REAL(r64) :: OAVolumeFlowRate ! outside air flow rate (m3/s)
IF (PurchAir(PurchAirNum)%OutdoorAir) THEN
IF(PurchAir(PurchAirNum)%DCVType == OccupancySchedule)THEN
UseOccSchFlag = .TRUE.
ELSE
UseOccSchFlag = .FALSE.
END IF
OAVolumeFlowRate = CalcDesignSpecificationOutdoorAir(PurchAir(PurchAirNum)%OARequirementsPtr, &
ActualZoneNum, UseOccSchFlag, UseMinOASchFlag)
OAMassFlowRate = OAVolumeFlowRate * StdRhoAir
! If DCV with CO2Setpoint then check required OA flow to meet CO2 setpoint
IF (PurchAir(PurchAirNum)%DCVType == CO2Setpoint) THEN
OAMassFlowRate = Max(OAMassFlowRate, ZoneSysContDemand(ActualZoneNum)%OutputRequiredToCO2SP)
END IF
IF (OAMassFlowRate <= VerySmallMassFlow) OAMassFlowRate = 0.0d0
ELSE !No outdoor air
OAMassFlowRate = 0.0d0
END IF
PurchAir(PurchAirNum)%MinOAMassFlowRate = OAMassFlowRate
RETURN
END SUBROUTINE CalcPurchAirMinOAMassFlow