The dyn_mpas_get_variable_pointer_*
subroutines are a family of accessor
subroutines for drawing the REFERENCE of an internal variable from
MPAS dynamical core instance. The get_variable_pointer
generic interface
should be used instead of the specific ones.
WARNING:
USE OF THIS SUBROUTINE FAMILY IS HIGHLY DISCOURAGED BECAUSE THE INTERNAL
STATES OF MPAS DYNAMICAL CORE INSTANCE COULD BE MODIFIED THROUGH THE
RETURNED POINTER. THESE ARE UNCHARTED WATERS SO BE SURE WHAT YOU ARE
DOING.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mpas_dynamical_core_type), | intent(in) | :: | self | |||
character(len=strkind), | intent(out), | pointer | :: | variable_pointer | ||
character(len=*), | intent(in) | :: | pool_name | |||
character(len=*), | intent(in) | :: | variable_name | |||
integer, | intent(in), | optional | :: | time_level |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(mpas_pool_type), | private, | pointer | :: | mpas_pool | |||
character(len=*), | private, | parameter | :: | subname | = | 'dyn_mpas_subdriver::dyn_mpas_get_variable_pointer_c0' |
subroutine dyn_mpas_get_variable_pointer_c0(self, variable_pointer, pool_name, variable_name, time_level) ! Module(s) from MPAS. use mpas_derived_types, only: mpas_pool_type use mpas_pool_routines, only: mpas_pool_get_array, mpas_pool_get_config class(mpas_dynamical_core_type), intent(in) :: self character(strkind), pointer, intent(out) :: variable_pointer character(*), intent(in) :: pool_name character(*), intent(in) :: variable_name integer, optional, intent(in) :: time_level character(*), parameter :: subname = 'dyn_mpas_subdriver::dyn_mpas_get_variable_pointer_c0' type(mpas_pool_type), pointer :: mpas_pool nullify(mpas_pool) call self % get_pool_pointer(mpas_pool, pool_name) nullify(variable_pointer) if (trim(adjustl(pool_name)) == 'cfg') then ! Special case for config-related variables. They must be retrieved by calling `mpas_pool_get_config`. call mpas_pool_get_config(mpas_pool, trim(adjustl(variable_name)), variable_pointer) else call mpas_pool_get_array(mpas_pool, trim(adjustl(variable_name)), variable_pointer, timelevel=time_level) end if if (.not. associated(variable_pointer)) then call self % model_error('Failed to find variable "' // trim(adjustl(variable_name)) // '"', subname, __LINE__) end if nullify(mpas_pool) end subroutine dyn_mpas_get_variable_pointer_c0