qutip_qtrl.propcomp

Propagator Computer Classes used to calculate the propagators, and also the propagator gradient when exact gradient methods are used

Note the methods in the _Diag class was inspired by: DYNAMO - Dynamic Framework for Quantum Optimal Control See Machnes et.al., arXiv.1011.4874

Classes

PropCompApproxGrad(dynamics[, params])

This subclass can be used when the propagator is calculated simply by expm of the dynamics generator, i.e. when gradients will be calculated using approximate methods.

PropCompAugMat(dynamics[, params])

Augmented Matrix (deprecated - see _Frechet)

PropCompDiag(dynamics[, params])

Coumputes the propagator exponentiation using diagonalisation of of the dynamics generator

PropCompFrechet(dynamics[, params])

Frechet method for calculating the propagator: exponentiating the combined dynamics generator and the propagator gradient.

PropagatorComputer(dynamics[, params])

Base for all Propagator Computer classes that are used to calculate the propagators, and also the propagator gradient when exact gradient methods are used Note: they must be instantiated with a Dynamics object, that is the container for the data that the functions operate on This base class cannot be used directly.

class qutip_qtrl.propcomp.PropCompApproxGrad(dynamics, params=None)[source]

This subclass can be used when the propagator is calculated simply by expm of the dynamics generator, i.e. when gradients will be calculated using approximate methods.

reset()[source]

reset any configuration data

class qutip_qtrl.propcomp.PropCompAugMat(dynamics, params=None)[source]

Augmented Matrix (deprecated - see _Frechet)

It should work for all systems, e.g. open, symplectic There will be other PropagatorComputer subclasses that are more efficient The _Frechet class should provide exactly the same functionality more efficiently.

Note the propagator gradient calculation using the augmented matrix is taken from: ‘Robust quantum gates for open systems via optimal control: Markovian versus non-Markovian dynamics’ Frederik F Floether, Pierre de Fouquieres, and Sophie G Schirmer

reset()[source]

reset any configuration data

class qutip_qtrl.propcomp.PropCompDiag(dynamics, params=None)[source]

Coumputes the propagator exponentiation using diagonalisation of of the dynamics generator

reset()[source]

reset any configuration data

class qutip_qtrl.propcomp.PropCompFrechet(dynamics, params=None)[source]

Frechet method for calculating the propagator: exponentiating the combined dynamics generator and the propagator gradient. It should work for all systems, e.g. unitary, open, symplectic. There are other PropagatorComputer subclasses that may be more efficient.

reset()[source]

reset any configuration data

class qutip_qtrl.propcomp.PropagatorComputer(dynamics, params=None)[source]

Base for all Propagator Computer classes that are used to calculate the propagators, and also the propagator gradient when exact gradient methods are used Note: they must be instantiated with a Dynamics object, that is the container for the data that the functions operate on This base class cannot be used directly. See subclass descriptions and choose the appropriate one for the application

Attributes:
log_levelinteger

level of messaging output from the logger. Options are attributes of qutip_utils.logging, in decreasing levels of messaging, are: DEBUG_INTENSE, DEBUG_VERBOSE, DEBUG, INFO, WARN, ERROR, CRITICAL Anything WARN or above is effectively ‘quiet’ execution, assuming everything runs as expected. The default NOTSET implies that the level will be taken from the QuTiP settings file, which by default is WARN

grad_exactboolean

indicates whether the computer class instance is capable of computing propagator gradients. It is used to determine whether to create the Dynamics prop_grad array

apply_params(params=None)[source]

Set object attributes based on the dictionary (if any) passed in the instantiation, or passed as a parameter This is called during the instantiation automatically. The key value pairs are the attribute name and value Note: attributes are created if they do not exist already, and are overwritten if they do.

reset()[source]

reset any configuration data