Abstract type for the local linearization of the system around the state X. This type is intended for use within the abstract_system type.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | public, | allocatable | :: | X | 
                 System state around which the equatons are linearized.  | 
        ||
| type(lightkrylov_timer), | public | :: | matvec_timer | = | lightkrylov_timer('matvec timer') | ||
| type(lightkrylov_timer), | public | :: | rmatvec_timer | = | lightkrylov_timer('rmatvec timer') | 
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?  | 
        
Procedure to compute the matrix-vector product .
Interface for the matrix-vector product.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | intent(inout) | :: | self | 
                 Linear operator .  | 
        ||
| class(abstract_vector_rsp), | intent(in) | :: | vec_in | 
                 Vector to be multiplied by .  | 
        ||
| class(abstract_vector_rsp), | intent(out) | :: | vec_out | 
                 Result of the matrix-vector product.  | 
        
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 | 
Procedure to compute the reversed matrix-vector product .
Interface for the matrix-vector product.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | intent(inout) | :: | self | 
                 Linear operator .  | 
        ||
| class(abstract_vector_rsp), | intent(in) | :: | vec_in | 
                 Vector to be multiplied by .  | 
        ||
| class(abstract_vector_rsp), | intent(out) | :: | vec_out | 
                 Result of the matrix-vector product.  | 
        
type, abstract, extends(abstract_linop_rsp), public :: abstract_jacobian_linop_rsp !! Abstract type for the local linearization of the system around the state X. !! This type is intended for use within the abstract_system type. class(abstract_vector_rsp), allocatable :: X !! System state around which the equatons are linearized. contains end type abstract_jacobian_linop_rsp