SciPost Submission Page
Quantum MASALA: Quantum MAterialS Ab initio eLectronic-structure pAckage
by Shri Hari Soundararaj, Agrim Sharma, Manish Jain
Submission summary
Authors (as registered SciPost users): | Manish Jain |
Submission information | |
---|---|
Preprint Link: | https://arxiv.org/abs/2308.07277v2 (pdf) |
Code repository: | https://github.com/qtm-iisc/QuantumMASALA.git |
Code version: | v1.0.0 |
Code license: | Gnu General Public License version 3. |
Date submitted: | 2024-10-25 18:48 |
Submitted by: | Jain, Manish |
Submitted to: | SciPost Physics Codebases |
Ontological classification | |
---|---|
Academic field: | Physics |
Specialties: |
|
Approach: | Computational |
Abstract
We present Quantum MASALA, a compact package that implements different electronic structure methods in Python using the plane-wave basis. Within just 8100 lines of pure Python code, we have implemented Density Functional Theory (DFT), Time-dependent Density Functional Theory (TD-DFT) and the GW Method. The program can run across multiple processors and in Graphical Processing Units (GPU) with the help of easily accessible Python libraries. With Quantum ESPRESSO and BerkeleyGW input interfaces implemented, it can also be used as a substitute for small and medium scale calculations, making it a perfect learning tool for ab initio methods. The package is aimed to provide a framework with its modular and simple code design to rapidly build and test new methods for first-principles calculation.
Current status:
Reports on this Submission
Strengths
1- Fairly complete DFT code in a Python environment.
2- The code is easy to install
3- The article presents the DFT method and the use of code in a very pedagogical way.
Report
This article presents a new DFT code, called Quantum MASALA, written quite compactly in Python. Density Functional Theory (DFT), Time-dependent Density Functional Theory (TD-DFT) and the GW method are implemented. The fact that it is written in Python means it can be used on multiple platforms.
According to the Benchmark presented in the manuscript, the code is well optimized. It can be used in parallel (MPI) version, plus openMP thanks to the use of parallel libraries (MKL).
It seems to me that this code should be very useful for those wishing to discover and use DFT while studying the method itself and its numerical implementation.
I therefore recommend this manuscript for publication in SciPost Physics Codebases.
Remarks:
(1) Small typo: The link in the footnote of page 3 is broken.
(2) A small remarks on the installation on linux (ubuntu): After following the installation procedure described in the manuscript, I got an error because I also had to install git to run a test. I am a little surprised that git is necessary. After installing git, the test worked fine but with an error at the beginning:
"
fatal: neither this nor any of its parent directories (up to mount point /xxx/) is a git repository
Stop at file system boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not defined).
Error retrieving project git info: Command '['git', 'log', '-1', '--format=%H %ad', '--date=format:%A, %d %B, %Y %H:%M:%S']' returned non-zero exit status 128.
"
Is this normal?
Also, for non-specialists, a comment on git may be useful in explaining the code installation.
A l’éditeur seulement:
Recommendation
Publish (easily meets expectations and criteria for this Journal; among top 50%)
Strengths
interesting approach to use python for an electronic structure code
Report
The authors present a code for electronic structure calculations based on plane waves. Besides DFT, TDDFT and the GW method are implemented. It is interesting that python as a programming language has been used, which allows a relatively small size of the code.
I recommend publication with minor changes:
1) The equations should be checked, e.g.:
eqn. 1 V_aux is used, but in (11) it is called V_KS. Better stick to one
notation
eqn. 11 < G_{m} + k| not < G_{m+k}| i.e. k should not be subscript
eqn. 21 the notation is somewhat ill-conceived, as \vu is x,y,z but
then r_{\nu} would be r_x,r_y,r_z instead of just x,y,z
eqn. 55 on the left hand side it should be \psi_{n+1} with a bar as in eqn. 54
In general, references to the individual equations should be given. E.g.
section 2.5, especially equations 30 - 45, are essentially as in [4] and [29]
and use the same notation.
2) Acronyms should be explained where they appear for the first time, e.g.:
HLPP, GPP ...
3) Concerning the code: in which way is symmetry used (space groups etc)?
4) Concerning the results: besides comparing numbers as e.g. in Table 1,
an additional plot of the band structure would make a comparison easier and more pleasant for the reader.
Recommendation
Ask for minor revision
Strengths
Present a new DFT code in Python, that can be useful for future implementations and testing.
Weaknesses
No particular weaknesses, just some point to be clarified.
Report
In this manuscript, the authors present a new DFT code written in Python: QuantumMasala.
The paper is clear and well written, but I think there are some points that the authors should clarify/correct before I can suggest publication:
1) Reference 13 to the Yambo code is an old reference, please replace it with:
Sangalli D, Ferretti A, Miranda H, Attaccalite C, Marri I, Cannuccia E, Melo P, Marsili M, Paleari F, Marrazzo A, Prandini G. Many-body perturbation theory calculations using the yambo code. Journal of Physics: Condensed Matter. 2019 May 29;31(32):325902.
2) In the manuscript, the authors discuss MPI and GPU parallelization, but do not mention openMP. Does the code support openMP parallelization?
3) At page 5 they say that the cutoff on V_KS is 4 times larger of the wave-function cutoff, is the same for the density?
4) The TD-DFT is not entirely clear. On page 6 they say that the perturbation is V=\delta(t) r \dot x. Have the authors implemented the TD-DFT in length gauge using the dipole <r>? This is quite complicated and requires the use of the Berry phase (see e.g. Phys. Rev. B 94, 035149) or did they use the most standard formulation in the velocity gauge with pA coupling (see Phys. Rev. B 62, 7998, 2000)? They should clarify this point and correct the equations according to the correct implementation.
5) The authors have implemented the Hybertsen-Louie model for the plasmon pole in their code. However, this model is known to overestimate the gaps and a large part of the scientific community is moving towards other models such as the Godby-Needs etc. For a discussion of the failure of the HL model see Phys. Rev. B 84, 241201, 2011. This should be mentioned in the manuscript.
6) Notation at page 16 is a bit confusion, why G vectors become q vectors at a certain point?
7) On page 35 the integration of the Coulomb potential is discussed, can the authors give more details? In general, how many Monte Carlo points are required to converge to this integral? Does the integral change in low dimensional systems?
8) Is the output of the code written in HDF5 format? Are there some utilities to analyze results?
9) How is the memory scaling of the code compared with QE?
10) Is the output of QuantumMasala compatible with many tools available as: Wannier90, PAOFLAW (https://aflow.org/src/paoflow/), BandUP, CUBE, VESTA, Bader(https://theory.cm.utexas.edu/henkelman/code/bader/),? Is it compatible with QE
Recommendation
Ask for minor revision
Anonymous on 2024-11-05 [id 4934]
Remarks from a Referee who has not able to upload a formal Report:
the method for k-point integration is not described. I guess that it is Sampling but that needs to be spelled out.
p4/p7. there are different atomic unit systems: The authors shall be specific that they use Hartree atomic units and mention that it is defined by hbar=e=me=4piepsilon_0=1. Later, on p7, the authors switch from Hartree atomic units to Rydberg atomic units. The authors should stick to one unit system (Hartree atomic units) or, even better, insert all fundamental constants explicitly.
p4 in eq 1 the subscript “i" of the gradient is incorrect.
p4 Eq.12: VKS is used once (Eq.11) as function in real space and once Eq.12 as function in reciprocal space. In this case, I recommend to write down the Fourier transform of VKS in real space.
p6 Eq.21 Similar to the previous point the a time integration for the Fourier transform of delta-n in time shall be made explicit. In addition, can the authors mention which windowing they use? (I.e. How is the time integration terminated?)
The authors sometimes use “an” rather than “a” preceeding a work with a konsonant. (I found two occasions)
p5 Eq.14: The Kleinman-Bylander form is not identical to the semilocal form it approximates. It must be made explicit that the semilocal and Kleinman-Bylander forms are different. See, for example, Bloechl, Phys. Rev. B 41, p5414 (1990).
p6 Eq.23: I suggest to describe the self energy in more detail, i.e unambiguous. The term "dynamical self energy” does not seem to be unique, because that may not include exchange or exchange and correlation potentials. There is (1) the self energy, which accounts for the complete interaction, the one (2), used by the authors, with the Hartree energy taken out, another one (3) with Hartree and Exchange taken out, and the one (4) with Hartree, Exchange and correlation potentials taken out. This may be misleading for a reader not familiar with the context.
Not all symbols are properly defined: Symbols N and T in Eq.26. Symbol nu in Eq.27. Symbol phi in Eq. 39. Symbol rho om Eq. 41. Symbol GPP in table 1. - In Eq. 49 the authors use the symbol “q" rather than “G|. I would prefer to stick to one set of symbols (unless the meaning is different.)
In section 4.3 the authors talk about a "real space basis”. The term “real space basis” is not appropriate in this context. A real space basis consists of eigenstates of the real-space operator. These states are delta functions and form a continuous basisset. What the authors refer to are functions which are unity at a given point of the real space Fourier grid and zero on all other points of the Fourier grid. In between the grid points the functionals are, however, not zero but a smooth Fourier interpolation. This distinction is often ignored and that misconception lead to mistakes. I recommend to not refer to a real space “basis”. While the parallelism sounds good, it is not correct.
Fig 2. I cannot make sense out of the figure. There is some context missing. Please expand the figure caption accordingly.