module constituent_burden 2,1 !----------------------------------------------------------------------------------------- ! Purpose: subroutines to generate constituent burden history variables ! ! Revision history: ! 2005-12-21 K. Lindsay Original version !----------------------------------------------------------------------------------------- use constituents, only: pcnst implicit none ! Public interfaces public constituent_burden_init public constituent_burden_comp private character(len=10) :: burdennam(pcnst) ! name of burden history variables save !========================================================================================= contains !========================================================================================= subroutine constituent_burden_init 1,3 use cam_history, only: addfld, phys_decomp use constituents, only: cnst_name integer :: m do m = 2, pcnst burdennam(m) = 'TM'//cnst_name(m) call addfld (burdennam(m), 'kg/m2', 1, 'A', & trim(cnst_name(m)) // ' column burden', phys_decomp) end do end subroutine constituent_burden_init !========================================================================================= subroutine constituent_burden_comp(state) 1,7 use physics_types, only: physics_state use shr_kind_mod, only: r8 => shr_kind_r8 use constituents, only: cnst_type use ppgrid, only: pcols use physconst, only: rga use cam_history, only: outfld, hist_fld_active !----------------------------------------------------------------------- ! ! Arguments ! type(physics_state), intent(inout) :: state ! !---------------------------Local workspace----------------------------- real(r8) :: ftem(pcols) ! temporary workspace integer :: m, lchnk, ncol lchnk = state%lchnk ncol = state%ncol do m = 2, pcnst if (.not. hist_fld_active(burdennam(m))) cycle if (cnst_type(m) .eq. 'dry') then ftem(:ncol) = sum(state%q(:ncol,:,m) * state%pdeldry(:ncol,:), dim=2) * rga else ftem(:ncol) = sum(state%q(:ncol,:,m) * state%pdel(:ncol,:), dim=2) * rga endif call outfld (burdennam(m), ftem, pcols, lchnk) end do end subroutine constituent_burden_comp !========================================================================================= end module constituent_burden