Updated the code to work with the latest gromacs (with Alexios changes)
authorAnatoly <Titov_AI@pnpi.nrcki.ru>
Wed, 15 Jul 2020 08:40:08 +0000 (11:40 +0300)
committerAnatoly <Titov_AI@pnpi.nrcki.ru>
Wed, 15 Jul 2020 08:40:08 +0000 (11:40 +0300)
CMakeLists.txt
src/domains.cpp

index eda633bf6a09ab26edc41950b91ed5f97563de42..11bd35009dc9c05f0e6a495716b2d49dd9fd92b9 100644 (file)
@@ -1,8 +1,8 @@
-cmake_minimum_required(VERSION 3.4.3)
+cmake_minimum_required(VERSION 3.9.6)
 
 project(gromacs-domains CXX)
 
-set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
index 7244ba0d2d2b0fc28ed3b0c8f7a5bfee20975e08..a4fab68529d3f2fb00b79673fe26fe2d71cf760a 100644 (file)
 
 #include <iostream>
 //#include <chrono>
-//#include <cstdint>
 #include <cfloat>
 #include <omp.h>
+#include <vector>
+#include <cstdio>
 
 #include <gromacs/trajectoryanalysis.h>
-//#include <gromacs/pbcutil/pbc.h>
-//#include <gromacs/utility/smalloc.h>
-//#include <gromacs/math/do_fit.h>
-
-#include <gromacs/trajectoryanalysis/topologyinformation.h>
-//#include "gromacs/topology/topology.h"
-//#include "gromacs/topology/index.h"
-
-// #define MAX_NTRICVEC 12
+// - #include <gromacs/trajectoryanalysis/topologyinformation.h>
+#include "/home/titov_ai/Develop/gromacs-original/src/gromacs/trajectoryanalysis/topologyinformation.h"
 
 using namespace gmx;
 
@@ -193,7 +187,7 @@ class domainsType {
         domainsType() {}
 
         // конструктор класса для полноценной инициализации данных
-        domainsType(std::vector< int > index, const std::vector< RVec > reference,
+        domainsType(std::vector< unsigned long > index, const std::vector< RVec > reference,
                     const int windowSize, const int domainMinimumSize,
                     const int domainSearchAlgorythm, const int timeStepBetweenWindowStarts,
                     const unsigned int sliceNum, const double epsilon, const double delta,
@@ -203,7 +197,7 @@ class domainsType {
 
         // set numeric values to "-1" / string value to "" - if you want default settings
         // функция заполнения необходимыми данными для вычисления структурных доменов
-        void setDefaults(std::vector< int > index, const std::vector< RVec > reference,
+        void setDefaults(std::vector< unsigned long > index, const std::vector< RVec > reference,
                         const int windowSize, const int domainMinimumSize,
                         const int domainSearchAlgorythm, const int timeStepBetweenWindows,
                         const unsigned int sliceNum, const double epsilon, const double delta,
@@ -274,7 +268,7 @@ class domainsType {
         // референстная структура
         std::vector< RVec >                                                     ref;                            // must be presented
         // индекс структуры
-        std::vector< int >                                                      structIndex;                    // must be presented
+        std::vector< unsigned long >                                            structIndex;                    // must be presented
         // рабочие окна -> рассматриваемые основные последовательности -> матрица соотношений в структуре всё на всё
         std::vector< std::vector< std::vector< std::vector< triple > > > >      graph;
         // списки доменов
@@ -414,8 +408,8 @@ class domainsType {
                         writeCount -= 20;
                         std::fprintf(ndxFile, "\n");
                     }
-                    std::fprintf(ndxFile, "%5d ", structIndex[domains[i][j]] + 1);
-                    std::printf("%5d ", structIndex[domains[i][j]] + 1);
+                    std::fprintf(ndxFile, "%5lu ", structIndex[domains[i][j]] + 1);
+                    std::printf("%5lu ", structIndex[domains[i][j]] + 1);
                 }
                 std::fprintf(ndxFile,"\n\n");
                 std::printf("\n\n");
@@ -461,7 +455,7 @@ class Domains : public TrajectoryAnalysisModule
 
         std::string                                                             fnNdx_;
         domainsType                                                             testSubject;
-        std::vector< int >                                                      index;
+        std::vector< unsigned long >                                            index;
         std::vector< RVec >                                                     trajectory;
         std::vector< RVec >                                                     reference;
         Selection                                                               selec;
@@ -528,6 +522,7 @@ Domains::initOptions(IOptionsContainer          *options,
     // Control input settings
     settings->setFlags(TrajectoryAnalysisSettings::efNoUserPBC);
     settings->setFlag(TrajectoryAnalysisSettings::efUseTopX);
+    //settings->setFlag(TrajectoryAnalysisSettings::efRequireTop);
     settings->setPBC(true);
 }
 
@@ -538,11 +533,12 @@ Domains::initAnalysis(const TrajectoryAnalysisSettings &settings,
     // считывание индекса
     index.resize(0);
     for (ArrayRef< const int >::iterator ai = selec.atomIndices().begin(); (ai < selec.atomIndices().end()); ai++) {
-        index.push_back(*ai);
+        index.push_back(static_cast< unsigned long >(*ai));
     }
 
     // считывание референсной структуры
     reference.resize(0);
+
     if (top.hasFullTopology()) {
         for (unsigned int i = 0; i < index.size(); i++) {
             reference.push_back(top.x().at(index[i]));