Tutorial
Here, we'll take a look at the basic usage of PseudoPotentialIO.jl: searching for, loading, and investigating the contents of pseudopotentials.
using PseudoPotentialIO
using CairoMakie
using Colors
1. Searching for pseudopotentials
PseudoPotentialIO provides easy access to a variety of pseudopotential families with zero setup using Julia Artifacts, LazyArtifacts.jl, and PseudoLibrary. In order to list the available pre-bundled families, use list_families
list_families(with_info=true)
Dict{String, Vector{Any}} with 3 entries:
"name" => ["pd_nc_sr_pbesol_standard_0.4.1_psp8", "pd_nc_sr_pbe_standard_0.…
"format" => [missing, missing, missing, missing, missing, missing, missing, m…
"n_psp" => [missing, missing, missing, missing, missing, missing, missing, m…
Because families are downloaded lazily, detailed information on some of the families is missing (they need to be downloaded first). In order to download a pseudopotential family, you can load it using load_family
.
load_family
can also load all the pseudopotentials in a local directory!
You can then see an overview of which elements the family supports with show_family_periodic_table
.
family = load_family("hgh_lda_upf");
show_family_periodic_table(family)
Elements(…128 elements…):
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
La Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
For more detailed information, use show_family_list
. You can restrict the output by providing a list of elements that you're interested in.
show_family_list(family) # Show all the pseudopotentials
show_family_list(family; elements=["Ba", "Ti", "O"]) # Only show the pseudos for Ba, Ti, and O
┌─────────┬───────────────────┬────────────────┬───────┬────────────┬─────────┬───────────────────┬─────────────────────────────────────┐
│ Element │ Filename │ Valence Charge │ NLCC │ Spin Orbit │ Format │ Formalism │ File │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ag │ Ag.pz-d-hgh.UPF │ 11.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ag, z_valence=11.0) │
│ Ag │ Ag.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ag, z_valence=1.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Al │ Al.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Al, z_valence=3.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ar │ Ar.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ar, z_valence=8.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ As │ As.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=As, z_valence=5.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ At │ At.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=At, z_valence=7.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Au │ Au.pz-d-hgh.UPF │ 11.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Au, z_valence=11.0) │
│ Au │ Au.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Au, z_valence=1.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ B │ B.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=B, z_valence=3.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ba │ Ba.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ba, z_valence=2.0) │
│ Ba │ Ba.pz-sp-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ba, z_valence=10.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Be │ Be.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Be, z_valence=2.0) │
│ Be │ Be.pz-s-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Be, z_valence=4.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Bi │ Bi.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Bi, z_valence=5.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Br │ Br.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Br, z_valence=7.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ C │ C.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=C, z_valence=4.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ca │ Ca.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ca, z_valence=2.0) │
│ Ca │ Ca.pz-sp-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ca, z_valence=10.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Cd │ Cd.pz-d-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cd, z_valence=12.0) │
│ Cd │ Cd.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cd, z_valence=2.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ce │ Ce.pz-sp-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ce, z_valence=12.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Cl │ Cl.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cl, z_valence=7.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Co │ Co.pz-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Co, z_valence=9.0) │
│ Co │ Co.pz-sp-hgh.UPF │ 17.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Co, z_valence=17.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Cr │ Cr.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cr, z_valence=6.0) │
│ Cr │ Cr.pz-sp-hgh.UPF │ 14.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cr, z_valence=14.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Cs │ Cs.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cs, z_valence=1.0) │
│ Cs │ Cs.pz-sp-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cs, z_valence=9.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Cu │ Cu.pz-d-hgh.UPF │ 11.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cu, z_valence=11.0) │
│ Cu │ Cu.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Cu, z_valence=1.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Dy │ Dy.pz-sp-hgh.UPF │ 20.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Dy, z_valence=20.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Er │ Er.pz-sp-hgh.UPF │ 22.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Er, z_valence=22.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Eu │ Eu.pz-sp-hgh.UPF │ 17.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Eu, z_valence=17.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ F │ F.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=F, z_valence=7.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Fe │ Fe.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Fe, z_valence=8.0) │
│ Fe │ Fe.pz-sp-hgh.UPF │ 16.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Fe, z_valence=16.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ga │ Ga.pz-d-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ga, z_valence=13.0) │
│ Ga │ Ga.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ga, z_valence=3.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Gd │ Gd.pz-sp-hgh.UPF │ 18.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Gd, z_valence=18.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ge │ Ge.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ge, z_valence=4.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ H │ H.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=H, z_valence=1.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ He │ He.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=He, z_valence=2.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Hf │ Hf.pz-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Hf, z_valence=12.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Hg │ Hg.pz-d-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Hg, z_valence=12.0) │
│ Hg │ Hg.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Hg, z_valence=2.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ho │ Ho.pz-sp-hgh.UPF │ 21.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ho, z_valence=21.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ I │ I.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=I, z_valence=7.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ In │ In.pz-d-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=In, z_valence=13.0) │
│ In │ In.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=In, z_valence=3.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ir │ Ir.pz-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ir, z_valence=9.0) │
│ Ir │ Ir.pz-sp-hgh.UPF │ 17.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ir, z_valence=17.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ K │ K.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=K, z_valence=1.0) │
│ K │ K.pz-sp-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=K, z_valence=9.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Kr │ Kr.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Kr, z_valence=8.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ La │ La.pz-hgh.UPF │ 11.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=La, z_valence=11.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Lu │ La.pz-sp-hgh.UPF │ 25.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Lu, z_valence=25.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Li │ Li.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Li, z_valence=1.0) │
│ Li │ Li.pz-s-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Li, z_valence=3.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Mg │ Mg.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Mg, z_valence=2.0) │
│ Mg │ Mg.pz-sp-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Mg, z_valence=10.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Mn │ Mn.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Mn, z_valence=7.0) │
│ Mn │ Mn.pz-sp-hgh.UPF │ 15.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Mn, z_valence=15.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Mo │ Mo.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Mo, z_valence=6.0) │
│ Mo │ Mo.pz-sp-hgh.UPF │ 14.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Mo, z_valence=14.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ N │ N.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=N, z_valence=5.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Na │ Na.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Na, z_valence=1.0) │
│ Na │ Na.pz-sp-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Na, z_valence=9.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Nb │ Nb.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Nb, z_valence=5.0) │
│ Nb │ Nb.pz-sp-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Nb, z_valence=13.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Nd │ Nd.pz-sp-hgh.UPF │ 14.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Nd, z_valence=14.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ne │ Ne.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ne, z_valence=8.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ni │ Ni.pz-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ni, z_valence=10.0) │
│ Ni │ Ni.pz-sp-hgh.UPF │ 18.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ni, z_valence=18.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ O │ O.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=O, z_valence=6.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Os │ Os.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Os, z_valence=8.0) │
│ Os │ Os.pz-sp-hgh.UPF │ 16.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Os, z_valence=16.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ P │ P.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=P, z_valence=5.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Pb │ Pb.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pb, z_valence=4.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Pd │ Pd.pz-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pd, z_valence=10.0) │
│ Pd │ Pd.pz-sp-hgh.UPF │ 18.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pd, z_valence=18.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Pm │ Pm.pz-sp-hgh.UPF │ 15.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pm, z_valence=15.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Po │ Po.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Po, z_valence=6.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Pr │ Pr.pz-sp-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pr, z_valence=13.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Pt │ Pt.pz-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pt, z_valence=10.0) │
│ Pt │ Pt.pz-sp-hgh.UPF │ 18.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Pt, z_valence=18.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Rb │ Rb.pz-hgh.UPF │ 1.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Rb, z_valence=1.0) │
│ Rb │ Rb.pz-sp-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Rb, z_valence=9.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Re │ Re.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Re, z_valence=7.0) │
│ Re │ Re.pz-sp-hgh.UPF │ 15.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Re, z_valence=15.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Rh │ Rh.pz-hgh.UPF │ 9.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Rh, z_valence=9.0) │
│ Rh │ Rh.pz-sp-hgh.UPF │ 17.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Rh, z_valence=17.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Rn │ Rn.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Rn, z_valence=8.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ru │ Ru.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ru, z_valence=8.0) │
│ Ru │ Ru.pz-sp-hgh.UPF │ 16.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ru, z_valence=16.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ S │ S.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=S, z_valence=6.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Sb │ Sb.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sb, z_valence=5.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Sc │ Sc.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sc, z_valence=3.0) │
│ Sc │ Sc.pz-sp-hgh.UPF │ 11.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sc, z_valence=11.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Se │ Se.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Se, z_valence=6.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Si │ Si.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Si, z_valence=4.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Sm │ Sm.pz-sp-hgh.UPF │ 16.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sm, z_valence=16.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Sn │ Sn.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sn, z_valence=4.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Sr │ Sr.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sr, z_valence=2.0) │
│ Sr │ Sr.pz-sp-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Sr, z_valence=10.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ta │ Ta.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ta, z_valence=5.0) │
│ Ta │ Ta.pz-sp-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ta, z_valence=13.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Tb │ Tb.pz-sp-hgh.UPF │ 19.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Tb, z_valence=19.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Tc │ Tc.pz-hgh.UPF │ 7.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Tc, z_valence=7.0) │
│ Tc │ Tc.pz-sp-hgh.UPF │ 15.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Tc, z_valence=15.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Te │ Te.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Te, z_valence=6.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ti │ Ti.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ti, z_valence=4.0) │
│ Ti │ Ti.pz-sp-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ti, z_valence=12.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Tl │ Tl.pz-d-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Tl, z_valence=13.0) │
│ Tl │ Tl.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Tl, z_valence=3.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Tm │ Tm.pz-sp-hgh.UPF │ 23.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Tm, z_valence=23.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ V │ V.pz-hgh.UPF │ 5.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=V, z_valence=5.0) │
│ V │ V.pz-sp-hgh.UPF │ 13.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=V, z_valence=13.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ W │ W.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=W, z_valence=6.0) │
│ W │ W.pz-sp-hgh.UPF │ 14.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=W, z_valence=14.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Xe │ Xe.pz-hgh.UPF │ 8.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Xe, z_valence=8.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Y │ Y.pz-hgh.UPF │ 3.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Y, z_valence=3.0) │
│ Y │ Y.pz-sp-hgh.UPF │ 11.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Y, z_valence=11.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Yb │ Yb.pz-sp-hgh.UPF │ 24.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Yb, z_valence=24.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Zn │ Zn.pz-d-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Zn, z_valence=12.0) │
│ Zn │ Zn.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Zn, z_valence=2.0) │
│ Zn │ Zn.pz-spd-hgh.UPF │ 20.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Zn, z_valence=20.0) │
├─────────┼───────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Zr │ Zr.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Zr, z_valence=4.0) │
│ Zr │ Zr.pz-sp-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Zr, z_valence=12.0) │
└─────────┴───────────────────┴────────────────┴───────┴────────────┴─────────┴───────────────────┴─────────────────────────────────────┘
┌─────────┬──────────────────┬────────────────┬───────┬────────────┬─────────┬───────────────────┬─────────────────────────────────────┐
│ Element │ Filename │ Valence Charge │ NLCC │ Spin Orbit │ Format │ Formalism │ File │
├─────────┼──────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ba │ Ba.pz-hgh.UPF │ 2.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ba, z_valence=2.0) │
│ Ba │ Ba.pz-sp-hgh.UPF │ 10.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ba, z_valence=10.0) │
├─────────┼──────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ O │ O.pz-hgh.UPF │ 6.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=O, z_valence=6.0) │
├─────────┼──────────────────┼────────────────┼───────┼────────────┼─────────┼───────────────────┼─────────────────────────────────────┤
│ Ti │ Ti.pz-hgh.UPF │ 4.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ti, z_valence=4.0) │
│ Ti │ Ti.pz-sp-hgh.UPF │ 12.0 │ false │ false │ UpfFile │ NormConservingPsP │ UpfFile(element=Ti, z_valence=12.0) │
└─────────┴──────────────────┴────────────────┴───────┴────────────┴─────────┴───────────────────┴─────────────────────────────────────┘
2. Loading pseudopotential files
To load an individual pseudopotential file, use load_psp_file
, specifying the family name or directory and the filename of the pseudopotential
Ba_psp_file = load_psp_file("hgh_lda_upf", "Ba.pz-sp-hgh.UPF")
UpfFile
PseudoPotentialIO distinguishes between pseudopotential files and the pseudopotentials themselves. Structures like HghFile
, UpfFile
, and Psp8File
correspond to pseudopotential file formats and make the quantities that these files contain directly available, with no unit conversion or processing. For example, we can take a look at the author field from the header in the barium UPF pseudopotential we just loaded
Ba_psp_file.header.author
"Goedecker/Hartwigsen/Hutter/Teter"
We can also check that the properties of Bapspfile match up with the sections of a UPF file
propertynames(Ba_psp_file)
(:checksum, :version, :info, :header, :mesh, :nlcc, :local_, :nonlocal, :pswfc, :full_wfc, :rhoatom, :spin_orb, :paw, :gipaw)
3. Loading pseudopotentials
Once you've decided that you would like to use a given pseudopotential for a calculation, either convert its PsPFile
struct a corresponding pseudopotential structure
Ba_psp_from_File = load_psp(Ba_psp_file)
NormConservingPsP{Float64}
, or load the pseudopotential structure directly from the file using load_psp
Ba_psp_from_disk = load_psp("hgh_lda_upf", "Ba.pz-sp-hgh.UPF")
NormConservingPsP{Float64}
We can confirm that these pseudopotentials are identical
Ba_psp_from_File == Ba_psp_from_disk
true
This procedure has processed the contents of the UPF file (on disk) or the UpfFile
struct into a common and consistent data representation that PseudoPotentialIO uses for calculations. We can see that the contents have changed by looking at the property names of our new UpfPsP
struct
propertynames(Ba_psp_from_disk)
(:checksum, :Zatom, :Zval, :lmax, :r, :dr, :Vloc, :β, :D, :χ, :ρcore, :ρval)
4. Inspecting pseudopotential quantities
One thing that we might want to do with a processed pseudopotential is to visualize some of the quantities it contains. Let's plot the Kleinman-Bylander projectors from a PseudoDojo barium pseudopotential
Ba_psp = load_psp("pd_nc_sr_pbesol_standard_0.4.1_upf", "Ba.upf");
let
linestyles = [:solid, :dash, :dot]
colors = Colors.JULIA_LOGO_COLORS
fig = Figure(); ax = Axis(fig[1,1], xlabel="r [a₀]", ylabel="β(r)")
for l in angular_momenta(Ba_psp) # Iterate over each angular momentum 0:lmax
color = colors[l+1]
for n in projector_radial_indices(Ba_psp, l) # Iterate over each projector at l 1:nmax
linestyle = linestyles[n]
r²βln = Ba_psp.β[l][n] # Projector multiplied by r²
i_rc_ln = lastindex(r²βln) # Cutoff radius index
βln = r²βln ./ Ba_psp.r[1:i_rc_ln].^2 # Remove the r² prefactor
lines!(ax, Ba_psp.r[1:i_rc_ln], βln, label="|β[$l][$n]⟩",
linestyle=linestyle, color=color)
end
end
axislegend()
fig
end