pomerol  2.1
Public Member Functions

Many-body Gibbs density matrix. More...

#include <DensityMatrix.hpp>

Inheritance diagram for Pomerol::DensityMatrix:
Inheritance graph
[legend]
Collaboration diagram for Pomerol::DensityMatrix:
Collaboration graph
[legend]

Public Member Functions

 DensityMatrix (StatesClassification const &S, Hamiltonian const &H, RealType beta)
 
 ~DensityMatrix ()=default
 Destructor. More...
 
void prepare ()
 Allocate memory for the parts. More...
 
void compute ()
 
DensityMatrixPart const & getPart (BlockNumber B) const
 
RealType getWeight (QuantumState state) const
 
RealType getAverageEnergy () const
 Compute the average energy \( \langle E\rangle = \sum_s E_s w_s\). More...
 
void truncateBlocks (RealType Tolerance, bool verbose=true)
 
bool isRetained (BlockNumber B) const
 
- Public Member Functions inherited from Pomerol::Thermal
 Thermal (RealType beta)
 
- Public Member Functions inherited from Pomerol::ComputableObject
 ComputableObject ()=default
 
StatusEnum getStatus () const
 Return the current computation status. More...
 
void setStatus (StatusEnum Status_in)
 

Additional Inherited Members

- Public Types inherited from Pomerol::ComputableObject
enum  StatusEnum { Constructed, Prepared, Computed }
 Computation status of the object. More...
 
- Data Fields inherited from Pomerol::Thermal
const RealType beta
 Inverse temperature \(\beta\). More...
 
const ComplexType MatsubaraSpacing
 Spacing between (imaginary) Matsubara frequencies, \(i\pi/\beta\). More...
 
- Protected Attributes inherited from Pomerol::ComputableObject
StatusEnum Status = Constructed
 Current computation status. More...
 

Detailed Description

Many-body Gibbs density matrix.

This class represents a many-body Gibbs density matrix

\[ \hat\rho = \frac{e^{-\beta\hat H}}{Z}, \quad Z = Tr[e^{-\beta\hat H}]. \]

The matrix is stored as a list of DensityMatrixPart (diagonal blocks), which correspond to invariant subspaces/diagonal blocks of the Hamiltonian \(\hat H\).

Definition at line 42 of file DensityMatrix.hpp.

Constructor & Destructor Documentation

◆ DensityMatrix()

Pomerol::DensityMatrix::DensityMatrix ( StatesClassification const &  S,
Hamiltonian const &  H,
RealType  beta 
)

Constructor.

Parameters
[in]SInformation about invariant subspaces of the Hamiltonian.
[in]HThe Hamiltonian \(\hat H\).
[in]betaInverse temperature \(\beta\).

◆ ~DensityMatrix()

Pomerol::DensityMatrix::~DensityMatrix ( )
default

Destructor.

Member Function Documentation

◆ compute()

void Pomerol::DensityMatrix::compute ( )

Compute statistical weights within every part (diagonal block).

Precondition
prepare() has been called.

◆ getAverageEnergy()

RealType Pomerol::DensityMatrix::getAverageEnergy ( ) const

Compute the average energy \( \langle E\rangle = \sum_s E_s w_s\).

◆ getPart()

DensityMatrixPart const& Pomerol::DensityMatrix::getPart ( BlockNumber  B) const

Return a reference to a part (diagonal block).

Parameters
[in]BIndex of the part.

◆ getWeight()

RealType Pomerol::DensityMatrix::getWeight ( QuantumState  state) const

Return a statistical weight corresponding to a specified eigenstate.

Parameters
[in]stateIndex of the eigenstate within the full Hilbert space.

◆ isRetained()

bool Pomerol::DensityMatrix::isRetained ( BlockNumber  B) const

Does a given block contain any non-negligible statistical weights?

Parameters
[in]BIndex of the part (block).

◆ prepare()

void Pomerol::DensityMatrix::prepare ( )

Allocate memory for the parts.

◆ truncateBlocks()

void Pomerol::DensityMatrix::truncateBlocks ( RealType  Tolerance,
bool  verbose = true 
)

Check if any of the statistical weights within each block is above a given tolerance. If not, mark the respective block as irrelevant (set the Retained flag to false).

Parameters
[in]ToleranceStatistical weights smaller or equal to this value are considered negligible.
[in]verbosePrint out information about the truncation results.

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