All Projects → bruneval → molgw

bruneval / molgw

Licence: GPL-3.0 license
Accurate many-body perturbation theory calculations of the electronic structure of molecules and clusters

Programming Languages

fortran
972 projects
forth
179 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to molgw

ansible-snmp-exporter
Provision SNMP metrics exporter for prometheus monitoring
Stars: ✭ 18 (-47.06%)
Mutual labels:  molecule
marburg
physics meets neural networks
Stars: ✭ 93 (+173.53%)
Mutual labels:  quantum-mechanics
molecule-libvirt
Molecule LibVirt Provider
Stars: ✭ 35 (+2.94%)
Mutual labels:  molecule
spicyphysics
Sup bois, here's my work
Stars: ✭ 22 (-35.29%)
Mutual labels:  quantum-mechanics
cellblender
Create, Simulate, Visualize, and Analyze Realistic 3D Cell Models
Stars: ✭ 52 (+52.94%)
Mutual labels:  molecule
Schroedinger
A Schroedinger Equation solver in C++, with flexible basis definition
Stars: ✭ 31 (-8.82%)
Mutual labels:  quantum-mechanics
qrefine
Quantum Refinement Module
Stars: ✭ 13 (-61.76%)
Mutual labels:  quantum-mechanics
panel-chemistry
🧪📈 🐍. The purpose of the panel-chemistry project is to make it really easy for you to do DATA ANALYSIS and build powerful DATA AND VIZ APPLICATIONS within the domain of Chemistry using using Python and HoloViz Panel.
Stars: ✭ 94 (+176.47%)
Mutual labels:  molecule
development-environment
A development environment for Java, Python, Node.js and Go built using Vagrant
Stars: ✭ 50 (+47.06%)
Mutual labels:  molecule
ansible-role-fail2ban
Install and configure fail2ban on your system.
Stars: ✭ 42 (+23.53%)
Mutual labels:  molecule
MoleculeJS
A library for creating fast and reactive Custom Elements
Stars: ✭ 39 (+14.71%)
Mutual labels:  molecule
MolDQN-pytorch
A PyTorch Implementation of "Optimization of Molecules via Deep Reinforcement Learning".
Stars: ✭ 58 (+70.59%)
Mutual labels:  molecule
Numerov
A python script that solves the one dimensional time-independent Schrodinger equation for bound states. The script uses a Numerov method to solve the differential equation and displays the desired energy levels and a figure with an approximate wave function for each of these energy levels.
Stars: ✭ 53 (+55.88%)
Mutual labels:  quantum-mechanics
NumQM Basic
A mini-course offered to Undergrad physics students
Stars: ✭ 35 (+2.94%)
Mutual labels:  quantum-mechanics
CGCF-ConfGen
🧪 Learning Neural Generative Dynamics for Molecular Conformation Generation (ICLR 2021)
Stars: ✭ 41 (+20.59%)
Mutual labels:  molecule
xconfigure
High-Performance configuration patterns and recipes.
Stars: ✭ 42 (+23.53%)
Mutual labels:  libint
chemprop
Fast and scalable uncertainty quantification for neural molecular property prediction, accelerated optimization, and guided virtual screening.
Stars: ✭ 75 (+120.59%)
Mutual labels:  molecule
Version3
Version 3 of Chem4Word - A Chemistry Add-In for Microsoft Word
Stars: ✭ 53 (+55.88%)
Mutual labels:  molecule
Molecules Dataset Collection
Collection of data sets of molecules for a validation of properties inference
Stars: ✭ 69 (+102.94%)
Mutual labels:  molecule
QM-Simulator-1D
Interactive simulation of a quantum particle in 1D.
Stars: ✭ 69 (+102.94%)
Mutual labels:  quantum-mechanics

MOLGW


Many-body perturbation theory for atoms, molecules, and clusters

Getting started

This is a minimalistic README file. Many more details can be found on the web site molgw.org. A tutorial section exists there.

Features

MOLGW implements the following schemes:

  • Hartree-Fock

  • LDA (PW, VWN)

  • GGA (PBE, PW91, BLYP)

  • potential-only meta-GGA (BJ, RPP)

  • hybrid functionals (PBE0, B3LYP)

  • screened hybrid functionals (HSE03, HSE06)

  • any user-developped range-separated hybrid based on wPBEH

  • GW@HF or GW@DFT

  • GW/PT2 density-matrix

  • QSGW

  • QSMP2

  • MP2@HF

  • PT2@HF or PT2@DFT

  • PT3@HF or PT3@DFT

  • CI for few electrons

  • Linear-response TDDFT or TDHF

  • Bethe-Salpeter equation

  • real-time TDDFT

  • HF/DFT+NOFT (MULLER, POWER, PNOF5, and PNOF7)

Installation

MOLGW needs Fortran 2003 (and a few Fortran2008 features) and C++ compilers. MOLGW is being tested with gfortran, g++ (version 11.x.x) and ifort (version 21). MOLGW can run in parallel using OPENMP and MPI parallelization.

All the machine dependent variables should be set in file ~molgw/src/my_machine.arch Examples for this file can be found in the folder ~molgw/config/. Then cd ~molgw/src make

  • BLAS and LAPACK linear algebra libraries are required.
  • LIBINT or LIBCINT is required for Gaussian integrals
  • LIBXC is required for DFT calculations (else only HF is available)

To run on multi-node computers

  • MPI and SCALAPACK are both required

Basis sets

Many standard Gaussian basis sets are shipped with MOLGW.

More basis sets can be obtained from Basis Set Exchange The file can be generated from a NWChem file using the script ~molgw/utils/basisset_nwchem2molgw.py aug-cc-pVDZ.nwchem

You may even create your own.

Usage

/path/to/molgw/molgw helium.in > helium.out

Many example input files can be found in ~molgw/tests/inputs/

Known issues

  • QSGW scf loop might be quite unstable for large basis sets, use a large eta
  • TDDFT GGA kernel can induce very large numerical values that hinders the numerical stability and breaks some comparison with other codes.

Bug reporting

Please use the issues section on MOLGW github.

Information for developers

Besides the wrapper calls to the LIBINT library, MOLGW is entirely written in Fortran2003/2008. Fortran C bindings are used to call LIBXC and LIBCINT. The source files can be found in ~molgw/src/.

Coding Rules

The Fortran intent in/out/inout is compulsory for the arguments of a subroutine. One character variable names are discouraged.

The careful developer should try

  • to follow the overall layout and the conventions of the code (double space indent, separation of the list of variables arguments/local, loop counters naming, etc.)
  • to protect the data contained in a module with private or protected attribute as much as possible.
  • to avoid cascading object access, such as a%b%c (Create methods instead)
  • to hide the MPI statements with a generic wrapper in subroutine src/m_mpi.f90.
  • to hide the SCALAPACK statements with a generic wrapper in subroutine src/m_scalapack.f90 (not implemented as of today).

Automatically generated files

A few fortran source files are generated by python scripts:

  • src/basis_path.f90
  • src/revision.f90 are generated by src/prepare_sourcecode.py (that is run at each "make" operation) and
  • src/input_variables.f90 is generated by utils/input_variables.py from a YAML file src/input_variables.yaml . Do not attempt to edit the fortran files. You should rather edit the yaml file.

To add a new input variable, append a new variable description in the YAML file src/input_variables.yaml. Then execute the python script utils/input_variables.py. This will generate automatically the Fortran source file src/input_variables.f90 and the HTML and markdown documentation files docs/input_variables.html docs/input_variables.md.

Adding a new source file

It requires the manual editing of the src/Makefile (sorry). Please check carefully the module dependence so to compile and add it to the right "level" of the Makefile. The code should compile properly in parallel with "make -j".

Contributors

  • Fabien Bruneval
  • Ivan Maliyov
  • Mauricio Rodriguez-Mayorga
  • Xixi Qi
  • Young-Moo Byun
  • Meiyue Shao
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].