LCOV - code coverage report
Current view: top level - chemistry/pp_none - chemistry.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 26 46 56.5 %
Date: 2024-12-17 17:57:11 Functions: 10 17 58.8 %

          Line data    Source code
       1             : !================================================================================================
       2             : ! This is the 'none' chemistry module.
       3             : ! Most of the routines return without doing anything.
       4             : !================================================================================================
       5             : 
       6             : module chemistry
       7             :   use shr_kind_mod,        only: r8 => shr_kind_r8
       8             :   use physics_types,       only: physics_state, physics_ptend
       9             :   use ppgrid,              only: begchunk, endchunk, pcols
      10             :   
      11             : 
      12             :   implicit none
      13             :   private
      14             :   save
      15             :   !
      16             :   ! Public interfaces
      17             :   !
      18             :   public :: chem_is                        ! identify which chemistry is being used
      19             :   public :: chem_register                  ! register consituents
      20             :   public :: chem_is_active                 ! returns true if this package is active (ghg_chem=.true.)
      21             :   public :: chem_implements_cnst           ! returns true if consituent is implemented by this package
      22             :   public :: chem_init_cnst                 ! initialize mixing ratios if not read from initial file
      23             :   public :: chem_init                      ! initialize (history) variables
      24             :   public :: chem_timestep_init             ! time interpolate chemical loss frequencies
      25             :   public :: chem_timestep_tend             ! interface to tendency computation
      26             :   public :: chem_final
      27             :   public :: chem_write_restart
      28             :   public :: chem_read_restart
      29             :   public :: chem_init_restart
      30             :   public :: chem_readnl                    ! read chem namelist 
      31             :   public :: chem_reset_fluxes
      32             :   public :: chem_emissions
      33             : 
      34             :   interface chem_write_restart
      35             :      module procedure chem_write_restart_bin
      36             :      module procedure chem_write_restart_pio
      37             :   end interface
      38             :   interface chem_read_restart
      39             :      module procedure chem_read_restart_bin
      40             :      module procedure chem_read_restart_pio
      41             :   end interface
      42             : 
      43             :   ! Private data
      44             : 
      45             : !================================================================================================
      46             : contains
      47             : !================================================================================================
      48             : 
      49     1489176 :   logical function chem_is (name)
      50             : 
      51             :     character(len=*), intent(in) :: name
      52             : 
      53           0 :     chem_is = .false.
      54           0 :     if (name == 'none' ) then
      55           0 :        chem_is = .true.
      56             :     end if
      57             : 
      58           0 :   end function chem_is
      59             : 
      60             : !================================================================================================
      61             : 
      62        1536 :   subroutine chem_register
      63             :     use aero_model, only : aero_model_register
      64             :     !----------------------------------------------------------------------- 
      65             :     ! 
      66             :     ! Purpose: register advected constituents for parameterized greenhouse gas chemistry
      67             :     ! 
      68             :     !-----------------------------------------------------------------------
      69             : 
      70             :    ! for prescribed aerosols
      71        1536 :     call aero_model_register()
      72             : 
      73        1536 :   end subroutine chem_register
      74             : 
      75             : !================================================================================================
      76             : 
      77        1536 :   subroutine chem_readnl(nlfile)
      78             : 
      79             :     ! args
      80             : 
      81             :     character(len=*), intent(in) :: nlfile  ! filepath for file containing namelist input
      82             : 
      83             : 
      84        1536 :   end subroutine chem_readnl
      85             : 
      86             : !================================================================================================
      87             : 
      88     1489176 :   function chem_is_active()
      89             :     !-----------------------------------------------------------------------
      90             :     logical :: chem_is_active
      91             :     !-----------------------------------------------------------------------
      92     1489176 :     chem_is_active = .false.
      93     1489176 :   end function chem_is_active
      94             : 
      95             : !================================================================================================
      96             : 
      97           0 :   function chem_implements_cnst(name)
      98             :     !----------------------------------------------------------------------- 
      99             :     ! 
     100             :     ! Purpose: return true if specified constituent is implemented by this package
     101             :     ! 
     102             :     ! Author: B. Eaton
     103             :     ! 
     104             :     !-----------------------------------------------------------------------
     105             :     implicit none
     106             :     !-----------------------------Arguments---------------------------------
     107             : 
     108             :     character(len=*), intent(in) :: name   ! constituent name
     109             :     logical :: chem_implements_cnst        ! return value
     110             : 
     111           0 :     chem_implements_cnst = .false.
     112             : 
     113           0 :   end function chem_implements_cnst
     114             : 
     115             : !===============================================================================
     116             : 
     117        1536 :   subroutine chem_init(phys_state, pbuf2d)
     118             :     !----------------------------------------------------------------------- 
     119             :     ! 
     120             :     ! Purpose: initialize parameterized greenhouse gas chemistry
     121             :     !          (declare history variables)
     122             :     ! 
     123             :     !-----------------------------------------------------------------------
     124             :     use physics_buffer, only : physics_buffer_desc
     125             :     use aero_model,     only : aero_model_init
     126             : 
     127             :     type(physics_state), intent(in):: phys_state(begchunk:endchunk)
     128             :     type(physics_buffer_desc), pointer :: pbuf2d(:,:)
     129             : 
     130             :    ! for prescribed aerosols
     131        1536 :     call aero_model_init(pbuf2d)
     132             : 
     133        1536 :   end subroutine chem_init
     134             : 
     135             : !===============================================================================
     136             : 
     137      370944 :   subroutine chem_timestep_init(phys_state, pbuf2d)
     138        1536 :     use physics_buffer, only : physics_buffer_desc
     139             :     use time_manager, only: get_curr_date, get_perp_date, get_curr_calday, &
     140             :          is_perpetual
     141             :     type(physics_state), intent(in):: phys_state(begchunk:endchunk)                 
     142             :     type(physics_buffer_desc), pointer :: pbuf2d(:,:)
     143             : 
     144             : 
     145             : 
     146      370944 :   end subroutine chem_timestep_init
     147             : 
     148             : !===============================================================================
     149             : 
     150           0 :   subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o)
     151      370944 :     use physics_buffer,           only: physics_buffer_desc
     152             :     use cam_history,      only: outfld
     153             :     use camsrfexch,       only: cam_in_t, cam_out_t
     154             :     !-----------------------------------------------------------------------
     155             :     !
     156             :     ! Arguments:
     157             :     !
     158             :     real(r8),            intent(in)    :: dt          ! time step
     159             :     type(physics_state), intent(in)    :: state       ! Physics state variables
     160             :     type(physics_ptend), intent(out)   :: ptend       ! indivdual parameterization tendencies
     161             :     type(cam_in_t),      intent(inout) :: cam_in
     162             :     type(cam_out_t),     intent(in)    :: cam_out
     163             :     type(physics_buffer_desc), pointer :: pbuf(:)
     164             :     real(r8), optional,  intent(out)   :: fh2o(pcols) ! h2o flux to balance source from chemistry
     165             :     
     166           0 :     return
     167           0 :   end subroutine chem_timestep_tend
     168             : 
     169             : !===============================================================================
     170             : 
     171           0 :   subroutine chem_init_cnst(name, latvals, lonvals, mask, q)
     172             : 
     173             :     character(len=*), intent(in)  :: name       ! constituent name
     174             :     real(r8),         intent(in)  :: latvals(:) ! lat in degrees (ncol)
     175             :     real(r8),         intent(in)  :: lonvals(:) ! lon in degrees (ncol)
     176             :     logical,          intent(in)  :: mask(:)    ! Only initialize where .true.
     177             :     real(r8),         intent(out) :: q(:,:)     ! kg tracer/kg dry air (gcol, plev
     178             : 
     179           0 :     return
     180           0 :   end subroutine chem_init_cnst
     181             : 
     182             : !===============================================================================
     183        1536 :   subroutine chem_final
     184        1536 :     return
     185             :   end subroutine chem_final
     186             : !===============================================================================
     187           0 :   subroutine chem_write_restart_bin( nrg )
     188             :     implicit none
     189             :     integer,intent(in) :: nrg     ! Unit number
     190           0 :     return
     191             :   end subroutine chem_write_restart_bin
     192             : !===============================================================================
     193           0 :   subroutine chem_read_restart_bin( nrg )
     194             :     implicit none
     195             :     integer,intent(in) :: nrg     ! Unit number
     196           0 :     return
     197             :   end subroutine chem_read_restart_bin
     198             : !===============================================================================
     199        1536 :   subroutine chem_write_restart_pio( File )
     200             :     use pio, only : file_desc_t
     201             :     type(file_desc_t) :: File
     202        1536 :     return
     203             :   end subroutine chem_write_restart_pio
     204             : !===============================================================================
     205         768 :   subroutine chem_read_restart_pio( File )
     206             :     use pio, only : file_desc_t
     207             :     type(file_desc_t) :: File
     208         768 :     return
     209             :   end subroutine chem_read_restart_pio
     210             : !===============================================================================
     211        1536 :   subroutine chem_init_restart(File)
     212             :     use pio, only : file_desc_t
     213             :     type(file_desc_t) :: File
     214        1536 :     return
     215             :   end subroutine chem_init_restart
     216             : !================================================================================
     217           0 :   subroutine chem_reset_fluxes( fptr, cam_in )
     218             :     use camsrfexch,          only : cam_in_t     
     219             : 
     220             :     real(r8), pointer             :: fptr(:,:)        ! pointer into    array data
     221             :     type(cam_in_t), intent(inout) :: cam_in(begchunk:endchunk)
     222             : 
     223           0 :   end subroutine chem_reset_fluxes
     224             : !================================================================================
     225     1489176 :   subroutine chem_emissions( state, cam_in, pbuf )
     226           0 :     use camsrfexch,       only: cam_in_t     
     227             :     use physics_buffer,   only: physics_buffer_desc
     228             : 
     229             :     ! Arguments:
     230             : 
     231             :     type(physics_state),    intent(in)    :: state   ! Physics state variables
     232             :     type(cam_in_t),         intent(inout) :: cam_in  ! import state
     233             :     type(physics_buffer_desc), pointer    :: pbuf(:) ! Physics buffer in chunk, for HEMCO
     234             : 
     235     1489176 :   end subroutine chem_emissions
     236             : end module chemistry

Generated by: LCOV version 1.14