McL84scPropagator¶
About the McL84scPropagator class¶
The WaveBlocks Project
@author: R. Bourquin @copyright: Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016 R. Bourquin @license: Modified BSD License
Inheritance diagram¶
Class documentation¶
-
class
WaveBlocksND.McL84scPropagator(parameters, potential, packets=[])[source]¶ This class can numerically propagate given initial values
in
a potential
. The propagation is done for a given set of homogeneous
Hagedorn wavepackets neglecting interaction. It uses the McL84 and the idea of the
semiclassical splitting-
__init__(parameters, potential, packets=[])[source]¶ Initialize a new
SemiclassicalPropagatorinstance.Parameters: - parameters (A
ParameterProviderinstance) – AParameterProviderinstance containing at least the keydtfor providing the timestep
. - potential – The potential
the wavepacket
feels during the time propagation. - packet – The initial homogeneous Hagedorn wavepacket
we propagate in time.
Raises: ValueError – If the number of components of
does not match
the number of energy levels
of the potential.- parameters (A
-
add_wavepacket(packet)[source]¶ Add a new wavepacket
to the list of propagated wavepackets.Parameters: packet (A tuple
with
a HagedornWavepacketinstance and
an integer.) – The new wavepacket
and its leading component
.
-
build(method)¶ Parameters: method – A string specifying the method for time integration. Returns: Two arrays
and
.Method Order Authors Reference L42 (4,2) McLachlan [1] page 6 L62 (6,2) McLachlan [1] page 6 L82 (8,2) McLachlan [1] page 6 L102 (10,2) McLachlan [1] page 6 L84 (8,4) McLachlan [1] page 8 [1] (1, 2, 3, 4, 5) R.I. McLachlan, “Composition methods in the presence of small parameters”, BIT Numerical Mathematics, Volume 35, Issue 2, (1995) 258-268. There is also a 2003 version which was used for the implementation.
-
get_potential()¶ Returns the potential
used for time propagation.Returns: A MatrixPotentialsubclass instance.
-
get_wavepackets(packet=None)[source]¶ Return the wavepackets
that take part in the time propagation by the
current SemiclassicalPropagatorinstance.Parameters: packet (Integer or None) – The index
(in this list) of a single packet
that is
to be returned. If set to None(default) return the full list with all packets.Returns: A list of HagedornWavepacketinstances or a single instance.
-
intsplit(psia, psib, a, b, tspan, N, argsa=[], argsb=[])¶ Compute a single, full propagation step by operator splitting.
Parameters: - psia – First evolution operator

- psib – Second evolution operator

- a – Parameters for evolution with

- b – Parameters for evolution with

- tspan – Timespan
of a single, full splitting step - N – Number of substeps to perform
- argsa – Additional optional arguments of

- argsb – Additional optional arguments of

Note
The values for
argsaandargsbhave to be of typelisteven in case of single items.- psia – First evolution operator
-
post_propagate()¶ Given the wavefunction
at final time
,
perform some computations exactly once after running the ordinary
time propagation and before each time simulation data will be saved.This method does not raise an exception but instead just does nothing and returns.
-
pre_propagate()¶ Given the wavefunction
at initial time
,
perform some computations exactly once before running the ordinary
time propagation and after each time simulation data was saved.This method does not raise an exception but instead just does nothing and returns.
-
propagate()[source]¶ Given a wavepacket
at time
compute the propagated
wavepacket at time
. We perform exactly one timestep of size
here. This propagation is done for all packets in the list
and neglects any interaction between two packets.More details can be found in [2].
[2] - Blanes, R. Bourquin and V. Gradinaru, “Raising the Order of Convergence in the Semiclassical Splitting”.
-
of components
of
tuples.) – A list of new wavepackets
to propagate.