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 | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | TempSurf1 | |||
real(kind=r64), | intent(in) | :: | TempSurf2 | |||
real(kind=r64), | intent(in) | :: | AirGap | |||
real(kind=r64), | intent(in) | :: | CosTilt | |||
real(kind=r64), | intent(in) | :: | SinTilt |
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.
FUNCTION CalcConvCoeffBetweenPlates(TempSurf1,TempSurf2,AirGap,CosTilt,SinTilt) RESULT (hConvCoef)
! FUNCTION INFORMATION:
! AUTHOR Bereket Nigusse, FSEC/UCF
! DATE WRITTEN February 2012
! MODIFIED
! RE-ENGINEERED
! PURPOSE OF THIS FUNCTION:
! Calculates the converction coefficient for an enclosure between two paralel surfaces
! at different temperatures.
!
! METHODOLOGY EMPLOYED:
! Uses empirical correlation by Holands et al (1976) to determine free convection between
! inclined parallel plates at different temperature.
!
! REFERENCES:
! Duffie, J. A., and Beckman, W. A. Solar Engineering of Thermal Processes, 2nd. Edition.
! Wiley-Interscience: New York (1991).
! Property data for air at atmospheric pressure were taken from Table A-11, Yunus A Cengel
! Heat Transfer: A Practical Approach, McGraw-Hill, Boston, MA, 1998.
! USE STATEMENTS:
USE DataGlobals, ONLY: StefanBoltzmann, KelvinConv
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64), INTENT(IN) :: TempSurf1 ! temperature of surface 1
REAL(r64), INTENT(IN) :: TempSurf2 ! temperature of surface 1
REAL(r64), INTENT(IN) :: SinTilt ! sine of surface tilt angle relative to the horizontal
REAL(r64), INTENT(IN) :: CosTilt ! cosine of surface tilt angle relative to the horizontal
REAL(r64), INTENT(IN) :: AirGap ! characteristic length [m]
! FUNCTION PARAMETER DEFINITIONS:
REAL(r64), PARAMETER :: gravity = 9.806d0 ! gravitational constant [m/s^2]
INTEGER, PARAMETER :: NumOfPropDivisions = 11
REAL(r64), PARAMETER, DIMENSION(NumOfPropDivisions) :: Temps= & ! Temperature, in C
(/-23.15d0,6.85d0,16.85d0,24.85d0,26.85d0,36.85d0,46.85d0,56.85d0,66.85d0,76.85d0,126.85d0/)
REAL(r64), PARAMETER, DIMENSION(NumOfPropDivisions) :: Mu= & ! Viscosity, in kg/(m.s)
(/.0000161d0,.0000175d0,.000018d0,.0000184d0,.0000185d0,.000019d0,.0000194d0,.0000199d0, &
.0000203d0,.0000208d0,.0000229d0/)
REAL(r64), PARAMETER, DIMENSION(NumOfPropDivisions) :: Conductivity= & ! Conductivity, in W/mK
(/.0223d0,.0246d0,.0253d0,.0259d0,.0261d0,.0268d0,.0275d0,.0283d0,.0290d0,.0297d0,.0331d0/)
REAL(r64), PARAMETER, DIMENSION(NumOfPropDivisions) :: Pr= & ! Prandtl number (dimensionless)
(/.724d0,.717d0,.714d0,.712d0,.712d0,.711d0,.71d0,.708d0,.707d0,.706d0,.703d0/)
REAL(r64), PARAMETER, DIMENSION(NumOfPropDivisions) :: Density= & ! Density, in kg/m3
(/1.413d0,1.271d0,1.224d0,1.186d0,1.177d0,1.143d0,1.110d0,1.076d0,1.043d0,1.009d0,0.883d0/)
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: CondOfAir ! thermal conductivity of air [W/mK]
REAL(r64) :: VisDOfAir ! dynamic viscosity of air [kg/m.s]
REAL(r64) :: DensOfAir ! density of air [W/mK]
REAL(r64) :: PrOfAir ! Prantle number of air [W/mK]
REAL(r64) :: VolExpAir ! volumetric expansion of air [1/K]
REAL(r64) :: RaNumCosTilt ! Rayleigh number of air times cosine of collector tilt []
REAL(r64) :: DeltaT ! temperature difference between absober plate and water
REAL(r64) :: Tref ! reference temperature for fluid properties [c]
REAL(r64) :: RaNum ! Rayleigh number
! REAL(r64) :: GrNum ! Grashof number
REAL(r64) :: NuL ! Nusselt number
REAL(r64) :: hConvCoef ! convection coefficient
INTEGER :: Index ! property range index
REAL(r64) :: InterpFrac ! fraction
! Flow
DeltaT = Abs(TempSurf1 - TempSurf2)
Tref = 0.5d0 * (TempSurf1 + TempSurf2)
Index = 1
DO WHILE (Index <= NumOfPropDivisions)
IF (Tref < Temps(Index)) EXIT ! DO loop
Index = Index + 1
END DO
! Initialize thermal properties of air
IF (Index == 1) THEN
VisDOfAir = Mu(Index)
CondOfAir = Conductivity(Index)
PrOfAir = Pr(Index)
DensOfAir = Density(Index)
ELSE IF (Index > NumOfPropDivisions) THEN
Index = NumOfPropDivisions
VisDOfAir = Mu(Index)
CondOfAir = Conductivity(Index)
PrOfAir = Pr(Index)
DensOfAir = Density(Index)
ELSE
InterpFrac = (Tref-Temps(Index-1))/(Temps(Index)-Temps(Index-1))
VisDOfAir = Mu(Index-1) + InterpFrac*(Mu(Index)-Mu(Index-1))
CondOfAir = Conductivity(Index-1) + InterpFrac*(Conductivity(Index)-Conductivity(Index-1))
PrOfAir = Pr(Index-1) + InterpFrac*(Pr(Index)-Pr(Index-1))
DensOfAir = Density(Index-1) + InterpFrac*(Density(Index)-Density(Index-1))
END IF
VolExpAir = 1.0d0 / (Tref + KelvinConv)
RaNum = gravity*(DensOfAir**2)*VolExpAir*PrOfAir*DeltaT*(AirGap**3)/(VisDOfAir**2)
RaNumCosTilt = RaNum * CosTilt
IF (RaNum == 0.0d0 ) Then
NuL = 0.0d0
ELSE
IF (RaNumCosTilt > 1708.d0) THEN
NuL = 1.44d0 * (1.0d0 - 1708.d0*(SinTilt**1.6d0)/(RaNum*CosTilt)) * (1.d0 - 1708.0d0/RaNumCosTilt)
ELSE
NuL = 0.0d0
ENDIF
ENDIF
IF ( RaNumCosTilt .GT. 5830.d0 ) THEN
NuL = NuL + (RaNumCosTilt / 5830.d0 - 1.0d0)**(1.0d0/3.0d0)
ENDIF
NuL = 1.0d0 + NuL
hConvCoef = NuL * CondOfAir / AirGap
RETURN
END FUNCTION CalcConvCoeffBetweenPlates