LCOV - code coverage report
Current view: top level - atmos_phys/schemes/check_energy - check_energy_fix.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 8 8 100.0 %
Date: 2025-03-14 01:33:33 Functions: 1 1 100.0 %

          Line data    Source code
       1             : module check_energy_fix
       2             :   use ccpp_kinds, only: kind_phys
       3             : 
       4             :   implicit none
       5             :   private
       6             : 
       7             :   public  :: check_energy_fix_run
       8             : 
       9             : contains
      10             : 
      11             :   ! Add heating rate required for global mean total energy conservation
      12             : !> \section arg_table_check_energy_fix_run Argument Table
      13             : !! \htmlinclude arg_table_check_energy_fix_run.html
      14       80640 :   subroutine check_energy_fix_run(ncol, pver, pint, gravit, heat_glob, ptend_s, eshflx, scheme_name, errmsg, errflg)
      15             :     ! Input arguments
      16             :     integer,            intent(in)    :: ncol           ! number of atmospheric columns
      17             :     integer,            intent(in)    :: pver           ! number of vertical layers
      18             :     real(kind_phys),    intent(in)    :: pint(:,:)      ! interface pressure [Pa]
      19             :     real(kind_phys),    intent(in)    :: gravit         ! gravitational acceleration [m s-2]
      20             :     real(kind_phys),    intent(in)    :: heat_glob      ! global mean heating rate [J kg-1 s-1]
      21             :     real(kind_phys),    intent(out)   :: ptend_s(:,:)   ! physics tendency heating rate [J kg-1 s-1]
      22             :     real(kind_phys),    intent(out)   :: eshflx(:)      ! effective sensible heat flux [W m-2]
      23             :                                                         ! for check_energy_chng
      24             : 
      25             :     ! Output arguments
      26             :     character(len=64),  intent(out)   :: scheme_name    ! scheme name
      27             :     character(len=512), intent(out)   :: errmsg         ! error message
      28             :     integer,            intent(out)   :: errflg         ! error flag
      29             : 
      30             :     ! Local variables
      31             :     integer :: i
      32             : 
      33       80640 :     errmsg = ''
      34       80640 :     errflg = 0
      35             : 
      36             :     ! Set scheme name for check_energy_chng
      37       80640 :     scheme_name = "check_energy_fix"
      38             : 
      39             :     ! add (-) global mean total energy difference as heating
      40    87010560 :     ptend_s(:ncol, :pver) = heat_glob
      41             : 
      42             :     ! compute effective sensible heat flux
      43     1241856 :     do i = 1, ncol
      44     1241856 :       eshflx(i) = heat_glob * (pint(i,pver+1) - pint(i,1)) / gravit
      45             :     end do
      46       80640 :   end subroutine check_energy_fix_run
      47             : 
      48             : end module check_energy_fix

Generated by: LCOV version 1.14