Skip to content

Commit

Permalink
Remove unused diagonalizers and linear solvers from occwave::Array2d …
Browse files Browse the repository at this point in the history
…and occwave::SymBlockMatrix (#2679)

* Remove unused diagonalizers and linear solvers from occ (header)

* Remove unused diagonalizers and linear solvers from occ (code)

* Remove unused diagonalizers and linear solvers from occ/dpd.h

* Remove unused diagonalizers and linear solvers from occ/dpd.cc
  • Loading branch information
TiborGY committed Aug 15, 2022
1 parent b81ec02 commit 203d69f
Show file tree
Hide file tree
Showing 4 changed files with 0 additions and 142 deletions.
64 changes: 0 additions & 64 deletions psi4/src/psi4/occ/arrays.cc
Original file line number Diff line number Diff line change
Expand Up @@ -372,11 +372,6 @@ void Array2d::gemm(bool transa, bool transb, double alpha, const Array2d* a, con
}
} //

void Array2d::davidson(int n_eigval, Array2d* eigvectors, Array1d* eigvalues, double cutoff, int print) {
david(A2d_, dim1_, n_eigval, eigvalues->A1d_, eigvectors->A2d_, cutoff, print);

} //

void Array2d::add(const Array2d* Adum) {
double *lhs, *rhs;
size_t size = dim1_ * dim2_;
Expand Down Expand Up @@ -446,32 +441,6 @@ void Array2d::copy(double** a) {
if (size) memcpy(&(A2d_[0][0]), &(a[0][0]), size);
}

void Array2d::diagonalize(Array2d* eigvectors, Array1d* eigvalues, double cutoff) {
sq_rsp(dim1_, dim2_, A2d_, eigvalues->A1d_, 1, eigvectors->A2d_, cutoff);

} //

void Array2d::cdsyev(char jobz, char uplo, Array2d* eigvectors, Array1d* eigvalues) {
if (dim1_) {
int lwork = 3 * dim2_;
double** work = block_matrix(dim1_, lwork);
memset(work[0], 0.0, sizeof(double) * dim1_ * lwork);
C_DSYEV(jobz, uplo, dim1_, &(A2d_[0][0]), dim2_, eigvalues->A1d_, &(work[0][0]), lwork);
free_block(work);
}
} //

void Array2d::cdgesv(Array1d* Xvec) {
if (dim1_) {
int errcod;
int* ipiv = init_int_array(dim1_);
memset(ipiv, 0, sizeof(int) * dim1_);
errcod = 0;
errcod = C_DGESV(dim1_, 1, &(A2d_[0][0]), dim2_, &(ipiv[0]), Xvec->A1d_, dim2_);
free(ipiv);
}
} //

void Array2d::cdgesv(Array1d* Xvec, int errcod) {
if (dim1_) {
int* ipiv = init_int_array(dim1_);
Expand All @@ -482,51 +451,18 @@ void Array2d::cdgesv(Array1d* Xvec, int errcod) {
}
} //

void Array2d::cdgesv(double* Xvec) {
if (dim1_) {
int errcod;
int* ipiv = init_int_array(dim1_);
memset(ipiv, 0, sizeof(int) * dim1_);
errcod = 0;
errcod = C_DGESV(dim1_, 1, &(A2d_[0][0]), dim2_, &(ipiv[0]), Xvec, dim2_);
free(ipiv);
}
} //

void Array2d::cdgesv(double* Xvec, int errcod) {
if (dim1_) {
int* ipiv = init_int_array(dim1_);
memset(ipiv, 0, sizeof(int) * dim1_);
errcod = 0;
errcod = C_DGESV(dim1_, 1, &(A2d_[0][0]), dim2_, &(ipiv[0]), Xvec, dim2_);
free(ipiv);
}
} //

void Array2d::lineq_flin(Array1d* Xvec, double* det) {
if (dim1_) {
flin(A2d_, Xvec->A1d_, dim1_, 1, det);
}
} //

void Array2d::lineq_flin(double* Xvec, double* det) {
if (dim1_) {
flin(A2d_, Xvec, dim1_, 1, det);
}
} //

void Array2d::lineq_pople(Array1d* Xvec, int num_vecs, double cutoff) {
if (dim1_) {
pople(A2d_, Xvec->A1d_, dim1_, num_vecs, cutoff, "outfile", 0);
}
} //

void Array2d::lineq_pople(double* Xvec, int num_vecs, double cutoff) {
if (dim1_) {
pople(A2d_, Xvec, dim1_, num_vecs, cutoff, "outfile", 0);
}
} //

void Array2d::level_shift(double value) {
for (int i = 0; i < dim1_; ++i) {
subtract(i, i, value);
Expand Down
11 changes: 0 additions & 11 deletions psi4/src/psi4/occ/arrays.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,23 +133,12 @@ class Array2d {
Array2d* transpose();
void copy(const Array2d* Adum);
void copy(double** a);
// diagonalize: diagonalize via rsp
void diagonalize(Array2d* eigvectors, Array1d* eigvalues, double cutoff);
// cdsyev: diagonalize via lapack
void cdsyev(char jobz, char uplo, Array2d* eigvectors, Array1d* eigvalues);
// davidson: diagonalize via davidson algorithm
void davidson(int n_eigval, Array2d* eigvectors, Array1d* eigvalues, double cutoff, int print);
// cdgesv: solve a linear equation via lapack
void cdgesv(Array1d* Xvec);
void cdgesv(double* Xvec);
void cdgesv(Array1d* Xvec, int errcod);
void cdgesv(double* Xvec, int errcod);
// lineq_flin: solve a linear equation via FLIN
void lineq_flin(Array1d* Xvec, double* det);
void lineq_flin(double* Xvec, double* det);
// lineq_pople: solve a linear equation via Pople's algorithm
void lineq_pople(Array1d* Xvec, int num_vecs, double cutoff);
void lineq_pople(double* Xvec, int num_vecs, double cutoff);
// gemm: matrix multiplication
void gemm(bool transa, bool transb, double alpha, const Array2d* a, const Array2d* b, double beta);
// level_shift: A[i][i] = A[i][i] - value
Expand Down
60 changes: 0 additions & 60 deletions psi4/src/psi4/occ/dpd.cc
Original file line number Diff line number Diff line change
Expand Up @@ -479,66 +479,6 @@ bool SymBlockMatrix::load(std::shared_ptr<psi::PSIO> psio, int itap, const char
return true;
} //

void SymBlockMatrix::diagonalize(SymBlockMatrix *eigvectors, SymBlockVector *eigvalues) {
for (int h = 0; h < nirreps_; h++) {
if (rowspi_[h]) {
sq_rsp(rowspi_[h], colspi_[h], matrix_[h], eigvalues->vector_[h], 1, eigvectors->matrix_[h], 1.0e-14);
}
}
} //

void SymBlockMatrix::cdsyev(char jobz, char uplo, SymBlockMatrix *eigvectors, SymBlockVector *eigvalues) {
for (int h = 0; h < nirreps_; h++) {
if (rowspi_[h]) {
int lwork = 3 * rowspi_[h];
double **work = block_matrix(nirreps_, lwork);
memset(work[0], 0.0, sizeof(double) * nirreps_ * lwork);
C_DSYEV(jobz, uplo, rowspi_[h], &(matrix_[h][0][0]), colspi_[h], eigvalues->vector_[h], &(work[h][0]),
lwork);
}
}
} //

void SymBlockMatrix::davidson(int n_eigval, SymBlockMatrix *eigvectors, SymBlockVector *eigvalues, double cutoff,
int print) {
for (int h = 0; h < nirreps_; h++) {
if (rowspi_[h]) {
david(matrix_[h], rowspi_[h], n_eigval, eigvalues->vector_[h], eigvectors->matrix_[h], cutoff, print);
}
}
} //

void SymBlockMatrix::cdgesv(SymBlockVector *Xvec) {
for (int h = 0; h < nirreps_; h++) {
if (rowspi_[h]) {
int errcod;
int *ipiv = init_int_array(rowspi_[h]);
memset(ipiv, 0, sizeof(int) * rowspi_[h]);
errcod = 0;
errcod = C_DGESV(rowspi_[h], 1, &(matrix_[h][0][0]), colspi_[h], &(ipiv[0]), Xvec->vector_[h], colspi_[h]);
delete[] ipiv;
}
}
} //

// void flin(double **a, double *b, int in, int im, double *det)
void SymBlockMatrix::lineq_flin(SymBlockVector *Xvec, double *det) {
for (int h = 0; h < nirreps_; h++) {
if (rowspi_[h]) {
flin(matrix_[h], Xvec->vector_[h], rowspi_[h], 1, det);
}
}
} //

// int pople(double **A, double *x, int dimen, int num_vecs, double tolerance, std::string out_fname, int print_lvl)
void SymBlockMatrix::lineq_pople(SymBlockVector *Xvec, int num_vecs, double cutoff) {
for (int h = 0; h < nirreps_; h++) {
if (rowspi_[h]) {
pople(matrix_[h], Xvec->vector_[h], rowspi_[h], num_vecs, cutoff, "outfile", 0);
}
}
} //

void SymBlockMatrix::mgs() {
double rmgs1, rmgs2, sum1;

Expand Down
7 changes: 0 additions & 7 deletions psi4/src/psi4/occ/dpd.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,6 @@ class SymBlockMatrix {
void read(std::shared_ptr<psi::PSIO> psio, int itap, const char *label, bool readSubBlocks);
void mgs(); // Modified Gram-Schmidt
void gs(); // Gram-Schmidt
void diagonalize(SymBlockMatrix *eigvectors, SymBlockVector *eigvalues);
void cdsyev(char jobz, char uplo, SymBlockMatrix *eigvectors, SymBlockVector *eigvalues); // diagonalize via acml
void davidson(int n_eigval, SymBlockMatrix *eigvectors, SymBlockVector *eigvalues, double cutoff,
int print); // diagonalize via davidson alg.
void cdgesv(SymBlockVector *Xvec); // solve lineq via acml
void lineq_flin(SymBlockVector *Xvec, double *det); // solve lineq via flin
void lineq_pople(SymBlockVector *Xvec, int num_vecs, double cutoff); // solve lineq via pople
void read_oooo(std::shared_ptr<psi::PSIO> psio, int itap, int *mosym, int *qt2pitzer, int *occ_off, int *occpi,
Array3i *oo_pairidx);
void read_oovv(std::shared_ptr<psi::PSIO> psio, int itap, int nocc, int *mosym, int *qt2pitzer, int *occ_off,
Expand Down

0 comments on commit 203d69f

Please sign in to comment.