mod_solvers Module

Parent module for everything solver-related. Interfaces to the different submodules are defined here, and the solve_evp routine calls the correct solver based on parfile settings.



Contents


Interfaces

interface

interface to the different solution methods implemented in submodules

  • private module module subroutine qr_invert(matrix_A, matrix_B, settings, omega, vr)

    Arguments

    TypeIntentOptionalAttributesName
    type(matrix_t), intent(in) :: matrix_A

    matrix A

    type(matrix_t), intent(in) :: matrix_B

    matrix B

    type(settings_t), intent(in) :: settings

    settings object

    complex(kind=dp), intent(out) :: omega(:)

    array with eigenvalues

    complex(kind=dp), intent(out) :: vr(:,:)

    array with right eigenvectors

interface

interface to the different solution methods implemented in submodules

  • private module module subroutine qr_cholesky(matrix_A, matrix_B, settings, omega, vr)

    Arguments

    TypeIntentOptionalAttributesName
    type(matrix_t), intent(in) :: matrix_A

    matrix A

    type(matrix_t), intent(in) :: matrix_B

    matrix B

    type(settings_t), intent(in) :: settings

    settings object

    complex(kind=dp), intent(out) :: omega(:)

    array with eigenvalues

    complex(kind=dp), intent(out) :: vr(:,:)

    array with right eigenvectors

interface

interface to the different solution methods implemented in submodules

  • private module module subroutine qz_direct(matrix_A, matrix_B, settings, omega, vr)

    Arguments

    TypeIntentOptionalAttributesName
    type(matrix_t), intent(in) :: matrix_A

    matrix A

    type(matrix_t), intent(in) :: matrix_B

    matrix B

    type(settings_t), intent(in) :: settings

    settings object

    complex(kind=dp), intent(out) :: omega(:)

    array with eigenvalues

    complex(kind=dp), intent(out) :: vr(:,:)

    array with right eigenvectors

interface

interface to the different solution methods implemented in submodules

  • private module module subroutine arnoldi(matrix_A, matrix_B, settings, omega, vr)

    Arguments

    TypeIntentOptionalAttributesName
    type(matrix_t), intent(in) :: matrix_A

    matrix A

    type(matrix_t), intent(in) :: matrix_B

    matrix B

    type(settings_t), intent(inout) :: settings

    settings object

    complex(kind=dp), intent(out) :: omega(:)

    array with eigenvalues

    complex(kind=dp), intent(out) :: vr(:,:)

    array with right eigenvectors

interface

interface to the different solution methods implemented in submodules

  • private module module subroutine inverse_iteration(matrix_A, matrix_B, settings, omega, vr)

    Arguments

    TypeIntentOptionalAttributesName
    type(matrix_t), intent(in) :: matrix_A

    matrix A

    type(matrix_t), intent(in) :: matrix_B

    matrix B

    type(settings_t), intent(in) :: settings

    settings object

    complex(kind=dp), intent(out) :: omega(:)

    array with eigenvalues

    complex(kind=dp), intent(out) :: vr(:,:)

    array with right eigenvectors


Subroutines

public subroutine solve_evp(matrix_A, matrix_B, settings, omega, vr)

Main subroutine to solve the eigenvalue problem. Depending on the solvelist passed in the parfile, different solvers are called.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(matrix_t), intent(in) :: matrix_A

A-matrix

type(matrix_t), intent(in) :: matrix_B

B-matrix

type(settings_t), intent(inout) :: settings

settings object

complex(kind=dp), intent(out) :: omega(:)

eigenvalues

complex(kind=dp), intent(out) :: vr(:,:)

right eigenvectors