Abstract class for systems.
All explicit systems are derived from this class.
Definition at line 164 of file system.F90.
|
class(algorithm_t), pointer, public | algo => null() |
|
integer, public | accumulated_loop_ticks |
|
integer, public | interaction_timing |
| parameter to determine if interactions should use the quantities at the exact time or if retardation is allowed More...
|
|
type(integer_list_t), public | supported_interactions |
|
type(interaction_list_t), public | interactions |
| List with all the interactions of this system. More...
|
|
type(mpi_grp_t), public | grp |
| mpi group for this system More...
|
|
real(8), public | kinetic_energy |
| Energy not from interactions, like the kinetic energy. More...
|
|
real(8), public | potential_energy |
| Energy from the interactions with external systems. More...
|
|
real(8), public | internal_energy |
| Energy from the interactions with itself and for containers the kinetic energy of its constituents. More...
|
|
real(8), public | total_energy |
| Sum of internal, external, and self energy. More...
|
|
type(namespace_t), public | namespace |
|
type(clock_t), public | clock |
|
type(space_t), public | space |
|
type(integer_list_t), public | supported_interactions_as_partner |
| list of interactions, which support this interaction_partner_t as partner More...
|
|
type(quantity_t), dimension(max_quantities), public | quantities |
| Array of all possible quantities. The elements of the array are accessed using the quantity`s identifiers. More...
|
|
|
procedure | execute_algorithm => system_execute_algorithm |
| perform one or more algorithmic operations More...
|
|
procedure | reset_clocks => system_reset_clocks |
|
procedure | update_exposed_quantities => system_update_exposed_quantities |
| update all exposed quantities of the system. More...
|
|
procedure | init_algorithm => system_init_algorithm |
|
procedure | algorithm_finished => system_algorithm_finished |
|
procedure | init_clocks => system_init_clocks |
|
procedure | init_all_interactions => system_init_all_interactions |
|
procedure | init_parallelization => system_init_parallelization |
| Basic functionality: copy the MPI group. This function needs to be implemented by extended types that need more initialization for their parallelization. More...
|
|
procedure | update_interactions => system_update_interactions |
|
procedure | update_interactions_start => system_update_interactions_start |
|
procedure | update_interactions_finish => system_update_interactions_finish |
|
procedure | propagation_start => system_propagation_start |
|
procedure | propagation_finish => system_propagation_finish |
|
procedure | iteration_info => system_iteration_info |
|
procedure | restart_write => system_restart_write |
|
procedure | restart_read => system_restart_read |
|
procedure | output_start => system_output_start |
|
procedure | output_write => system_output_write |
|
procedure | output_finish => system_output_finish |
|
procedure | process_is_slave => system_process_is_slave |
|
procedure | start_barrier => system_start_barrier |
|
procedure | end_barrier => system_end_barrier |
|
procedure | arrived_at_barrier => system_arrived_at_barrier |
|
procedure | arrived_at_any_barrier => system_arrived_at_any_barrier |
|
procedure | update_potential_energy => system_update_potential_energy |
| Calculate the potential energy of the system. The potential energy is defined as the sum of all energies arising from interactions with external systems. (Note that multisystems override this function) More...
|
|
procedure | update_internal_energy => system_update_internal_energy |
| Calculate the internal energy of the system. The internal energy is defined as the sum of all energies arising from intra-interactions and the entropy terms (if available). (Note that multisystems override this function) More...
|
|
procedure | update_total_energy => system_update_total_energy |
| Calculate the total energy of the system. The total energy is defined as the sum of the kinetic, the internal and the potential energies. More...
|
|
procedure(system_init_interaction), deferred | init_interaction |
| initialize a given interaction of the system More...
|
|
procedure(system_initial_conditions), deferred | initial_conditions |
| set initial conditions for a system More...
|
|
procedure(system_do_algorithmic_operation), deferred | do_algorithmic_operation |
| Execute one operation that is part of a larger algorithm. Returns true if the operation was successfully executed, false otherwise. More...
|
|
procedure(system_is_tolerance_reached), deferred | is_tolerance_reached |
| check whether a system has reached a given tolerance More...
|
|
procedure(system_update_quantity), deferred | update_quantity |
|
procedure(system_update_exposed_quantity), deferred | update_exposed_quantity |
|
procedure(system_restart_write_data), deferred | restart_write_data |
|
procedure(system_restart_read_data), deferred | restart_read_data |
|
procedure(system_update_kinetic_energy), deferred | update_kinetic_energy |
|
procedure system_oct_m::system_t::execute_algorithm |
|
private |
perform one or more algorithmic operations
The following subroutine takes a system and performs as many algorithmic operations as possible on the system until a barrier is reached. There are two types of barriers:
- explicit barriers, implemented using the barrier_t type
- the interaction update
The interaction update is always considered a barrier, even if the update was successful. This is to allow other system to also update their interactions before this system moves on to the next operations.
Definition at line 185 of file system.F90.
Execute one operation that is part of a larger algorithm. Returns true if the operation was successfully executed, false otherwise.
On output, the routine should also provide a list quantities that were updated. If no quantitiy was updated, then the corresponding array should be left unallocated.
Definition at line 214 of file system.F90.