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. |
Wrapper for matvec including the counter increment
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop_rsp), | intent(inout) | :: | self | |||
class(abstract_vector_rsp), | intent(in) | :: | vec_in | |||
class(abstract_vector_rsp), | intent(out) | :: | vec_out |
Wrapper for rmatvec including the counter increment
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop_rsp), | intent(inout) | :: | self | |||
class(abstract_vector_rsp), | intent(in) | :: | vec_in | |||
class(abstract_vector_rsp), | intent(out) | :: | vec_out |
Finalize timers and print complete history_info
Finalize the matvec/rmatvec timers Note: Wrapper of the corresponding routine from lightkrylov_timer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop), | intent(inout) | :: | self |
Return matvec/rmatvec counter value
Getter function for the number of matvec calls
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop), | intent(in) | :: | self | |||
logical, | intent(in) | :: | trans |
matvec or rmatvec? |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(axpby_linop_rsp), | intent(inout) | :: | self | |||
class(abstract_vector_rsp), | intent(in) | :: | vec_in | |||
class(abstract_vector_rsp), | intent(out) | :: | vec_out |
Print current timing data
Getter routine to print the current timing information for matvec/rmatvec Note: Wrapper of the corresponding routine from lightkrylov_timer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop), | intent(inout) | :: | self | |||
logical, | intent(in), | optional | :: | trans |
matvec or rmatvec? |
Reset matvec/rmatvec counter
Setter routine to reset the matvec counter and reset timers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop), | intent(inout) | :: | self | |||
logical, | intent(in) | :: | trans |
matvec or rmatvec? |
||
character(len=*), | intent(in) | :: | procedure |
name of the caller routine |
||
integer, | intent(in), | optional | :: | counter |
optional flag to reset to an integer other than zero. |
|
logical, | intent(in), | optional | :: | reset_timer |
optional flag to reset also the timers |
|
logical, | intent(in), | optional | :: | soft_reset |
optional flag to choose whether to save previous timing data (default: .true.) |
|
logical, | intent(in), | optional | :: | clean_timer |
optional flag to choose whether to fully reset the timer (default: .false.) |
Reset current timing data
Setter routine to reset the matvec/rmatvec timers Note: Wrapper of the corresponding routine from lightkrylov_timer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_linop), | intent(inout) | :: | self | |||
logical, | intent(in), | optional | :: | trans |
matvec or rmatvec? |
|
logical, | intent(in), | optional | :: | soft | ||
logical, | intent(in), | optional | :: | clean |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(axpby_linop_rsp), | intent(inout) | :: | self | |||
class(abstract_vector_rsp), | intent(in) | :: | vec_in | |||
class(abstract_vector_rsp), | intent(out) | :: | vec_out |