Abstract class for systems.
All explicit systems are derived from this class.
Definition at line 172 of file system.F90.
|
type(iteration_counter_t), public | iteration |
|
class(algorithm_t), pointer, public | algo => null() |
|
integer, dimension(:), allocatable, 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(real64), public | kinetic_energy |
| Energy not from interactions, like the kinetic energy. More...
|
|
real(real64), public | potential_energy |
| Energy from the interactions with external systems. More...
|
|
real(real64), public | internal_energy |
| Energy from the interactions with itself and for containers the kinetic energy of its constituents. More...
|
|
real(real64), public | total_energy |
| Sum of internal, external, and self energy. More...
|
|
type(namespace_t), public | namespace |
|
integer, dimension(:), allocatable, 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_iteration_counters => system_reset_iteration_counters |
|
procedure | init_algorithm => system_init_algorithm |
|
procedure | algorithm_finished => system_algorithm_finished |
|
procedure | init_iteration_counters => system_init_iteration_counters |
| Initialize the iteration counters of the system and its interactions, algorithms and quantities. More...
|
|
procedure | create_interactions => system_create_interactions |
| create the interactions of the system More...
|
|
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_couplings => system_update_couplings |
| Update the couplings (quantities) of the interaction partners. More...
|
|
procedure | update_interactions => system_update_interactions |
| Attempt to update all interactions of the system. More...
|
|
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_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 couplings update
The couplings update is always considered a barrier, even if the update was successful. This is to allow other system to also update their couplings with this system before it moves on to the next operations.
Definition at line 189 of file system.F90.
procedure system_oct_m::system_t::init_iteration_counters |
|
private |
Initialize the iteration counters of the system and its interactions, algorithms and quantities.
Note that th iteration counters for interactions, and on-demand quantities are initialized to one iteration before the algorithm iteration counter. This is necessary, as the interactions and on-demand quantities first need to be updated.
Definition at line 193 of file system.F90.
Execute one operation that is part of a larger algorithm. Returns true if the operation was successfully executed, false otherwise.
Unsuccessful operations can occur, e.g. of quantities from an interaction are required, but the interaction is still behind in terms of the iteration counters.
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 218 of file system.F90.