29 use,
intrinsic :: iso_fortran_env
61 integer,
public,
parameter :: &
80 real(real64) :: final_time
98 type(namespace_t),
intent(in) :: namespace
99 type(propagator_factory_t) :: factory
107 if (factory%final_time <=
m_zero)
then
128 class(propagator_factory_t),
intent(in) :: this
129 class(interaction_partner_t),
intent(in),
target :: system
130 class(algorithm_t),
pointer :: algorithm
134 class(propagator_t),
pointer :: propagator
177 call parse_variable(system%namespace,
'TDSystemPropagator', prop_static, prop_type)
186 select case (prop_type)
219 propagator%final_time = this%final_time
223 propagator%system => system
228 algorithm => propagator
245 real(real64) :: largest_dt, smallest_dt
247 class(
system_t),
pointer :: subsystem
260 call iter%start(system%list)
261 do while (iter%has_next())
262 subsystem => iter%get_next()
263 select type (subalgorithm => subsystem%algo)
265 largest_dt = max(largest_dt, subalgorithm%dt)
266 smallest_dt = min(smallest_dt, subalgorithm%dt/subalgorithm%algo_steps)
275 propagator%final_time = this%final_time
279 propagator%system => system
284 algorithm => propagator
296 real(real64) :: dt_adjusted
308 if (dt_adjusted /= dt)
then
309 message(1) =
"The time-step was adjusted to make it commensurable with the minimum time-step:"
310 write(
message(2),
'(a,es21.15)')
" requested time-step = ", dt
311 write(
message(3),
'(a,es21.15)')
" adjusted time-step = ", dt_adjusted
Prints out to iunit a message in the form: ["InputVariable" = value] where "InputVariable" is given b...
This module defines the abstract interfact for algorithm factories.
This module implements the basic elements defining algorithms.
real(real64), parameter, public clock_minimum_dt
This CLOCK_MINIMUM_DT parameter defines what is the time-step in the common reference frame of all cl...
real(real64), parameter, public m_huge
real(real64), parameter, public m_zero
This module defines classes and functions for interaction partners.
subroutine, public messages_print_with_emphasis(msg, iunit, namespace)
character(len=512), private msg
subroutine, public messages_warning(no_lines, all_nodes, namespace)
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_input_error(namespace, var, details, row, column)
This module implements the basic mulsisystem class, a container system for other systems.
This module implements the factory for propagators.
integer, parameter, public prop_expgauss2
type(propagator_factory_t) function propagator_factory_constructor(namespace)
Constructor for the propagator factory.
integer, parameter, public prop_verlet
integer, parameter, public prop_aetrs_ms
real(real64) function propagator_factory_read_dt(this, namespace)
auxilliary function to read the time step from the input file
integer, parameter, public prop_beeman_scf
integer, parameter, public prop_bomd
class(algorithm_t) function, pointer propagator_factory_create_static(this, system)
Create a static propagator.
integer, parameter, public prop_expmid
integer, parameter, public prop_expgauss1
integer, parameter, public prop_expmid_2step
integer, parameter, public prop_expmid_2step_scf
integer, parameter, public prop_rk4
class(algorithm_t) function, pointer propagator_factory_create(this, system)
Create a general propagator.
integer, parameter, public prop_beeman
integer, parameter, public prop_leapfrog
This module implements the basic propagator framework.
This module implements the abstract system type.
This module defines the unit system, used for input and output.
type(unit_system_t), public units_inp
the units systems for reading and writing
Abstract class for the algorithm factories.
An algorithm is a list of algorithmic operations executed sequentially.
abstract class for general interaction partners
Container class for lists of system_oct_m::system_t.
Implements a propagator for Approximate ETRS.
Implements the Beeman propagator (with or without SCF)
Implements a propagator for Born-Oppenheimer molecular dynamics.
Implements the an exponential RK scheme with Gauss collocation points, s=1 see also Hochbruck,...
Implements the an exponential RK scheme with Gauss collocation points, s=2 see also Hochbruck,...
Implements the implicit exponential midpoint propagator with predictor-corrector.
Implements the explicit exponential midpoint propagator (without predictor-corrector)
This class defines the factory for propagators.
Implements a propagator for the leap frog algorithm.
Abstract class implementing propagators.
Implements a the 4th order Runge Kutta propagator.
Implements a propagator that keeps the state of the system constant. Note that a time-step is still r...
Implements a propagator for the velocity Verlet algorithm.
Abstract class for systems.