3
0
mirror of https://github.com/triqs/dft_tools synced 2025-01-12 22:18:23 +01:00

Work on documentation

modified:   doc/applications.rst
  modified:   doc/index.rst
  modified:   doc/install.rst
  modified:   doc/installation/clang.rst
  modified:   doc/installation/install_options.rst
  modified:   doc/installation/requirements.rst
  modified:   doc/installation/ubuntu.rst
  new file:   doc/changelog.rst
  new file:   doc/versions.rst
This commit is contained in:
Michel Ferrero 2013-08-30 16:15:47 +02:00
parent bb7394dfaf
commit 96bedae5f1
10 changed files with 141 additions and 112 deletions

View File

@ -3,6 +3,10 @@
Applications based on TRIQS
===========================
The TRIQS collaboration not only works at the elaboration of libraries to
construct new tools for the study of quantum systems. Some full-fledged
applications have readily been developed and are maintained by the TRIQS
collaboration.
Wien2TRIQS
----------
@ -11,7 +15,7 @@ Wien2TRIQS is an interface to Wien2k for LDA+DMFT calculation. It allows
you to turn band-structure calculations obtained from the Wien2k package to
inputs to full-fledged LDA+DMFT calculations in a few lines!
*Homepage:* `<http://ipht.cea.fr/triqs/new/dft_tools/index.html>`_
*Homepage:* `<http://ipht.cea.fr/triqs/dft_tools/>`_
Hybridization-expansion matrix solver
-------------------------------------
@ -21,7 +25,7 @@ of a quantum impurity embedded in a conduction bath. It is based on a quantum
Monte Carlo algorithm that stochastically samples the diagrams of a
hybridization expansion of the partition function.
*Homepage:* `<http://ipht.cea.fr/triqs/new/cthyb_matrix/index.html>`_
*Homepage:* `<http://ipht.cea.fr/triqs/cthyb_matrix/>`_
Hubbard I solver
----------------
@ -30,4 +34,4 @@ This solver gives the Hubbard I solution of a quantum impurity problem,
i.e. it solves the atomic limit. This simple approximation allows to have
very quick answer even for large multiband systems.
*Homepage:* `<http://ipht.cea.fr/triqs/new/hubbardI/index.html>`_
*Homepage:* `<http://ipht.cea.fr/triqs/hubbardI/>`_

25
doc/changelog.rst Normal file
View File

@ -0,0 +1,25 @@
.. _changelog:
Changelog
=========
This document describes the main changes in TRIQS 1.0 that might
have consequences for your scripts and archives.
Python classes
--------------
The number of python classes in the old 0.x releases was increasing with no
clear naming convention. In TRIQS 1.0 we have unified the naming of the classes
following the `PEP naming conventions
<http://www.python.org/dev/peps/pep-0008/#naming-conventions>`_:
* Package and module names: lowercase with underscores
* Class names: CapWords
* Function and method arguments: lowercase with underscores
Archives
--------

View File

@ -27,3 +27,12 @@ Python modules
:maxdepth: 1
reference/python/contents
Version compatibility
---------------------
.. toctree::
:maxdepth: 1
versions

View File

@ -3,49 +3,36 @@
Welcome
=======
TRIQS is a scientific project that provides a set of tools for the study of
interacting quantum systems. It allows to quickly implement many-body
calculations and explore new theoretical and phenomenological ideas within a
flexible, easy-to-use python environment (à la Matlab).
.. sidebar:: TRIQS 1.0
Powerful c++ libraries
----------------------
This is the homepage of the new TRIQS 1.0. Many things
have changed and been improved since the versions 0.x.
The format of the archives and names of some python classes
have changed too. So go look at our :ref:`changelog page <changelog>`
to find out how to upgrade to 1.0.
.. code-block:: c++
TRIQS is a scientific project providing a set of libraries to develop new tools
for the study of interacting quantum systems. The libraries exist at two
complementary levels: on the one hand, C++ libraries allow to quickly develop
performant low-level codes; on the other hand python libraries implement the
most common many-body objects, like Green's functions, that can be manipulated
easily in python scripts.
#include <triqs/arrays.hpp>
#include <triqs/arrays/linalg/inverse.hpp>
#include <triqs/arrays/linalg/determinant.hpp>
This duality is a real advantage in the development of new many-body tools.
Critical parts where performance is essential can be written in C++ (like a
quantum impurity solver) while the manipulation of the results, preparation of
the inputs or interface with other programs can be done at the very
user-friendly python level.
using triqs::arrays::array; using triqs::arrays::matrix; using triqs::clef::placeholder;
int main(){
placeholder<0> i_;
placeholder<1> j_;
matrix<double> A(2,2);
A(i_,j_) << i_+j_;
Some :ref:`full-fledged applications <applications>` have been written using
TRIQS and are maintained by the TRIQS collaboration. They allow for example to
solve a generic quantum impurity model or to run a complete LDA+DMFT
calculation.
matrix<double> B = inverse(A);
double C = determinant(A);
Since 2005, the TRIQS library and applications have allowed to address
questions as diverse as:
std::cout << "A^(-1) = "<< B << std::endl;
std::cout << "det(A) = " <<C <<std::endl;
}
* Momentum-selective aspects on cuprate superconductors (with various cluster DMFT)
* Degree of correlation in iron-based superconductors (within an LDA+DMFT approach)
* Fermionic Mott transition and exploration of Sarma phase in cold-atoms
User-friendly python interface
------------------------------
.. plot::
:include-source:
:scale: 70
from pytriqs.gf.local import *
g = GfReFreq(indices = ['s','d'], window = [-2,2], n_points = 1000)
g['d','d'] = Omega - 0.3
g['d','s'] = 0.2
g['s','d'] = 0.2
g['s','s'] = inverse( Wilson(1.0) )
g.invert()
from pytriqs.plot.mpl_interface import oplot
oplot( g['d','d'], '-o', RI = 'S', x_window = (-1.8,1.8), name = "Impurity" )
oplot( g['s','s'], '-x', RI = 'S', x_window = (-1.8,1.8), name = "Bath" )

View File

@ -37,9 +37,10 @@ Installation steps
$ cmake -DCMAKE_INSTALL_PREFIX=path_to_install_directory ../src
If you omit CMAKE_INSTALL_PREFIX, the default `path_to_install_directory` is ./INSTALL_DIR.
Configuration options are described :ref:`here<install_options>`.
If you omit ``CMAKE_INSTALL_PREFIX``, the default
``path_to_install_directory`` is a subdirectory ``INSTALL_DIR`` in your build
directory. More configuration options are described in the
:ref:`cmake options <install_options>`.
#. Compile the code, run the tests and install the library::
@ -50,7 +51,7 @@ Installation steps
.. note::
We remind you that on multicore machine, make's option -jN (where N is the number of cores)
greatly speed up the compilation e.g. make -j8 on a 8 cores machine...
greatly speeds up the compilation, e.g. make -j8 on an 8 core machine...
#. After the installation TRIQS has been installed using the standard UNIX
scheme:
@ -73,7 +74,3 @@ Further reading
installation/python
installation/clang
installation/changelog
..
installation/intel

View File

@ -1,44 +1,46 @@
.. index:: clang
.. highlight:: bash
.. _install_clang:
Using clang compiler
==========================
**clang/llvm** is one of the very best C++ compilers, with gcc.
It is open source, on linux and OS X (where it is now the standard compiler provided by Apple).
Using the clang compiler
========================
*clang* compiler is **highly recommended** for anyone developing in C++ since :
**clang/llvm** is one of the very best C++ compilers, with gcc. It is open
source on linux and OS X (where it is now the standard compiler provided by
Apple).
* It is standard compliant (C++11).
* It has very nice and useful error messages, much nicer than intel or gcc (even thought gcc is catching up...).
It really makes little sense to develop with e.g. gcc 4.6 today, specially with a library like TRIQS,
which uses a lot of metaprogramming.
The **clang** compiler is *highly recommended* for anyone developing in C++ since:
Note however that for *production* compilations, gcc, specially recent versions, still produces in general
a slighly more optimal code for TRIQS applications, also the difference is small.
* It is standard compliant (C++11).
* It has very nice and useful error messages, much nicer than intel or gcc (even thought gcc is catching up).
It really makes little sense to develop with e.g. gcc 4.6 today, especially with a library like TRIQS,
which uses a lot of metaprogramming.
It is highly recommended to use the latest stable on linux (3.3), and the default compiler on Os X (Mountain lion).
Note, however, that for *production* compilations, gcc, especially recent versions, still produces in general
a slighly more optimal code for TRIQS applications, even if the difference is small.
It is highly recommended to use the latest stable version on linux (3.3), and the default compiler on OS X (Mountain lion).
Get and install clang on linux
---------------------------------------------
------------------------------
Precompiled versions are available at the `LLVM dowload page <http://llvm.org/releases/download.html>`_,
use it. Just untar them, and add the directory in your path.
Precompiled versions are available at the `LLVM dowload page <http://llvm.org/releases/download.html>`_.
Just untar them and add the directory in your path.
In any case, it is also very easy to compile clang from source, just follow the
It is also very easy to compile **clang** from source, just follow the
`instructions <http://clang.llvm.org/get_started.html#build>`_.
Usage
--------------
-----
To use clang ::
In order to use clang when building TRIQS::
CXX=clang++ cmake path_to_TRIQS_source_directory .... others options ...
CXX=clang++ cmake -DCMAKE_INSTALL_PREFIX=path_to_install_directory ../src + other options
.. note::
On Os X, the options -std=c++11 and -stdlib=libc++ are automatically added by the TRIQS installation script.
On OS X, the options -std=c++11 and -stdlib=libc++ are automatically added by the TRIQS
installation script.

View File

@ -10,9 +10,9 @@ Customizing installation: cmake options
Specifying the compiler or compile/link flags
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To specify the compiler with cmake one may use the CXX, CXXFLAGS variables, e.g. ::
To specify the compiler with cmake one may use the CXX, CXXFLAGS variables, e.g.::
CXX=clang++ CXXFLAGS=XXXX cmake path_to_TRIQS_source_directory .....
CXX=clang++ CXXFLAGS=XXXX cmake path_to_TRIQS_source_directory ...
Customize the installation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -21,7 +21,7 @@ You can then customize the installation options using the :program:`ccmake` prog
ccmake .
This opens an interface with your main installation options shown ::
This opens an interface with your main installation options shown::
BUILD_SHARED_LIBS ON
Build_Documentation OFF
@ -33,14 +33,10 @@ This opens an interface with your main installation options shown ::
You can for instance change the following options:
* ``CMAKE_INSTALL_PREFIX``: This is the directory :file:`path_to_TRIQS_install_directory` where you want to install TRIQS.
* ``Build_CTHyb``: Build the continuous-time hybridization impurity solver.
* ``Build_HubbardI``: Build a simple HubbardI solver.
* ``Build_Wien2k``: Build the interface to **WIEN2K**.
* ``Build_Documentation``: Get the documentation locally in :file:`path_to_TRIQS_install_directory/share/doc`.
* ``CMAKE_INSTALL_PREFIX``: This is the directory :file:`path_to_install_directory` where you want to install TRIQS.
* ``Build_Documentation``: Get the documentation locally in :file:`path_to_install_directory/share/doc`.
You may change all other installation options (like locations of libraries, the choice of compilers, etc.) in the advanced mode, by typing 't' after having opened the *ccmake* interface.
After having corrected your options you may build, test and install TRIQS as described in :ref:`installation`.

View File

@ -3,66 +3,69 @@
.. _requirements:
A complete list of requirements
================================
===============================
TRIQS is built upon several python and C++ libraries, which, if not present
already in your system, can be freely downloaded and installed. All the
libraries and tools used by TRIQS are listed in the table:
libraries and tools used by TRIQS are described below.
.. _require_cxx_compilers:
C++ compilers
-----------------
-------------
TRIQS is written in C++, i.e. in the **C++11** standard as defined by the ISO.
A recent compiler is therefore mandatory.
There are 3 categories of C++ compilers.
* Standard compliant C++ compilers (recommended and supported).
* Standard compliant C++ compilers
* :ref:`clang 3.3<install_clang>` and higher.
* g++ 4.8.1 and higher
* :ref:`clang 3.3<install_clang>` and higher
* g++ 4.8.1 and higher
* Obsolete compilers.
These compilers are recommended and supported.
TRIQS compiles on them, but they lack full C++11 support.
Therefore TRIQS may be slower, since some optimisations are disabled in the library
and they may not be supported in later release.
* g++ 4.6.4 to 4.8.0
* C++98 compilers.
* Obsolete compilers
Compilers implementing previous version of the C++ standard (c++98) do not work, and
will *never* be supported. This includes :
* g++ 4.6.3 to 4.8.0
TRIQS can be built with these compilers but because they lack full C++11 support,
TRIQS may be slower (some optimisations are disabled in the library
and they may not be supported in later release).
* C++98 compilers
* g++ before 4.6
* Intel icc 12.0 and below
Compilers implementing the previous version of the C++ standard (C++98) do not work and
will *not* be supported.
* g++ before 4.6
* Intel icc 12.0 and below.
Libraries
---------------
---------
================== ================ ================================================================================
Libraries/tools Version Comment
Library/tool Version Comment
================== ================ ================================================================================
mpi openmpi Parallelism
mpi openmpi Parallelism.
Since standard linux distributions (and macports on OS X)
now provides openmpi, even on laptops, we avoid the unnecessary complication
of maintaining a non parallel version of TRIQS
fftw >= 3.2 Fourier transform
of maintaining a non-parallel version of TRIQS
fftw >= 3.2 Fourier transforms
boost >= 1.49 C++ librairies
hdf5 >= 1.8.0 File storage system. Important: the *serial* version must be installed
python >= 2.6.5
scipy python mathematical library
numpy python scientific library
h5py python interface to hdf5 library
mpi4py python MPI
sphinx >= 1.0.1 python documentation tools (to compile documentation)
python >= 2.6.5 The Python interpreter
scipy Python mathematical library
numpy Python scientific library
h5py Python interface to hdf5 library
mpi4py Python MPI
sphinx >= 1.0.1 Python documentation tools (to compile documentation)
pyparsing Tool for sphinx (to compile documentation)
matplotlib >= 0.99 python 2D plotting library
cython >=0.17 cython package
matplotlib >= 0.99 Python 2D plotting library
cython >=0.17 A language that allows to write C extensions for the Python language
================== ================ ================================================================================

View File

@ -18,7 +18,7 @@ Install the following packages which are necessary to build TRIQS and use it::
openmpi-checkpoint libopenmpi-dev libblas-dev liblapack-dev libfftw3-dev libgmp-dev \
hdf5-tools libhdf5-serial-dev python-h5py libboost1.48-all-dev python-dev \
python-numpy python-scipy python-virtualenv python-matplotlib doxygen\
python-tornado python-zmq
python-tornado python-zmq python-mpi4py
Optionally, you may be interested in:

6
doc/versions.rst Normal file
View File

@ -0,0 +1,6 @@
Version compatibility
=====================
As the TRIQS library and applications based on it might live separate lives, it
is important to define a clear version compatibility scheme.