mod_get_indices Module

Module defining convenient index retrieval functions on various arrays.


Contents


Interfaces

public interface get_index

interface to retrieve the index of an element in an array.

Read more…
  • private pure function find_index_in_character_array(name, array) result(match_idx)

    Function to locate the index of a given character in a character array. Iterates over the elements and returns on the first hit, if no match was found zero is returned.

    Arguments

    TypeIntentOptionalAttributesName
    character(len=*), intent(in) :: name

    the name to search for

    character(len=*), intent(in) :: array(:)

    array with the names to search in

    Return Value integer

    index of first match

  • private pure function find_indices_in_character_array(names, array) result(match_idxs)

    Function to locate the indices of an array of characters in another character array. Returns the indices of the first hit, it no match was found zero is returned.

    Arguments

    TypeIntentOptionalAttributesName
    character(len=*), intent(in) :: names(:)

    the names to search for

    character(len=*), intent(in) :: array(:)

    array in which to sarch in

    Return Value integer(size(names))

    index of first matches

public interface get_subblock_index

  • private function transform_state_variable_to_subblock_index(variables, state_vector, dim_subblock, odd, edge) result(idxs)

    Transforms a given array of state variables to subblock indices. If odd is .true. returns the odd indices, otherwise the even indices. If edge equals "left", returns the indices corresponding to the left boundary block, if edge equals "right" returns indices for the right boundary block.

    Arguments

    TypeIntentOptionalAttributesName
    character(len=*), intent(in) :: variables(:)

    array of state vector variable names

    character(len=*), intent(in) :: state_vector(:)

    state vector to consider

    integer, intent(in) :: dim_subblock

    dimension of the subblock

    logical, intent(in) :: odd

    uses odd indices if .true. and even if .false.

    character(len=*), intent(in) :: edge

    which edge to consider, "left" for left boundary and "right" for right one

    Return Value integer,allocatable, (:)

    integer array containing the corresponding subblock indices


Functions

private pure function find_index_in_character_array(name, array) result(match_idx)

Function to locate the index of a given character in a character array. Iterates over the elements and returns on the first hit, if no match was found zero is returned.

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: name

the name to search for

character(len=*), intent(in) :: array(:)

array with the names to search in

Return Value integer

index of first match

private pure function find_indices_in_character_array(names, array) result(match_idxs)

Function to locate the indices of an array of characters in another character array. Returns the indices of the first hit, it no match was found zero is returned.

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: names(:)

the names to search for

character(len=*), intent(in) :: array(:)

array in which to sarch in

Return Value integer(size(names))

index of first matches

private function transform_state_variable_to_subblock_index(variables, state_vector, dim_subblock, odd, edge) result(idxs)

Transforms a given array of state variables to subblock indices. If odd is .true. returns the odd indices, otherwise the even indices. If edge equals "left", returns the indices corresponding to the left boundary block, if edge equals "right" returns indices for the right boundary block.

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: variables(:)

array of state vector variable names

character(len=*), intent(in) :: state_vector(:)

state vector to consider

integer, intent(in) :: dim_subblock

dimension of the subblock

logical, intent(in) :: odd

uses odd indices if .true. and even if .false.

character(len=*), intent(in) :: edge

which edge to consider, "left" for left boundary and "right" for right one

Return Value integer,allocatable, (:)

integer array containing the corresponding subblock indices