dyn_inquire_advected_constituent_index Subroutine

subroutine dyn_inquire_advected_constituent_index()

Uses

    • shr_kind_mod
    • string_utils
    • cam_logfile
    • cam_constituents
    • cam_abortutils
  • proc~~dyn_inquire_advected_constituent_index~~UsesGraph proc~dyn_inquire_advected_constituent_index dyn_inquire_advected_constituent_index cam_abortutils cam_abortutils proc~dyn_inquire_advected_constituent_index->cam_abortutils cam_constituents cam_constituents proc~dyn_inquire_advected_constituent_index->cam_constituents cam_logfile cam_logfile proc~dyn_inquire_advected_constituent_index->cam_logfile shr_kind_mod shr_kind_mod proc~dyn_inquire_advected_constituent_index->shr_kind_mod string_utils string_utils proc~dyn_inquire_advected_constituent_index->string_utils

CAM-SIMA holds information about all constituents. However, MPAS dynamical core only knows about the advected ones. Inquire the index mapping for constituents advected by MPAS dynamical core. Save it as the advected_constituent_index lookup table, which serves as the authoritative source for mapping an index within the set of advected constituents to an index within the set of all constituents. (KCW, 2026-03-25)

Arguments

None

Calls

proc~~dyn_inquire_advected_constituent_index~~CallsGraph proc~dyn_inquire_advected_constituent_index dyn_inquire_advected_constituent_index check_allocate check_allocate proc~dyn_inquire_advected_constituent_index->check_allocate const_is_advected const_is_advected proc~dyn_inquire_advected_constituent_index->const_is_advected interface~dyn_debug_print dyn_debug_print proc~dyn_inquire_advected_constituent_index->interface~dyn_debug_print stringify stringify proc~dyn_inquire_advected_constituent_index->stringify proc~dyn_debug_print dyn_debug_print interface~dyn_debug_print->proc~dyn_debug_print proc~dyn_debug_print->stringify

Called by

proc~~dyn_inquire_advected_constituent_index~~CalledByGraph proc~dyn_inquire_advected_constituent_index dyn_inquire_advected_constituent_index proc~dyn_init dyn_init proc~dyn_init->proc~dyn_inquire_advected_constituent_index interface~dyn_init dyn_init interface~dyn_init->proc~dyn_init

Variables

Type Visibility Attributes Name Initial
character(len=len_cx), private :: cerr
integer, private :: i
integer, private :: ierr
integer, private :: j
character(len=*), private, parameter :: subname = 'dyn_comp::dyn_inquire_advected_constituent_index'

Source Code

    subroutine dyn_inquire_advected_constituent_index()
        ! Module(s) from CAM-SIMA.
        use cam_abortutils, only: check_allocate
        use cam_constituents, only: const_is_advected, &
                                    num_constituents, num_advected
        use cam_logfile, only: debugout_debug
        use string_utils, only: stringify
        ! Module(s) from CESM Share.
        use shr_kind_mod, only: len_cx => shr_kind_cx

        character(*), parameter :: subname = 'dyn_comp::dyn_inquire_advected_constituent_index'
        character(len_cx) :: cerr
        integer :: i, j
        integer :: ierr

        call dyn_debug_print(debugout_debug, subname // ' entered')

        ! This is a protected module variable.
        allocate(advected_constituent_index(num_advected), errmsg=cerr, stat=ierr)
        call check_allocate(ierr, subname, 'advected_constituent_index(num_advected)', &
            file='dyn_comp', line=__LINE__, errmsg=trim(adjustl(cerr)))

        j = 1

        do i = 1, num_constituents
            ! Skip non-advected constituents.
            if (const_is_advected(i)) then
                advected_constituent_index(j) = i

                j = j + 1
            end if
        end do

        call dyn_debug_print(debugout_debug, 'advected_constituent_index = [' // &
            stringify(advected_constituent_index) // ']')

        call dyn_debug_print(debugout_debug, subname // ' completed')
    end subroutine dyn_inquire_advected_constituent_index