diff --git a/psi4/src/psi4/libsapt_solver/amplitudes.cc b/psi4/src/psi4/libsapt_solver/amplitudes.cc index db2af063054..a138f410328 100644 --- a/psi4/src/psi4/libsapt_solver/amplitudes.cc +++ b/psi4/src/psi4/libsapt_solver/amplitudes.cc @@ -620,7 +620,7 @@ void SAPT2::ijkl_to_ikjl(double *tARAR, int ilength, int jlength, int klength, for(int i=0; iread_entry(PSIF_SAPT_CCD,TARBS,(char *) &(tARBS[0][0]), occA*virA*occB*virB*(ULI) sizeof(double)); - double energy = C_DDOT(occA*virA*occB*virB,&(vARBS[0][0]),1, + double energy = C_DDOT((size_t)occA*virA*occB*virB,&(vARBS[0][0]),1, &(tARBS[0][0]),1); free_block(vARBS); //! @@ -419,7 +419,7 @@ double SAPT2p::r_ccd_iterate(const char *TARBS, const char *TARBSerr, const char int iter = 1; double E_old=0.0, E_new=0.0, RMS=0.0; - SAPTDIIS diis(PSIF_SAPT_CCD,TARBS,TARBSerr,occA*virA*occB*virB, + SAPTDIIS diis(PSIF_SAPT_CCD,TARBS,TARBSerr,(size_t)occA*virA*occB*virB, max_ccd_vecs_,psio_); do { @@ -569,10 +569,10 @@ double SAPT2p::r_ccd_amplitudes(const char *TARBS, const char *TARBSerr, const c psio_->write_entry(PSIF_SAPT_CCD,TARBS,(char *) &(t2ARBS[0][0]), occA*virA*occB*virB*(ULI) sizeof(double)); - C_DAXPY(occA*virA*occB*virB,-1.0,tARBS[0],1,t2ARBS[0],1); + C_DAXPY((size_t)occA*virA*occB*virB,-1.0,tARBS[0],1,t2ARBS[0],1); - double RMS = C_DDOT(occA*virA*occB*virB,t2ARBS[0],1,t2ARBS[0],1); - RMS /= (double) (occA*virA*occB*virB); + double RMS = C_DDOT((size_t)occA*virA*occB*virB,t2ARBS[0],1,t2ARBS[0],1); + RMS /= (double) ((size_t)occA*virA*occB*virB); psio_->write_entry(PSIF_SAPT_CCD,TARBSerr,(char *) &(t2ARBS[0][0]), occA*virA*occB*virB*(ULI) sizeof(double)); @@ -712,7 +712,7 @@ double SAPT2p::s_ccd_iterate(const char *SARAR, const char *SARARerr, const char int iter = 1; double E_old=0.0, E_new=0.0, RMS=0.0; - SAPTDIIS diis(PSIF_SAPT_CCD,SARAR,SARARerr,occA*virA*occA*virA, + SAPTDIIS diis(PSIF_SAPT_CCD,SARAR,SARARerr,(size_t)occA*virA*occA*virA, max_ccd_vecs_,psio_); do { @@ -1077,9 +1077,9 @@ double SAPT2p::s_ccd_amplitudes(const char *SARAR, const char *SARARerr, const c psio_->write_entry(PSIF_SAPT_CCD,SARAR,(char *) &(s2ARAR[0][0]), occA*virA*occA*virA*(ULI) sizeof(double)); - C_DAXPY(occA*virA*occA*virA,-1.0,sARAR[0],1,s2ARAR[0],1); - double RMS = C_DDOT(occA*virA*occA*virA,s2ARAR[0],1,s2ARAR[0],1); - RMS /= (double) (occA*virA*occA*virA); + C_DAXPY((size_t)occA*virA*occA*virA,-1.0,sARAR[0],1,s2ARAR[0],1); + double RMS = C_DDOT((size_t)occA*virA*occA*virA,s2ARAR[0],1,s2ARAR[0],1); + RMS /= (double) ((size_t)occA*virA*occA*virA); psio_->write_entry(PSIF_SAPT_CCD,SARARerr,(char *) &(s2ARAR[0][0]), occA*virA*occA*virA*(ULI) sizeof(double)); @@ -1661,7 +1661,7 @@ void SAPT2p::ccd_iterate(const char *TARAR, const char *TARARerr, const char *Th int iter = 1; double E_old=0.0, E_new=0.0, RMS=0.0; - SAPTDIIS diis(PSIF_SAPT_CCD,TARAR,TARARerr,occA*virA*occA*virA, + SAPTDIIS diis(PSIF_SAPT_CCD,TARAR,TARARerr,(size_t)occA*virA*occA*virA, max_ccd_vecs_,psio_); do { @@ -1710,7 +1710,7 @@ double SAPT2p::ccd_energy(const char *TARAR, const char *GARAR, int occA, int vi psio_->read_entry(PSIF_SAPT_CCD,TARAR,(char *) &(tARAR[0][0]), occA*virA*occA*virA*(ULI) sizeof(double)); - double energy = C_DDOT(occA*virA*occA*virA,&(gARAR[0][0]),1, + double energy = C_DDOT((size_t)occA*virA*occA*virA,&(gARAR[0][0]),1, &(tARAR[0][0]),1); free_block(gARAR); //! @@ -1730,7 +1730,7 @@ double SAPT2p::ccd_amplitudes(const char *TARAR, const char *TARARerr, const cha psio_->read_entry(PSIF_SAPT_CCD,ARAR,(char *) &(t2ARAR[0][0]), occA*virA*occA*virA*(ULI) sizeof(double)); - C_DSCAL(occA*virA*occA*virA,0.5,&(t2ARAR[0][0]),1); + C_DSCAL((size_t)occA*virA*occA*virA,0.5,&(t2ARAR[0][0]),1); double **gARRA = block_matrix(occA*virA,occA*virA); //! double **tARAR = block_matrix(occA*virA,occA*virA); //! @@ -1993,10 +1993,10 @@ double SAPT2p::ccd_amplitudes(const char *TARAR, const char *TARARerr, const cha free_block(th2ARAR); //! - C_DAXPY(occA*virA*occA*virA,-1.0,t2ARAR[0],1,tARAR[0],1); + C_DAXPY((size_t)occA*virA*occA*virA,-1.0,t2ARAR[0],1,tARAR[0],1); - double RMS = C_DDOT(occA*virA*occA*virA,tARAR[0],1,tARAR[0],1); - RMS /= (double) (occA*virA*occA*virA); + double RMS = C_DDOT((size_t)occA*virA*occA*virA,tARAR[0],1,tARAR[0],1); + RMS /= (double) ((size_t)occA*virA*occA*virA); psio_->write_entry(PSIF_SAPT_CCD,TARARerr,(char *) &(tARAR[0][0]), occA*virA*occA*virA*(ULI) sizeof(double)); @@ -2029,7 +2029,7 @@ void SAPT2p::write_IJKL(double **A, int filenum, const char *label, int length_I free_block(A); } -SAPTDIIS::SAPTDIIS(int ampfile, const char *amplabel, const char *errlabel, int length, +SAPTDIIS::SAPTDIIS(int ampfile, const char *amplabel, const char *errlabel, size_t length, int maxvec, std::shared_ptr psio) : psio_(psio), vec_label_(amplabel), err_label_(errlabel) { diis_file_ = 56; diff --git a/psi4/src/psi4/libsapt_solver/sapt.h b/psi4/src/psi4/libsapt_solver/sapt.h index 0b5d5126c9c..16e680e6b1c 100644 --- a/psi4/src/psi4/libsapt_solver/sapt.h +++ b/psi4/src/psi4/libsapt_solver/sapt.h @@ -64,19 +64,19 @@ class SAPT : public Wavefunction { std::shared_ptr elstbasis_; std::shared_ptr zero_; - int nsoA_; - int nmoA_; - int nsoB_; - int nmoB_; - int ndf_; - int noccA_; - int foccA_; - int aoccA_; - int noccB_; - int foccB_; - int aoccB_; - int nvirA_; - int nvirB_; + size_t nsoA_; + size_t nmoA_; + size_t nsoB_; + size_t nmoB_; + size_t ndf_; + size_t noccA_; + size_t foccA_; + size_t aoccA_; + size_t noccB_; + size_t foccB_; + size_t aoccB_; + size_t nvirA_; + size_t nvirB_; int NA_; int NB_; int natomsA_; @@ -110,7 +110,7 @@ class SAPT : public Wavefunction { std::shared_ptr denom_; - int nvec_; + size_t nvec_; double **dAR_; double **dBS_; @@ -130,7 +130,7 @@ class CPHFDIIS { private: int max_diis_vecs_; - int vec_length_; + size_t vec_length_; int curr_vec_; int num_vecs_; diff --git a/psi4/src/psi4/libsapt_solver/sapt0.h b/psi4/src/psi4/libsapt_solver/sapt0.h index b846a9eab59..40f38188039 100644 --- a/psi4/src/psi4/libsapt_solver/sapt0.h +++ b/psi4/src/psi4/libsapt_solver/sapt0.h @@ -179,11 +179,11 @@ struct SAPTDFInts { bool dress_disk_; bool active_; - int i_length_; - int j_length_; - int ij_length_; - int i_start_; - int j_start_; + size_t i_length_; + size_t j_length_; + size_t ij_length_; + size_t i_start_; + size_t j_start_; double **B_p_; double **B_d_; @@ -206,10 +206,10 @@ struct SAPTDFInts { struct Iterator { - int num_blocks; + size_t num_blocks; int* block_size; - int curr_block; + size_t curr_block; long int curr_size; ~Iterator() { free(block_size); }; diff --git a/psi4/src/psi4/libsapt_solver/sapt2.h b/psi4/src/psi4/libsapt_solver/sapt2.h index 5fdfa5408f6..ef2cb95201a 100644 --- a/psi4/src/psi4/libsapt_solver/sapt2.h +++ b/psi4/src/psi4/libsapt_solver/sapt2.h @@ -38,8 +38,8 @@ class SAPT2 : public SAPT { virtual void print_results(); protected: - int no_nvirA_; - int no_nvirB_; + size_t no_nvirA_; + size_t no_nvirB_; double *no_evalsA_; double *no_evalsB_; @@ -47,6 +47,8 @@ class SAPT2 : public SAPT { double **no_CA_; double **no_CB_; +// These ints should not overflow below 46000 basis functions +// They contain indices up to nso_ * (nso_ + 1) / 2 int *ioff_; int *index2i_; int *index2j_; diff --git a/psi4/src/psi4/libsapt_solver/sapt2p.h b/psi4/src/psi4/libsapt_solver/sapt2p.h index 098ca1932af..7e1b4a14a6c 100644 --- a/psi4/src/psi4/libsapt_solver/sapt2p.h +++ b/psi4/src/psi4/libsapt_solver/sapt2p.h @@ -171,7 +171,7 @@ class SAPTDIIS { int max_diis_vecs_; int diis_file_; - int vec_length_; + size_t vec_length_; int curr_vec_; int num_vecs_; @@ -183,7 +183,7 @@ class SAPTDIIS { std::shared_ptr psio_; public: - SAPTDIIS(int, const char *, const char *, int, int, std::shared_ptr); + SAPTDIIS(int, const char *, const char *, size_t, int, std::shared_ptr); ~SAPTDIIS(); void store_vectors();