39 integer,
parameter,
public :: ALGO_LABEL_LEN = 50
46 character(len=ALGO_LABEL_LEN) :: id
48 character(len=ALGO_LABEL_LEN) :: label
54 character(len=ALGO_LABEL_LEN),
public,
parameter :: &
60 type(algorithmic_operation_t),
public,
parameter :: &
81 type(algorithm_iterator_t),
public :: iter
82 type(algorithmic_operation_t) :: current_ops
84 type(algorithmic_operation_t),
public :: start_step
85 type(algorithmic_operation_t),
public :: final_step
87 integer,
public :: algo_steps
91 logical,
public :: inside_scf = .false.
93 type(clock_t),
public :: clock
94 float :: start_time =
m_zero
95 float,
public :: elapsed_time =
m_zero
97 logical,
public :: is_static = .false.
105 procedure(algorithm_finished),
deferred :: finished
111 class(algorithm_t),
intent(in) :: this
119 class(algorithm_t),
intent(inout) :: this
120 type(algorithmic_operation_t),
intent(in) :: operation
124 call this%add_copy(operation)
147 this%elapsed_time =
loct_clock() - this%start_time
154 class(algorithm_t),
intent(inout) :: this
158 call this%iter%start(this)
171 this%current_ops = this%iter%get_next()
182 operation = this%current_ops
194 select type (ptr => this%get_next_ptr())
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_rewind_algorithm
type(algorithmic_operation_t) function algorithm_get_current_operation(this)
subroutine algorithm_rewind(this)
character(len=algo_label_len), parameter, public step_done
type(algorithmic_operation_t) function algorithm_iterator_get_next(this)
subroutine algorithm_add_operation(this, operation)
type(algorithmic_operation_t), parameter, public op_step_done
subroutine algorithm_update_elapsed_time(this)
subroutine algorithm_next(this)
logical function algorithm_do_operation(this, operation)
type(algorithmic_operation_t), parameter, public op_update_interactions
real(8), parameter, public m_zero
This module implements fully polymorphic linked lists, and some specializations thereof.
subroutine, public push_sub(sub_name)
subroutine, public pop_sub(sub_name)
Iterator to loop over the algorithmic operations of an algorithm.
An algorithm is a list of algorithmic operations executed sequentially. This is implemented as a link...
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.