TBTK Need a break? Support the development by playing Polarity Puzzles
TBTK::HoppingAmplitude Class Reference

Hopping amplitude from state 'from' to state 'to'. More...

#include <HoppingAmplitude.h>

## Classes

class  AmplitudeCallback

## Public Member Functions

HoppingAmplitude ()

HoppingAmplitude (std::complex< double > amplitude, Index toIndex, Index fromIndex)

HoppingAmplitude (const AmplitudeCallback &callback, Index toIndex, Index fromIndex)

HoppingAmplitude (const HoppingAmplitude &ha)

HoppingAmplitude (const std::string &serialization, Serializable::Mode mode)

HoppingAmplitude getHermitianConjugate () const

void print () const

std::complex< double > getAmplitude () const

std::tuple< HoppingAmplitude, HoppingAmplitudeoperator+ (const HermitianConjugate hc)

const IndexgetToIndex () const

const IndexgetFromIndex () const

bool getIsCallbackDependent () const

const AmplitudeCallbackgetAmplitudeCallback () const

std::string toString () const

std::string serialize (Serializable::Mode mode) const

unsigned int getSizeInBytes () const

## Friends

std::ostream & operator<< (std::ostream &stream, const HoppingAmplitude &hoppingAmplitude)

## Detailed Description

Hopping amplitude from state 'from' to state 'to'.

A hopping amplitude is a coefficeint $$a_{ij}$$ in a bilinear Hamiltonian $$H = \sum_{ij}a_{ij}c_{i}^{\dagger}c_{j}$$, where $$i$$ and $$j$$ are reffered to using 'to' and 'from' respectively. The constructors can be called with the parameters either in the order (from, to, value) or the order (value, to, from). The former follows the order in which the process can be thought of as happening, while the later corresponds to the order in which values and operators stands in the Hamiltonian.

# Example

#include "TBTK/Streams.h"
#include "TBTK/TBTK.h"
#include <complex>
using namespace std;
using namespace TBTK;
int main(){
HoppingAmplitude hoppingAmplitude(1, {1, 2, 3}, {4, 5});
Streams::out << hoppingAmplitude << "\n";
std::complex<double> amplitude = hoppingAmplitude.getAmplitude();
Index toIndex = hoppingAmplitude.getToIndex();
Index fromIndex = hoppingAmplitude.getFromIndex();
Streams::out << amplitude << "\n";
Streams::out << toIndex.toString() << "\n";
Streams::out << fromIndex.toString() << "\n";
}

## Output

Is callback dependent: False
Amplitude: (1,0)
To-Index: {1, 2, 3}
From-Index: {4, 5}
(1,0)
{1, 2, 3}
{4, 5}

## ◆ HoppingAmplitude() [1/5]

 TBTK::HoppingAmplitude::HoppingAmplitude ( )

Constructs an uninitialized HoppingAmplitude.

## ◆ HoppingAmplitude() [2/5]

 TBTK::HoppingAmplitude::HoppingAmplitude ( std::complex< double > amplitude, Index toIndex, Index fromIndex )

Constructs a HoppingAmplitude from a value and two Indices.

Parameters
 amplitude The amplitude value. toIndex The left index (i or to-Index) on the HoppingAmplitude. fromIndex The right index (j or from-Index) on the HoppingAmplitude.

## ◆ HoppingAmplitude() [3/5]

 TBTK::HoppingAmplitude::HoppingAmplitude ( const AmplitudeCallback & callback, Index toIndex, Index fromIndex )

Constructor. Takes an AmplitudeCallback rather than a paramater value. The AmplitudeCallback has to be defined such that it returns a value for the given indices when called at run time.

Parameters
 amplitudeCallback An AmplitudeCallback that is able to return a value when passed toIndex and fromIndex. toIndex The left index (i or to-Index) on the HoppingAmplitude. fromIndex The right index (j or from-Index) on the HoppingAmplitude.

## ◆ HoppingAmplitude() [4/5]

 TBTK::HoppingAmplitude::HoppingAmplitude ( const HoppingAmplitude & ha )

Copy constructor.

Parameters
 ha HoppingAmplitude to copy.

## ◆ HoppingAmplitude() [5/5]

 TBTK::HoppingAmplitude::HoppingAmplitude ( const std::string & serialization, Serializable::Mode mode )

Constructor. Constructs the HoppingAmplitude from a serialization string.

Parameters
 serialization Serialization string from which to construct the Index. mode Mode with which the string has been serialized.

## ◆ getAmplitude()

 std::complex< double > TBTK::HoppingAmplitude::getAmplitude ( ) const
inline

Get the amplitude value $$a_{ij}$$.

Returns
The value of the amplitude.

## ◆ getAmplitudeCallback()

 const HoppingAmplitude::AmplitudeCallback & TBTK::HoppingAmplitude::getAmplitudeCallback ( ) const
inline

Get the AmplitudeCallback that is used to determine the value of the HoppingAmplitude. This function stops execution if no AmplitudeCallback is used for the HoppingAmplitude. Therefore always first check whether the HoppingAmplitude is callback dependent with getIsCallbackDependent().

Returns
The AmplitudeCallback that is used to determine the value of the HoppingAmplitude.

## ◆ getFromIndex()

 const Index & TBTK::HoppingAmplitude::getFromIndex ( ) const
inline

Get from index.

Returns
The from Index.

## ◆ getHermitianConjugate()

 HoppingAmplitude TBTK::HoppingAmplitude::getHermitianConjugate ( ) const

Get the Hermitian cojugate of the HoppingAmplitude.

Returns
The Hermitian conjugate of the HoppingAmplitude.

## ◆ getIsCallbackDependent()

 bool TBTK::HoppingAmplitude::getIsCallbackDependent ( ) const
inline

Get whether the value of the HoppingAmplitude is determined through an AmplitudeCallback.

Returns
True if the value of the HoppingAmplitude is determined through an AmplitudeCallback.

## ◆ getSizeInBytes()

 unsigned int TBTK::HoppingAmplitude::getSizeInBytes ( ) const
inline

Get size in bytes.

Returns
Memory size required to store the HoppingAmplitude.

## ◆ getToIndex()

 const Index & TBTK::HoppingAmplitude::getToIndex ( ) const
inline

Get to index.

Returns
The to-Index.

## ◆ operator+()

 std::tuple< HoppingAmplitude, HoppingAmplitude > TBTK::HoppingAmplitude::operator+ ( const HermitianConjugate hc )
inline

Addition operator. Creates a tuple containing the HoppingAmplitude and its Hermitian conjugate. Used to allow the syntax
model << hoppingAmplitude + HC.

Parameters
 hc Should be HC.
Returns
HoppingAmplitude tuple containing the original HoppingAmplitude and its Hermitian conjugate.

## ◆ print()

 void TBTK::HoppingAmplitude::print ( ) const

Print HoppingAmplitude. Mainly for debugging.

## ◆ serialize()

 std::string TBTK::HoppingAmplitude::serialize ( Serializable::Mode mode ) const

Serialize HoppingAmplitude. Note that HoppingAmplitude is pseudo-Serializable in that it implements the Serializable interface, but does so non-virtually.

Parameters
 mode Serialization mode to use.
Returns
Serialized string representation of the HoppingAmplitude.

## ◆ toString()

 std::string TBTK::HoppingAmplitude::toString ( ) const
inline

Get string representation of the HoppingAmplitude.

Returns
A string representation of the HoppingAmplitude.

## ◆ operator<<

 std::ostream& operator<< ( std::ostream & stream, const HoppingAmplitude & hoppingAmplitude )
friend

Writes the HoppingAmplitudes toString()-representation to a stream.

Parameters
 stream The stream to write to. hoppingAmplitude The HoppingAmplitude to write.
Returns
Reference to the output stream just written to.

The documentation for this class was generated from the following file:
TBTK::HoppingAmplitude::HoppingAmplitude
HoppingAmplitude()
TBTK::Index::toString
std::string toString() const
Definition: Index.h:349
Streams.h
Streams for TBTK output.
TBTK::Initialize
void Initialize()
TBTK::HoppingAmplitude
Hopping amplitude from state 'from' to state 'to'.
Definition: HoppingAmplitude.h:53
TBTK::Streams::out
static std::ostream out
Definition: Streams.h:70
HoppingAmplitude.h
Hopping amplitude from state 'from' to state 'to'.
TBTK::Index
Physical index.
Definition: Index.h:44
TBTK.h
TBTK initialization.