28 #include <libint/libint.h>
29 #include <libderiv/libderiv.h>
44 std::vector<contr_t>
ic;
46 std::vector<contr_t>
jc;
68 virtual void compute_G(
double rho,
double T,
int nmax);
76 void transform_i(
int am,
size_t Nj,
size_t Nk,
size_t Nl);
78 void transform_j(
int am,
size_t Ni,
size_t Nk,
size_t Nl);
80 void transform_k(
int am,
size_t Ni,
size_t Nj,
size_t Nl);
82 void transform_l(
int am,
size_t Ni,
size_t Nj,
size_t Nk);
115 std::vector<double>
get()
const;
117 const std::vector<double> *
getp()
const;
152 std::vector<double>
get(
int idx);
154 const std::vector<double> *
getp(
int idx);
163 void compute_G(
double rho,
double T,
int nmax);
185 void compute_G(
double rho,
double T,
int nmax);
void compute_libderiv_data(const eri_precursor_t &ip, const eri_precursor_t &jp, int mmax)
Compute data for libderiv.
Definition: eriworker.cpp:1056
A shell of Gaussian basis functions of a given angular momentum, sharing the same exponential contrac...
Definition: basis.h:482
std::vector< double > arrtwo
Storage arrays (operated through pointer)
Definition: eriworker.h:57
std::vector< contr_t > jc
Array of exponents for second center (Nb)
Definition: eriworker.h:46
ERIWorker(int maxam, int maxcontr)
Constructor.
Definition: eriworker.cpp:73
arma::cube PB
Distance between P and shell j center (Na,Nb,3)
Definition: eriworker.h:42
void compute_cartesian(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls)
Compute the cartesian ERIs.
Definition: eriworker.cpp:104
void transform_j(int am, size_t Ni, size_t Nk, size_t Nl)
Do spherical transform with respect to second index.
void compute_cartesian_debug(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls)
Compute the cartesian ERIs using Huzinaga routines.
Definition: eriworker.cpp:1198
double beta
Factor of short-range exchange.
Definition: eriworker.h:192
const GaussianShell * is
1st shell
Definition: eriworker.h:132
arma::mat zeta
Sum of exponents (Na,Nb)
Definition: eriworker.h:36
const GaussianShell * js
2nd shell
Definition: eriworker.h:134
arma::vec bf_short
Short and long range Boys functions.
Definition: eriworker.h:195
std::vector< double > * output
Output array.
Definition: eriworker.h:62
double omega
Range separation constant.
Definition: eriworker.h:166
double omega
Range separation constant.
Definition: eriworker.h:188
arma::mat S
Overlap of primitives on i and j (Na,Nb)
Definition: eriworker.h:48
void transform_k(int am, size_t Ni, size_t Nj, size_t Nl)
Do spherical transform with respect to third index.
Worker for computing short- and long-range electron repulsion integrals.
Definition: eriworker.h:161
std::vector< double > get_debug(int idx)
Compute the derivatives, debug version.
Definition: eriworker.cpp:387
std::vector< contr_t > ic
Contraction for first center (Na)
Definition: eriworker.h:44
ERIWorker_srlr(int maxam, int maxcontr, double omega, double alpha, double beta)
Constructor.
Definition: eriworker.cpp:1421
double beta
Weight for short-range exchange.
Definition: eriworker.h:170
arma::vec AB
Distance between centers A and B.
Definition: eriworker.h:34
arma::vec bf_short
Short and long range Boys functions.
Definition: eriworker.h:173
arma::cube P
Coordinates of center of product gaussian P, dimension (Na,Nb,3)
Definition: eriworker.h:38
const GaussianShell * ks
3rd shell
Definition: eriworker.h:136
arma::vec Gn
Integral kernel (i.e. Boys' function for Coulomb integrals)
Definition: eriworker.h:65
void get_idx(int idx)
Get the idx'th derivative in the input array.
Definition: eriworker.cpp:273
Worker for computing short- and long-range electron repulsion integrals.
Definition: eriworker.h:183
Libint_t libint
Libint worker.
Definition: eriworker.h:95
void compute_G(double rho, double T, int nmax)
Compute the kernel.
Definition: eriworker.cpp:1464
void compute_cartesian()
Compute the cartesian ERI derivatives.
Definition: eriworker.cpp:198
void transform_l(int am, size_t Ni, size_t Nj, size_t Nk)
Do spherical transform with respect to fourth index.
void reorder(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls, bool swap_ij, bool swap_kl, bool swap_ijkl)
Reorder integrals.
Definition: eriworker.cpp:1313
virtual ~ERIWorker()
Destructor.
Definition: eriworker.cpp:83
Worker for computing electron repulsion integrals.
Definition: eriworker.h:121
std::vector< double > * input
Input array.
Definition: eriworker.h:60
double alpha
Weight for long-range (i.e. normal HF) exchange.
Definition: eriworker.h:168
void compute_G(double rho, double T, int nmax)
Compute the kernel.
Definition: eriworker.cpp:1439
Worker for dealing with electron repulsion integrals and their derivatives.
Definition: eriworker.h:52
void spherical_transform(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls)
Do spherical transforms if necessary.
Definition: eriworker.cpp:43
eri_precursor_t compute_precursor(const GaussianShell *is, const GaussianShell *js)
Compute precursor.
Definition: eriworker.cpp:891
arma::cube PA
Distance between P and shell i center (Na,Nb,3)
Definition: eriworker.h:40
std::vector< double > arrone
Storage arrays (operated through pointer)
Definition: eriworker.h:55
void compute(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls)
Compute eris.
Definition: eriworker.cpp:1159
~ERIWorker_srlr()
Destructor.
Definition: eriworker.cpp:1427
double alpha
Factor of long-range exchange.
Definition: eriworker.h:190
void compute(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls)
Compute derivatives.
Definition: eriworker.cpp:1274
const GaussianShell * ls
4th shell
Definition: eriworker.h:138
void transform_i(int am, size_t Nj, size_t Nk, size_t Nl)
Do spherical transform with respect to first index.
Libderiv_t libderiv
Libint worker.
Definition: eriworker.h:123
void compute_libint_data(const eri_precursor_t &ip, const eri_precursor_t &jp, int mmax)
Compute data for libint.
Definition: eriworker.cpp:961
const std::vector< double > * getp(int idx)
Get the derivatives wrt index idx.
Definition: eriworker.cpp:381
virtual void compute_G(double rho, double T, int nmax)
Compute the integral kernel.
Definition: eriworker.cpp:951
void compute_debug(const GaussianShell *is, const GaussianShell *js, const GaussianShell *ks, const GaussianShell *ls)
Compute eris using Huzinaga routines.
Definition: eriworker.cpp:1191
bool swap_ij
Swap?
Definition: eriworker.h:140
const std::vector< double > * getp() const
Get pointer to eris.
Definition: eriworker.cpp:1270
Worker for computing electron repulsion integrals.
Definition: eriworker.h:93
Precursor data for ERIs.
Definition: eriworker.h:32