CheMPS2

#include <DMRG.h>
Public Member Functions  
DMRG (Problem *Probin, ConvergenceScheme *OptSchemeIn, const bool makechkpt=CheMPS2::DMRG_storeMpsOnDisk, const string tmpfolder=CheMPS2::defaultTMPpath)  
Constructor. More...  
virtual  ~DMRG () 
Destructor.  
double  Solve () 
Solver. More...  
void  PreSolve () 
Reconstruct the renormalized operators when you overwrite the matrix elements with Prob>setMxElement()  
void  calc2DMandCorrelations () 
Calculate the 2RDM and correlations. Afterwards the MPS is again in LLLLLLLC gauge.  
void  calc_rdms_and_correlations (const bool do_3rdm, const bool disk_3rdm=false) 
Calculate the reduced density matrices and correlations. Afterwards the MPS is again in LLLLLLLC gauge. More...  
TwoDM *  get2DM () 
Get the pointer to the 2RDM. More...  
ThreeDM *  get3DM () 
Get the pointer to the 3RDM. More...  
void  Symm4RDM (double *output, const int ham_orb1, const int ham_orb2, const bool last_case) 
Obtain the symmetrized 4RDM terms 0.5 * ( Gamma4_ijkl,pqrt + Gamma4_ijkt,pqrl ) with l and t fixed, after the 3RDM has been calculated. More...  
Correlations *  getCorrelations () 
Get the pointer to the Correlations. More...  
double  getSpecificCoefficient (int *coeff) const 
Get a specific FCI coefficient. The array coeff contains the occupation numbers of the L Hamiltonian orbitals. It is assumed that the unpaired electrons are all alpha electrons, and that this number equals twice the total targeted spin. More...  
double  getFCIcoefficient (int *alpha, int *beta, const bool mpi_chemps2_master_only=true) const 
Get a specific FCI coefficient. The arrays alpha and beta contain the alpha and beta occupation numbers of the L Hamiltonian orbitals. More...  
void  deleteStoredMPS () 
Call "rm " + CheMPS2::DMRG_MPS_storage_prefix + "*.h5".  
void  deleteStoredOperators () 
Call "rm " + tempfolder + "/" + CheMPS2::DMRG_OPERATOR_storage_prefix + string(thePID) + "*.h5";.  
void  activateExcitations (const int maxExcIn) 
Activate the necessary storage and machinery to handle excitations. More...  
void  newExcitation (const double EshiftIn) 
Push back current calculation and set everything up to calculate a (new) excitation. More...  
Static Public Member Functions  
static void  PrintLicense () 
Print the license.  
DMRG class.
The DMRG class solves the Problem with its given parameters. A fully SU(2) symmetric MPS wavefunction is variationally optimized in a twosite sweep algorithm. When the solution has been reached, the converged energy and spin contracted 2DMs can be accessed. For more information, please take a look at
S. Wouters, W. Poelmans, P.W. Ayers and D. Van Neck,
CheMPS2: a free opensource spinadapted implementation of the density matrix renormalization group for ab initio quantum chemistry,
Computer Physics Communications 185, 15011514 (2014)
http://dx.doi.org/10.1016/j.cpc.2014.01.019
http://arxiv.org/abs/1312.2415
S. Wouters and D. Van Neck,
The density matrix renormalization group for ab initio quantum chemistry,
European Physical Journal D 68, 272 (2014)
http://dx.doi.org/10.1140/epjd/e2014505001
http://arxiv.org/abs/1407.2040
The user manual: http://sebwouters.github.io/CheMPS2/index.html
CheMPS2::DMRG::DMRG  (  Problem *  Probin, 
ConvergenceScheme *  OptSchemeIn,  
const bool  makechkpt = CheMPS2::DMRG_storeMpsOnDisk , 

const string  tmpfolder = CheMPS2::defaultTMPpath 

) 
Constructor.
Probin  The problem to be solved 
OptSchemeIn  The optimization scheme for the DMRG sweeps 
makechkpt  Whether or not to save MPS checkpoints in the working directory 
tmpfolder  Temporary folder on a large partition to store the renormalized operators on disk (by default "/tmp") 
Definition at line 36 of file DMRG.cpp.
void CheMPS2::DMRG::activateExcitations  (  const int  maxExcIn  ) 
void CheMPS2::DMRG::calc_rdms_and_correlations  (  const bool  do_3rdm, 
const bool  disk_3rdm = false 

) 
Calculate the reduced density matrices and correlations. Afterwards the MPS is again in LLLLLLLC gauge.
do_3rdm  Whether or not to calculate the 3RDM 
disk_3rdm  Whether or not to use disk in order to avoid storing the full 3RDM of size L^6 
Definition at line 40 of file DMRGtechnics.cpp.

inline 

inline 

inline 
Get the pointer to the Correlations.
Definition at line 128 of file DMRG.h.
double CheMPS2::DMRG::getFCIcoefficient  (  int *  alpha, 
int *  beta,  
const bool  mpi_chemps2_master_only = true 

)  const 
Get a specific FCI coefficient. The arrays alpha and beta contain the alpha and beta occupation numbers of the L Hamiltonian orbitals.
alpha  Array containing the alpha electron occupation numbers of the L Hamiltonian orbitals (occupations can be 0 or 1). 
beta  Array containing the beta electron occupation numbers of the L Hamiltonian orbitals (occupations can be 0 or 1). 
mpi_chemps2_master_only  When running with MPI, whether only the master process should calculate the FCI coefficient. If false, any process can calculate the FCI coefficient, and it won't be broadcasted (allows for parallel FCI coefficient calculation). 
Definition at line 341 of file DMRGtechnics.cpp.
double CheMPS2::DMRG::getSpecificCoefficient  (  int *  coeff  )  const 
Get a specific FCI coefficient. The array coeff contains the occupation numbers of the L Hamiltonian orbitals. It is assumed that the unpaired electrons are all alpha electrons, and that this number equals twice the total targeted spin.
coeff  Array containing the occupation numbers of the L Hamiltonian orbitals (occupations can be 0, 1, or 2). 
Definition at line 324 of file DMRGtechnics.cpp.
void CheMPS2::DMRG::newExcitation  (  const double  EshiftIn  ) 
Push back current calculation and set everything up to calculate a (new) excitation.
EshiftIn  To the Hamiltonian, a level shift is introduced to exclude the previously calculated MPS: Hnew = Hold + EshiftIn *  prev> <prev 
Definition at line 395 of file DMRG.cpp.
double CheMPS2::DMRG::Solve  (  ) 
void CheMPS2::DMRG::Symm4RDM  (  double *  output, 
const int  ham_orb1,  
const int  ham_orb2,  
const bool  last_case  
) 
Obtain the symmetrized 4RDM terms 0.5 * ( Gamma4_ijkl,pqrt + Gamma4_ijkt,pqrl ) with l and t fixed, after the 3RDM has been calculated.
output  Array to store the symmetrized 4RDM terms in Hamiltonian index notation: output[ i + L * ( j + L * ( k + L * ( p + L * ( q + L * r )))) ] = 0.5 * ( Gamma4_ijkl,pqrt + Gamma4_ijkt,pqrl ). 
ham_orb1  The Hamiltonian index of the first fixed orbital. 
ham_orb2  The Hamiltonian index of the second fixed orbital. 
last_case  If true, everything will be set up to allow to continue sweeping. 
Definition at line 41 of file DMRGfock.cpp.