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.
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.
FUNCTION CalcSolarFlux()
! FUNCTION INFORMATION:
! AUTHOR Simon Rees
! DATE WRITTEN August 2002
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This is used to calculate the net solar flux absorbed by the pond.
! METHODOLOGY EMPLOYED:
! This is calculated from basic optical formula using the extinction
! coefficient of the pond as the main parameter. This can be in a
! wide range: 0.13 - 7.5 in the literature depending on algae, suspended
! solids etc. ??
! REFERENCES:
! Duffie, J.A. and W.A. Beckman, 1991. Solar Engineering of Thermal
! Processes, 2 nd Edition. John Wiley and Sons.
! Chiasson, A. Advances in Modeling of Ground-Source Heat Pump Systems.
! M.S. Thesis, Oklahoma State University, December 1999.
! Chiasson, A.D., J.D. Spitler, S.J. Rees, M.D. Smith. 2000. A Model For
! Simulating The Performance Of A Shallow Pond As A Supplemental Heat
! Rejecter With Closed-Loop Ground-Source Heat Pump Systems.
! ASHRAE Transactions. 106(2):107-121.
! USE STATEMENTS:
USE DataEnvironment, ONLY : BeamSolarRad, DifSolarRad, SunIsUp, SOLCOS
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! FUNCTION ARGUMENT DEFINITIONS:
REAL(r64) :: CalcSolarFlux ! Function return variable
! FUNCTION PARAMETER DEFINITIONS:
REAL(r64), PARAMETER :: WaterRefIndex = 1.33d0 ! refractive index of water
REAL(r64), PARAMETER :: AirRefIndex = 1.0003d0 ! refractive index of air
REAL(r64), PARAMETER :: PondExtCoef = 0.3d0 ! extinction coefficent of water
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: IncidAngle ! angle of incidence of beam
REAL(r64) :: RefractAngle ! angle of refraction of beam
REAL(r64) :: Transmitance ! transmitted solar
REAL(r64) :: Reflectance ! reflectance
REAL(r64) :: Absorbtance ! absorbed solar
REAL(r64) :: ParallelRad ! parallel component of irradiation
REAL(r64) :: PerpendRad ! parallel component of irradiation
! FLOW:
! check for sun up.
IF (.not. SunIsUp) THEN
CalcSolarFlux = 0.0d0
RETURN
END IF
! get the incidence and reflection angles
IncidAngle = ACOS(SOLCOS(3))
RefractAngle = ASIN( SIN(IncidAngle) * AirRefIndex/WaterRefIndex)
! absorbed component: Tau_a
Absorbtance = EXP(-PondExtCoef*PondDepth/COS(RefractAngle))
! parallel and perpendicular components
ParallelRad = TAN(RefractAngle-IncidAngle)**2 / TAN(RefractAngle+IncidAngle)**2
PerpendRad = SIN(RefractAngle-IncidAngle)**2 / SIN(RefractAngle+IncidAngle)**2
! transmittance: Tau
Transmitance = 0.5d0*Absorbtance*((1.0d0-ParallelRad)/(1.0d0+ParallelRad)+(1.0d0-PerpendRad)/(1.0d0+PerpendRad))
! reflectance: Tau_a - Tau
Reflectance = Absorbtance - Transmitance
! apply reflectance to beam and diffuse solar to find flux
CalcSolarFlux = (1.0d0-Reflectance)*(SOLCOS(3)*BeamSolarRad + DifSolarRad)
RETURN
END FUNCTION CalcSolarFlux