Coder Social home page Coder Social logo

infophysics / entropictrajectories Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 0.0 100.06 MB

The Entropic Trajectories Framework: Many Body QM Simulations and Analysis.

CMake 7.09% Makefile 0.02% C++ 8.99% Shell 0.01% Python 1.83% HTML 0.12% Jupyter Notebook 81.94%

entropictrajectories's Introduction

Entropic Trajectories

Join the chat at https://gitter.im/EntropicTrajectories/entropictrajectories

This is the Entropic Trajectories library which is a framework for solving many-body quantum systems. For a the full technical documentation see ... For various papers using the ET framework see ...

Prerequisites

The Entropic Trajectories Framework uses many existing packages under the hood. These include the BLAS and LAPACK libraries, which must be installed before cloning this repository. BLAS and LAPACK can be found at,

Linux installation

Make sure that you have the python development environment installed,

$ sudo apt-get install python3-dev

You will also need a suitable version of CMake and GCC,

$ sudo apt-get install cmake
$ sudo apt-get install gcc

To install BLAS and LAPACK (LAPACKe) on Ubuntu simply run the following command in the terminal,

$ sudo apt-get install libblas-dev checkinstall
$ sudo apt-get install libblas-doc checkinstall
$ sudo apt-get install liblapacke-dev checkinstall
$ sudo apt-get install liblapack-doc checkinstall
$ sudo apt-get instlal libopenblas-dev checkinstall

OpenBLAS is also needed for some of the methods included in CBLAS. Other distributions can likely issue a similar command with different package managers (See https://distrowatch.com/dwres.php?resource=package-management for a list of common ones). You will also need a fortran compiler if you don't already have one,

$ sudo apt-get install gfortran

Again, other distributions will use a similar command with a different package manager.

Windows

Pybind11

The ET framework uses a python wrapper called pybind11 in order to generate python bindings.

  • Pybind11; https://github.com/pybind/pybind11 (Wenzel Jakob) Pybind is compiled together with the ET framework, so one only needs to extract the source files into the include directory. This is done automatically via a submodule.

TODO:

Installing from PyPI

For 64-bit Linux or Mac systems, instally 'etraj' should just require running:

pip install etraj

You can then test that it works by running the example above.

Installing from source

Requirements: You must have CMake>=2.8.12 and a C++11 compatible compiler (GCC>=4.8) to build.

First, you must check out this repository using the recursive command in order to download the latest versions of the included libraries as well,

$ git clone --recurse-submodules [email protected]:infophysics/EntropicTrajectories.git

If the recursive command failed, you can download the main files and simply update the submodules using,

$ git clone [email protected]:infophysics/EntropicTrajectories.git
$ git submodule init
$ git submodule update

Then, once all of the submodules are there, simply run the installer,

$ python setup.py install

Usage

Python bindings to the Entropic Trajectories library:

import etraj


For more examples on possible calls, please see the tests folder.

Support

  • Bugs: Please report bugs to the issue tracker on Github such that we can keep track of them and eventually fix them. Please explain how to reproduce the issue (including code) and which system you are running on.
  • Help: Help can be provided also via the issue tracker by tagging your issue with 'question'
  • Contributing: Please fork this repository then make a pull request. In this pull request, explain the details of your change and include tests.

Technical implementation

  • Implementation also based on this

See AUTHORS.md for information on the developers.

Citation

When you use etraj, please say so in your slides or publications (for publications, see Zenodo link above). You can mention this in addition to how you cite EntropicTrajectories. This is important for us being able to get funding to support this project.

entropictrajectories's People

Contributors

infophysics avatar

Watchers

James Cloos avatar  avatar Felipe Xavier Costa avatar

entropictrajectories's Issues

imgui

Add an imgui interface so that people can use c++ directly rather than python.

BLAS Level two

Need to finish implementing BLAS level two functions. There should be a complete set of tests as well as speed tests for these functions and their wrappers in python.

Iterators

Need to add iterator functionality to Vector, Grid, and Field classes.

Hierarchy of class ownerships

There are some issues with class ownership between Grid, Field and Interpolator and the various parameters of things like "the number of nearest neighbors" to use in a KDTree search and the number of neighbors for a given monomial expansion. All of these things should agree all the time, so special care needs to be taken to ensure this throughout the code.

RBF-FD

Create methods for implementing the RBF-FD method for computing derivatives using the RBF approximation.

Global interpolation functions

Need to add a set of global interpolation functions so that interpolations can be performed without explicitly creating Interpolator classes. Much in the style of what can be found in scipy.

RK4 Integration

Finish implementing the abstract Integrator class and a subclass for implementing RK4 approximations. The Integrator class will need a DiffEQ definition that will be fed into different algorithms in the subclasses.

Info, trace and error messages

Each object, i.e. Vector, Matrix, Grid, etc., needs to have an attribute called "_info", which will be a string containing pertinent temporary information. For example, if a matrix multiplication fails, the object it was called on will log a message in _info so that a logging system can extract the relevant information and record it.

Constrained Least Squares

Currently we create a global Taylor expansion interpolant in one dimension. There is the beginning of a constrained least squares being developed inside the interpolation and interpolant classes, however it needs to be fully implemented and tested (easiest with the heat equation).

Logging system

Update the logging system to use a pre-compiler expression that chooses either a global logger or individual loggers at compile time. This would define the void init() function and the message functions at compile time using some CMake option like -DLOG_LEVEL=GLOBAL, -DLOG_LEVEL=LOCAL.

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.