This module provides the base classes abtract_linop_rsp, abstract_linop_rdp,
abstract_linop_csp and abstract_linop_cdp which can be used to define your own
linear operators. To do so, you simply need to provide two type-bound procedures:
matvec(self, vec_in, vec_out) : Computes the matrix-vector product.It also provides extended types to define the identity operator, symmetric linear operators, scalar-multiplication of a linear multiplication, as well as addition of two linear operators.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=sp), | intent(in) | :: | A(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | A(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=sp), | intent(in) | :: | A(:,:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(in) | :: | A(:,:) |
Deals with optional arguments. Run all tests to verify axioms. Generate random vectors. Check additivity. Generate random vectors. generate the identical non-trivial alpha on all ranks
Check homogeneity. Exit if the test fails. Check that the zero vector is mapped to the zero vector. Exit if the test fails. Generate random vectors. Check adjoint consistency.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | intent(inout) | :: | A |
Linear operator whose implementation needs to be tested. |
||
| class(abstract_vector_rsp), | intent(in) | :: | x |
Mold vector from the operator's domain (used to generate random inputs). |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=sp), | intent(in), | optional | :: | tolerance |
Tolerance used for the axiom checks. |
|
| logical, | intent(in), | optional | :: | test_zero_map |
Verify explicitly that the operator maps x = 0 to 0? (Default: .true.) |
|
| logical, | intent(in), | optional | :: | test_adjoint |
Verify also the adjoint consistency |
Deals with optional arguments. Run all tests to verify axioms. Generate random vectors. Check additivity. Generate random vectors. generate the identical non-trivial alpha on all ranks
Check homogeneity. Exit if the test fails. Check that the zero vector is mapped to the zero vector. Exit if the test fails. Generate random vectors. Check adjoint consistency.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | intent(inout) | :: | A |
Linear operator whose implementation needs to be tested. |
||
| class(abstract_vector_rdp), | intent(in) | :: | x |
Mold vector from the operator's domain (used to generate random inputs). |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=dp), | intent(in), | optional | :: | tolerance |
Tolerance used for the axiom checks. |
|
| logical, | intent(in), | optional | :: | test_zero_map |
Verify explicitly that the operator maps x = 0 to 0? (Default: .true.) |
|
| logical, | intent(in), | optional | :: | test_adjoint |
Verify also the adjoint consistency |
Deals with optional arguments. Run all tests to verify axioms. Generate random vectors. Check additivity. Generate random vectors. generate the identical non-trivial alpha on all ranks
Check homogeneity. Exit if the test fails. Check that the zero vector is mapped to the zero vector. Exit if the test fails. Generate random vectors. Check adjoint consistency.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | intent(inout) | :: | A |
Linear operator whose implementation needs to be tested. |
||
| class(abstract_vector_csp), | intent(in) | :: | x |
Mold vector from the operator's domain (used to generate random inputs). |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=sp), | intent(in), | optional | :: | tolerance |
Tolerance used for the axiom checks. |
|
| logical, | intent(in), | optional | :: | test_zero_map |
Verify explicitly that the operator maps x = 0 to 0? (Default: .true.) |
|
| logical, | intent(in), | optional | :: | test_adjoint |
Verify also the adjoint consistency |
Deals with optional arguments. Run all tests to verify axioms. Generate random vectors. Check additivity. Generate random vectors. generate the identical non-trivial alpha on all ranks
Check homogeneity. Exit if the test fails. Check that the zero vector is mapped to the zero vector. Exit if the test fails. Generate random vectors. Check adjoint consistency.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | intent(inout) | :: | A |
Linear operator whose implementation needs to be tested. |
||
| class(abstract_vector_cdp), | intent(in) | :: | x |
Mold vector from the operator's domain (used to generate random inputs). |
||
| integer, | intent(in), | optional | :: | ntrials |
Number of random samples generated for the tests. |
|
| real(kind=dp), | intent(in), | optional | :: | tolerance |
Tolerance used for the axiom checks. |
|
| logical, | intent(in), | optional | :: | test_zero_map |
Verify explicitly that the operator maps x = 0 to 0? (Default: .true.) |
|
| logical, | intent(in), | optional | :: | test_adjoint |
Verify also the adjoint consistency |
Utility type to define the Identity operator. Note that the type-bound procedures
for matvec and rmatvec do not have to be defined by the user.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => id_matvec_cdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => id_matvec_cdp |
Utility type to define the Identity operator. Note that the type-bound procedures
for matvec and rmatvec do not have to be defined by the user.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => id_matvec_csp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => id_matvec_csp |
Utility type to define the Identity operator. Note that the type-bound procedures
for matvec and rmatvec do not have to be defined by the user.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => id_matvec_rdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => id_matvec_rdp |
Utility type to define the Identity operator. Note that the type-bound procedures
for matvec and rmatvec do not have to be defined by the user.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => id_matvec_rsp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => id_matvec_rsp |
Utility type to define the exponential propagator which is the linear map corresponding to the matrix exponential of the (possibly time-dependent) system Jacobian over a time horizon as:
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| real(kind=dp), | public | :: | tau |
Time horizon for the temporal integration. This variable must be set when the operator is instantiated. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_cdp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_cdp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Utility type to define the exponential propagator which is the linear map corresponding to the matrix exponential of the (possibly time-dependent) system Jacobian over a time horizon as:
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| real(kind=sp), | public | :: | tau |
Time horizon for the temporal integration. This variable must be set when the operator is instantiated. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_csp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_csp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Utility type to define the exponential propagator which is the linear map corresponding to the matrix exponential of the (possibly time-dependent) system Jacobian over a time horizon as:
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| real(kind=dp), | public | :: | tau |
Time horizon for the temporal integration. This variable must be set when the operator is instantiated. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_rdp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_rdp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Utility type to define the exponential propagator which is the linear map corresponding to the matrix exponential of the (possibly time-dependent) system Jacobian over a time horizon as:
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| real(kind=sp), | public | :: | tau |
Time horizon for the temporal integration. This variable must be set when the operator is instantiated. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_rsp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_rsp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Abstract representation of an abstract hermitian (complex-valued) linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_herm_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_herm_matvec_cdp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
Abstract representation of an abstract hermitian (complex-valued) linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_herm_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_herm_matvec_csp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
Base type to define an abstract linear operator. All other operator types defined
in LightKrylov derive from this fundamental one.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
Base type to extend in order to define a complex(dp)-valued linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_cdp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_cdp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Base type to extend in order to define a complex(sp)-valued linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_csp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_csp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Base type to extend in order to define a real(dp)-valued linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_rdp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_rdp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
Base type to extend in order to define a real(sp)-valued linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_matvec_rsp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure(abstract_matvec_rsp), public, deferred, pass(self) :: rmatvec | Procedure to compute the reversed matrix-vector product . |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
Abstract representation of an abstract symmetric (real valued) linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_sym_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_sym_matvec_rdp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
Abstract representation of an abstract symmetric (real valued) linear operator.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_sym_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure(abstract_sym_matvec_rsp), public, deferred, pass(self) :: matvec | Procedure to compute the matrix-vector product . |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
Utility type to define an adjoint linear operator. The definition of matvec and rmatvec
are directly inherited from those used to define A. Note that this utility does not
compute the adjoint for you. It simply provides a utility to define a new operator
with matvec and rmatvec switched.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | public, | allocatable | :: | A |
Linear operator whose adjoint needs to be defined. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => adjoint_matvec_cdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => adjoint_rmatvec_cdp |
Utility type to define an adjoint linear operator. The definition of matvec and rmatvec
are directly inherited from those used to define A. Note that this utility does not
compute the adjoint for you. It simply provides a utility to define a new operator
with matvec and rmatvec switched.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | public, | allocatable | :: | A |
Linear operator whose adjoint needs to be defined. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => adjoint_matvec_csp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => adjoint_rmatvec_csp |
Utility type to define an adjoint linear operator. The definition of matvec and rmatvec
are directly inherited from those used to define A. Note that this utility does not
compute the adjoint for you. It simply provides a utility to define a new operator
with matvec and rmatvec switched.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | public, | allocatable | :: | A |
Linear operator whose adjoint needs to be defined. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => adjoint_matvec_rdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => adjoint_rmatvec_rdp |
Utility type to define an adjoint linear operator. The definition of matvec and rmatvec
are directly inherited from those used to define A. Note that this utility does not
compute the adjoint for you. It simply provides a utility to define a new operator
with matvec and rmatvec switched.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | public, | allocatable | :: | A |
Linear operator whose adjoint needs to be defined. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => adjoint_matvec_rsp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => adjoint_rmatvec_rsp |
Utility type to define a composite linear operator .
The definitions of matvec and rmatvec are directly inherited from those used to define A and B.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | public, | allocatable | :: | A |
Underlying linear operators. |
||
| class(abstract_linop_cdp), | public, | allocatable | :: | B |
Underlying linear operators. |
||
| complex(kind=dp), | public | :: | alpha |
Scaling factors. |
|||
| complex(kind=dp), | public | :: | beta |
Scaling factors. |
|||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| logical, | public | :: | transA | = | .false. |
Logical flag to control whether and/or need to be transposed. |
|
| logical, | public | :: | transB | = | .false. |
Logical flag to control whether and/or need to be transposed. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => axpby_matvec_cdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => axpby_rmatvec_cdp |
Utility type to define a composite linear operator .
The definitions of matvec and rmatvec are directly inherited from those used to define A and B.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | public, | allocatable | :: | A |
Underlying linear operators. |
||
| class(abstract_linop_csp), | public, | allocatable | :: | B |
Underlying linear operators. |
||
| complex(kind=sp), | public | :: | alpha |
Scaling factors. |
|||
| complex(kind=sp), | public | :: | beta |
Scaling factors. |
|||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| logical, | public | :: | transA | = | .false. |
Logical flag to control whether and/or need to be transposed. |
|
| logical, | public | :: | transB | = | .false. |
Logical flag to control whether and/or need to be transposed. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => axpby_matvec_csp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => axpby_rmatvec_csp |
Utility type to define a composite linear operator .
The definitions of matvec and rmatvec are directly inherited from those used to define A and B.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | public, | allocatable | :: | A |
Underlying linear operators. |
||
| class(abstract_linop_rdp), | public, | allocatable | :: | B |
Underlying linear operators. |
||
| real(kind=dp), | public | :: | alpha |
Scaling factors. |
|||
| real(kind=dp), | public | :: | beta |
Scaling factors. |
|||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| logical, | public | :: | transA | = | .false. |
Logical flag to control whether and/or need to be transposed. |
|
| logical, | public | :: | transB | = | .false. |
Logical flag to control whether and/or need to be transposed. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => axpby_matvec_rdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => axpby_rmatvec_rdp |
Utility type to define a composite linear operator .
The definitions of matvec and rmatvec are directly inherited from those used to define A and B.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | public, | allocatable | :: | A |
Underlying linear operators. |
||
| class(abstract_linop_rsp), | public, | allocatable | :: | B |
Underlying linear operators. |
||
| real(kind=sp), | public | :: | alpha |
Scaling factors. |
|||
| real(kind=sp), | public | :: | beta |
Scaling factors. |
|||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| logical, | public | :: | transA | = | .false. |
Logical flag to control whether and/or need to be transposed. |
|
| logical, | public | :: | transB | = | .false. |
Logical flag to control whether and/or need to be transposed. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => axpby_matvec_rsp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => axpby_rmatvec_rsp |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| complex(kind=dp), | public, | allocatable | :: | data(:,:) | |||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => dense_matvec_cdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => dense_rmatvec_cdp |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| complex(kind=sp), | public, | allocatable | :: | data(:,:) | |||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => dense_matvec_csp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => dense_rmatvec_csp |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | allocatable | :: | data(:,:) | |||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => dense_matvec_rdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => dense_rmatvec_rdp |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=sp), | public, | allocatable | :: | data(:,:) | |||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => dense_matvec_rsp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => dense_rmatvec_rsp |
Defines a scaled linear operator with a complex(dp)-valued operator and .
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | public, | allocatable | :: | A |
Base linear operator to be scaled. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| complex(kind=dp), | public | :: | sigma |
Scaling factor. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_cdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_cdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => scaled_matvec_cdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => scaled_rmatvec_cdp |
Defines a scaled linear operator with a complex(sp)-valued operator and .
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | public, | allocatable | :: | A |
Base linear operator to be scaled. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| complex(kind=sp), | public | :: | sigma |
Scaling factor. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_csp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_csp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => scaled_matvec_csp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => scaled_rmatvec_csp |
Defines a scaled linear operator with a real-valued operator and
. The definitions of matvec and rmatvec are directly inherited from those used to define
A and do not have to be defined by the user.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | public, | allocatable | :: | A |
Base linear operator to be scaled. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| real(kind=dp), | public | :: | sigma |
Scaling factor. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rdp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rdp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => scaled_matvec_rdp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => scaled_rmatvec_rdp |
Defines a scaled linear operator with a real-valued operator and
. The definitions of matvec and rmatvec are directly inherited from those used to define
A and do not have to be defined by the user.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | public, | allocatable | :: | A |
Base linear operator to be scaled. |
||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | ||
| real(kind=sp), | public | :: | sigma |
Scaling factor. |
| procedure, public, pass(self) :: apply_matvec => apply_matvec_rsp | Wrapper for matvec including the counter increment |
| procedure, public, pass(self) :: apply_rmatvec => apply_rmatvec_rsp | Wrapper for rmatvec including the counter increment |
| procedure, public, pass(self) :: finalize_timer => finalize_linop_timer | Finalize timers and print complete history_info |
| procedure, public, pass(self) :: get_counter | Return matvec/rmatvec counter value |
| procedure, public, pass(self) :: matvec => scaled_matvec_rsp | |
| procedure, public, pass(self) :: print_timer_info | Print current timing data |
| procedure, public, pass(self) :: reset_counter | Reset matvec/rmatvec counter |
| procedure, public, pass(self) :: reset_timer => reset_linop_timer | Reset current timing data |
| procedure, public, pass(self) :: rmatvec => scaled_rmatvec_rsp |