ExpokitOps¶
Fortran module ExpokitOps:Uses the Expokit package to calculate the exponential of a non-hermitian matrix.
Authors
Wall
Jaschke
Roger B. Sidje (rbs@maths.uq.edu.au), https://www.maths.uq.edu.au/expokit/,
author of the original Expokit package
Details
The copyrights of the Expokit package apply to this module. A copy of the Expokit copyright has been delived within OpenMPS. More info: EXPOKIT: Software Package for Computing Matrix Exponentials. ACM - Transactions On Mathematical Software, 24(1):130-156, 1998
The following procedures are available.
procedure |
include.f90 |
mpi.f90 |
---|---|---|
exp_kit |
X |
- ExpokitOps_f90.ZGPADM()[source]¶
fortran-subroutine - ?? () Routine from Expokit for exponentiating non-Hermitian effective Hamiltonians.
Arguments
- idegINTEGER, in
The degre of the diagonal Pade to be used. A value of 6 is generally satisfactory.
- mINTEGER, in
Order of H.
- tREAL, in
time-scale (can be < 0).
- HCOMPLEX(ldh, m), in
Argument matrix to be exponentiated.
- ldhINTEGER, in
Leading order (first dimension/number of rows) of the matrix H.
- wspCOMPLEX(lwsp), out
Workspace with lwsp .ge. 4*m*m+ideg+1.
- lwspINTEGER, in
Size of the workspace wsp.
- ipivINTEGER(m), out
Workspace.
- iexphINTEGER, out
Number such that wsp(iexph) points to exp(tH) i.e., exp(tH) is located at wsp(iexph … iexph+m*m-1) NOTE: if the routine was called with wsp(iptr), then exp(tH) will start at wsp(iptr+iexph-1).
- nsINTEGER, out
Number of scaling-squaring used.
- iflagINTEGER, out
Exit flag: iflag = 0 - no problem; iflag < 0 - problem
Details
Computes exp(t*H), the matrix exponential of a general complex matrix in full, using the irreducible rational Pade approximation to the exponential exp(z) = r(z) = (+/-)( I + 2*(q(z)/p(z)) ), combined with scaling-and-squaring.
Roger B. Sidje (rbs@maths.uq.edu.au) EXPOKIT: Software Package for Computing Matrix Exponentials. ACM - Transactions On Mathematical Software, 24(1):130-156, 1998
Source Code
show / hide f90 code
- ExpokitOps_f90.exp_kit_complex()[source]¶
fortran-subroutine - August 2017 (dj, updated) Calculate the matrix exponential of a non-hermitian matrix via EXPOKIT.
Arguments
- UCOMPLEX(*, *), out
The exponential of H times the scalar t.
- tREAL, in
Scaling for the matrix H, e.g. size of the time step.
- HCOMPLEX(*, *), in
H is the matrix to be exponentiated, weighted with a scalar t.
- dimINTEGER, in
Dimension of the square matrix.
Source Code
show / hide f90 code