# Propagator class

### The propagator class

Definition of propagator_t

The type propagator_t is an extension of algorithm_t. Therefore, it contains the list of operations, which define the propagator. The elements of the propagator algorithm are defined as algorithmic operations. The complete propagation algorithm is then defined by adding each step of the algorithm to the propagator (see the examples).

Here, we define the following operations:


! Known propagation operations
character(len=ALGO_LABEL_LEN), public, parameter ::   &
SKIP                 = 'SKIP',                      &
FINISHED             = 'FINISHED',                  &
UPDATE_INTERACTIONS  = 'UPDATE_INTERACTIONS',       &
START_SCF_LOOP       = 'START_SCF_LOOP',            &
END_SCF_LOOP         = 'END_SCF_LOOP',              &
STORE_CURRENT_STATUS = 'STORE_CURRENT_STATUS'

type(algorithmic_operation_t), public, parameter :: &
OP_SKIP                 = algorithmic_operation_t(SKIP, 'Skipping propagation step'), &
OP_FINISHED             = algorithmic_operation_t(FINISHED,             'Propagation step finished'), &
OP_UPDATE_INTERACTIONS  = algorithmic_operation_t(UPDATE_INTERACTIONS,  'Propagation step - Updating interactions'),     &
OP_START_SCF_LOOP       = algorithmic_operation_t(START_SCF_LOOP,       'Starting SCF loop'),         &
OP_END_SCF_LOOP         = algorithmic_operation_t(END_SCF_LOOP,         'End of SCF iteration'),      &
OP_STORE_CURRENT_STATUS = algorithmic_operation_t(STORE_CURRENT_STATUS, 'Store current status')


These operations are general and not bound to a specific propagator, or a specific system. Therefore, they are implemented in the system_t class. For a discussion, see the section on time propagation.

The class procedures of propagator_t are those. handling the internal state of the propagator.

Specific propagators are defined as classes extending propagator_t. The necessary specific algorithmic steps are to be defined in the scope of the module file, containing the extending class.

Examples are:

Placement in the class hierarchy