32 #ifndef _chemistry_qc_int1e_h
33 #define _chemistry_qc_int1e_h
35 #include <util/ref/ref.h>
36 #include <chemistry/qc/basis/basis.h>
37 #include <chemistry/qc/intv3/fjt.h>
38 #include <chemistry/qc/intv3/array.h>
55 int bs1_shell_offset_;
56 int bs2_shell_offset_;
79 int exponent_weighted;
80 int scale_shell_result;
81 double result_scale_factor;
87 double *cartesianbuffer;
88 double *cartesianbuffer_scratch;
94 void accum_shell_1der(
95 double *buff,
int ish,
int jsh,
97 double (
Int1eV3::*)(
int,
int,
int,
int,
int,
int,
int,
int)
99 void accum_shell_block_1der(
100 double *buff,
int ish,
int jsh,
102 void (
Int1eV3::*shell_block_function)
103 (
int gc1,
int a,
int gc2,
int b,
104 int gcsize2,
int gcoff1,
int gcoff2,
105 double coef,
double *buffer)
107 double comp_shell_overlap(
int gc1,
int i1,
int j1,
int k1,
108 int gc2,
int i2,
int j2,
int k2);
109 double comp_prim_overlap(
int i1,
int j1,
int k1,
110 int i2,
int j2,
int k2);
111 double comp_shell_kinetic(
int gc1,
int i1,
int j1,
int k1,
112 int gc2,
int i2,
int j2,
int k2);
113 double comp_prim_kinetic(
int i1,
int j1,
int k1,
114 int i2,
int j2,
int k2);
115 double comp_shell_nuclear(
int gc1,
int i1,
int j1,
int k1,
116 int gc2,
int i2,
int j2,
int k2);
117 void accum_shell_efield(
double *buff,
int ish,
int jsh);
118 void accum_shell_block_efield(
double *buff,
int ish,
int jsh);
119 double comp_prim_nuclear(
int i1,
int j1,
int k1,
120 int i2,
int j2,
int k2,
int m);
121 void comp_shell_efield(
double *efield,
122 int gc1,
int i1,
int j1,
int k1,
123 int gc2,
int i2,
int j2,
int k2);
124 void comp_shell_block_efield(
int gc1,
int a,
int gc2,
int b,
125 int gcsize2,
int gcoff1,
int gcoff2,
126 double coef,
double *buffer);
127 double comp_prim_efield(
int xyz,
int i1,
int j1,
int k1,
128 int i2,
int j2,
int k2,
int m);
129 void comp_shell_dipole(
double* dipole,
130 int gc1,
int i1,
int j1,
int k1,
131 int gc2,
int i2,
int j2,
int k2);
132 double comp_prim_dipole(
int axis,
133 int i1,
int j1,
int k1,
134 int i2,
int j2,
int k2);
135 void comp_shell_block_nuclear(
int gc1,
int a,
int gc2,
int b,
136 int gcsize2,
int gcoff1,
int gcoff2,
137 double coef,
double *buffer);
138 void comp_prim_block_nuclear(
int a,
int b);
139 void comp_prim_block_nuclear_build_a(
int a,
int b,
int m);
140 void comp_prim_block_nuclear_build_b(
int b,
int m);
141 void comp_prim_block_efield(
int a,
int b);
142 void comp_prim_block_efield_build_a(
int a,
int b,
int m);
143 void comp_prim_block_efield_build_b(
int b,
int m);
146 void int_accum_shell_overlap_1der(
int ish,
int jsh,
150 void int_initialize_1e(
int flags,
int order);
152 double int_prim_overlap(shell_t *pshell1, shell_t *pshell2,
153 double *pA,
double *pB,
154 int prim1,
int prim2,
155 int i1,
int j1,
int k1,
156 int i2,
int j2,
int k2);
158 void int_accum_shell_kinetic(
int ish,
int jsh);
159 void int_accum_shell_kinetic_1der(
int ish,
int jsh,
162 void int_accum_shell_nuclear_1der(
int ish,
int jsh,
165 void int_accum_shell_nuclear_hfc_1der(
int ish,
int jsh,
168 void int_accum_shell_nuclear_hf_1der(
int ish,
int jsh,
171 void int_accum_shell_nuclear_nonhf_1der(
int ish,
int jsh,
174 void int_accum_shell_efield(
int ish,
int jsh,
176 void int_accum_shell_point_charge(
int ish,
int jsh,
177 int ncharge,
const double* charge,
178 const double*
const* position);
179 void int_shell_nuclear_hf_1der(
int ish,
int jsh,
182 void int_shell_nuclear_nonhf_1der(
int ish,
int jsh,
185 void int_accum_shell_dipole(
int ish,
int jsh,
190 void int_initialize_offsets1();
191 void int_done_offsets1();
198 void transform_init();
199 void transform_done();
200 void source_space(
int nsource);
201 void copy_to_source(
double *integrals,
int nsource);
202 void do_transform_1e(
Integral *integ,
207 double *integrals,
double *target,
209 void accum_transform_1e(
Integral *integ,
210 double *integrals,
double *target,
215 double *integrals,
double *target,
217 void accum_transform_1e(
Integral*integ,
218 double *integrals,
double *target,
220 void transform_1e_xyz(
Integral*integ,
221 double *integrals,
double *target,
223 void accum_transform_1e_xyz(
Integral*integ,
224 double *integrals,
double *target,
234 double *buffer() {
return buff; }
239 void kinetic(
int ish,
int jsh);
240 void nuclear_slow(
int ish,
int jsh);
241 void nuclear(
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,
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);