45 class(multisystem_basic_t),
intent(inout) :: systems
46 logical,
intent(in) :: from_scratch
48 logical :: trigger_restart, stop_code, stop_loop
49 logical :: restart_read
59 call systems%init_iteration_counters()
60 if (.not. from_scratch)
then
61 restart_read = systems%restart_read()
63 restart_read = .false.
65 if (restart_read)
then
66 message(1) =
"Successfully read restart data for all system."
69 call systems%initialize()
72 call systems%algorithm_start()
78 do while (.not. systems%algorithm_finished())
80 call systems%execute_algorithm()
86 if (trigger_restart .and. .not. stop_loop)
then
87 call systems%start_barrier(systems%next_time_on_largest_dt(),
barrier_restart)
89 trigger_restart = .false.
92 call systems%restart_write()
98 if (systems%algorithm_finished())
then
99 call systems%restart_write()
104 call systems%algorithm_finish()
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_info(no_lines, iunit, debug_only, stress, all_nodes, namespace)
This module implements the basic mulsisystem class, a container system for other systems.
This module implements the multisystem debug functionality.
subroutine, public multisystem_debug_write_marker(system_namespace, event)
subroutine, public multisystem_debug_init(filename, namespace, group)
subroutine, public multisystem_debug_end()
subroutine, public multisystem_run(systems, from_scratch)
type(namespace_t), public global_namespace
logical function, public clean_stop(comm)
returns true if a file named stop exists
This module implements the abstract system type.
integer, parameter, public barrier_restart
This module provices a simple timer class which can be used to trigger the writing of a restart file ...
logical function, public walltimer_alarm(comm, print)
indicate whether time is up
logical function, public restart_walltime_period_alarm(comm)