list_operations_m Module

Routines operating on lists, like sorting, removing duplicates etc...


Uses

  • module~~list_operations_m~~UsesGraph module~list_operations_m list_operations_m module~precision_m precision_m module~list_operations_m->module~precision_m module~screen_io_m screen_io_m module~list_operations_m->module~screen_io_m iso_c_binding iso_c_binding module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env mpi mpi module~precision_m->mpi netcdf netcdf module~precision_m->netcdf module~screen_io_m->module~precision_m module~screen_io_m->iso_fortran_env module~screen_io_m->netcdf

Used by

  • module~~list_operations_m~~UsedByGraph module~list_operations_m list_operations_m module~csrmat_m csrmat_m module~csrmat_m->module~list_operations_m module~helmholtz_operator_m helmholtz_operator_m module~helmholtz_operator_m->module~list_operations_m module~helmholtz_operator_m->module~csrmat_m module~immersed_m immersed_m module~immersed_m->module~list_operations_m module~kisslinger_m kisslinger_m module~kisslinger_m->module~list_operations_m module~map_factory_s map_factory_s module~map_factory_s->module~list_operations_m module~dommaschk_equilibrium_m dommaschk_equilibrium_m module~map_factory_s->module~dommaschk_equilibrium_m module~map_factory_m map_factory_m module~map_factory_s->module~map_factory_m module~mpi_mapping_auxiliaries_m mpi_mapping_auxiliaries_m module~map_factory_s->module~mpi_mapping_auxiliaries_m module~mesh_cart_build_s mesh_cart_build_s module~mesh_cart_build_s->module~list_operations_m module~mesh_cart_s mesh_cart_s module~mesh_cart_s->module~list_operations_m module~vis_vtk3d_m vis_vtk3d_m module~vis_vtk3d_m->module~list_operations_m module~zonal_averages_factory_m zonal_averages_factory_m module~zonal_averages_factory_m->module~list_operations_m module~zonal_averages_factory_m->module~csrmat_m module~auxiliaries_test_diffusion_m auxiliaries_test_diffusion_m module~auxiliaries_test_diffusion_m->module~csrmat_m module~auxiliaries_test_diffusion_m->module~mpi_mapping_auxiliaries_m module~circular_toroidal_equilibrium_m circular_toroidal_equilibrium_m module~circular_toroidal_equilibrium_m->module~kisslinger_m module~csr_samples_m csr_samples_m module~csr_samples_m->module~csrmat_m module~dommaschk_equilibrium_m->module~kisslinger_m module~flare_equilibrium_m flare_equilibrium_m module~flare_equilibrium_m->module~kisslinger_m module~helmholtz_netcdfio_m helmholtz_netcdfio_m module~helmholtz_netcdfio_m->module~csrmat_m module~helmholtz_netcdfio_m->module~helmholtz_operator_m module~helmholtz_solver_direct_s helmholtz_solver_direct_s module~helmholtz_solver_direct_s->module~helmholtz_operator_m module~helpers_m helpers_m module~helpers_m->module~csrmat_m module~immersed_factory_m immersed_factory_m module~immersed_factory_m->module~immersed_m module~immersed_rho_m immersed_rho_m module~immersed_factory_m->module~immersed_rho_m module~immersed_trace_m immersed_trace_m module~immersed_factory_m->module~immersed_trace_m module~immersed_vessel_m immersed_vessel_m module~immersed_factory_m->module~immersed_vessel_m module~immersed_netcdf_s immersed_netcdf_s module~immersed_netcdf_s->module~immersed_m module~immersed_rho_m->module~immersed_m module~immersed_trace_m->module~immersed_m module~immersed_vessel_m->module~immersed_m module~map_factory_m->module~csrmat_m module~mpi_mapping_auxiliaries_m->module~csrmat_m module~multigrid_m multigrid_m module~multigrid_m->module~csrmat_m module~multigrid_solver_m multigrid_solver_m module~multigrid_solver_m->module~csrmat_m module~multigrid_solver_m->module~helmholtz_operator_m module~multigrid_solver_m->module~multigrid_m module~splitting_m splitting_m module~multigrid_solver_m->module~splitting_m module~polar_map_factory_m polar_map_factory_m module~polar_map_factory_m->module~csrmat_m module~splitting_m->module~csrmat_m program~test_diffusion test_diffusion program~test_diffusion->module~csrmat_m program~test_diffusion->module~vis_vtk3d_m program~test_diffusion->module~auxiliaries_test_diffusion_m program~test_diffusion->module~map_factory_m module~equilibrium_factory_m equilibrium_factory_m program~test_diffusion->module~equilibrium_factory_m module~dommaschk_equilibrium_netcdf_s dommaschk_equilibrium_netcdf_s module~dommaschk_equilibrium_netcdf_s->module~dommaschk_equilibrium_m module~equilibrium_factory_m->module~circular_toroidal_equilibrium_m module~equilibrium_factory_m->module~dommaschk_equilibrium_m module~equilibrium_factory_m->module~flare_equilibrium_m module~helmholtz_solver_factory_m helmholtz_solver_factory_m module~helmholtz_solver_factory_m->module~multigrid_m module~helmholtz_solver_factory_m->module~splitting_m module~helmholtz_solver_mgmres_cxx_s helmholtz_solver_mgmres_cxx_s module~helmholtz_solver_mgmres_cxx_s->module~multigrid_m module~mesh_cart_communicate_s mesh_cart_communicate_s module~mesh_cart_communicate_s->module~mpi_mapping_auxiliaries_m module~multigrid_s multigrid_s module~multigrid_s->module~multigrid_m module~multigrid_solver_s multigrid_solver_s module~multigrid_solver_s->module~multigrid_solver_m module~splitting_gauss_seidel_cpu_s splitting_gauss_seidel_cpu_s module~splitting_gauss_seidel_cpu_s->module~splitting_m module~splitting_gauss_seidel_redblack_cpu_s splitting_gauss_seidel_redblack_cpu_s module~splitting_gauss_seidel_redblack_cpu_s->module~splitting_m module~splitting_jacobi_cpu_s splitting_jacobi_cpu_s module~splitting_jacobi_cpu_s->module~splitting_m program~benchmark_helmholtz_solvers benchmark_helmholtz_solvers program~benchmark_helmholtz_solvers->module~helmholtz_netcdfio_m program~benchmark_helmholtz_solvers->module~multigrid_m program~benchmark_helmholtz_solvers->module~equilibrium_factory_m program~benchmark_helmholtz_solvers->module~helmholtz_solver_factory_m program~diagnose_poincare diagnose_poincare program~diagnose_poincare->module~equilibrium_factory_m

Interfaces

public interface rank_list

  • private subroutine i_mrgref(XVALT, IRNGT)

    Ranks array XVALT into index array IRNGT, using merge-sort

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in), Dimension (:) :: XVALT
    integer, intent(out), Dimension (:) :: IRNGT
  • private subroutine fp_mrgref(xvalt, IRNGT)

    Ranks array XVALT into index array IRNGT, using merge-sort

    Arguments

    Type IntentOptional Attributes Name
    real(kind=FP), intent(in), Dimension (:) :: xvalt
    integer, intent(out), Dimension (:) :: IRNGT

Functions

public function findloc_i(arr, val)

Finds first index i where arr(i) = val. Returns 0 if val not found or size of array is 0

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in), dimension(:) :: arr

Array

integer, intent(in) :: val

Value to be searched for

Return Value integer

public function findloc_i(arr, val)

Finds first index i where arr(i) = val. Returns 0 if val not found or size of array is 0

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in), dimension(:) :: arr

Array

integer, intent(in) :: val

Value to be searched for

Return Value integer


Subroutines

public subroutine unique_tuples(ndim, nz, arr)

Removes duplicate entries from integer tuple arr

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ndim

Dimension of tuple

integer, intent(inout) :: nz

Number of tuples, on return number of unique tuples

integer, intent(inout), dimension(ndim, nz) :: arr

Tuples, on return unique tuples (nz adapted)

public subroutine insertion_sort(nz, ndim, decrow, arr)

Sorts integer tuple arr in ascending order according to row decr

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nz

Number of tuples

integer, intent(in) :: ndim

Dimension of tuples

integer, intent(in) :: decrow

Is sorted in ascending order according to row decrow

integer, intent(inout), dimension(ndim, nz) :: arr

Tuples, on return sorted

public subroutine sort_tuples(nz, ndim, precedence, arr)

Sorts integer tuples arr in ascending order, where pecedence of rows in sorting is prescribed

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nz

Number of tuples

integer, intent(in) :: ndim

Dimension of tuples

integer, intent(in), dimension(ndim) :: precedence

Precedence of sorting, i.e. for ndim=2 precedence=[2,1] sorts firstly according to second row

integer, intent(inout), dimension(ndim,nz) :: arr

Tuples, on return sorted

public subroutine findindex_2d(lpi, lpf, li, lj, i, j, lg)

Searches in grid lists (li, lj) if it contains point (i, j) and returns its index in lg. If index cannot be found, returns lg=0 Note: (li, lj) shall be uniqued tuple

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: lpi

Start index of lists li and lj

integer, intent(in) :: lpf

Final index of lists li and lj

integer, intent(in), dimension(lpi:lpf) :: li

Grid list li

integer, intent(in), dimension(lpi:lpf) :: lj

Grid list lj

integer, intent(in) :: i

Integer coordinate i that is looked for in li

integer, intent(in) :: j

Integer coordinate j that is looked for in lj

integer, intent(out) :: lg

If present (i,j)=(li(lg), lj(lg)), if not present lg=0 is returned

public subroutine sort_row(size, col_ind, values)

Simple bubble sort for small arrays. Different from the sort_and_sum function below as it does not include the summed-up part.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: size

Dimension of the arrays

integer, intent(inout) :: col_ind(size)

Column index of the input and the output sorted array

real(kind=FP), intent(inout) :: values(size)

Element value

public subroutine sort_and_sum(nz, j, val)

Uniques and sorts values according to j-ascending ordering Same j-values are summed up in val

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: nz

On input: Dimension of j and val On output: Number of unique

integer, intent(inout), dimension(nz) :: j

Integer list, on output uniqued and sorted in ascending order

real(kind=FP), intent(inout), dimension(nz) :: val

Values, on output sorted and summed according to new j-ordering