28 #ifndef _chemistry_qc_int1e_h
29 #define _chemistry_qc_int1e_h
31 #include <util/ref/ref.h>
32 #include <chemistry/qc/basis/basis.h>
33 #include <chemistry/qc/basis/fjt.h>
34 #include <chemistry/qc/intv3/array.h>
51 int bs1_shell_offset_;
52 int bs2_shell_offset_;
75 int exponent_weighted;
76 int scale_shell_result;
77 double result_scale_factor;
83 double *cartesianbuffer;
84 double *cartesianbuffer_scratch;
90 void accum_shell_1der(
91 double *buff,
int ish,
int jsh,
93 double (
Int1eV3::*)(
int,
int,
int,
int,
int,
int,
int,
int)
95 void accum_shell_block_1der(
96 double *buff,
int ish,
int jsh,
98 void (
Int1eV3::*shell_block_function)
99 (
int gc1,
int a,
int gc2,
int b,
100 int gcsize2,
int gcoff1,
int gcoff2,
101 double coef,
double *buffer)
103 double comp_shell_overlap(
int gc1,
int i1,
int j1,
int k1,
104 int gc2,
int i2,
int j2,
int k2);
105 double comp_prim_overlap(
int i1,
int j1,
int k1,
106 int i2,
int j2,
int k2);
107 double comp_shell_kinetic(
int gc1,
int i1,
int j1,
int k1,
108 int gc2,
int i2,
int j2,
int k2);
109 double comp_prim_kinetic(
int i1,
int j1,
int k1,
110 int i2,
int j2,
int k2);
111 double comp_shell_nuclear(
int gc1,
int i1,
int j1,
int k1,
112 int gc2,
int i2,
int j2,
int k2);
113 void accum_shell_efield(
double *buff,
int ish,
int jsh);
114 void accum_shell_block_efield(
double *buff,
int ish,
int jsh);
115 double comp_prim_nuclear(
int i1,
int j1,
int k1,
116 int i2,
int j2,
int k2,
int m);
117 void comp_shell_efield(
double *efield,
118 int gc1,
int i1,
int j1,
int k1,
119 int gc2,
int i2,
int j2,
int k2);
120 void comp_shell_block_efield(
int gc1,
int a,
int gc2,
int b,
121 int gcsize2,
int gcoff1,
int gcoff2,
122 double coef,
double *buffer);
123 double comp_prim_efield(
int xyz,
int i1,
int j1,
int k1,
124 int i2,
int j2,
int k2,
int m);
125 void comp_shell_dipole(
double* dipole,
126 int gc1,
int i1,
int j1,
int k1,
127 int gc2,
int i2,
int j2,
int k2);
128 double comp_prim_dipole(
int axis,
129 int i1,
int j1,
int k1,
130 int i2,
int j2,
int k2);
131 void comp_shell_block_nuclear(
int gc1,
int a,
int gc2,
int b,
132 int gcsize2,
int gcoff1,
int gcoff2,
133 double coef,
double *buffer);
134 void comp_shell_block_p_dot_nuclear_p(
int gc1,
int a,
int gc2,
int b,
135 int gcsize2,
int gcoff1,
int gcoff2,
136 double coef,
double *buffer);
137 void comp_prim_block_nuclear(
int a,
int b);
138 void comp_prim_block_nuclear_build_a(
int a,
int b,
int m);
139 void comp_prim_block_nuclear_build_b(
int b,
int m);
140 void comp_prim_block_efield(
int a,
int b);
141 void comp_prim_block_efield_build_a(
int a,
int b,
int m);
142 void comp_prim_block_efield_build_b(
int b,
int m);
145 void int_accum_shell_overlap_1der(
int ish,
int jsh,
149 void int_initialize_1e(
int flags,
int order);
151 double int_prim_overlap(shell_t *pshell1, shell_t *pshell2,
152 double *pA,
double *pB,
153 int prim1,
int prim2,
154 int i1,
int j1,
int k1,
155 int i2,
int j2,
int k2);
157 void int_accum_shell_kinetic(
int ish,
int jsh);
158 void int_accum_shell_kinetic_1der(
int ish,
int jsh,
161 void int_accum_shell_nuclear_1der(
int ish,
int jsh,
164 void int_accum_shell_nuclear_hfc_1der(
int ish,
int jsh,
167 void int_accum_shell_nuclear_hf_1der(
int ish,
int jsh,
170 void int_accum_shell_nuclear_nonhf_1der(
int ish,
int jsh,
173 void int_accum_shell_efield(
int ish,
int jsh,
175 void int_accum_shell_point_charge(
int ish,
int jsh,
176 int ncharge,
const double* charge,
177 const double*
const* position);
178 void int_shell_nuclear_hf_1der(
int ish,
int jsh,
181 void int_shell_nuclear_nonhf_1der(
int ish,
int jsh,
184 void int_accum_shell_dipole(
int ish,
int jsh,
189 void int_initialize_offsets1();
190 void int_done_offsets1();
197 void transform_init();
198 void transform_done();
199 void source_space(
int nsource);
200 void copy_to_source(
double *integrals,
int nsource);
201 void do_transform_1e(
Integral *integ,
206 double *integrals,
double *target,
208 void accum_transform_1e(
Integral *integ,
209 double *integrals,
double *target,
214 double *integrals,
double *target,
216 void accum_transform_1e(
Integral*integ,
217 double *integrals,
double *target,
219 void transform_1e_xyz(
Integral*integ,
220 double *integrals,
double *target,
222 void accum_transform_1e_xyz(
Integral*integ,
223 double *integrals,
double *target,
233 double *buffer() {
return buff; }
238 void kinetic(
int ish,
int jsh);
239 void nuclear_slow(
int ish,
int jsh);
240 void nuclear(
int ish,
int jsh);
241 void p_dot_nuclear_p(
int ish,
int jsh);
242 void overlap(
int ish,
int jsh);
243 void hcore(
int ish,
int jsh);
244 void efield(
int ish,
int jsh,
const double position[3]);
245 void point_charge(
int ish,
int jsh,
246 int ncharge,
const double* charge,
247 const double*
const* position);
248 void dipole(
int ish,
int jsh,
251 void hcore_1der(
int ish,
int jsh,
252 int dercs,
int centernum);
253 void kinetic_1der(
int ish,
int jsh,
254 int dercs,
int centernum);
255 void nuclear_1der(
int ish,
int jsh,
256 int dercs,
int centernum);
257 void overlap_1der(
int ish,
int jsh,
258 int dercs,
int centernum);