3
#include <libipv1/ip_lib.h>
6
#include <libint/libint.h>
16
double cross[] = {0.0, 0.0, 0.0} ;
19
for(atom=0; atom<Molecule.num_atoms; atom++) {
20
cross[0] += (Molecule.centers[atom].y*Grad[atom][2] - Molecule.centers[atom].z*Grad[atom][1]);
21
cross[1] += (Molecule.centers[atom].z*Grad[atom][0] - Molecule.centers[atom].x*Grad[atom][2]);
22
cross[2] += (Molecule.centers[atom].x*Grad[atom][1] - Molecule.centers[atom].y*Grad[atom][0]);
25
mod_cross = sqrt(cross[0]*cross[0] + cross[1]*cross[1] + cross[2]*cross[2]);
27
if (mod_cross > ROT_INV_TOLER) {
28
printf(" Rotational invariance of the energy derivative is violated!\n\n");
29
fprintf(outfile," Rotational invariance of the energy derivative is violated!\n");
30
fprintf(outfile," |X cross Grad| = %15.12lf\n\n",mod_cross);
34
fprintf(outfile," Rotational invariance condition satisfied.\n");
35
fprintf(outfile," |X cross Grad| = %15.12lf (it is the accuracy of the computed forces)\n",mod_cross);
36
fprintf(outfile," So long..\n\n");