abstract_system_rdp Derived Type

type, public, abstract, extends(abstract_system) :: abstract_system_rdp

System for Newton fixed-point iteration via the Jacobian


Components

Type Visibility Attributes Name Initial
class(abstract_jacobian_linop_rdp), public, allocatable :: jacobian

System Jacobian .


Type-Bound Procedures

procedure, public, pass(self) :: eval => eval_rdp

Wrapper for response including the counter increment

  • private subroutine eval_rdp(self, vec_in, vec_out, atol)

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system_rdp), intent(inout) :: self
    class(abstract_vector_rdp), intent(in) :: vec_in
    class(abstract_vector_rdp), intent(out) :: vec_out
    real(kind=dp), intent(in) :: atol

procedure, public, pass(self) :: finalize_timer => finalize_eval_timer

Finalize timer and print complete history

  • private subroutine finalize_eval_timer(self)

    Finalize the system evaluation timer and print summary Note: Wrapper of the corresponding routine from lightkrylov_timer

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system), intent(inout) :: self

procedure, public, pass(self) :: get_eval_counter

Return eval counter value

  • private pure function get_eval_counter(self) result(count)

    Getter function for the number of eval calls

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system), intent(in) :: self

    Return Value integer

procedure, public, pass(self) :: print_timer_info

Print current timing data

  • private subroutine print_timer_info(self)

    Print the current timing data for the system evaluation Note: Wrapper of the corresponding routine from lightkrylov_timer

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system), intent(inout) :: self

procedure, public, pass(self) :: reset_eval_counter

Reset eval counter

  • private subroutine reset_eval_counter(self, procedure, counter, reset_timer, soft_reset, clean_timer)

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system), intent(inout) :: self
    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 timer

    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.)

procedure, public, pass(self) :: reset_timer => reset_eval_timer

Reset current timing data

  • private subroutine reset_eval_timer(self, soft, clean)

    Setter routine to reset the system evaluation timer Note: Wrapper of the corresponding routine from lightkrylov_timer

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system), intent(inout) :: self
    logical, intent(in), optional :: soft
    logical, intent(in), optional :: clean

procedure(abstract_eval_rdp), public, deferred, pass(self) :: response

Procedure to evaluate the system response .

  • subroutine abstract_eval_rdp(self, vec_in, vec_out, atol) Prototype

    Interface for the evaluation of the system response.

    Arguments

    Type IntentOptional Attributes Name
    class(abstract_system_rdp), intent(inout) :: self

    System

    class(abstract_vector_rdp), intent(in) :: vec_in

    State

    class(abstract_vector_rdp), intent(out) :: vec_out

    Response

    real(kind=dp), intent(in) :: atol

    Solver tolerance