module radheat 4,4 !----------------------------------------------------------------------- ! ! Purpose: Provide an interface to convert shortwave and longwave ! radiative heating terms into net heating. ! ! This module provides a hook to allow incorporating additional ! radiative terms (eUV heating and nonLTE longwave cooling). ! ! Original version: B.A. Boville !----------------------------------------------------------------------- use shr_kind_mod, only: r8 => shr_kind_r8 use ppgrid, only: pcols, pver use physics_types, only: physics_state, physics_ptend, physics_ptend_init use phys_buffer, only: pbuf_size_max, pbuf_fld implicit none private save ! Public interfaces public & radheat_defaultopts, &! radheat_setopts, &! radheat_init, &! radheat_timestep_init, &! radheat_tend ! return net radiative heating !=============================================================================== contains !=============================================================================== subroutine radheat_defaultopts( & 1,1 nlte_use_mo_out, itgcmcyc_out, cftgcm_out) !----------------------------------------------------------------------- ! Purpose: Return default runtime options !----------------------------------------------------------------------- use chemistry, only: chem_is logical, intent(out), optional :: nlte_use_mo_out integer, intent(out), optional :: itgcmcyc_out character(len=*), intent(out), optional :: cftgcm_out !----------------------------------------------------------------------- end subroutine radheat_defaultopts !================================================================================================ subroutine radheat_setopts( & 1 nlte_use_mo_in, itgcmcyc_in, cftgcm_in) !----------------------------------------------------------------------- ! Purpose: Set runtime options !----------------------------------------------------------------------- logical, intent(in), optional :: nlte_use_mo_in integer, intent(in), optional :: itgcmcyc_in character(len=*), intent(in), optional :: cftgcm_in !----------------------------------------------------------------------- end subroutine radheat_setopts !================================================================================================ subroutine radheat_init(hypm) 1,1 use pmgrid, only: plev real(r8), intent(in) :: hypm(plev) end subroutine radheat_init !================================================================================================ subroutine radheat_timestep_init 1 end subroutine radheat_timestep_init !================================================================================================ subroutine radheat_tend(state, pbuf, ptend, qrl, qrs, fsns, & 1,1 fsnt, flns, flnt, asdir, net_flx) !----------------------------------------------------------------------- ! Compute net radiative heating from qrs and qrl, and the associated net ! boundary flux. !----------------------------------------------------------------------- ! Arguments type(physics_state), intent(in) :: state ! Physics state variables type(pbuf_fld), intent(in), dimension(pbuf_size_max) :: pbuf ! only exists for waccm call type(physics_ptend), intent(out) :: ptend ! indivdual parameterization tendencie real(r8), intent(in) :: qrl(pcols,pver) ! longwave heating real(r8), intent(in) :: qrs(pcols,pver) ! shortwave heating real(r8), intent(in) :: fsns(pcols) ! Surface solar absorbed flux real(r8), intent(in) :: fsnt(pcols) ! Net column abs solar flux at model top real(r8), intent(in) :: flns(pcols) ! Srf longwave cooling (up-down) flux real(r8), intent(in) :: flnt(pcols) ! Net outgoing lw flux at model top real(r8), intent(in) :: asdir(pcols) ! shortwave, direct albedo real(r8), intent(out) :: net_flx(pcols) ! Local variables integer :: i integer :: ncol !----------------------------------------------------------------------- ncol = state%ncol call physics_ptend_init(ptend) ptend%name = 'radheat' ptend%s(:ncol,:) = (qrs(:ncol,:) + qrl(:ncol,:)) ptend%ls = .TRUE. do i = 1, ncol net_flx(i) = fsnt(i) - fsns(i) - flnt(i) + flns(i) end do end subroutine radheat_tend end module radheat