Type | Intent | Optional | 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 ? |
subroutine krylov_exptA_rdp(vec_out, A, vec_in, tau, info, trans) 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 \( \exp(\tau \mathbf{A}) \). real(dp), intent(in) :: tau !! Time horizon for the exponentiation. integer, intent(out) :: info !! Information flag. logical, optional, intent(in) :: trans !! Use adjoint ? ! ----- Internal variables ----- character(len=*), parameter :: this_procedure = 'krylov_exptA_rdp' real(dp) :: tol integer :: kdim tol = atol_dp kdim = 30 call kexpm(vec_out, A, vec_in, tau, tol, info, trans=trans, kdim=kdim) call check_info(info, 'kexpm', this_module, this_procedure) return end subroutine krylov_exptA_rdp