20 #ifndef EDMISTONRUEDENBERG_CHEMPS2_H 21 #define EDMISTONRUEDENBERG_CHEMPS2_H 24 #include "DMRGSCFunitary.h" 25 #include "Hamiltonian.h" 146 double Optimize(
double * temp1,
double * temp2,
const bool startFromRandomUnitary,
const double gradThreshold=EDMISTONRUED_gradThreshold,
const int maxIter=EDMISTONRUED_maxIter);
152 void FiedlerExchange(
const int maxlinsize,
double * temp1,
double * temp2);
183 double augmentedHessianNewtonRaphson(
double * gradient,
double * temp1,
double * temp2)
const;
184 double calcGradientValue(
const int irrep,
const int p,
const int q)
const;
185 double calcHessianValue(
const int irrep,
const int p,
const int q,
const int r,
const int s)
const;
188 double costFunction()
const;
191 double FiedlerExchangeCost()
const;
193 void Fiedler(
const int irrep,
int * reorder,
double * laplacian,
double * temp2);
virtual ~EdmistonRuedenberg()
Destructor.
EdmistonRuedenberg(const FourIndex *Vmat, const int group, const int printLevelIn=1)
Constructor.
void FiedlerGlobal(int *dmrg2ham) const
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized...
DMRGSCFunitary * getUnitary()
Get the pointer to the unitary to use in DMRGSCF.
void FiedlerExchange(const int maxlinsize, double *temp1, double *temp2)
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized (per i...
double Optimize(double *temp1, double *temp2, const bool startFromRandomUnitary, const double gradThreshold=EDMISTONRUED_gradThreshold, const int maxIter=EDMISTONRUED_maxIter)
Maximize the Edmiston-Ruedenberg cost function.