CheMPS2

#include <EdmistonRuedenberg.h>
Public Member Functions  
EdmistonRuedenberg (const FourIndex *Vmat, const int group, const int printLevelIn=1)  
Constructor. More...  
virtual  ~EdmistonRuedenberg () 
Destructor.  
double  Optimize (double *temp1, double *temp2, const bool startFromRandomUnitary, const double gradThreshold=EDMISTONRUED_gradThreshold, const int maxIter=EDMISTONRUED_maxIter) 
Maximize the EdmistonRuedenberg cost function. More...  
void  FiedlerExchange (const int maxlinsize, double *temp1, double *temp2) 
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized (per irrep) More...  
void  FiedlerGlobal (int *dmrg2ham) const 
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized. More...  
DMRGSCFunitary *  getUnitary () 
Get the pointer to the unitary to use in DMRGSCF. More...  
EdmistonRuedenberg class.
DMRG is not invariant with respect to orbital choice and ordering [LOC1]. An MPS introduces an artificial correlation length. Highly correlated orbitals should be placed close to each other for optimal DMRG performance. The correlation between localized orbitals in extended molecules decreases with increasing spatial separation. The exchange matrix directly reflects orbital overlap and separation. Minimizing its bandwidth yields a good ordering for extended molecules [LOC2, LOC3].
Physics notation is assumed for the twobody matrix elements (the electron repulsion integrals with eightfold permutation symmetry):
Edmiston and Ruedenberg proposed to maximize the cost function
in order to obtain localized orthonormal orbitals [LOC4]. When the spatial extent of an orbital is small, its selfrepulsion will indeed be high. CheMPS2 obtains localized orbitals (per irrep) with an augmented Hessian NewtonRaphson maximization of , which can be called with the function CheMPS2::EdmistonRuedenberg::Optimize.
The orbitals which maximize the cost function can be parametrized with an orthogonal matrix (see CheMPS2::CASSCF):
The following derivatives from Ref. [LOC5] are useful:
in which is the element in which corresponds to . Keeping the eightfold permutation symmetry of in mind, the gradient of with respect to orbital rotations is
and the Hessian
Once localized orbitals are obtained, they can be ordered so that the bandwidth of the exchange matrix is minimal. This matrix has only nonnegative entries [LOC6]:
A fast approximate bandwidth minimization is obtained by the socalled Fiedler vector [LOC7, LOC8, LOC9, LOC10]. Consider the minimization of the cost function
where the (continuous) variable denotes the optimal position of orbital . In order to fix translational invariance and normalization of the solution, the constraints and are imposed. The cost function can be rewritten as
with the symmetric and positive semidefinite Laplacian :
The constant vector is an eigenvector of with eigenvalue 0, which is discarded due to the translational invariance constraint. When the exchange matrix is not blockdiagonal, all other eigenvalues are positive. The eigenvector with smallest nonzero eigenvalue is the Fiedler vector, the solution to the constrained minimization of [LOC7, LOC8, LOC9, LOC10]. When the indices of the orbitals are permuted so that they are ordered according to the continuous variables in the Fiedler vector, a fast approximate bandwidth minimization of the exchange matrix is performed. CheMPS2 orders the localized orbitals according to the Fiedler vector of the exchange matrix, which is performed in the function CheMPS2::EdmistonRuedenberg::FiedlerExchange.
[LOC1] S. Wouters and D. Van Neck, European Physical Journal D 68, 272 (2014). http://dx.doi.org/10.1140/epjd/e2014505001
[LOC2] W. Mizukami, Y. Kurashige and T. Yanai, Journal of Chemical Theory and Computation 9, 401407 (2013). http://dx.doi.org/10.1021/ct3008974
[LOC3] N. Nakatani and G.K.L. Chan, Journal of Chemical Physics 138, 134113 (2013). http://dx.doi.org/10.1063/1.4798639
[LOC4] C. Edmiston and K. Ruedenberg, Reviews of Modern Physics 35, 457464 (1963). http://dx.doi.org/10.1103/RevModPhys.35.457
[LOC5] P.E.M. Siegbahn, J. Almlof, A. Heiberg and B.O. Roos, Journal of Chemical Physics 74, 23842396 (1981). http://dx.doi.org/10.1063/1.441359
[LOC6] A. Auerbach, Interacting Electrons and Quantum Magnetism, Springer, Heidelberg, 1994.
[LOC7] M. Fiedler, Czechoslovak Mathematical Journal 23, 298305 (1973). http://dml.cz/dmlcz/101168
[LOC8] M. Fiedler, Czechoslovak Mathematical Journal 25, 619633 (1975). http://dml.cz/dmlcz/101357
[LOC9] G. Barcza, O. Legeza, K. H. Marti, M. Reiher, Physical Review A 83, 012508 (2011). http://dx.doi.org/10.1103/PhysRevA.83.012508
[LOC10] M.W. Berry, Fiedler ordering, http://web.eecs.utk.edu/~mberry/order/node9.html (1996).
In the Boys localization method, the cost function
is maximized. With an orthogonal orbital rotation , the cost function becomes
The gradient and hessian of J with respect to orbital rotations are given by:
(Written down here for future reference.)
Definition at line 126 of file EdmistonRuedenberg.h.
CheMPS2::EdmistonRuedenberg::EdmistonRuedenberg  (  const FourIndex *  Vmat, 
const int  group,  
const int  printLevelIn = 1 

) 
Constructor.
Vmat  The active space twoelectron integrals 
group  The group number 
printLevelIn  If 0: nothing is printed. If 1: info at beginning and end. If >1: intermediary info as well. 
Definition at line 34 of file EdmistonRuedenberg.cpp.
void CheMPS2::EdmistonRuedenberg::FiedlerExchange  (  const int  maxlinsize, 
double *  temp1,  
double *  temp2  
) 
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized (per irrep)
maxlinsize  max(dim(irrep(Ham))) 
temp1  Work memory of at least 4*max(dim(irrep(Ham)))^2 
temp2  Work memory of at least 4*max(dim(irrep(Ham)))^2 
Definition at line 367 of file EdmistonRuedenberg.cpp.
void CheMPS2::EdmistonRuedenberg::FiedlerGlobal  (  int *  dmrg2ham  )  const 
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized.
dmrg2ham  At exit, dmrg2ham contains the new orbital ordering 
Definition at line 432 of file EdmistonRuedenberg.cpp.
CheMPS2::DMRGSCFunitary * CheMPS2::EdmistonRuedenberg::getUnitary  (  ) 
Get the pointer to the unitary to use in DMRGSCF.
Definition at line 143 of file EdmistonRuedenberg.cpp.
double CheMPS2::EdmistonRuedenberg::Optimize  (  double *  temp1, 
double *  temp2,  
const bool  startFromRandomUnitary,  
const double  gradThreshold = EDMISTONRUED_gradThreshold , 

const int  maxIter = EDMISTONRUED_maxIter 

) 
Maximize the EdmistonRuedenberg cost function.
temp1  Work memory of at least max(dim(irrep(Ham)))^4 
temp2  Work memory of at least max(dim(irrep(Ham)))^4 
startFromRandomUnitary  The name of the variable says it all. Useful if the point group symmetry is reduced to make use of locality in the DMRG calculations, but when the molecular orbitals still belong to the full point group. 
gradThreshold  Stop if the norm of the gradient is smaller than this value 
maxIter  Stop if maxIter iterations have been performed (when gradThreshold is not reached) 
Definition at line 66 of file EdmistonRuedenberg.cpp.