This module provides the abstract types necessary to define an algebraic system of nonlinear equations to be solved using the Newton method.
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_cdp), | 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') |
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 . |
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_csp), | 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') |
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 . |
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_rdp), | 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') |
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 . |
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') |
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 . |
Base type to define an abstract system. All other system types defined
in LightKrylov
derive from this fundamental one.
procedure, public, pass(self) :: finalize_timer => finalize_eval_timer | Finalize timer and print complete history |
procedure, public, pass(self) :: get_eval_counter | Return eval counter value |
procedure, public, pass(self) :: print_timer_info | Print current timing data |
procedure, public, pass(self) :: reset_eval_counter | Reset eval counter |
procedure, public, pass(self) :: reset_timer => reset_eval_timer | Reset current timing data |
Base type to extend in order to define a complex(dp)-valued system for Newton fixed-point iteration via the Jacobian.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(abstract_jacobian_linop_cdp), | public, | allocatable | :: | jacobian |
System Jacobian . |
procedure, public, pass(self) :: eval => eval_cdp | Wrapper for response including the counter increment |
procedure, public, pass(self) :: finalize_timer => finalize_eval_timer | Finalize timer and print complete history |
procedure, public, pass(self) :: get_eval_counter | Return eval counter value |
procedure, public, pass(self) :: print_timer_info | Print current timing data |
procedure, public, pass(self) :: reset_eval_counter | Reset eval counter |
procedure, public, pass(self) :: reset_timer => reset_eval_timer | Reset current timing data |
procedure(abstract_eval_cdp), public, deferred, pass(self) :: response | Procedure to evaluate the system response . |
Base type to extend in order to define a complex(sp)-valued system for Newton fixed-point iteration via the Jacobian.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(abstract_jacobian_linop_csp), | public, | allocatable | :: | jacobian |
System Jacobian . |
procedure, public, pass(self) :: eval => eval_csp | Wrapper for response including the counter increment |
procedure, public, pass(self) :: finalize_timer => finalize_eval_timer | Finalize timer and print complete history |
procedure, public, pass(self) :: get_eval_counter | Return eval counter value |
procedure, public, pass(self) :: print_timer_info | Print current timing data |
procedure, public, pass(self) :: reset_eval_counter | Reset eval counter |
procedure, public, pass(self) :: reset_timer => reset_eval_timer | Reset current timing data |
procedure(abstract_eval_csp), public, deferred, pass(self) :: response | Procedure to evaluate the system response . |
Base type to extend in order to define a real(dp)-valued system for Newton fixed-point iteration via the Jacobian.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(abstract_jacobian_linop_rdp), | public, | allocatable | :: | jacobian |
System Jacobian . |
procedure, public, pass(self) :: eval => eval_rdp | Wrapper for response including the counter increment |
procedure, public, pass(self) :: finalize_timer => finalize_eval_timer | Finalize timer and print complete history |
procedure, public, pass(self) :: get_eval_counter | Return eval counter value |
procedure, public, pass(self) :: print_timer_info | Print current timing data |
procedure, public, pass(self) :: reset_eval_counter | Reset eval counter |
procedure, public, pass(self) :: reset_timer => reset_eval_timer | Reset current timing data |
procedure(abstract_eval_rdp), public, deferred, pass(self) :: response | Procedure to evaluate the system response . |
Base type to extend in order to define a real(sp)-valued system for Newton fixed-point iteration via the Jacobian.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(abstract_jacobian_linop_rsp), | public, | allocatable | :: | jacobian |
System Jacobian . |
procedure, public, pass(self) :: eval => eval_rsp | Wrapper for response including the counter increment |
procedure, public, pass(self) :: finalize_timer => finalize_eval_timer | Finalize timer and print complete history |
procedure, public, pass(self) :: get_eval_counter | Return eval counter value |
procedure, public, pass(self) :: print_timer_info | Print current timing data |
procedure, public, pass(self) :: reset_eval_counter | Reset eval counter |
procedure, public, pass(self) :: reset_timer => reset_eval_timer | Reset current timing data |
procedure(abstract_eval_rsp), public, deferred, pass(self) :: response | Procedure to evaluate the system response . |