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) | :: | HumNum |
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 SizeHumidifier(HumNum)
! SUBROUTINE INFORMATION:
! AUTHOR Bereket Nigusse, UCF/FSEC,
! DATE WRITTEN March, 2012
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for for sizing electric steam humidifier nominal electric power.
! METHODOLOGY EMPLOYED:
! Uses user sepecified nominal capacity in m3/s and water enthalpy change required to
! vaporize water from a reference temperature of 20.0C. to steam at 100.0C.
! m_dot = Nominal Capacity [m3/s] * Density of water at 5.05 [kg/m3]
! Nominal Capacity = m_dot [kg/s] * delta_enthalpy [J/kg]
! REFERENCES:
! na
! USE STATEMENTS:
USE Psychrometrics, ONlY: RhoH2O
USE FluidProperties, ONLY: GetSatEnthalpyRefrig, GetSpecificHeatGlycol, FindGlycol, FindRefrigerant
USE General, ONLY: RoundSigDigits
USE ReportSizingManager, ONLY: ReportSizingOutput
USE DataSizing, ONLY: Autosize
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT (IN) :: HumNum ! number of the current humidifier being sized
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: CalledFrom='Humidifier:SizeHumidifier'
REAL(r64), PARAMETER :: Tref = 20.0d0 ! Reference temp of water for rated capacity calac [C]
REAL(r64), PARAMETER :: TSteam = 100.0d0 ! saturated steam temperatur generated by Humidifier [C]
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: NumHum
INTEGER :: RefrigerantIndex ! refiferant index
INTEGER :: WaterIndex ! fluid type index
REAL(r64) :: NominalPower ! Nominal power input to humidifier, W
REAL(r64) :: WaterSpecHeatAvg ! specific heat of water, J/kgK
REAL(r64) :: SteamSatEnthalpy ! enthalpy of saturated steam at 100C, J/kg
REAL(r64) :: WaterSatEnthalpy ! enthalpy of saturated water at 100C, J/kg
IF (Humidifier(HumNum)%HumType_Code == Humidifier_Steam_Electric) THEN
Humidifier(HumNum)%NomCap = RhoH2O(InitConvTemp)*Humidifier(HumNum)%NomCapVol
RefrigerantIndex = FindRefrigerant('STEAM')
WaterIndex = FindGlycol('WATER')
SteamSatEnthalpy = GetSatEnthalpyRefrig('STEAM',TSteam,1.0d0,RefrigerantIndex,CalledFrom)
WaterSatEnthalpy = GetSatEnthalpyRefrig('STEAM',TSteam,0.0d0,RefrigerantIndex,CalledFrom)
WaterSpecHeatAvg = 0.5d0*(GetSpecificHeatGlycol('WATER',TSteam,WaterIndex,CalledFrom) + &
GetSpecificHeatGlycol('WATER',Tref,WaterIndex,CalledFrom))
NominalPower = Humidifier(HumNum)%NomCap &
* ((SteamSatEnthalpy-WaterSatEnthalpy) + WaterSpecHeatAvg*(TSteam-Tref))
IF (Humidifier(HumNum)%NomPower == AutoSize) THEN
Humidifier(HumNum)%NomPower = NominalPower
CALL ReportSizingOutput('Humidifier:Steam:Electric',Humidifier(HumNum)%Name, &
'Rated Power [W]', Humidifier(HumNum)%NomPower)
ELSEIF (Humidifier(HumNum)%NomPower >= 0.0d0 .and. Humidifier(HumNum)%NomCap > 0.0d0) THEN
IF (Humidifier(HumNum)%NomPower < NominalPower) THEN
CALL ShowWarningError('Humidifier:Steam:Electric: specified Rated Power is less than nominal Rated '// &
' Power for electric steam humidifier = '//TRIM(Humidifier(HumNum)%Name)//'. ')
CALL ShowContinueError(' specified Rated Power = '//TRIM(RoundSigDigits(Humidifier(HumNum)%NomPower,2)))
CALL ShowContinueError(' while expecting a minimum Rated Power = '//TRIM(RoundSigDigits(NominalPower,2)))
ENDIF
ELSE
CALL ShowWarningError('Humidifier:Steam:Electric: specified nominal capacity is zero '// &
' for electric steam humidifier = '//TRIM(Humidifier(HumNum)%Name)//'. ')
CALL ShowContinueError(' For zero rated capacity humidifier the rated power is zero.')
ENDIF
END IF
RETURN
END SUBROUTINE SizeHumidifier