k_exptA Interface

public interface k_exptA

Description

Utility function to evaluate the matrix-exponential times vector.

Syntax

    call k_exptA(vec_out, A, vec_in, tau, info, trans)

Arguments

vec_out : Output vector.

A : Matrix to be exponentiated.

vec_in : Input vector.

tau : Integration time.

info : Information flag.

trans : Whether or is being used.


Module Procedures

private subroutine k_exptA_rsp(vec_out, A, vec_in, tau, info, trans)

Arguments

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

Solution vector.

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

Linear operator to be exponentiated.

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

Input vector to be multiplied by .

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

Time horizon for the exponentiation.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use adjoint ?

private subroutine k_exptA_rdp(vec_out, A, vec_in, tau, info, trans)

Arguments

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

Solution vector.

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

Linear operator to be exponentiated.

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

Input vector to be multiplied by .

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

Time horizon for the exponentiation.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use adjoint ?

private subroutine k_exptA_csp(vec_out, A, vec_in, tau, info, trans)

Arguments

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

Solution vector.

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

Linear operator to be exponentiated.

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

Input vector to be multiplied by .

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

Time horizon for the exponentiation.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use adjoint ?

private subroutine k_exptA_cdp(vec_out, A, vec_in, tau, info, trans)

Arguments

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

Solution vector.

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

Linear operator to be exponentiated.

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

Input vector to be multiplied by .

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

Time horizon for the exponentiation.

integer, intent(out) :: info

Information flag.

logical, intent(in), optional :: trans

Use adjoint ?