#include <gromacs/utility/gmxomp.h>
#include <gromacs/trajectoryanalysis.h>
+#include "gromacs/math/do_fit.h"
+#include "gromacs/utility/smalloc.h"
#include "newfit.h"
using namespace gmx;
double noise_mid = 1;
noise_mid = 9999;
+
+ /*
std::chrono::time_point<std::chrono::system_clock> start1, end1;
start1 = std::chrono::system_clock::now();
while (noise_mid > epsi) {
fitting_pairs.push_back(std::make_pair (i, i));
}
}
-
+*/
// fitting constant chart calculation
+ std::chrono::time_point<std::chrono::system_clock> start1, end1, start2, end2;
+ FILE * pFile;
+ pFile = fopen ("/home/toluk/Develop/testing/output.out","w+");
+ double fitting_prec = 0.00001;
+ int k = 1000;
+ std::vector< std::vector < RVec > > fit_a, fit_b;
+ std::vector< std::vector < std::pair< int, int > > > fit_pairs;
+ RVec vec0, vec_x, vec_y, vec_z, vec_xx, vec_yy, vec_zz;
+ std::vector< int > natoms;
+ real *w_rls;
+ rvec **x, **xp;
+ bool flag;
+
+ fit_a.resize(k);
+ fit_b.resize(k);
+ fit_pairs.resize(k);
+ natoms.resize(k);
+ snew(w_rls, k);
+ snew(x, k);
+ snew(xp, k);
+
+ vec0[0] = 0; vec0[1] = 0; vec0[2] = 0;
+
+ vec_x[0] = 1; vec_x[1] = 0; vec_x[2] = 0;
+
+ vec_y[0] = 0; vec_y[1] = 1; vec_y[2] = 0;
+
+ vec_z[0] = 0; vec_z[1] = 0; vec_z[2] = 1;
+
+ vec_xx[0] = 1; vec_xx[1] = 1; vec_xx[2] = 0;
+
+ vec_yy[0] = 1; vec_yy[1] = -1; vec_yy[2] = 0;
+
+ vec_zz[0] = 0; vec_zz[1] = 0; vec_zz[2] = -1;
+
+ for (int i1 = 0; i1 < k; i1++) {
+ //fit_a[i1].resize(i1 + 1);
+ for (int i2 = 0; i2 < (i1 / 100) % 10; i2++) {
+ for (int i3 = 0; i3 < (i1 / 10) % 10; i3++) {
+ for (int i4 = 0; i4 < i1 % 10 ; i4++) {
+ fit_a[i1].push_back(vec_x.scale(i4) + vec_y.scale(i3) + vec_z.scale(i2));
+ fit_b[i1].push_back(vec_xx.scale(i4) + vec_yy.scale(i3) + vec_zz.scale(i2));
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < k; i++) {
+ natoms[i] = i;
+ w_rls[i] = 1;
+ snew(x[i], i + 1);
+ snew(xp[i], i + 1);
+ }
+
+ for (int i1 = 0; i1 < k; i1++) {
+ for (int i2 = 0; i2 < i1; i2++) {
+ fit_pairs[i1].push_back(std::make_pair(i2, i2));
+ copy_rvec(fit_a[i1][i2].as_vec(), x[i1][i2]);
+ copy_rvec(fit_b[i1][i2].as_vec(), xp[i1][i2]);
+ }
+ }
+
+ fprintf (pFile, "| atoms | dist old | taken time | dist new | taken time |\n");
+ for (int i = 0; i < k; i++) {
+
+ start1 = std::chrono::system_clock::now();
+ NewFit::new_fit(fit_a[i], fit_b[i], fit_pairs[i], fitting_prec);
+ end1 = std::chrono::system_clock::now();
+
+ flag = true;
+ start2 = std::chrono::system_clock::now();
+ try {
+ do_fit(natoms[i], w_rls, xp[i], x[i]);
+ }
+ catch (...) {
+ flag = false;
+ }
+ end2 = std::chrono::system_clock::now();
+
+ //std::cout << NewFit::dist(fit_a[i], fit_b[i], fit_pairs[i]) << " | " << std::chrono::duration_cast<std::chrono::milliseconds>(end1-start1).count() << "\n";
+ fprintf (pFile, "%d %f %ld msec %f %ld msec\n", i + 1, NewFit::dist_old_format(x[i], xp[i], fit_pairs[i]), std::chrono::duration_cast<std::chrono::milliseconds>(end2-start2).count(), NewFit::dist(fit_a[i], fit_b[i], fit_pairs[i]), std::chrono::duration_cast<std::chrono::milliseconds>(end1-start1).count());
+ }
+ fclose (pFile);
+
+
+
+
+
std::cout << "analys finish\n";
}