array_operations_mod Module

This module provides supplementary functions and subroutines to handle matrix allocation, invertion, appending etc.


Uses

  • module~~array_operations_mod~~UsesGraph module~array_operations_mod array_operations_mod iso_fortran_env iso_fortran_env module~array_operations_mod->iso_fortran_env

Used by

  • module~~array_operations_mod~~UsedByGraph module~array_operations_mod array_operations_mod module~pes_matrix_mod pes_matrix_mod module~pes_matrix_mod->module~array_operations_mod module~physics_utilities_mod physics_utilities_mod module~pes_matrix_mod->module~physics_utilities_mod module~physics_utilities_mod->module~array_operations_mod module~propagator_mod propagator_mod module~propagator_mod->module~array_operations_mod module~propagator_mod->module~pes_matrix_mod module~propagator_mod->module~physics_utilities_mod module~centrifugal_matrix_mod centrifugal_matrix_mod module~propagator_mod->module~centrifugal_matrix_mod module~centrifugal_matrix_mod->module~array_operations_mod module~array_operations_invert_symmetric_matrix_submod array_operations_invert_symmetric_matrix_submod module~array_operations_invert_symmetric_matrix_submod->module~array_operations_mod module~array_operations_fill_symmetric_matrix_submod array_operations_fill_symmetric_matrix_submod module~array_operations_fill_symmetric_matrix_submod->module~array_operations_mod module~array_operations_allocate_submod array_operations_allocate_submod module~array_operations_allocate_submod->module~array_operations_mod module~input_reader_mod input_reader_mod module~input_reader_mod->module~array_operations_mod module~input_reader_mod->module~physics_utilities_mod module~boundary_conditions_mod boundary_conditions_mod module~boundary_conditions_mod->module~array_operations_mod module~boundary_conditions_mod->module~physics_utilities_mod module~state_to_state_cross_sections_mod state_to_state_cross_sections_mod module~state_to_state_cross_sections_mod->module~array_operations_mod module~state_to_state_cross_sections_mod->module~physics_utilities_mod program~scattering SCATTERING program~scattering->module~array_operations_mod program~scattering->module~pes_matrix_mod program~scattering->module~physics_utilities_mod program~scattering->module~propagator_mod program~scattering->module~input_reader_mod program~scattering->module~boundary_conditions_mod program~scattering->module~state_to_state_cross_sections_mod module~channels_mod channels_mod program~scattering->module~channels_mod module~array_operations_append_submod array_operations_append_submod module~array_operations_append_submod->module~array_operations_mod module~array_operations_add_scalar_to_diagonal_submod array_operations_add_scalar_to_diagonal_submod module~array_operations_add_scalar_to_diagonal_submod->module~array_operations_mod module~channels_mod->module~physics_utilities_mod

Contents


Interfaces

public interface add_scalar_to_diagonal

  • public module subroutine add_scalar_to_diagonal_dp(matrix_, scalar_)

    ! add a scalar value to the matrix diagonal (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: matrix_(:,:)
    real(kind=dp), intent(in) :: scalar_
  • public module subroutine add_scalar_to_diagonal_int32(matrix_, scalar_)

    add a scalar value to the matrix diagonal (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout) :: matrix_(:,:)
    integer(kind=int32), intent(in) :: scalar_
  • public module subroutine add_scalar_to_diagonal_sp(matrix_, scalar_)

    add a scalar value to the matrix diagonal (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout) :: matrix_(:,:)
    real(kind=sp), intent(in) :: scalar_

public interface allocate_1d

  • public pure module subroutine allocate_1d_dp(array_, size_)

    allocate a 1d array and fill it with 0s (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout), allocatable :: array_(:)
    integer(kind=int32), intent(in) :: size_
  • public pure module subroutine allocate_1d_int32(array_, size_)

    allocate a 1d array and fill it with 0s (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), allocatable :: array_(:)
    integer(kind=int32), intent(in) :: size_
  • public pure module subroutine allocate_1d_sp(array_, size_)

    allocate a 1d array and fill it with 0s (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout), allocatable :: array_(:)
    integer(kind=int32), intent(in) :: size_

public interface allocate_2d

  • public pure module subroutine allocate_2d_dp(array_, size1_, size2_)

    allocate a 2d array and fill it with 0s (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout), allocatable :: array_(:,:)
    integer(kind=int32), intent(in) :: size1_
    integer(kind=int32), intent(in) :: size2_
  • public pure module subroutine allocate_2d_int32(array_, size1_, size2_)

    allocate a 2d array and fill it with 0s (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), allocatable :: array_(:,:)
    integer(kind=int32), intent(in) :: size1_
    integer(kind=int32), intent(in) :: size2_
  • public pure module subroutine allocate_2d_sp(array_, size1_, size2_)

    allocate a 2d array and fill it with 0s (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout), allocatable :: array_(:,:)
    integer(kind=int32), intent(in) :: size1_
    integer(kind=int32), intent(in) :: size2_

public interface allocate_3d

  • public pure module subroutine allocate_3d_dp(array_, size1_, size2_, size3_)

    allocate a 3d array and fill it with 0s (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout), allocatable :: array_(:,:,:)
    integer(kind=int32), intent(in) :: size1_
    integer(kind=int32), intent(in) :: size2_
    integer(kind=int32), intent(in) :: size3_
  • public pure module subroutine allocate_3d_int32(array_, size1_, size2_, size3_)

    allocate a 3d array and fill it with 0s (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), allocatable :: array_(:,:,:)
    integer(kind=int32), intent(in) :: size1_
    integer(kind=int32), intent(in) :: size2_
    integer(kind=int32), intent(in) :: size3_
  • public pure module subroutine allocate_3d_sp(array_, size1_, size2_, size3_)

    allocate a 3d array and fill it with 0s (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout), allocatable :: array_(:,:,:)
    integer(kind=int32), intent(in) :: size1_
    integer(kind=int32), intent(in) :: size2_
    integer(kind=int32), intent(in) :: size3_

public interface append

  • public pure module subroutine append_dp(array_, element_)

    append element to an array (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout), allocatable :: array_(:)
    real(kind=dp), intent(in) :: element_
  • public pure module subroutine append_int32(array_, element_)

    append element to an array (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), allocatable :: array_(:)
    integer(kind=int32), intent(in) :: element_
  • public pure module subroutine append_sp(array_, element_)

    append element to an array (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout), allocatable :: array_(:)
    real(kind=sp), intent(in) :: element_

public interface fill_symmetric_matrix

  • public module subroutine fill_symmetric_matrix_dp(matrix_, upper_lower_)

    fill the upper/lower triangle of a symmetric matrix (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: matrix_(:,:)
    character(len=1), intent(in) :: upper_lower_
  • public module subroutine fill_symmetric_matrix_int32(matrix_, upper_lower_)

    fill the upper/lower triangle of a symmetric matrix (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout) :: matrix_(:,:)
    character(len=1), intent(in) :: upper_lower_
  • public module subroutine fill_symmetric_matrix_sp(matrix_, upper_lower_)

    fill the upper/lower triangle of a symmetric matrix (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout) :: matrix_(:,:)
    character(len=1), intent(in) :: upper_lower_

public interface invert_symmetric_matrix

  • public module subroutine invert_symmetric_matrix_dp(matrix_)

    invert a symmetric matrix using DSYTRI method (double precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: matrix_(:,:)
  • public module subroutine invert_symmetric_matrix_int32(matrix_)

    invert a symmetric matrix using DSYTRI method (integer version)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout) :: matrix_(:,:)
  • public module subroutine invert_symmetric_matrix_sp(matrix_)

    invert a symmetric matrix using DSYTRI method (single precision version)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=sp), intent(inout) :: matrix_(:,:)