!================================================================================================ ! This is the 'none' chemistry module. ! Most of the routines return without doing anything. !================================================================================================ module chemistry 14,8 use shr_kind_mod, only: r8 => shr_kind_r8 use physics_types, only: physics_state, physics_ptend use ppgrid, only: begchunk, endchunk, pcols use phys_buffer, only: pbuf_size_max, pbuf_fld implicit none private save ! ! Public interfaces ! public chem_is ! identify which chemistry is being used public chem_register ! register consituents public chem_is_active ! returns true if this package is active (ghg_chem=.true.) public chem_implements_cnst ! returns true if consituent is implemented by this package public chem_init_cnst ! initialize mixing ratios if not read from initial file public chem_init ! initialize (history) variables public chem_timestep_init ! time interpolate chemical loss frequencies public chem_timestep_tend ! interface to tendency computation public chem_final public chem_write_restart public chem_read_restart public chem_init_restart public chem_readnl ! read chem namelist interface chem_write_restart 1 module procedure chem_write_restart_bin module procedure chem_write_restart_pio end interface interface chem_read_restart 1 module procedure chem_read_restart_bin module procedure chem_read_restart_pio end interface ! Private data !================================================================================================ contains !================================================================================================ logical function chem_is (name) 8 character(len=*), intent(in) :: name chem_is = .false. if (name == 'none' ) then chem_is = .true. end if end function chem_is !================================================================================================ subroutine chem_register 1 !----------------------------------------------------------------------- ! ! Purpose: register advected constituents for parameterized greenhouse gas chemistry ! !----------------------------------------------------------------------- end subroutine chem_register !================================================================================================ subroutine chem_readnl(nlfile) 1 ! args character(len=*), intent(in) :: nlfile ! filepath for file containing namelist input end subroutine chem_readnl !================================================================================================ function chem_is_active() 1 !----------------------------------------------------------------------- logical :: chem_is_active !----------------------------------------------------------------------- chem_is_active = .false. end function chem_is_active !================================================================================================ function chem_implements_cnst(name) 1 !----------------------------------------------------------------------- ! ! Purpose: return true if specified constituent is implemented by this package ! ! Author: B. Eaton ! !----------------------------------------------------------------------- implicit none !-----------------------------Arguments--------------------------------- character(len=*), intent(in) :: name ! constituent name logical :: chem_implements_cnst ! return value chem_implements_cnst = .false. end function chem_implements_cnst !=============================================================================== subroutine chem_init(phys_state) 1,1 !----------------------------------------------------------------------- ! ! Purpose: initialize parameterized greenhouse gas chemistry ! (declare history variables) ! !----------------------------------------------------------------------- use cam_history, only: addfld, add_default, phys_decomp type(physics_state), intent(in):: phys_state(begchunk:endchunk) end subroutine chem_init !=============================================================================== subroutine chem_timestep_init(phys_state) 1,1 use time_manager, only: get_curr_date, get_perp_date, get_curr_calday, & is_perpetual type(physics_state), intent(in):: phys_state(begchunk:endchunk) end subroutine chem_timestep_init !=============================================================================== subroutine chem_timestep_tend( state, ptend, srfflx_state2d, surface_state2d, dt, pbuf, fh2o, fsds ) 1,2 use cam_history, only: outfld use camsrfexch_types, only: srfflx_state, surface_state !----------------------------------------------------------------------- ! ! Arguments: ! real(r8), intent(in) :: dt ! time step type(physics_state), intent(in) :: state ! Physics state variables type(physics_ptend), intent(inout) :: ptend ! indivdual parameterization tendencies type(srfflx_state), intent(inout) :: srfflx_state2d type(surface_state), intent(in) :: surface_state2d real(r8), intent(out) :: fh2o(pcols) ! h2o flux to balance source from chemistry type(pbuf_fld), intent(in) :: pbuf(pbuf_size_max) real(r8), intent(in) :: fsds(pcols) ! longwave down at sfc return end subroutine chem_timestep_tend !=============================================================================== subroutine chem_init_cnst(name, q, gcid) 1 character(len=*), intent(in) :: name ! constituent name real(r8), intent(out) :: q(:,:) ! mass mixing ratio (gcol, plev) integer, intent(in) :: gcid(:) ! global column id return end subroutine chem_init_cnst !=============================================================================== subroutine chem_final 1 return end subroutine chem_final !=============================================================================== subroutine chem_write_restart_bin( nrg ) 1 implicit none integer,intent(in) :: nrg ! Unit number return end subroutine chem_write_restart_bin !=============================================================================== subroutine chem_read_restart_bin( nrg ) 1 implicit none integer,intent(in) :: nrg ! Unit number return end subroutine chem_read_restart_bin !=============================================================================== subroutine chem_write_restart_pio( File ) 1 use pio, only : file_desc_t type(file_desc_t) :: File return end subroutine chem_write_restart_pio !=============================================================================== subroutine chem_read_restart_pio( File ) 1 use pio, only : file_desc_t type(file_desc_t) :: File return end subroutine chem_read_restart_pio !=============================================================================== subroutine chem_init_restart(File) 1 use pio, only : file_desc_t type(file_desc_t) :: File return end subroutine chem_init_restart end module chemistry