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: | 2025-01-13 21:54:50 |  | 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