aiidateam / aiida-pseudo

MIT License
5 stars 8 forks source link

Parse more information from UPF pseudopotentials #38

Open zooks97 opened 3 years ago

zooks97 commented 3 years ago

There is a lot of useful information in the header section of UPF pseudopotentials that can be applied to resource estimation, automatic checking of compatibility with methods like DFT + U and spin-orbit coupling, etc.

Would it be possible to parse this information and add it to the pseudopotential metadata as is done currently with z_valence?

zooks97 commented 3 years ago

Here is an example of the header where this information should be from a PseudoDojo Ag.UPF (nc-fr-04_pbe_standard)

<PP_HEADER
generated="Generated using ONCVPSP code by D. R. Hamann"
author="anonymous"
date="180423"
comment=""
element="Ag"
pseudo_type="NC"
relativistic="full"
is_ultrasoft="F"
is_paw="F"
is_coulomb="F"
has_so="T"
has_wfc="F"
has_gipaw="F"
core_correction="T"
functional="PBE"
z_valence="   19.00"
total_psenergy="  -2.94576220757E+02"
rho_cutoff="   1.53700000000E+01"
l_max="2"
l_local="-1"
mesh_size="  1538"
number_of_wfc="6"
number_of_proj="10"/>
sphuber commented 3 years ago

Of course technically this is not a problem. Just two points I can think of now to take into account:

unkcpz commented 3 years ago

Should we store this as an attribute. This would have the advantage of making it queryable but the question is whether that is necessary. If not, maybe it is not worth the cost of storing. It is always possible to retrieve from the file by parsing on the fly.

there must be some mandatory attributes for different types of pseudopotential file, like element, z_valence, or pp_type, correct? Then leave other attributes can be parsed on the fly.

AndresOrtegaGuerrero commented 3 months ago

It could be interesting to add the Wavefunctions, like the number of Wavefunctions and the Orbital. For example

grep Wavefunction W_pbe_v1.2.uspp.F.UPF 5 8 Number of Wavefunctions, Number of Projectors Wavefunctions nl l occ 5S 0 2.00 Wavefunction 5P 1 6.00 Wavefunction 5D 2 3.90 Wavefunction 6S 0 2.00 Wavefunction 6P 1 0.00 Wavefunction

and per pseudo be able to get the orbitals for DFT+U calculations