kexpm Interface

public interface kexpm

Description

This interface provides methods to evaluate the matrix-vector product based on the Arnoldi method.

Syntax

    call kexpm(c, A, b, tau, tol, info [, trans] [, kdim])

Arguments

c : Output vector (or vectors). It is an intent(out) argument.

A : Linear operator to be exponentiated. It is an intent(in) argument.

b : Vector to be multiplied by . It is an intent(in) argument.

tau : real (singe or double) time over which the matrix exponential needs to be computed. It is an intent(in) argument.

info : integer Information flag.

trans (optional) : Whether or is being used. (default trans=.false.)

kdim (optional) : Dimension of the Krylov subspace used in the Arnoldi method.


Module Procedures

private subroutine kexpm_vec_rsp(c, A, b, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_rsp), intent(out) :: c

Best approximation of in the computed Krylov subspace

class(abstract_linop_rsp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_rsp), intent(in) :: b

Input vector on which to apply .

real(kind=sp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=sp), intent(in) :: tol

Solution tolerance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_mat_rsp(C, A, B, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_rsp), intent(out) :: C(:)

Best Krylov approximation of .

class(abstract_linop_rsp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_rsp), intent(in) :: B(:)

Input matrix on which to apply .

real(kind=sp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=sp), intent(in) :: tol

Solution toleance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose ?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_vec_rdp(c, A, b, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_rdp), intent(out) :: c

Best approximation of in the computed Krylov subspace

class(abstract_linop_rdp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_rdp), intent(in) :: b

Input vector on which to apply .

real(kind=dp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=dp), intent(in) :: tol

Solution tolerance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_mat_rdp(C, A, B, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_rdp), intent(out) :: C(:)

Best Krylov approximation of .

class(abstract_linop_rdp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_rdp), intent(in) :: B(:)

Input matrix on which to apply .

real(kind=dp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=dp), intent(in) :: tol

Solution toleance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose ?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_vec_csp(c, A, b, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_csp), intent(out) :: c

Best approximation of in the computed Krylov subspace

class(abstract_linop_csp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_csp), intent(in) :: b

Input vector on which to apply .

real(kind=sp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=sp), intent(in) :: tol

Solution tolerance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_mat_csp(C, A, B, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_csp), intent(out) :: C(:)

Best Krylov approximation of .

class(abstract_linop_csp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_csp), intent(in) :: B(:)

Input matrix on which to apply .

real(kind=sp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=sp), intent(in) :: tol

Solution toleance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose ?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_vec_cdp(c, A, b, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_cdp), intent(out) :: c

Best approximation of in the computed Krylov subspace

class(abstract_linop_cdp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_cdp), intent(in) :: b

Input vector on which to apply .

real(kind=dp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=dp), intent(in) :: tol

Solution tolerance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.

private subroutine kexpm_mat_cdp(C, A, B, tau, tol, info, trans, kdim)

Arguments

Type IntentOptional Attributes Name
class(abstract_vector_cdp), intent(out) :: C(:)

Best Krylov approximation of .

class(abstract_linop_cdp), intent(in) :: A

Linear operator to be exponentiated.

class(abstract_vector_cdp), intent(in) :: B(:)

Input matrix on which to apply .

real(kind=dp), intent(in) :: tau

Time horizon for the exponentiation.

real(kind=dp), intent(in) :: tol

Solution toleance based on error estimates.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use transpose ?

integer, intent(in), optional :: kdim

Maximum size of the Krylov subspace.