OpticalDepth Function

private function OpticalDepth(time, lat, z) result(s)

Compute tthe atmospheric optical depth

References:

Kreith, F., and Kreider, J. F., 1978, Principles of Solar Engineering (New York: McGraw-Hill ).

Cartwright, T. J., 1993, Modelling the World in a Spreadsheet: Environmental Simulation on a Microcomputer (Baltimore: Johns Hopkins University Press).

LALIT KUMAR, ANDREW K. SKIDMORE & EDMUND KNOWLES (1997) Modelling topographic variation in solar radiation in a GIS environment, International Journal of Geographical Information Science, 11 :5, 475-497, DOI: 10.1080/136588197242266

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time
real(kind=float), intent(in) :: lat
real(kind=float), intent(in) :: z

Return Value real(kind=float)

optical depth


Variables

Type Visibility Attributes Name Initial
real(kind=float), public :: a1
real(kind=float), public :: presscorr
real(kind=float), public :: s0

Source Code

FUNCTION OpticalDepth &
!
(time, lat, z) &
!
RESULT (s)
    
IMPLICIT NONE

!Arguments with intent(in):
TYPE (DateTime), INTENT(in) :: time
REAL (KIND = float), INTENT(in) :: lat !latitude [radians]
REAL (KIND = float), INTENT(in) :: z !terrain elevation [m]

!local declarations:
REAL (KIND = float) :: s !!optical depth 
REAL (KIND = float) :: presscorr !atmospheric correction factor
REAL (KIND = float) :: s0 !depth at sea level
REAL (KIND = float) :: a1 ! sun elevation angle [radians]
!------------------------------------end of declarations-----------------------

!compute sun elevation angle
a1 = SunElevationAngle (time, lat)


!compute atmospheric optical depth at sea level
s0 = ( 1229. + (614. * SIN (a1) ) **2. )**0.5 -614. * SIN (a1)

!compute pressure correction factor
presscorr = ( ( 288.15 - 0.0065 * z ) / 288.15 ) ** 5.25588

!optical depth
s = s0 * presscorr

RETURN
END FUNCTION OpticalDepth