34 : bspline_(bspline) {}
39 double R0 = bspline_.
R0();
43 return (z.imag() == 0.) ? (1+tanh(R0 - 5 - z.real()))/2 : 0.;
58 : bspline_(bspline) {}
63 double Rmax = bspline_.
Rmax();
67 return tanh(Rmax - z.real());
82 : bspline_(bspline), g_(bspline), D_(bspline.Nspline()), S_(bspline.Nspline()),
83 Mm1_(bspline.Nspline()), Mm1_tr_(bspline.Nspline()), Mm2_(bspline.Nspline()) {}
142 void M_integrand (
int n,
Complex *in,
Complex *out,
int i,
int j,
int a,
int iknot,
int iknotmax,
double& logscale)
const;
169 int i,
int j,
int k,
int l,
175 Complex computeRtri (
int L,
int k,
int l,
int m,
int n,
int iknot,
int iknotmax)
const;
180 int i,
int j,
int k,
int l,
207 for (
int iknot = 0; iknot < bspline_.
Nknot() - 1; iknot++)
210 if (bspline_.
t(iknot) == bspline_.
t(iknot+1))
222 if (gsl_sf_hydrogenicR_e(n, l, 1., x.real(), &R) == GSL_EUNDRFLW)
225 return weightf(x) * x * R.val;
230 for (
int ispline =
std::max(iknot-bspline_.
order(),0); ispline < bspline_.
Nspline() and ispline <= iknot; ispline++)
233 bspline_.
B(ispline, iknot, points, xs.
data(), evalB.
data());
237 for (
int ipoint = 0; ipoint < points; ipoint++)
238 sum += ws[ipoint] * evalP[ipoint] * evalB[ipoint];
263 int Nenergy = vk.
size();
264 int Nspline = bspline_.
Nspline();
265 int Nknot = bspline_.
Nknot();
266 int order = bspline_.
order();
269 size_t size = Nspline * Nenergy * (maxell + 1);
276 # pragma omp parallel for
277 for (
int iknot = 0; iknot < Nknot - 1; iknot++)
280 if (bspline_.
t(iknot) == bspline_.
t(iknot+1))
289 for (
int ispline =
std::max(iknot-order,0); ispline < Nspline and ispline <= iknot; ispline++)
291 evalB[ispline] =
cArray(points);
292 bspline_.
B(ispline, iknot, points, xs.
data(), evalB[ispline].
data());
296 for (
int ie = 0; ie < Nenergy; ie++)
300 for (
int ipoint = 0; ipoint < points; ipoint++)
301 evalj[ipoint] = weightf(xs[ipoint]) *
ric_jv(maxell, vk[ie] * xs[ipoint]);
304 for (
int l = 0; l <= maxell; l++)
307 for (
int ispline =
std::max(iknot-order,0); ispline < Nspline and ispline <= iknot; ispline++)
311 for (
int ipoint = 0; ipoint < points; ipoint++)
312 sum += ws[ipoint] * evalj[ipoint][l] * evalB[ispline][ipoint];
315 res[(ie * (maxell + 1) + l) * Nspline + ispline] +=
sum;
334 assert(i < R_tr_dia_.
size());
virtual T * data()
Data pointer.
Definition: arrays.h:757
SymDiaMatrix const & R_tr_dia(unsigned i) const
Definition: radial.h:332
int Nknot() const
Number of knots.
Definition: bspline.h:192
cArray p_weights(int points, Complex x1, Complex x2) const
Get Gauss-Legendre quadrature weights in interval.
Definition: gauss.cpp:94
Complex computeD_iknot(int i, int j, int iknot) const
Definition: radial.cpp:213
void R_inner_integrand(int n, Complex *in, Complex *out, int i, int j, int L, int iknot, int iknotmax, Complex x) const
Definition: slater.cpp:44
SymDiaMatrix const & Mm2() const
Definition: radial.h:330
NumberArray< Complex > cArray
Definition: arrays.h:1610
A comfortable number array class.
Definition: arrays.h:171
int order() const
B-spline order.
Definition: bspline.h:198
Complex const & t(int i) const
B-spline knot sequence.
Definition: bspline.h:186
B-spline environment.
Definition: bspline.h:35
Complex computeM(int a, int i, int j, int maxknot=0) const
Definition: radial.cpp:306
int size
Definition: misc.h:311
Gauss-Legendre quadrature.
Definition: gauss.h:33
SymDiaMatrix const & Mm1_tr() const
Definition: radial.h:329
Complex computeR(int lambda, int i, int j, int k, int l, cArray const &Mtr_L, cArray const &Mtr_mLm1) const
Definition: slater.cpp:124
weightEndDamp(Bspline const &bspline)
Definition: radial.h:57
void B(int i, int iknot, int n, const Complex *x, Complex *y) const
B-spline.
Definition: bspline.cpp:59
Command line parameters.
Definition: input.h:34
iterator end()
Definition: arrays.h:774
double operator()(Complex z) const
Definition: radial.h:61
cArray overlapj(int maxell, const rArrayView vk, Functor weightf) const
Compute j-overlaps.
Definition: radial.h:260
RadialIntegrals(Bspline const &bspline)
Definition: radial.h:81
Bspline const & bspline() const
Definition: radial.h:324
void setupOneElectronIntegrals()
Definition: radial.cpp:326
int Nspline() const
Number of B-splines.
Definition: bspline.h:189
Complex computeM_iknot(int a, int i, int j, int iknot, Complex R) const
Definition: radial.cpp:267
cArray computeMi(int a, int iknotmax=0) const
Definition: radial.cpp:141
void allSymmetries(int i, int j, int k, int l, Complex Rijkl_tr, NumberArray< long > &R_tr_i, NumberArray< long > &R_tr_j, NumberArray< Complex > &R_tr_v) const
Definition: slater.cpp:187
size_t size() const
Length of the array (number of elements).
Definition: arrays.h:276
T sum(const ArrayView< T > v)
Sum elements in array.
Definition: arrays.h:1770
SymDiaMatrix const & Mm1() const
Definition: radial.h:328
iterator begin()
Definition: arrays.h:771
double operator()(Complex z) const
Definition: radial.h:37
size_t size() const
Return number of elements.
Definition: arrays.h:389
void M_integrand(int n, Complex *in, Complex *out, int i, int j, int a, int iknot, int iknotmax, double &logscale) const
Definition: radial.cpp:70
MPI info.
Definition: parallel.h:29
void setupTwoElectronIntegrals(Parallel const &par, CommandLine const &cmd, Array< bool > const &lambdas)
Definition: radial.cpp:359
double Rmax() const
End of complex grid (real, unrotated).
Definition: bspline.h:204
A comfortable data array class.
Definition: arrays.h:151
virtual T * data()
Data pointer.
Definition: arrays.h:433
Complex computeRdiag(int L, int a, int b, int c, int d, int iknot, int iknotmax) const
Definition: slater.cpp:105
cArray overlapP(int n, int l, Functor weightf) const
Definition: radial.h:195
double R0() const
End of real grid.
Definition: bspline.h:201
SymDiaMatrix const & S() const
Definition: radial.h:327
size_t maxlambda() const
Definition: radial.h:338
void R_outer_integrand(int n, Complex *in, Complex *out, int i, int j, int k, int l, int L, int iknot, int iknotmax) const
Definition: slater.cpp:59
cArray ric_jv(int lmax, Complex z)
Definition: special.cpp:107
weightEdgeDamp(Bspline const &bspline)
Definition: radial.h:33
SymDiaMatrix const & D() const
Definition: radial.h:326
Complex computeRtri(int L, int k, int l, int m, int n, int iknot, int iknotmax) const
Definition: slater.cpp:87
std::complex< double > Complex
Definition: complex.h:20
Symmetric diagonal matrix.
Definition: matrix.h:1547
T max(const ArrayView< T > a)
Maximal element of array.
Definition: arrays.h:1673
cArray p_points(int points, Complex x1, Complex x2) const
Get Gauss-Legendre quadrature points in interval.
Definition: gauss.cpp:73
Complex computeD(int i, int j, int maxknot=-1) const
Definition: radial.cpp:247
rArray computeScale(int a, int iknotmax=0) const
Definition: radial.cpp:40