GithubHelp home page GithubHelp logo

cqmp / opendf Goto Github PK

View Code? Open in Web Editor NEW
14.0 6.0 8.0 176 KB

Condensed matter physics, strong correlations, dual fermions

Home Page: http://aeantipov.github.io/opendf/

License: GNU General Public License v2.0

CMake 22.43% C++ 73.51% Python 4.06%
condensed-matter physics dual-fermions greens-functions diagrams

opendf's Introduction

Overview

opendf is a condensed matter physics code that solves strongly correlated lattice problems (i.e. Hubbard model) in finite dimensions using dual fermion method. It requires an input of local Green's functions, hybridization functions and vertex functions that can be obtained either by DMFT or using exact diagonalization (see, for example, https://github.com/aeantipov/pomerol).

An example of exact diagonalization input data for one Hubbard atom is generated by scripts/gen_data_atomic.py.

Installation

Mac (using homebrew)
brew tap aeantipov/aeantipov
brew install opendf
Source installation

The installation is standard cmake-based. To compile (on POSIX os):

  • make some temporary directory, change to that directory and run : cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PATH_TO_INSTALL_LOCATION} ${PATH_TO_CODE}.
  • customize cmake options, if some dependencies are not found (see description below or run ccmake for experts). By default testing is enabled: it can be disabled with -DTesting=OFF.
  • make
  • make test (optional)
  • make install

Usage

hub_df_cubicNd --help

Dependencies:

  • c++11 - compatible c++ compiler
  • cmake
  • eigen3 (header-only) : http://eigen.tuxfamily.org/. CMake option: -DEIGEN3_INCLUDE_DIR=path_to_eigen3_headers.
  • fftw. Cmake option : -DFFTW_ROOT=path_to_fftw_prefix (that is before include or lib).
  • gftools (header-only; https://github.com/aeantipov/gftools; fetched automatically during build). Optionally can be fetched, installed and the location given by -DGFTOOLS_INCLUDE_DIR.
  • ALPSCore : http://alpscore.org/. CMake option : -DALPS_ROOT=path_to_alpscore_prefix. The following alpscore dependencies are required:
    • Boost. Cmake option : -DBOOST_ROOT=path_to_boost_prefix.
    • MPI
    • HDF5 . Cmake option : -DHDF5_ROOT=path_to_hdf5_prefix.
    • gtest for testing
    • Doxygen (optional)

NB: Since c++11 support is required for the code to work, c++ dependencies (in particular, alpscore and boost) are required to be compiled in c++11 mode.

License

GPLv2.

Academic usage.

Please cite AE Antipov, JPF LeBlanc, E Gull, Physics Procedia 68 (C), 43-51 (2015). DOI : 10.1016/j.phpro.2015.07.107.

Copyright

Andrey E. Antipov, (Andrey.E.Antipov[at]gmail[dot]com), 2015-present.

opendf's People

Contributors

aeantipov avatar jpfleblanc avatar kpwhall avatar yangyu1412 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

opendf's Issues

problems with lattice_test.cpp

lattice test fails to compile

this seems to be an incompatibility with C++-11 and icc 16. Here is a list of errors and warnings.

/home/egull/opendf/test/lattice_test.cpp(24): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=1UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<1UL>
double disp_val = lattice.dispersion(orig);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<1UL>]" at line 38

/home/egull/opendf/test/lattice_test.cpp(26): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=1UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<1UL>
ASSERT_NEAR(disp_val, lattice.dispersion(p), 1e-12);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<1UL>]" at line 38

/home/egull/opendf/test/lattice_test.cpp(24): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=2UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<2UL>
double disp_val = lattice.dispersion(orig);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<2UL>]" at line 39

/home/egull/opendf/test/lattice_test.cpp(26): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=2UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<2UL>
ASSERT_NEAR(disp_val, lattice.dispersion(p), 1e-12);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<2UL>]" at line 39

/home/egull/opendf/test/lattice_test.cpp(24): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=3UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<3UL>
double disp_val = lattice.dispersion(orig);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<3UL>]" at line 40

/home/egull/opendf/test/lattice_test.cpp(26): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=3UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<3UL>
ASSERT_NEAR(disp_val, lattice.dispersion(p), 1e-12);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<3UL>]" at line 40

/home/egull/opendf/test/lattice_test.cpp(24): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=4UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<4UL>
double disp_val = lattice.dispersion(orig);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<4UL>]" at line 41

/home/egull/opendf/test/lattice_test.cpp(26): error: no instance of overloaded function "open_df::cubic_traits::dispersion [with D=4UL]" matches the argument list
argument types are: (bz_point)
object type is: open_df::cubic_traits<4UL>
ASSERT_NEAR(disp_val, lattice.dispersion(p), 1e-12);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::cubic_traits<4UL>]" at line 41

/home/egull/opendf/test/lattice_test.cpp(24): error: no instance of overloaded function "open_df::triangular_traits::dispersion" matches the argument list
argument types are: (bz_point)
object type is: open_df::triangular_traits
double disp_val = lattice.dispersion(orig);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::triangular_traits]" at line 42

/home/egull/opendf/test/lattice_test.cpp(26): error: no instance of overloaded function "open_df::triangular_traits::dispersion" matches the argument list
argument types are: (bz_point)
object type is: open_df::triangular_traits
ASSERT_NEAR(disp_val, lattice.dispersion(p), 1e-12);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::triangular_traits]" at line 42

/home/egull/opendf/test/lattice_test.cpp(24): error: no instance of overloaded function "open_df::square_nnn_traits::dispersion" matches the argument list
argument types are: (bz_point)
object type is: open_df::square_nnn_traits
double disp_val = lattice.dispersion(orig);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::square_nnn_traits]" at line 44

/home/egull/opendf/test/lattice_test.cpp(26): error: no instance of overloaded function "open_df::square_nnn_traits::dispersion" matches the argument list
argument types are: (bz_point)
object type is: open_df::square_nnn_traits
ASSERT_NEAR(disp_val, lattice.dispersion(p), 1e-12);
^
detected during instantiation of "void test_symmetry(LatticeT, int) [with LatticeT=open_df::square_nnn_traits]" at line 44

compilation aborted for /home/egull/opendf/test/lattice_test.cpp (code 2)
make[2]: *** [test/CMakeFiles/lattice_test.dir/lattice_test.cpp.o] Error 2
make[1]: *** [test/CMakeFiles/lattice_test.dir/all] Error 2
make: *** [all] Error 2

grid_base warning

Not sure if the following is a desired behavior or a real problem. With the OpenDF code in debug mode, running a DF calculation with >1 bosonic frequency gives warnings of the type:

Calculating bubbles
/home/egull/opendf/build_debug/gftools-prefix/src/gftools/gftools/grid_base.hpp:221: Couldn't shift point{(-0,-79.7965)<-[0]} by (-0,-1.25664) got (-0,-81.0531)
/home/egull/opendf/build_debug/gftools-prefix/src/gftools/gftools/grid_base.hpp:221: Couldn't shift point{(-0,-79.7965)<-[0]} by (-0,-1.25664) got (-0,-81.0531)
...etc

whereas running it in the release mode gives no warnings. Both seem to produce results.

So:
Should it produce warnings at all?
Should it produce warnings in the release mode too?
Are the results correct (or at least as intended)?

memory usage

Appears to be growing memory usage in DF self consistency loop.

Typical memory usage is small, so has gone unnoticed. Also not picked up for cases that converge quickly.

Currently using large vertex files, 30+MB, after 100+ iterations with small mixing you're looking at 3GB or more of memory usage.

Boost filesystem not declared

Compilation fails with the following message:

[ 73%] Building CXX object prog/CMakeFiles/hub_df_cubic1d.dir/hub_df.cpp.o
/u/home/oryx/ALPSCore_Joe/opendf/prog/hub_df.cpp: In function ‘void run(alps::params_ns::params)’:
/u/home/oryx/ALPSCore_Joe/opendf/prog/hub_df.cpp:134:30: error: ‘boost::filesystem’ has not been declared
         bool resume = boost::filesystem::exists(output_file);

I have the boost filesystem library installed, though I'm not sure how opendf is supposed to learn about it (is it via ALPSCore? I don't think boost::filesystem is an ALPSCore requirement.)

I was seeing issues with the filesystem library when installing Maxent, which I learned was fixed by removing the dependency:
CQMP/Maxent@0defb32

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.