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) | :: | SolZen | |||
real(kind=r64), | intent(in) | :: | Altitude |
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.
REAL(r64) Function AbsoluteAirMass(SolZen, Altitude)
! FUNCTION INFORMATION:
! AUTHOR G. Barker
! DATE WRITTEN <unknown>
! MODIFIED na
! RE-ENGINEERED B. Griffith Jan 2004 F77 -> f90
! PURPOSE OF THIS FUNCTION:
! Returns absolute air mass
! METHODOLOGY EMPLOYED:
! <description>
! REFERENCES:
! na
! USE STATEMENTS:
USE DataGlobals, ONLY: DegToRadians
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! FUNCTION ARGUMENT DEFINITIONS:
REAL(r64), INTENT(IN) :: SolZen ! solar zenith angle (deg)
REAL(r64), INTENT(IN) :: Altitude ! site altitude (m)
! FUNCTION PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
! na
REAL(r64) :: AM ! air mass working variable
IF (SolZen.LT.89.9d0) THEN
AM = (Cos(SolZen * DegToRadians) + 0.5057d0 &
* (96.08d0 - SolZen)**(-1.634d0))**(-1.0d0)
AbsoluteAirMass = Exp(-0.0001184d0 * Altitude) * AM
ELSE
AbsoluteAirMass = 999.d0
! should maybe add a show warning msg.
ENDIF
END FUNCTION AbsoluteAirMass