00001
00002
00003
00004
00005 #ifndef ECKART_H
00006 #define ECKART_H
00007
00008 #include <iostream>
00009 #include <iomanip>
00010 #include <fstream>
00011 #include <stdio.h>
00012 #include <stdlib.h>
00013 #include <math.h>
00014
00015 #include "constants.h"
00016 #include "utils.h"
00017
00018 using namespace std;
00019
00020 namespace Eckart
00021 {
00022
00023 void centroid_to_origin(double* structure, int natoms);
00024 double d2grad(double* grad, double* initial, double* final, int natoms);
00025 void d2hessian(double** hess, double* initial, double* final, int natoms);
00026 void Eckart_align(double* xyzreact, double* xyzprod, double tol, double* total_thetas, int max_iter, double* masses, int natoms);
00027 void Eckart_align(double* xyzreact, double* xyzprod, double* masses, int natoms);
00028 void Eckart_align(double* xyzreact, double* xyzprod, double tol, double* total_thetas, int max_iter, double* masses, int natoms, double rfrac);
00029 void Eckart_align(double* xyzreact, double* xyzprod, double* masses, int natoms, double rfrac);
00030
00031 void Eckart_align_string(double** angs, int nstring, double* masses, int natoms);
00032
00033
00034
00035 void Eckart_align_with_grads(double* anchor_struct, double* structure, double* grad, double** rot_mat, double* masses, int natoms);
00036
00037 void Eckart_align_string_and_gradients(double** angs, double** ang_gradients, int nstring, double* masses, int natoms);
00038
00039
00040 };
00041
00042 #endif
00043
00044
00045
00046