Git Product home page Git Product logo

pomerol's Introduction

DOI Documentation Build and test (Ubuntu) Build and test (macOS)

pomerol is an exact diagonalization (full ED) code written in C++ aimed at solving condensed matter second-quantized models of interacting fermions and bosons on finite size lattices at finite temperatures. It is designed to compute thermal expectation values of observables, single- and two-particle Green's functions as well as susceptibilities.

Features

  • High performance exact calculation of Green's functions, two-particle Green's functions and susceptibilities in Matsubara domain.
  • Many-body Hamiltonians can be specified in a natural mathematical form using libcommute's Domain-Specific Language. Hamiltonian presets for commonly used lattice models are also available.
  • Automatic symmetry analysis of the many-body Hamiltonians drastically reduces computational costs.
  • Eigen 3 template library is used for numerical linear algebra.
  • MPI + OpenMP support.

Installation

From source

  • Check the dependencies:

    • A C++11 conformant compiler
    • CMake >= 3.11.0
    • Boost >= 1.54.0 (only headers are required)
    • Eigen >= 3.1.0
    • libcommute >= 0.7.2 (will be downloaded by CMake if not found installed locally)
    • An MPI 3.0 implementation
    • Git to fetch the sources
  • Download the latest sources:

    git clone https://github.com/pomerol-ed/pomerol.git
    
  • Create a (temporary) build directory and change to it:

    mkdir build && cd build
    
  • In this build directory, run

    cmake <path_to_pomerol_sources> -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<installation_path>
    
    • CMake tries to find an installation of libcommute, whose location can be specified by adding -Dlibcommute_DIR=<libcommute_installation_path>/lib/cmake/libcommute to the command line. If this attempt fails, it will download an appropriate version of libcommute and co-install it alongside pomerol.
    • Add -DTesting=OFF to disable compilation of unit tests (not recommended).
    • Add -DProgs=ON to compile provided executables (from progs directory). Some of the executables depend on the gftools library, which will be automatically downloaded in case it cannot be found by CMake (use -Dgftools_DIR to specify its installation path). gftools supports saving to HDF5 through ALPSCore.
    • Add -DDocumentation=OFF to disable generation of reference documentation.
    • Add -DUSE_OPENMP=OFF to disable OpenMP optimization for two-particle GF calculation.
    • Add -DBUILD_SHARED_LIBS=OFF to compile static instead of shared libraries.
  • make

  • make test (if unit tests are compiled)

  • make install

  • make doc generates the Doxygen reference documentation in the doc/html subdirectory.

The library, libpomerol is built. It can be used for linking with executables. Some working executables are given in prog subdirectory.

โš ๏ธ It has been reported that some MPICH-based MPI implementations, such as HPE Cray MPI may not properly support MPI_CXX_* datatypes, which pomerol's code depends on. In case you see failing MPI unit tests when linking to said MPI libraries, try using CMake option -DUse_MPI_C_datatypes=ON.

Interfacing with your own code and other libraries

Check the tutorial directory for an example of a pomerol-based code that is linked to external libraries.

The interface to TRIQS library is readily available: https://github.com/pomerol-ed/pomerol2triqs.

Documentation

Check https://pomerol-ed.github.io/pomerol/html/ or type make doc during compilation stage to build the reference documentation.

CHANGELOG.md lists main changes introduced in each release.

License

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

Academic usage

Please, attribute this work by a citation to http://dx.doi.org/10.5281/zenodo.17900.

Authors & Contributors

  • Andrey Antipov <Andrey.E.Antipov\at\gmail.com>
  • Igor Krivenko <igor.s.krivenko\at\gmail.com>
  • Mikhail Alejnikov
  • Alexey Rubtsov
  • Christoph Jung
  • Aljoscha Wilhelm
  • Junya Otsuki
  • Sergei Iskakov
  • Hiroshi Shinaoka
  • Nils Wentzell
  • Hugo U.R. Strand
  • Dominik Kiese

Development/Help

Please, feel free to contact us and to contribute!

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.