API Outline
The TEMPO Collaboration is continuously developing new methods to make this package applicable to a wider set of scenarios. This calls for a flexible API design to allow to reuse the same objects with different algorithms. We therefore choose an almost fully object oriented approach. The functions and objects fall into 4 categories:
Physical: Consists of objects that describe physical quantities, like for example a system Hamiltonian or the spectral density of an environment.
Methods: Gathers the information from physical objects and applies a numerical method using particular simulation parameters.
Results: Encode the results of a computation. Unlike physical objects, these objects may depend on computational parameters (like for example a specific time step length).
Utilities: Supplies some handy utilities such as shorthands for the Pauli operators.
Physical
Systems
- class
oqupy.system.BaseSystem
Abstract class representing a quantum system of interest.
- class
oqupy.system.System
Encodes system Hamiltonian and possibly some additional Markovian decay.
- class
oqupy.system.TimeDependentSystem
Encodes a time dependent system Hamiltonian and possibly some additional time dependent Markovian decay.
- class
oqupy.system.TimeDependentSystemWithField
Encodes a time dependent system Hamiltonian (and possibly some additional time dependent Markovian decay) that couples to a classical field which in turn evolves according to a prescribed Heisenberg equation of motion.
- class
- class
oqupy.system.SystemChain
Encodes a 1D chain of systems and possibly some additional Markovian decay.
Control
- class
oqupy.control.Control
Encodes control operations on oqupy.system.BaseSystem objects.
- class
oqupy.control.ChainControl
Encodes control operations on oqupy.system.SystemChain objects.
Environment
- class
oqupy.correlations.BaseCorrelations
Abstract class representing the environments auto-correlations.
- class
oqupy.correlations.CustomCorrelations
Encode an explicitly given environment auto-correlation function.
- class
oqupy.correlations.CustomSD
Encodes the auto-correlations for a given spectral density.
- class
oqupy.correlations.PowerLawSD
Encodes the auto-correlations for a given spectral density of a power law form.
- class
- class
oqupy.bath.Bath
Bundles a
oqupy.correlations.BaseCorrelations
object together with a coupling operator.
Methods
TEMPO
(Time Evolving Matrix Product Operator)
- class
oqupy.tempo.TempoParameters
Stores a set of parameters for a TEMPO computation.
- class
oqupy.tempo.BaseTempo
Abstract class for all TEMPO computations.
- class
oqupy.tempo.Tempo
Class to facilitate a TEMPO computation.
- method
oqupy.tempo.Tempo.compute()
Method that carries out a TEMPO computation and creates a
oqupy.dynamics.Dynamics
object.
- method
- class
oqupy.tempo.TempoWithField
Class to facilitate a TEMPO computation with concurrent evolution of a classical field.
- method
oqupy.tempo.TempoWithField.compute()
Method that carries out a TEMPO computation while evolving a classical field, and creates a
oqupy.dynamics.DynamicsWithField
object.
- method
- class
- function
oqupy.tempo.guess_tempo_parameters()
Function that chooses an appropriate set of parameters for a particular TEMPO computation.
PT-TEMPO
(Process Tensor - Time Evolving Matrix Product Operator)
- class
oqupy.pt_tempo.PtTempo
Class to facilitate a PT-TEMPO computation.
- method
oqupy.pt_tempo.PtTempo.compute()
Method that carries out a PT-TEMPO computation and creates an
oqupy.process_tensor.BaseProcessTensor
object.
- method
Process Tensor Applications
- function
oqupy.contractions.compute_dynamics()
Compute a
oqupy.dynamics.Dynamics
object for givenoqupy.system.System
oroqupy.system.TimeDependentSystem
andoqupy.control.Control
andoqupy.process_tensor.BaseProcessTensor
objects.- function
oqupy.contractions.compute_dynamics_with_field()
Compute a
oqupy.dynamics.DynamicsWithField
object for givenoqupy.system.TimeDependentSystemWithField
andoqupy.control.Control
andoqupy.process_tensor.BaseProcessTensor
objects.- function
oqupy.contractions.compute_correlations()
Compute two time correlations for given
oqupy.system.BaseSystem
andoqupy.process_tensor.BaseProcessTensor
objects.- class
oqupy.bath_dynamics.TwoTimeBathCorrelations
Class to facilitate calculation of two-time bath correlations.
- method
oqupy.bath_dynamics.TwoTimeBathCorrelations.occupation()
Function to calculate the change in bath occupation in a particular bandwidth.
- method
oqupy.bath_dynamics.TwoTimeBathCorrelations.correlation()
Function to calculate two-time correlation function between two frequency bands of a bath.
- method
PT-TEBD
(Process Tensor - Time Evolving Block Decimation)
- class
oqupy.pt_tebd.PtTebdParameters
Stores a set of parameters for a PT-TEBD computation.
- class
oqupy.pt_tebd.PtTebd
Class to facilitate a PT-TEBD computation.
- method
oqupy.pt_tebd.PtTebd.compute()
Method that carries out a PT-TEMPO computation and returns an results dictionary.
- method
Results
- class
oqupy.dynamics.Dynamics
Object that encodes the discretized evolution of the reduced density matrix of a system.
- class
oqupy.dynamics.DynamicsWithField
Object that encodes the discretized evolution of the reduced density matrix of a system together with that of a classical field.
- class
oqupy.process_tensor.BaseProcessTensor
Object that encodes a so called process tensor (which captures all possible Markovian and non-Markovian interactions between some system and an environment).
Utilities
- module
oqupy.operators
Supplies several commonly used operators, such as the Pauli matrices and spin density matrices.
- function
oqupy.helpers.plot_correlations_with_parameters()
A helper function to plot an auto-correlation function and the sampling points given by a set of parameters for a TEMPO computation.