GithubHelp home page GithubHelp logo

aboria / aboria Goto Github PK

View Code? Open in Web Editor NEW
101.0 11.0 29.0 12.84 MB

Enables computations over a set of particles in N-dimensional space

Home Page: https://aboria.github.io/Aboria

License: Other

CMake 1.23% Python 19.88% C++ 73.98% C 0.80% Shell 0.47% Batchfile 0.01% Ruby 0.41% XSLT 2.78% Smarty 0.04% Perl 0.36% Makefile 0.04% MATLAB 0.03%
particles meshless molecular-dynamics neighbour-search smoothed-particle-hydrodynamics radial-basis-function fast-multipole-method hierarchical-matrices

aboria's Introduction

TravisCI Coverage Join the chat at https://gitter.im/Aboria/Lobby

Aboria is a C++ library that enables computations over a set of particles or points in N-dimensional space, with the aim of providing a useful library for implementing particle-based numerical algorithms, for example Molecular Dynamics, Smoothed Particle Hydrodynamics or Radial Basis Functions.

A standards-compliant particle container

The library gives you a STL compatible container class to store a particle set containing a position and unique id for each particle, as well as any number of user-defined variables with arbitrary types.

ABORIA_VARIABLE(scalar, double, "an example scalar variable")
const int DIM = 2;
using Particles_t = Particles<std::tuple<scalar>,DIM>;
using position = Particles_t::position;
Particles_t particles(100);

std::normal_distribution<double> normal(0.5, 0.2);
std::default_random_engine gen;
for (auto i: particles) {
  get<position>(i) = vdouble2(normal(gen), normal(gen));
  get<scalar>(i) = normal(gen);
}

Spatial data structures and queries

Aboria gives you the ability to embed each particle set within a hypercube domain with arbitrary periodicity. The underlying data structure can be a cell list, kd-tree or hyper oct-tree.

      

These data structures provide flexible neighbourhood queries that return iterators, and can use any integer p-norm distance measure for p > 0.

for (auto i = euclidean_search(particles.get_query(),
                               vdouble2::Constant(0), radius);
         i != false; ++i) {
  std::cout << "Found a particle with dx = " << i.dx()
            << " and id = " << get<id>(*i) << "\n";
}

An API for forming linear kernel operators

Aboria gives you an API for forming linear kernel operators from C++ lambda functions, This can be used, for example, to implement Radial Basis Function kernels. These can be wrapped as Eigen matrices in order to solve linear systems.

auto K = create_sparse_operator(
    particles, particles, radius,
    [epsilon](const vdouble2 &dx, auto i, auto j) {
      return (get<scalar>(i) * get<scalar>(j)) / (dx.norm() + epsilon);
    });

// matrix-vector multiply (matrix-free)
const int N = particles.size();
Eigen::VectorXd b = Eigen::VectorXd::LinSpaced(N, 0, 1.0);
Eigen::VectorXd c = K * b;

// matrix-vector multiply (assemble to a matrix first)
Eigen::MatrixXd K_eigen(N, N);
K.assemble(K_eigen);
c = K_eigen * b;

License and Contact

Aboria is distributed under a BSD 3-Clause License, see LICENCE for more details. For documentation see the Aboria website. If you are interested in contributing to Aboria, having trouble getting it working or just have a question, send me an email at [email protected] or create a GitHub issue or pull request.

aboria's People

Contributors

gitter-badger avatar martinjrobins avatar mbruna avatar roliveira avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aboria's Issues

add ability to use c++17 parallel algorithms

v0.5 added ability to use Thrust library for parallel algorithms. This is done in src/detail/Algorithms.h using custom Aboria algorithms, which use tag dispatching to either call Thrust or STL algorithms, depending on if the Level 0 vector is a STL vector or a Thrust vector.

For STL vectors, and if using a c++17, parallel algorithms could be used for all algorithms, this functionality needs to be added (i.e. detect if c++17 available, and use a parallel executor if so)

MPI Parallelization?

Dear @martinjrobins,

Thank you for developing Aboria! I've thoroughly enjoyed using this library for analyzing molecular dynamics data in my work. One of the things that I've been curious about is if you are thinking about developing Aboria to support MPI parallelization.

I suppose this is a "bizarre" request because it doesn't quite fit the goal of Aboria. After all, it's a lightweight header-only library and GPU parallelization is supported externally through Thrust). A lot of my work requires normal mode analysis and numerical linear algebra on a dataset derived from particle simulations. The libraries I've been using to efficiently perform these calculations (PETSc and SLEPc) for large systems is parallelized using MPI.

Of course, I can implement Aboria on an MPI+OpenMP program (that's what I've been doing actually) but in terms of memory management, I feel that this is relatively awkward. For instance, it would be great if the memory on particle data can be distributed.

Anyways, I apologize if this is a weird request/question. But I hope you may consider my thoughts as possible future features on Aboria!

All the best,

Muhammad

make `Aboria::Vector` use the same constant vector creation API as Eigen

At the moment, you can create a Aboria::Vector with all constant entries like so

const double C = 1.0;
Aboria::Vector<double,3> vector(C);

With the view to be able to swap out using an Aboria::Vector with an Eigen::Vector for the position: I would like to change this to match the API of an Eigen vector, like so

const double C = 1.0;
Aboria::Vector<double,3> vector = Aboria::Vector<double,3>::Constant(C);
Aboria::Vector<double,3> zero_vector = Aboria::Vector<double,3>::Zeros();
vector.setZero();
vector.setConstant(2*C);

example code with CUDA?

Hi, does this library work with CUDA? Can you provide an example of setting up a simulation and compile it to run on GPU?

Condition as an Argument for Symbolic Expressions

Hello @martinjrobins ,

Thank you for the recent updates, that was really helpful!

I noticed that I can't do the following:

p[a] = sum(b, norm(dx)<2, 1.0/pow(norm(dx),2))

Namely, have a boolean condition as an argument in uni/bivariate expressions in Aboria, despite the fact that it's stated in the documentation. My compiler throws many errors.

An if_else() operation would do the job in most circumstances, especially when the right hand side is added to left hand side, but unfortunately I'm not sure how to go about doing that when it's assignment, like the case above.

I'd appreciate your thoughts on this!

Many thanks,

Jabir

CMake error: the source directory "..." does not appear to contain CMakeList.txt

Hi, I really admire your work, and want to try your c++ library. However, I'm stuck with the first example you provided in “Installation and Getting Started”. I did exactly what you told. But I don't understand the meaning of "Note that this assumes that the Aboria repository is in your current directory, which it will be if you just cloned the repo using the git command above". So I cloned the repo, and saved the two file "getting_started.cpp" and "CMakeLists.txt", placed them with the repo in the same directory. It looks like below:

.
..
Aboria
CMakeLists.txt
getting_started.cpp

When I entered the command “cmake .”, I got the error "the source directory "..." does not appear to contain CMakeList.txt".
I am not familiar with CMAKE, and eager to get your help. Thank you very much.
My system is ubuntu 16.04.

replace boost::fusion with Aboria::getter_type

boost::fusion is used to hold particle data in the Context type for the expression template evaluation (src/detail/Context.h). If I used a Aboria::getter_type instead, this could get rid of the boost::fusion dependency

NeighbourQueryBase needs the concept of a root child_iterator

Aboria::NeighbourQueryBase needs the concept of a root child_iterator to simplify writing, for example, a depth-first iteration. At the moment it is:

     auto depth_first = [&](const auto &parent) {
      std::cout << query.get_bounds(parent) << std::endl;

      for (auto i = query.get_children(parent); i != false; ++i) {
        depth_first(i);
      }
    };

    for (auto i = query.get_children(); i != false; ++i) {
      depth_first(i);
    }

It should be

     auto depth_first = [&](const auto &parent) {
      std::cout << query.get_bounds(parent) << std::endl;

      for (auto i = query.get_children(parent); i != false; ++i) {
        depth_first(i);
      }
    };
    depth_first(query.get_root());

Question: is Aboria::Particles<>'s design similar to std::variant?

What's the programming pattern behind Aboria::Particles<>'s capability to handle arbitrary number of types, e.g., position, velocity, id...? Just by skimming the code I found that it's kinda designed similarly to std::variant in c++17 or boost::variant -- just curious, is my guess correct?

Not orthorhombic unit cell

I am porting some code from python (mostly using ASE) to this library, and it's been great.

But I am stuck in a problem I cant seem to resolve.
When working with a FCC lattice with ASE, using a 3x3 vector like:

[ [5.1053 0.0 0.0] [0.0 8.8426 0.0] [0.0 0.0 12.5054] ]

I can port it to Aboria searching functions using min, max like:

vdouble3 min = vdouble3(0.0, 0.0, 0.0);
vdouble3 max = vdouble3(5.1053, 8.8426, 12.5054);
vbool3 periodic = vbool3(true, true, false);

particles.init_neighbour_search(min, max, periodic);

And it works great, result is the same as in ASE (using functions like get_distances, etc.)

But, when working with a HCP lattice (ie. 90º 90º 120º), like:

[ [8.8500 0.0 0.0] [-4.4249 7.6643 0.0] [0.0 0.0 9.3692] ]

Making stuff like:

vdouble3 min = vdouble3(-4.4249, 0.0, 0.0);
vdouble3 max = vdouble3(8.8500, 7.6643, 9.3692);

or

vdouble3 min = vdouble3(-4.4249, 0.0, 0.0);
vdouble3 max = vdouble3(8.8500, 8.8500, 9.3692);

I can't get the same result as in python.
Is it possible to use such unit cells (ie. not 90º 90º 90º) in Aboria ?

I am sorry if I am missing something trivial, not my area

Installation problem

Hi,

I have some problems installing the library - I am running Suse Leap 15.1 and I get the following error message when running make

/usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/IteratorsTest.dir/IteratorsTest.cpp.o: undefined reference to symbol 'floor@@GLIBC_2.2.5'
/usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/bin/ld: /lib64/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/IteratorsTest.dir/build.make:100: tests/IteratorsTest] Error 1
make[1]: *** [CMakeFiles/Makefile2:266: tests/CMakeFiles/IteratorsTest.dir/all] Error 2
make: *** [Makefile:95: all] Error 2

Any ideas what's going wrong here ?

Thank you very much
Mary

NanoFlannAdaptor non-copyable

I think that if NanoflannAdaptor is copied, the m_root pointer for the query object is not updated

Need to:

  • verify that the above is true
  • fix it

Documentation

  • Doxygen documentation
    • All neighbour searching classes (NeighbourSearchBase.h, BucketSearchSerial.h, Octtree.h etc)
    • All FMM-based classes
    • RASM preconditioner
    • Update comments for ALL classes that have changed over the last couple of versions
  • At the moment all examples are combined on one huge page, this needs to be split over multiple pages
  • Examples, need to add Level 2 versions of all examples (i.e. using STL style iterators rather than expression template API)
  • Document search by particle id
  • Document using bucket iterators to write new Level 2 algorithms

H2 matrix inversion bugs

The H2 matrix inversion tests fail for

  • dimension = 1
  • vector-valued kernels with chol factorisation

Maximum Number of Aboria Variables

Hello @martinjrobins,

Hope you've been doing well. Thanks for the latest updates to the library and documentation!
I was unable to add more than 20 Aboria variables (I think I might need 25 variables eventually) and it turns out it had to do with BOOST_MPL_LIMIT_VECTOR_SIZE's default value of 20.
Adding the following two lines on top of Level1.h solved the problem:

#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#define BOOST_MPL_LIMIT_VECTOR_SIZE 30

I guess it's a clumsy place to put them but for some reason adding them to my main file before adding Aboria.h wouldn't work.

Thought you might want to know!

cheers,

Jabir

Passing a Particle Label to a Function

Dear Dr. Robinsons,

I am trying to create class member functions to which I would pass a particle label, or labels, do some work (featuring among other things accumulator functions) on its values and return a particle label, e.g. p[a]=function(p[b]);

I am unable to do this as I can't figure out a way to get the label data type. I tried using a template function but the compiler threw a insanely-long error related to boost::proto.

I'm not sure whether my logic here is right or not, but my motivation for trying to do this is to avoid creating particle labels within my function/object (expensive?), since I guess my other option would be try and pass the particle container to my function by reference and then create the labels within my functions.

I would much appreciate your thoughts on this.

Best regards,

Jabir

Aboria with OpenMP Issue

Dear Dr. Robins,

First of all thank you for the impressive work on Aboria. I was really excited when I first found out about it.

I have just started trying to use Aboria and so far I've managed to run the SPH example and play around a little. I have been trying to run Aboria with OpenMP on a workstation without a CUDA GPU and I have done the following:

1-Since I don't have CUDA I had to comment out the #include <nppdefs.h> line in CudaInclude.h header file as the compiler was looking for it.
2-I also added set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -lgomp -I /usr/include/thrust") to CMakeLists.txt in order to run Thrust without CUDA.

When I try to compile, Ninja throws off the following error:
c++: error: LINK_LIBRARIES: No such file or directory
c++: error: =: No such file or directory
ninja: build stopped: subcommand failed.

I am using the Eclipse Photon IDE with cmake 3.5.1 and gcc 5.4.0 on Ubuntu 16.04.9

I assume there is something wrong with my CMakeLists file, but I have tried to pinpoint the issue to no avail. The code compiles just fine when I remove the OpenMP and Thrust files from the CMakeLists file.

Below is a copy of the CMakeLists file and I hope it is a silly quick fix.
I'd greatly appreciate your help with this!

Thanks and regards,

Jabir
-------------------------CMakeLists.txt file below-------------------------
cmake_minimum_required(VERSION 2.8)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Aboria/cmake"
${CMAKE_MODULE_PATH})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -lgomp -I /usr/include/thrust")
#add_definitions(-fopenmp -lgomp -I /usr/include/thrust)

Boost

find_package(Boost 1.50.0 REQUIRED serialization)
list(APPEND LIBRARIES ${Boost_LIBRARIES})
list(APPEND INCLUDES ${Boost_INCLUDE_DIRS})

VTK

find_package(VTK REQUIRED)
if (VTK_FOUND)
add_definitions(-DHAVE_VTK)
endif(VTK_FOUND)
list(APPEND LIBRARIES ${VTK_LIBRARIES})
list(APPEND INCLUDES ${VTK_INCLUDE_DIRS})

#OpenMP
find_package(OpenMP REQUIRED)
add_definitions(-DHAVE_OPENMP)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}
${OpenMP_EXE_LINKER_FLAGS}")

#Thrust
find_package(Thrust REQUIRED)
add_definitions(-DHAVE_THRUST)

Aboria

set(Aboria_LOG_LEVEL 1 CACHE STRING "Logging level (1 = least, 3 = most)")
add_definitions(-DABORIA_LOG_LEVEL=${Aboria_LOG_LEVEL})
list(APPEND INCLUDES Aboria/src)
list(APPEND INCLUDES Aboria/third-party)

include_directories(src ${INCLUDES})

set(SOURCE
getting_started.cpp
)

add_executable(getting_started ${SOURCE})
target_link_libraries(getting_started ${LIBRARIES})

replace numerous subtypes in smaller classes with a traits class

many smaller function objects have a long list of subtypes to various types that they need, often based on templated Particles, Elements or Query types. Should make a traits class that can get all these subtypes, would save a lot of lines of code

Create:

  • ContainerTraits<Particles<...>>

Use in:

  • detail::integrate_chebyshev
  • detail::integrate_over_element
  • detail::zero_kernel

Valarray vs. vector

Hi, I just discovered your project which seems very interesting. Concerning the internal data storage for variables, have you tried http://en.cppreference.com/w/cpp/numeric/valarray instead of std::vector ? They have interesting overloaded operators (but with the drawback of the C++ design for overloading operators where a local variable (created in the stack) is needed for storing the result before to be copied with the return keyword, so lot of overhead) and maybe you also loose the help of CUDA.

Accumulate for Expressions of 2 Particle Labels

Dear @martinjrobins,

I have been trying to evaluate the result of something like:

//create particle labels a and b and symbols
Accumulate<Aboria::max<double>> max;

double  maxVal= eval(max(a,b,SomeFunction(a,b)));

This is straight-forward when SomeFunction only deals with one particle label, i.e. eval(max(a,SomeFunction(a))); I tied looking at Symbolic.h but I couldn't figure out the syntax to use when the expression involves more than one label. Seems like dx has to be somewhere in there?

derived library?

Hi Martin,
I just stumbled over your neat c++ library which is quite close to that I’d like to develop for monte carlo simulations of molecules. Currently I’m using std::vector<particle> for our codes, see i.e. https://github.com/mlund/faunus.

Ideally I’d like the following:

  1. dynamic number of particles for i.e. Grand Canonical ensemble
    (erase/insert functions for a range of particles (i.e. molecules), mem. handling)
  2. STL-like access and iterators
  3. vec3 should be based on the Eigen matrix library
  4. no boost dependence, but c++11 OK.
  5. header only, preferably
  6. direct data access to i.e. positions for copying/referencing to python or other libraries

Should you have any input or ideas on how to modify your code in that direction, I’d very much appreciate it.
Best, Mikael

Qoestion about compiling getting_started.cpp

I followed the installation document step by step, and tried to configure and compile getting_started.cpp in the document. But there are errors occurred as follow. I have installed the VTK following the installation. I am a complete beginner in Linux(version ubuntu 14.04), I don't know how to solve this problem.

-- The imported target "vtkWrapTclInit" references the file
"/usr/bin/vtkWrapTclInit"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkWrapPython" references the file
"/usr/bin/vtkWrapPython"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkWrapPythonInit" references the file
"/usr/bin/vtkWrapPythonInit"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkParseJava" references the file
"/usr/bin/vtkParseJava"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkWrapJava" references the file
"/usr/bin/vtkWrapJava"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkCommonTCL" references the file
"/usr/lib/libvtkCommonTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkCommonPythonD" references the file
"/usr/lib/libvtkCommonPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkCommonJava" references the file
"/usr/lib/jni/libvtkCommonJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkFilteringTCL" references the file
"/usr/lib/libvtkFilteringTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkFilteringPythonD" references the file
"/usr/lib/libvtkFilteringPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkFilteringJava" references the file
"/usr/lib/jni/libvtkFilteringJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkImagingTCL" references the file
"/usr/lib/libvtkImagingTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkImagingPythonD" references the file
"/usr/lib/libvtkImagingPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkImagingJava" references the file
"/usr/lib/jni/libvtkImagingJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGraphicsTCL" references the file
"/usr/lib/libvtkGraphicsTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGraphicsPythonD" references the file
"/usr/lib/libvtkGraphicsPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGraphicsJava" references the file
"/usr/lib/jni/libvtkGraphicsJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGenericFilteringTCL" references the file
"/usr/lib/libvtkGenericFilteringTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGenericFilteringPythonD" references the file
"/usr/lib/libvtkGenericFilteringPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGenericFilteringJava" references the file
"/usr/lib/jni/libvtkGenericFilteringJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkIOTCL" references the file
"/usr/lib/libvtkIOTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkIOPythonD" references the file
"/usr/lib/libvtkIOPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkIOJava" references the file
"/usr/lib/jni/libvtkIOJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkRenderingTCL" references the file
"/usr/lib/libvtkRenderingTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkRenderingPythonD" references the file
"/usr/lib/libvtkRenderingPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkRenderingJava" references the file
"/usr/lib/jni/libvtkRenderingJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/libvtkRenderingPythonTkWidgets.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkVolumeRenderingTCL" references the file
"/usr/lib/libvtkVolumeRenderingTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkVolumeRenderingPythonD" references the file
"/usr/lib/libvtkVolumeRenderingPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkVolumeRenderingJava" references the file
"/usr/lib/jni/libvtkVolumeRenderingJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkHybridTCL" references the file
"/usr/lib/libvtkHybridTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkHybridPythonD" references the file
"/usr/lib/libvtkHybridPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkHybridJava" references the file
"/usr/lib/jni/libvtkHybridJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkWidgetsTCL" references the file
"/usr/lib/libvtkWidgetsTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkWidgetsPythonD" references the file
"/usr/lib/libvtkWidgetsPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkWidgetsJava" references the file
"/usr/lib/jni/libvtkWidgetsJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkParallelTCL" references the file
"/usr/lib/libvtkParallelTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkParallelPythonD" references the file
"/usr/lib/libvtkParallelPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkParallelJava" references the file
"/usr/lib/jni/libvtkParallelJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkInfovisTCL" references the file
"/usr/lib/libvtkInfovisTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkInfovisPythonD" references the file
"/usr/lib/libvtkInfovisPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkInfovisJava" references the file
"/usr/lib/jni/libvtkInfovisJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGeovisTCL" references the file
"/usr/lib/libvtkGeovisTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGeovisPythonD" references the file
"/usr/lib/libvtkGeovisPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkGeovisJava" references the file
"/usr/lib/jni/libvtkGeovisJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkViewsTCL" references the file
"/usr/lib/libvtkViewsTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkViewsPythonD" references the file
"/usr/lib/libvtkViewsPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkViewsJava" references the file
"/usr/lib/jni/libvtkViewsJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkQtChart" references the file
"/usr/lib/libvtkQtChart.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "QVTK" references the file
"/usr/lib/libQVTK.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkChartsTCL" references the file
"/usr/lib/libvtkChartsTCL.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkChartsPythonD" references the file
"/usr/lib/libvtkChartsPythonD.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkChartsJava" references the file
"/usr/lib/jni/libvtkChartsJava.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "pvtk" references the file
"/usr/bin/pvtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtkPythonCore" references the file
"/usr/lib/libvtkPythonCore.so.5.8.0"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/vtk-5.8/VTKTargets.cmake"
    but not all the files it references.

-- Configuring incomplete, errors occurred!

Variable Manipulation

Hello @martinjrobins,

Recently I found myself needing to do something like this:

//for some Aboria variable x:
x1=f(x);
x2=f1(c1*x1+c2*x);
x3=...
x=f3(a*x1+b*x2+c*x3...etc);

Now the straight-forward way to do it would be to declare additional aboria varialbes for x1, x2, etc., but I would like to avoid doing that, since the number of variables might be large and they are only temporary.
Another approach I tried was to access the x array data using get<x>(particles) and then assigning it to an std::vector, however, doing the kind of operations I need with std::transform might be troublesome. I have also looked into using std::valarray but I have concerns regarding performance.

I guess all approaches above are viable, but I was curious whether there's some other neater way within the framework of Aboria that allows me to do this that I might have missed?

Finally, I noticed that the vector cross operation is missing, I tried adding it to the Vector.h and Funtions.h but it was a bit tricky, so I just wrapped it as a lazy Aboria function..Do you think it would it be faster if I included it in the headers or is performance comparable, so I shouldn't bother?

Thanks!

The errors when run sph example from Aboria guidance

Hi, martin

I copied the SPH model code from Aboria guidance to update source file getting_started.cpp(in attachment.zip), then execute the cmake. and make command to compile SPH example, but errors are generated after the compilation. How to solve this problem?

thanks!
adilijiang

attachment.zip

allow indexing of particle container by id

It is generally useful to be able to get a particle based on its unique id (e.g. to implement bonds). This can be implemented by having a map from id -> index that is updated whenever particles are inserted, deleted or reordered.

  • Could use std::map , but this is not suitable for either multithreaded or gpus
  • Could use concurrent hash map in Junction, but not for gpu: https://github.com/preshing/junction
  • Or concurrent hash maps in cds, but not for gpu: https://github.com/khizmax/libcds
  • custom implementation? At the simplest, could do two key value vectors sorted by key? searches are then log(n), which isn't great, but could be vectorized, and thus suitable for gpus
  • or combination of the above. choose between gpu, std::map or concurrent options....

I'm currently thinking of implementing the simple custom implementation above for gpus, and falling back on std::map otherwise, just to get the functionality in there. I'm assuming that radial searches are the speed limiting issue for users, and things like bonds are relatively cheap. Later on, more sophisticated implementations can be considered

Bug when Changing Particles Positions

Dear @martinjrobins ,

I am facing a strange bug.

I'm doing the following in my main file:

 //create particles, symbols, etc...

v[a]+=0.5*dt*dvdt[a];
//write vtk
x[a] += 0.5 * dt * v[a];
//write vtk

The first VTK file created above seems fine, however, when examining the second file, I see that the values of dvdt in addition to several other variables have changed drastically ( up to +/- 1.0 e13)! As you can see nothing was done in between aside from shift the positions, so I'm truly puzzled as to why that happened.
I have tried so many things to try and find out what is wrong, but no luck so far...
I'd greatly appreciate any ideas you might have!

replace boost::mpl with brigand or custom classes

boost::mpl is used for the getter_types in src/Get.h and src/detail/Get.h, this should be replaced with a c++11 alternative like brigand, which should (hopefully) improve compile-time speed/memory usage

CRS Arrays of Sparse Matrices

Dear @martinjrobins,
Thank you for your continuous development and support of Aboria.

I have been solving large systems of equations using Aboria and recently I found myself needing to use a different linear solver than Eigen since it's missing the Algebraic MultiGrid method which is a lot faster for my problem.
To do this, I created the sparse operator then used Eigen to assemble the matrix and obtain the compressed sparse row arrays I needed to pass to the external linear solver library (amgcl).
However, I noticed that the assemble command is quite slow (2x slower than the solution of the linear system) and runs in serial.

I would really appreciate any suggestions you may have to improve this. Currently is there any other way to get the CRS arrays directly from Aboria without resorting to Eigen?

Feature Suggestion

Dear @martinjrobins ,

I'd like to suggest adding the following features:

1- Being able to choose which variables to write out to VTK.
This is useful in case of simulations with a very large number of particles and number of variables that are not needed for visualization/post-processing, in order to reduce the size of files.

2- Being able to write time or other non-particle-associated variables to the VTK files.
This is quite useful for visualization and post-processing.
I currently write time to the VTK files by overloading the vtkWriteGrid() function in the Utils.h file as follows:

#ifdef HAVE_VTK
template <typename T=void>
void vtkWriteGrid(const char *name, int timestep, double time, vtkSmartPointer<vtkUnstructuredGrid> grid) {
    vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer =
        vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();

#if VTK_MAJOR_VERSION > 5
    writer->SetInputData(grid);
#else
    writer->SetInput(grid);
#endif

    vtkDoubleArray *t = vtkDoubleArray::New();
    t->SetName("TIME");
    t->SetNumberOfTuples(1);
    t->SetTuple1(0, time);

    grid->GetFieldData()->AddArray(t);


    writer->SetDataModeToBinary();

    char buffer[100];
    sprintf(buffer,"%s%05d.vtu",name,timestep);

    writer->SetFileName(buffer);
    writer->Write();
}
#endif

This not might be the smartest or most efficient way to do it but it does what I need for now...

Thanks!

Error spurt out from compiling first example

Hi, when I use your library to compile the example [Link], I met a lot of errors(https://martinjrobins.github.io/Aboria/aboria/installation_and_getting_started.html#aboria.installation_and_getting_started.compiling_a_program_using_aboria). I'm sure that all external packages in my system are working well, cause the cmake process show,

-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- serialization
-- Configuring done
-- Generating done
-- Build files have been written to: /home/hgh/nannan/test_aboria

My environment is listed below:
Ubuntu 16.04
GCC 5.4
Boost 1.58
VTK 8.1 (release)

However, I got a lot of error listed below (for clear, I deleted some redundant information in directory)

/Aboria/src/Traits.h:78:75: error: ‘make_permutation_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:83:78: error: ‘make_transform_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:87:60: error: ‘make_tuple’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:92:50: error: ‘make_zip_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:97:53: error: ‘make_counting_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/detail/Algorithms.h:180:10: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/detail/Algorithms.h:180:18: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/detail/Algorithms.h:181:30: error: request for member ‘get_tuple’ in ‘a’, which is of non-class type ‘int’
/Aboria/src/detail/Algorithms.h:181:59: error: request for member ‘get_tuple’ in ‘b’, which is of non-class type ‘int’
/Aboria/src/detail/Algorithms.h:790:29: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:243:63: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:244:43: error: request for member ‘get<0>’ in ‘i’, which is of non-class type ‘const int’
/Aboria/src/Kdtree.h:245:46: error: request for member ‘get<1>’ in ‘i’, which is of non-class type ‘const int’
/Aboria/src/Kdtree.h:246:46: error: request for member ‘get<2>’ in ‘i’, which is of non-class type ‘const int’
/Aboria/src/Kdtree.h:309:70: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:310:44: error: request for member ‘get<0>’ in ‘i’, which is of non-class type ‘int’
/Aboria/src/Kdtree.h:311:46: error: request for member ‘get<1>’ in ‘i’, which is of non-class type ‘int’
/Aboria/src/Kdtree.h:312:43: error: request for member ‘get<2>’ in ‘i’, which is of non-class type ‘int’
/Aboria/src/Kdtree.h:350:21: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:351:44: error: no matching function for call to ‘get(const int&)’
/Aboria/src/Kdtree.h:353:44: error: no matching function for call to ‘get(const int&)’
/Aboria/src/Kdtree.h:506:70: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:507:46: error: no matching function for call to ‘get(const int&)’
/Aboria/src/Kdtree.h:509:67: error: no matching function for call to ‘get(const int&)’
/boost/math/constants/constants.hpp:277:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:278:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:279:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:280:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:281:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:282:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:283:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:284:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:285:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:286:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:287:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:288:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:289:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:290:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:291:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:292:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:293:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:294:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:295:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:296:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:297:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:298:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:299:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:300:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:301:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:302:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:303:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:304:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:305:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:306:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:308:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:309:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:310:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:311:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:312:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:313:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:314:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:315:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:316:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:317:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:318:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:319:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:320:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:321:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:322:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:323:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:324:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:325:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:326:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:327:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:328:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:329:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:330:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:331:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:332:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:333:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:334:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:335:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:336:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:337:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:338:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:339:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:340:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:341:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:343:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:344:3: error: unable to find numeric literal operator ‘operator""Q’
/Aboria/src/Traits.h:78:75: error: ‘make_permutation_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:83:78: error: ‘make_transform_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:87:60: error: ‘make_tuple’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:92:50: error: ‘make_zip_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/Traits.h:97:53: error: ‘make_counting_iterator’ function uses ‘auto’ type specifier without trailing return type
/Aboria/src/detail/Algorithms.h:180:10: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/detail/Algorithms.h:180:18: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/detail/Algorithms.h:181:30: error: request for member ‘get_tuple’ in ‘a’, which is of non-class type ‘int’
/Aboria/src/detail/Algorithms.h:181:59: error: request for member ‘get_tuple’ in ‘b’, which is of non-class type ‘int’
/Aboria/src/detail/Algorithms.h:790:29: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:243:63: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:244:43: error: request for member ‘get<0>’ in ‘i’, which is of non-class type ‘const int’
/Aboria/src/Kdtree.h:245:46: error: request for member ‘get<1>’ in ‘i’, which is of non-class type ‘const int’
/Aboria/src/Kdtree.h:246:46: error: request for member ‘get<2>’ in ‘i’, which is of non-class type ‘const int’
/Aboria/src/Kdtree.h:309:70: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:310:44: error: request for member ‘get<0>’ in ‘i’, which is of non-class type ‘int’
/Aboria/src/Kdtree.h:311:46: error: request for member ‘get<1>’ in ‘i’, which is of non-class type ‘int’
/Aboria/src/Kdtree.h:312:43: error: request for member ‘get<2>’ in ‘i’, which is of non-class type ‘int’
/Aboria/src/Kdtree.h:350:21: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:351:44: error: no matching function for call to ‘get(const int&)’
/Aboria/src/Kdtree.h:353:44: error: no matching function for call to ‘get(const int&)’
/Aboria/src/Kdtree.h:506:70: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
/Aboria/src/Kdtree.h:507:46: error: no matching function for call to ‘get(const int&)’
/Aboria/src/Kdtree.h:509:67: error: no matching function for call to ‘get(const int&)’
/boost/math/constants/constants.hpp:277:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:278:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:279:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:280:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:281:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:282:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:283:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:284:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:285:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:286:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:287:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:288:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:289:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:290:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:291:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:292:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:293:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:294:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:295:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:296:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:297:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:298:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:299:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:300:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:301:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:302:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:303:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:304:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:305:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:306:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:308:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:309:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:310:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:311:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:312:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:313:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:314:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:315:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:316:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:317:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:318:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:319:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:320:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:321:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:322:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:323:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:324:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:325:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:326:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:327:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:328:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:329:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:330:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:331:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:332:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:333:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:334:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:335:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:336:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:337:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:338:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:339:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:340:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:341:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:343:3: error: unable to find numeric literal operator ‘operator""Q’
/boost/math/constants/constants.hpp:344:3: error: unable to find numeric literal operator ‘operator""Q’

So, does it needs some TIPs for running ?
Thank you for your valuable time.

Nan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.