64  integer, 
parameter, 
public :: ALGO_LABEL_LEN = 50
 
   71    character(len=ALGO_LABEL_LEN) :: id
 
   73    character(len=ALGO_LABEL_LEN) :: label
 
   79  character(len=ALGO_LABEL_LEN), 
public, 
parameter ::   &
 
   86  type(algorithmic_operation_t), 
public, 
parameter :: &
 
  109    type(algorithm_iterator_t), 
public :: iter
 
  110    type(algorithmic_operation_t) :: current_ops
 
  112    type(algorithmic_operation_t), 
public  :: start_operation
 
  116    type(algorithmic_operation_t), 
public  :: final_operation
 
  120    integer, 
public :: algo_steps
 
  128    logical :: iteration_done
 
  130    type(iteration_counter_t), 
public :: iteration
 
  131    real(real64) :: start_time = 
m_zero                           
  132    real(real64), 
public :: elapsed_time = 
m_zero                 
  141    procedure(algorithm_finished), 
deferred :: finished
 
  142    procedure(algorithm_init_iteration_counters), 
deferred :: init_iteration_counters
 
  150      class(algorithm_t), 
intent(in) :: this
 
  172    call this%add_copy(operation)
 
  195    class(algorithm_t), 
intent(inout) :: this
 
  199    this%elapsed_time = 
loct_clock() - this%start_time
 
  214    call this%iter%start(this)
 
  229    this%current_ops = this%iter%get_next()
 
  242    operation = this%current_ops
 
  258    select type (ptr => this%get_next_ptr())
 
indicate whether the algorithm has finished one time step
 
initializes the algorithm and system iteration counters
 
This module implements the basic elements defining algorithms.
 
character(len=algo_label_len), parameter, public update_interactions
 
character(len=algo_label_len), parameter, public rewind_algorithm
 
type(algorithmic_operation_t), parameter, public op_iteration_done
 
character(len=algo_label_len), parameter, public update_couplings
 
type(algorithmic_operation_t), parameter, public op_rewind_algorithm
 
type(algorithmic_operation_t) function algorithm_get_current_operation(this)
return the current algorithmic operation.
 
subroutine algorithm_rewind(this)
Reset the algorithm to the first operation.
 
type(algorithmic_operation_t) function algorithm_iterator_get_next(this)
Get the next algorithmic operation from the iterator.
 
type(algorithmic_operation_t), parameter, public op_update_couplings
 
character(len=algo_label_len), parameter, public iteration_done
 
subroutine algorithm_add_operation(this, operation)
add an algorithmic operation to the list
 
subroutine algorithm_update_elapsed_time(this)
The elapsed time is used for the output of run time information.
 
subroutine algorithm_next(this)
move to the next algorithmic operation
 
logical function algorithm_do_operation(this, operation)
try to perform one operation of the algorithm. If successfull return .true.
 
type(algorithmic_operation_t), parameter, public op_update_interactions
 
real(real64), parameter, public m_zero
 
This module implements fully polymorphic linked lists, and some specializations thereof.
 
Iterator to loop over the algorithmic operations of an algorithm.
 
An algorithm is a list of algorithmic operations executed sequentially.
 
Descriptor of one algorithmic operation.
 
This class implements an iterator for the polymorphic linked list.
 
This class implements a linked list of unlimited polymorphic values.