PseudoDojo notebook for Rn-spd-high¶

In [1]:
from __future__ import print_function, division, unicode_literals
#import seaborn
%matplotlib inline
In [2]:
import warnings
warnings.filterwarnings("ignore")

from IPython.display import HTML
HTML('''
<style>
body {
background-image: url('http://www.pseudo-dojo.org/img/pw_maze_white.png');
}
</style>
<script>
code_show=true;
function code_toggle() {
 if (code_show) {
    $('div.input').hide();
 } else {
    $('div.input').show();
 }
 code_show = !code_show;
}
//$(document).ready(code_toggle);

document.addEventListener("DOMContentLoaded", function(event) {
  code_toggle();
});


</script>
The raw code for this IPython notebook is by default hidden for easier reading.
To toggle on/off the raw code, click <a href="javascript:code_toggle()">here</a>.''')
Out[2]:
The raw code for this IPython notebook is by default hidden for easier reading. To toggle on/off the raw code, click here.
In [3]:
from pseudo_dojo.core.pseudos import dojopseudo_from_file
pseudo = dojopseudo_from_file('/Users/gmatteo/git_repos/pseudodojo_experiments/Rn/Rn-spd-high.psp8')
report = pseudo.dojo_report

ONCVPSP Input File¶

In [4]:
input_file = pseudo.filepath.replace(".psp8", ".in")
%cat $input_file
# atsym z nc nv iexc psfile
Rn 86 10 5 4 both
# n l f
1 0 2.0
2 0 2.0
2 1 6.0
3 0 2.0
3 1 6.0
3 2 10.0
4 0 2.0
4 1 6.0
4 2 10.0
4 3 14.0
5 0 2.0
5 1 6.0
5 2 10.0
6 0 2.0
6 1 6.0
# lmax
3
# l rc ep ncon nbas qcut
0 1.4 0.0 4 8 9.0
1 1.5 0.0 4 8 8.4
2 1.4 0.0 4 8 9.0
3 1.5 0.05 4 8 7.0
# lloc lpopt rc5 dvloc0
4 5 1.3 0.0
# l nproj debl
0 2 1.0
1 2 1.0
2 2 2.5
3 1 2.0
# icmod fcfact rcfact
3 6.0 1.34
# epsh1 epsh2 depsh
-12.0 12.0 0.02
#-25.0 12.0 0.02
# rlmax drl
6.0 0.01
0
In [5]:
# Get data from the oncvpsp output file
from pseudo_dojo.ppcodes.oncvpsp import OncvOutputParser, PseudoGenDataPlotter
onc_parser = OncvOutputParser(pseudo.filepath.replace(".psp8", ".out"))

# Parse the file and build the plotter
onc_parser.scan()
plotter = onc_parser.make_plotter()
line:  # lloc, lpopt,  rc(5),   dvloc0 
rc line:  4    5   1.30000      0.00000
 iprj= 2,  l= 2, all-electron wave function, pseudo w-f
 iprj= 1,  l= 3, all-electron wave function, pseudo w-f

AE and PS radial wavefunctions $\phi(r)$¶

In [6]:
fig = plotter.plot_radial_wfs()

Arctan of the logarithmic derivatives¶

The plots show

$$ \phi(E) = \\arctan(R * d \psi(r)/dr |_R) $$

for some $R$ greater than the core radius, where $\psi$ is the solution of the non-local radial equation regular at the origin (i.e., the outward-integrated solution).

For a well-designed pseudopotential, $\phi(E)$ will closely track that of the all-electron potential over a wide range of energies from well-below to well-above the valence semi-core states of interest. The steps of $\pi$ indicate localized pseudo wave functions. Spurious steps of $\pi$ indicate ghost states, which are localized states than on investigation turn out to have more nodes than appropriate for their energies.

For $GW$ pseudos, no significant deviation should be present up to 8 Hartree.

In [7]:
fig = plotter.plot_atan_logders()

Convergence in $G$-space estimated by ONCVPSP¶

These results are obtained in the atomic configuration and should give a reasonable estimate of the convergence behaviour wrt to ecut in crystalline systems.

In [8]:
fig = plotter.plot_ene_vs_ecut()

Projectors¶

In [9]:
fig = plotter.plot_projectors()

Core-Valence-Model charge densities¶

In [10]:
fig = plotter.plot_densities()

Local potential and $l$-dependent potentials¶

In [11]:
fig = plotter.plot_potentials()

Ghosts Test¶

Self-consistent band structure calculation performed on a regular mesh. The algorithm to detect ghosts is just an indication usually on the side of false positives.

In [12]:
fig = report.plot_ebands(with_soc=False)
dojo report does not contain trial: ghosts

Convergence of the total energy wrt ecut¶

The energies are obtained from the deltafactor calculations performed at the Wien2K equilibrium volume

In [13]:
fig = report.plot_etotal_vs_ecut()
dojo report does not contain trial: deltafactor
In [14]:
fig = report.plot_etotal_vs_ecut(inv_ecut=True)
dojo report does not contain trial: deltafactor

Convergence of the Delta-Gauge results¶

The Delta-gauge compares the Equation Of State (EOS) of the elemental solid of the element calculated using the pseudo potential to reference curves calculated using an all electron method. The Delta-gauge was introduced by K. Lejaeghere, V. Van Speybroeck, G. Van Oost, and&S. Cottenier in Critical Reviews in Solid State and Materials Sciences 39, 1

A comparison using the Delta-gauge between many codes and many pseudo tables can be found at the center for molecular modeling and in Science 351, 1394-1395

In [15]:
fig = report.plot_deltafactor_convergence(xc=pseudo.xc, what=("dfact_meV", "dfactprime_meV"))
dojo report does not contain trial: deltafactor

Convergence of $\Delta v_0$, $\Delta b_0$, and $\Delta b_1$ (deltafactor tests)¶

In [16]:
# Absolute difference with respect to Wien2k results.
fig = report.plot_deltafactor_convergence(xc=pseudo.xc, what=("-dfact_meV", "-dfactprime_meV"))
dojo report does not contain trial: deltafactor

Delta-gauge EOS for the different cutoff energies¶

In [17]:
fig = report.plot_deltafactor_eos()
dojo report does not contain trial: deltafactor

Convergence of the GBRV lattice parameters¶

The GBRV tests compare the lattice parameter of a FCC and BCC lattice of the element to all electron reference data. The test was introduced by Kevin F. Garrity, Joseph W. Bennett, Karin M. Rabe, and David Vanderbilt in developing th GBRV pseudo potential table. More information can be found in Computational Materials Science 81, 446-452.

In [18]:
fig = report.plot_gbrv_convergence()
dojo report does not contain trial: gbrv_fcc

Convergence of the phonon frequencies at $\Gamma$¶

The calculation is performed with the Wien2k relaxed parameters obtained from the deltafactor CIF files.

In [19]:
fig = report.plot_phonon_convergence()
dojo report does not contain trial: phgamma

Convergence of rocksalt lattice parameter.¶

In [20]:
fig = report.plot_raren_convergence(pseudo.xc)
dojo report does not contain trial: raren_relax
In [21]:
fig = report.plot_raren_convergence(pseudo.xc, plot_diffs=True)
dojo report does not contain trial: raren_relax