3
\brief Enter brief description of file here
10
#include <libipv1/ip_lib.h>
11
#include <libciomr/libciomr.h>
12
#include <libint/libint.h>
19
namespace psi { namespace CINTS {
21
void symmetrize_deriv1()
26
vector<vector<double> > symm_grad(Molecule.num_atoms);
28
for(atom=0; atom<Molecule.num_atoms; atom++) {
29
vector<double> vdummy(3);
30
symm_grad[atom]=vdummy;
31
grad[0] = grad[1] = grad[2] = 0.0;
32
for(symop=0;symop<Symmetry.nirreps;symop++) {
33
atom2 = Symmetry.ict[symop][atom]-1;
34
grad[0] += Symmetry.cartrep[symop][0]*Grad[atom2][0] +
35
Symmetry.cartrep[symop][1]*Grad[atom2][1] +
36
Symmetry.cartrep[symop][2]*Grad[atom2][2];
37
grad[1] += Symmetry.cartrep[symop][3]*Grad[atom2][0] +
38
Symmetry.cartrep[symop][4]*Grad[atom2][1] +
39
Symmetry.cartrep[symop][5]*Grad[atom2][2];
40
grad[2] += Symmetry.cartrep[symop][6]*Grad[atom2][0] +
41
Symmetry.cartrep[symop][7]*Grad[atom2][1] +
42
Symmetry.cartrep[symop][8]*Grad[atom2][2];
44
symm_grad[atom][0] = grad[0]/Symmetry.nirreps;
45
symm_grad[atom][1] = grad[1]/Symmetry.nirreps;
46
symm_grad[atom][2] = grad[2]/Symmetry.nirreps;
49
for(atom=0;atom<Molecule.num_atoms;atom++) {
50
Grad[atom][0] = symm_grad[atom][0];
51
Grad[atom][1] = symm_grad[atom][1];
52
Grad[atom][2] = symm_grad[atom][2];