SOLIDstate
A C++ library for solid state physics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
solid::QuantumDynamics< T1, T2, T3 > Class Template Reference

Quantum Dynamics class. More...

#include <QuantumDynamics.hpp>

Collaboration diagram for solid::QuantumDynamics< T1, T2, T3 >:
Collaboration graph
[legend]

Public Member Functions

void Create (QuantumSystem< T1, T2 > &qSystem, QuantumState< T3 > &initQuantumState, DynamicsSchedule< arma::SpMat< T2 >> &dynSchedule, MeasurementSchedule< T1, T2, T3 > &mesSchedule, const std::string label="rk4")
 QuantumDynamics constructor. More...
 
void Run ()
 Run the evolution. More...
 

Private Member Functions

void LoadParameters ()
 Loads the parameters with respect to time. More...
 
void Propagate ()
 Propagates the state. More...
 
void Measure ()
 performs MeasurmentSchedule More...
 

Private Attributes

double time
 
TermsEnabled terms
 
QuantumState< T3 > quantumState
 
QuantumSystem< T1, T2 > quantumSystem
 
Parameters< T2 > param
 
DynamicsSchedule< arma::SpMat
< T2 > > 
dynamicsSchedule
 
MeasurementSchedule< T1, T2, T3 > measurementSchedule
 
IQuantumDynamicSolver< T1, T2,
T3 > * 
solver
 

Friends

template<template< typename > class G1, typename G2 , typename G3 >
class RK4
 
template<template< typename > class G1, typename G2 , typename G3 >
class AdiabaticSolver
 
template<template< typename > class G1, typename G2 , typename G3 >
class IQuantumDynamicSolver
 

Detailed Description

template<template< typename > class T1, typename T2, typename T3>
class solid::QuantumDynamics< T1, T2, T3 >

Quantum Dynamics class.

It uses QuantumSystem QuantumState and DynamicsSchedule MeasurmentSchedule to study dynamics of initial state by performing evolution on the given path of selected IHamiltonian/Operator

Template Parameters
T1matrix type: arma::Mat and arma:SpMat are supported
T2data type of QuantumSystem: double, std::complex<double> are supported
T3data type of QuantumState: double, std::complex<double> are supported

Member Function Documentation

template<template< typename > class T1, typename T2, typename T3>
void solid::QuantumDynamics< T1, T2, T3 >::Create ( QuantumSystem< T1, T2 > &  qSystem,
QuantumState< T3 > &  initQuantumState,
DynamicsSchedule< arma::SpMat< T2 >> &  dynSchedule,
MeasurementSchedule< T1, T2, T3 > &  mesSchedule,
const std::string  label = "rk4" 
)
inline

QuantumDynamics constructor.

Parameters
qSystemIHamiltonian/Operator to evolve
initQuantumStateinitial QuantumState
dynScheduleDynamicsSchedule (how QuantumSystem Parameters changes during the time)
mesScheduleMeasurementSchedule (when and what to measure)
template<template< typename > class T1, typename T2 , typename T3 >
void solid::QuantumDynamics< T1, T2, T3 >::LoadParameters ( )
private

Loads the parameters with respect to time.

template<template< typename > class T1, typename T2 , typename T3 >
void solid::QuantumDynamics< T1, T2, T3 >::Measure ( )
private

performs MeasurmentSchedule

template<template< typename > class T1, typename T2 , typename T3 >
void solid::QuantumDynamics< T1, T2, T3 >::Propagate ( )
private

Propagates the state.

template<template< typename > class T1, typename T2 , typename T3 >
void solid::QuantumDynamics< T1, T2, T3 >::Run ( )

Run the evolution.

Friends And Related Function Documentation

template<template< typename > class T1, typename T2, typename T3>
template<template< typename > class G1, typename G2 , typename G3 >
friend class AdiabaticSolver
friend
template<template< typename > class T1, typename T2, typename T3>
template<template< typename > class G1, typename G2 , typename G3 >
friend class IQuantumDynamicSolver
friend
template<template< typename > class T1, typename T2, typename T3>
template<template< typename > class G1, typename G2 , typename G3 >
friend class RK4
friend

Member Data Documentation

template<template< typename > class T1, typename T2, typename T3>
DynamicsSchedule<arma::SpMat<T2> > solid::QuantumDynamics< T1, T2, T3 >::dynamicsSchedule
private
template<template< typename > class T1, typename T2, typename T3>
MeasurementSchedule<T1, T2, T3> solid::QuantumDynamics< T1, T2, T3 >::measurementSchedule
private

MeasurmentSchedule: when and what to measure

template<template< typename > class T1, typename T2, typename T3>
Parameters<T2> solid::QuantumDynamics< T1, T2, T3 >::param
private

copy of active parameters in QuantumSystem

template<template< typename > class T1, typename T2, typename T3>
QuantumState<T3> solid::QuantumDynamics< T1, T2, T3 >::quantumState
private

current QuantumState at given time

template<template< typename > class T1, typename T2, typename T3>
QuantumSystem<T1, T2> solid::QuantumDynamics< T1, T2, T3 >::quantumSystem
private

current QuantumSystem or Observable at given time

template<template< typename > class T1, typename T2, typename T3>
IQuantumDynamicSolver<T1, T2, T3>* solid::QuantumDynamics< T1, T2, T3 >::solver
private

pointer for IQuantumDynamicSolver<T1,T2,T3> (e.g. RK4, chebyshev...)

template<template< typename > class T1, typename T2, typename T3>
TermsEnabled solid::QuantumDynamics< T1, T2, T3 >::terms
private

copy of active terms in QuantumSystem

template<template< typename > class T1, typename T2, typename T3>
double solid::QuantumDynamics< T1, T2, T3 >::time
private

current time of the evolution


The documentation for this class was generated from the following files: