20 #ifndef DMRGSCFUNITARY_CHEMPS2_H 21 #define DMRGSCFUNITARY_CHEMPS2_H 24 #include "DMRGSCFindices.h" 25 #include "DMRGSCFmatrix.h" 91 void updateUnitary(
double * workmem1,
double * workmem2,
double * vector,
const bool multiply,
const bool compact );
106 void getLog(
double * vector,
double * temp1,
double * temp2 )
const;
115 void saveU(
const string filename=DMRGSCF_unitary_storage_name )
const;
119 void loadU(
const string filename=DMRGSCF_unitary_storage_name );
130 void buildSkewSymmX(
const int irrep,
double * result,
double * Xelem,
const bool compact )
const;
133 double get_determinant(
const int irrep,
double * work1,
double * work2,
double * work_eig,
int lwork_eig )
const;
void rotateActiveSpaceVectors(double *eigenvecs, double *work)
Rotate the unitary matrix.
const DMRGSCFindices * iHandler
The information on the occupied, active, and virtual spaces.
DMRGSCFunitary(const DMRGSCFindices *iHandler)
Constructor.
void loadU(const string filename=DMRGSCF_unitary_storage_name)
Load the unitary from disk.
void getLog(double *vector, double *temp1, double *temp2) const
Obtain the logarithm of the unitary matrix.
void saveU(const string filename=DMRGSCF_unitary_storage_name) const
Save the unitary to disk.
virtual ~DMRGSCFunitary()
Destructor.
void CheckDeviationFromUnitary(double *work) const
Calculate the two-norm of U^T*U - I.
void makeSureAllBlocksDetOne(double *temp1, double *temp2)
Orbitals are defined up to a phase factor. Make sure that the logarithm of each block of the unitary ...
int getNumVariablesX() const
Get the number of variables in the x-parametrization of the unitary update.
void updateUnitary(double *workmem1, double *workmem2, double *vector, const bool multiply, const bool compact)
Update the unitary transformation.