LCOV - code coverage report
Current view: | top level - utils - orbit.F90 (source / functions) |  |  | Hit | Total | Coverage
Test: | coverage.info |  | Lines: | 6 | 8 | 75.0 %
Date: | 2025-01-13 21:54:50 |  | Functions: | 1 | 1 | 100.0 %

              Line data    Source code
           1             : module orbit
           2             :
           3             : contains
           4             :
           5     1495368 : subroutine zenith(calday  ,clat    , clon   ,coszrs  ,ncol, dt_avg, uniform_angle    )
           6             :
           7             : !-----------------------------------------------------------------------
           8             : !
           9             : ! Purpose:
          10             : ! Compute cosine of solar zenith angle for albedo and radiation
          11             : !   computations.
          12             : !
          13             : ! Method:
          14             : ! <Describe the algorithm(s) used in the routine.>
          15             : ! <Also include any applicable external references.>
          16             : !
          17             : ! Author: J. Kiehl
          18             : !
          19             : !-----------------------------------------------------------------------
          20             :    use shr_kind_mod, only: r8 => shr_kind_r8
          21             :    use shr_orb_mod
          22             :    use cam_control_mod, only: lambm0, obliqr, eccen, mvelpp
          23             :    implicit none
          24             :
          25             : !------------------------------Arguments--------------------------------
          26             : !
          27             : ! Input arguments
          28             : !
          29             :    integer, intent(in) :: ncol                 ! number of positions
          30             :    real(r8), intent(in) :: calday              ! Calendar day, including fraction
          31             :    real(r8), intent(in) :: clat(ncol)          ! Current centered latitude (radians)
          32             :    real(r8), intent(in) :: clon(ncol)          ! Centered longitude (radians)
          33             :    real(r8), intent(in), optional :: dt_avg    ! if present, time step to use for the shr_orb_cosz calculation
          34             :    real(r8), intent(in), optional :: uniform_angle    ! if present, then call coszrs with a uniform angle
          35             :
          36             : !
          37             : ! Output arguments
          38             : !
          39             :    real(r8), intent(out) :: coszrs(ncol)       ! Cosine solar zenith angle
          40             : !
          41             : !---------------------------Local variables-----------------------------
          42             : !
          43             :    integer i         ! Position loop index
          44             :    real(r8) delta    ! Solar declination angle  in radians
          45             :    real(r8) eccf     ! Earth orbit eccentricity factor
          46             : !
          47             : !-----------------------------------------------------------------------
          48             : !
          49             :    call shr_orb_decl (calday  ,eccen     ,mvelpp  ,lambm0  ,obliqr  , &
          50     1495368 :                       delta   ,eccf      )
          51             : !
          52             : ! Compute local cosine solar zenith angle,
          53             : !
          54             :
          55     1495368 :    if (present(uniform_angle)) then
          56           0 :       do i=1,ncol
          57           0 :          coszrs(i) = shr_orb_cosz( calday, clat(i), clon(i), delta, dt_avg, uniform_angle=uniform_angle )
          58             :       end do
          59             :    else
          60    24969168 :       do i=1,ncol
          61    24969168 :          coszrs(i) = shr_orb_cosz( calday, clat(i), clon(i), delta, dt_avg )
          62             :       end do
          63             :    end if
          64     1495368 : end subroutine zenith
          65             : end module orbit

Generated by: LCOV version 1.14