Analytic continuation component of the GreenX library

Analytic continuation component of the GreenX library: robust Padé approximants with symmetry constraints - Published in JOSS (2025)

https://github.com/nomad-coe/greenx

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    5 of 20 committers (25.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

exascale fortran greens-functions

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation

Repository

Library for Green’s function based electronic structure theory calculations

Basic Info
Statistics
  • Stars: 26
  • Watchers: 1
  • Forks: 13
  • Open Issues: 17
  • Releases: 4
Topics
exascale fortran greens-functions
Created over 4 years ago · Last pushed 9 months ago
Metadata Files
Readme Contributing License Code of conduct

README.md

GreenX

GreenX Library

DOI DOI

The Green X library is developed under Work Package 2 of the NOMAD Center of Excellence. It is available under the APACHE2 license.

Libraries

  • GX-AnalyticContinuation: Performs an analytical continuation of the self-energy from the imaginary frequency to the real frequency
  • GX-LAPW: A cubic scaling GW algorithm in LAPW+lo basis.
  • GX-LocalizedBasis: The implementation of the separable resolution of the identity.
  • GX-PAW: Supports the projector-augmented wave method
  • GX-PlaneWaves: Low-scaling plane-wave based GW implementation
  • GX Time-frequency: Optimised quadrature grids and weights for RPA and GW imaginary time-frequency transforms.
  • GX-q=0: A code-agnostic framework for the treatment of inverse dielectric function and/or screened Coulomb potential at q=0.

Installation

Green X has been designed as a collection of libraries, which can be built relatively independently of one another. To build the whole suite of Green X libraries from the source you need to have a Fortran compiler supporting Fortran 2008, and one of the supported build systems:

  • cmake version 3.15.0 or newer, with a build-system backend, i.e. make.

Building with CMake

To build all libraries, set up a build directory, change to it and run cmake configuration:

bash mkdir build cd build cmake ../

To explicitly specify the compiler, run CMake configure with:

bash FC=ifort cmake ../ Shared libraries are built by default. To build static versions, one can configure with:

bash cmake ../ -DBUILD_SHARED_LIBS=OFF

Specific shared libraries can be disabled or enabled, e.g to enable the Projector-Augmented Wave (PAW) component of GreenX, run CMake configure with:

bash cmake ../ -DPAW_COMPONENT=ON

Available options to disable one or more components

| Component | CMake configure | Default | |----------------------------------------|------------------------------------|---------| | Analytical Continuation component | -DAC_COMPONENT | ON | | Minimax Time-Frequency grids component | -DMINIMAX_COMPONENT | ON | | Localized Basis component | -DLBASIS_COMPONENT | OFF | | Projector-Augmented Wave component | -DPAW_COMPONENT | OFF |

GreenX uses GNU Multiple Precision Arithmetic Library by default in the Analytical Continuation component, you can disable it without any harm by running CMake configure with:

bash cmake ../ -DENABLE_GNU_GMP=OFF

To build GreenX with submodules (they are turned off by default), one can configure with:

bash cmake ../ -DCOMPILE_SUBMODULES=ON

You can obtained them by executing:

bash git submodule update --init --recursive

If all requirements are found, build and install the project:

bash make -j make install

Minimal example to build and install only the Time-Frequency component of GreenX:

bash cmake .. -DAC_COMPONENT=OFF make -j make install

Regression Tests

Running Regression Tests

GreenX uses pytest as its regression testing framework, in conjunction with the custom python module pygreenx. First, one must ensure that pygreenx is installed. From the GreenX root directory:

bash cd python pip install -e .

One notes that the user may wish to change the scope of pip install to the Python user install directory of their platform. Typically ~/.local/. This can be achieved with:

bash pip install --user -e .

unless working in a virtual environment, in which case it is not required.

The test suite can now be run with CMake's ctest command:

bash cd build ctest

Adding Regression Tests

  1. Add a New Test Source File: Create a test file in the test/ directory of the component. If testing a Fortran function, create a file like test_new_feature.f90 with the necessary test logic.

  2. Update CMakeLists.txt: Modify CMakeLists.txt in the component directory to include the new test:

    • Add the source file to the test executable ```cmake

      Define the new test target

      addexecutable(testgxnewfeature)

      Set binary name

      settargetproperties(testgxnewfeature PROPERTIES RUNTIMEOUTPUTNAME testgxnewfeature.exe)

      Add source file for the new test

      targetsources(testgxnewfeature PRIVATE test/testnewfeature.f90 )

      Link the test executable to the necessary libraries

      targetlinklibraries(testgxnew_feature PUBLIC LibGXNewFeature )

      Specify the runtime output directory

      settargetproperties(testgxnewfeature PROPERTIES RUNTIMEOUTPUTDIRECTORY ${CMAKEFortranBINDIRECTORY}) ```

- Copy Python test files. If the test involves Python, ensure the test scripts are copied to the build directory:
    ```cmake
    add_custom_command(
        TARGET LibGXNewFeature POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy
                ${CMAKE_CURRENT_SOURCE_DIR}/test/test_new_feature.py
                ${PROJECT_BINARY_DIR}/test/new_feature/)
    ```

- Add the new test to CTest
    ```cmake
    add_test(
        NAME test_gx_new_feature
        COMMAND pytest -s test_new_feature.py --build-dir ${CMAKE_BINARY_DIR}
        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/test/new_feature
    )
    ```

Running Unit Tests

The GX-q=0 component of GreenX uses the unit-testing framework Zofu. This library is build together with Greenx when ENABLE_GREENX_UNIT_TESTS=ON:

bash cmake -DENABLE_GREENX_UNIT_TESTS=ON ../ Unit tests are run with the application tests, using ctest. Simply type ctest in the build directory.

It is also possible to compile Zofu manually. To build Zofu, from GreenX's root (noting that one must define $GX_ROOT):

```bash

building zofu

mkdir external && cd external git clone https://github.com/acroucher/zofu.git cd zofu mkdir build && cd build cmake \ -DCMAKEBUILDTYPE=release \ -DCMAKEINSTALLPREFIX=${GXROOT}/external/zofu/install \ -DZOFUFORTRANMODULEINSTALL_DIR:PATH=include \ .. make -j 4 make install

building GreenX

cd $GXROOT mkdir build && cd build cmake -DENABLEGREENXUNITTESTS=ON -DZOFUPATH=${GXROOT}/external/zofu/install ../ make -j 2 make install `` Again, typingctest` in the GreenX build directory starts the unit tests together with the application tests.

Building Documentation

GreenX is documented using Doxygen, and documentation support is disabled by default. To enable CMake looking for Doxygen, configure with:

bash cmake ../ -DENABLE_GREENX_DOCS=ON

To build the document, type in the build directory:

bash make docs

Documentation is built in documentation and can be viewed by opening html/index.html in a browser.

When adding new files with documentation, please ensure the directory is listed in the INPUT tag of Doxyfile.

For more information and benchmark examples see also the GreenX website.

Contribute

Contributions to GreenX are highly appreciated! If you consider contributing check out CONTRIBUTING.md.

Owner

  • Name: NOMAD CoE and Laboratory
  • Login: nomad-coe
  • Kind: organization
  • Email: contact@nomad-lab.eu

This organisation of the Novel Materials Discovery (NOMAD) Center of Excellence and Laboratory develops FAIR tools for materials-science data.

JOSS Publication

Time-frequency component of the GreenX library: minimax grids for efficient RPA and GW calculations
Published
October 03, 2023
Volume 8, Issue 90, Page 5570
Authors
Maryam Azizi ORCID
Institute of Condensed Matter and Nanoscience, UCLouvain, B-1348 Louvain-la-Neuve, Belgium
Jan Wilhelm ORCID
Institute of Theoretical Physics and Regensburg Center for Ultrafast Nanoscopy (RUN), University of Regensburg, D-93053 Regensburg, Germany
Dorothea Golze ORCID
Faculty of Chemistry and Food Chemistry, Technische Universität Dresden, 01062 Dresden, Germany
Matteo Giantomassi ORCID
Institute of Condensed Matter and Nanoscience, UCLouvain, B-1348 Louvain-la-Neuve, Belgium
Ramón L. Panadés-Barrueta ORCID
Faculty of Chemistry and Food Chemistry, Technische Universität Dresden, 01062 Dresden, Germany
Francisco A. Delesma ORCID
Department of Applied Physics, Aalto University, P.O. Box 11100, 00076 Aalto, Finland
Alexander Buccheri ORCID
Institut für Physik und Iris Adlershof, Humboldt-Universität zu Berlin, Zum Großen Windkanal 2, 12489 Berlin, Germany
Andris Gulans ORCID
Department of Physics, University of Latvia, Jelgavas iela 3, Riga, LV-1004 Latvia
Patrick Rinke ORCID
Department of Applied Physics, Aalto University, P.O. Box 11100, 00076 Aalto, Finland
Claudia Draxl ORCID
Institut für Physik und Iris Adlershof, Humboldt-Universität zu Berlin, Zum Großen Windkanal 2, 12489 Berlin, Germany
Xavier Gonze ORCID
Institute of Condensed Matter and Nanoscience, UCLouvain, B-1348 Louvain-la-Neuve, Belgium
Editor
Lucy Whalley ORCID
Tags
FORTRAN Low scaling GW calculations Low scaling RPA calculations Minimax approximation

GitHub Events

Total
  • Release event: 3
  • Watch event: 3
  • Delete event: 2
  • Issue comment event: 3
  • Push event: 74
  • Pull request review comment event: 3
  • Pull request review event: 34
  • Pull request event: 42
  • Fork event: 2
  • Create event: 13
Last Year
  • Release event: 3
  • Watch event: 3
  • Delete event: 2
  • Issue comment event: 3
  • Push event: 74
  • Pull request review comment event: 3
  • Pull request review event: 34
  • Pull request event: 42
  • Fork event: 2
  • Create event: 13

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 486
  • Total Committers: 20
  • Avg Commits per committer: 24.3
  • Development Distribution Score (DDS): 0.84
Past Year
  • Commits: 79
  • Committers: 8
  • Avg Commits per committer: 9.875
  • Development Distribution Score (DDS): 0.329
Top Committers
Name Email Commits
Panadestein r****2@g****m 78
Maryam 5****h 77
moritzleucke m****t@g****m 57
Jan Wilhelm J****m 41
Dorothea Golze d****e@t****e 41
Francisco Delesma f****a@a****i 39
martirm m****m@p****e 27
mazizi m****i@u****e 27
gonzex x****e@u****e 27
Alex Buccheri a****i@g****m 19
dgolze d****e@c****e 15
trunk t****k@a****g 9
Minye Zhang m****m@g****m 8
Moritz Leucke m****e@m****e 8
ekinesme e****e@h****m 7
manoarphy m****y@g****m 2
Arfon Smith a****n 1
Panadestein r****a@t****e 1
Mathieu Taillefumier m****r@f****r 1
martirm m****4@h****m 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 25
  • Total pull requests: 96
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 6
  • Total pull request authors: 11
  • Average comments per issue: 1.88
  • Average comments per pull request: 0.58
  • Merged pull requests: 78
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 20
  • Average time to close issues: N/A
  • Average time to close pull requests: about 16 hours
  • Issue authors: 1
  • Pull request authors: 5
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.1
  • Merged pull requests: 16
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • AlexBuccheri (16)
  • mailhexu (5)
  • Panadestein (1)
  • jmbeuken (1)
  • aziziph (1)
  • minyez (1)
Pull Request Authors
  • moritzleucke (23)
  • aziziph (22)
  • dgolze (15)
  • Panadestein (14)
  • fdelesma (13)
  • JWilhelm (10)
  • AlexBuccheri (10)
  • gonzex (6)
  • mrm24 (3)
  • mtaillefumier (3)
  • gmatteo (2)
  • manoarphy (2)
  • mailhexu (1)
Top Labels
Issue Labels
enhancement (13) bug (3) documentation (3) validation (1)
Pull Request Labels
bug (8) documentation (6) enhancement (4) refactor (2)

Dependencies

.github/workflows/action.yml actions
.github/workflows/draft-pdf.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • openjournals/openjournals-draft-action master composite
python/pyproject.toml pypi
python/setup.py pypi