SourceForge.net Logo Opium - pseudopotential generation project

Home

Installation

User's guide

Tutorial

FAQ

Scientific references

Contact


external links:

Download

Mailing list

------------

 

Bennett & Rappe Pseudopotential Library

LDA

GGA

Latest release

Version 4.1 - April 10, 2018

View the 4.0 -> 4.1 Changelog

View the FULL Changelog

Get the Emacs highlighting mode here


Tutorial

  • Lesson 0 : Hydrogen - basic operation

    The rest of the tutorials are in pdf form for now:

  • Lesson 1 : Carbon - next steps
  • Lesson 2 : Aluminum - transferability
  • Lesson 3 : Copper - ghost states, local potential
  • Lesson 4 : Titanium - semicore states
  • Lesson 5 : Iron - core correction
  • Lesson 6 : Platinum - scalar relativistic potential

Hydrogen

Getting help Using the following param file, h.param we will go through the construction of a hydrogen pseudopotential. The first thing to note is that entering "opium -h" or just "opium" with no argument will display a help screen:

<~/prompt->./opium -h
        ===========================Opium help============================
                      version:      1.0.2
        =================================================================

         usage:
         opium <parameterfile> <logfile> <command line options>

         Opium can be executed interactively or non-interactively
         To enter an interactive session just enter:

                 opium <parameterfile> <logfile>

         In an interactive session...
         enter "comm" for command line help
         enter "plot" for plotting help
         enter "keys" for keyblock help

         To run Opium non-interactively enter:

                 opium <parameterfile> <logfile> <commands>


         In a non-interactive session...
         enter "opium -c" or "opium comm" for command line help
         enter "opium -p" or "opium plot" for plotting help
         enter "opium -k" or "opium keys" for keyblock help
        =================================================================

Command, keyblock, and plotting help can also be obtained via the command-line.

Constructing the parameter file

Before continuing, lets analyze the parameter file:

[Atom]
H
1
100 1.00  -

[Pseudo]
1 1.80
opt

[Optinfo]
3.00  4

[Configs]
3
100 0.75 -

100 0.50 -

100 0.35 -

The [Atom] keyblock indicates that the atomic symbol is 'H' for hydrogen, that there is one orbital, and this orbital is "1s" with occupation 1.0. The "-" means that an eigenvalue guess should be generated by Opium. The configuration specified in the [Atom] keyblock is the reference configuration . It is used to construct the pseudopotential and will reproduce the valence electron properties of the all-electron atom in this configuration.

The [Pseudo] keyblock lists the number of valence orbitals, 1, and the cut-off radius ("rc") for the pseudopotential (here 1.80 au). Also, opt indicates that we want to use the optimized pseudopotential method.

The [Optinfo] keyblock is used to indicate the inputs necessary for the optimized pseudopotential method. These are the cut-off wavevector ("qc") and the number of bessel fucntions used in the pseudopotential construction.

The last keyblock is the [Configs] section. This keyblock contains the number of test configurations and their definitions. Here we are testing the gradual removal of the 1s electron.

Creating the hydrogen pseudopotential

Now, the hydrogen pseudopotential can be generated and tested via this command line:

 
<~/prompt->./opium h h.log ae ps nl tc rpt 

This runs the all-electron (ae), pseudopotential generation (ps), non-local calculation (nl) and configuration testing (tc). The rpt command indicates that the results should be summarized in a report file.

Running the command generates the 'h.log' and 'h.rpt' files. The h.log file contains all of the output from the commands and indicates any errors or warnings. It is important to look through the log file for any errors.

For such a simple system, there are no problems in the log, so we can concentrate on the report file.

The first problem to notice in the report file is the size of the convergence error :

 
### PS report ########################################

    Orbital  Conv. error: [mRy/e]            [mRy]             [meV]     Ghost
    --------------------------------------------------------------------------
        100           18.5486952500     18.5486952500    252.3698378324     no

                  Tot. error =          18.5486952500    252.3698378324

The convergence error is much too large. This states that this pseudopotential would have on the order of 250 meV when run at a converged cut-off energy. This potential is being designed and tested at a 9.0 Ry cut-off energy ('qc'^2 == Ecut). We need to reduce the convergence energy before proceeding.

There are two direct ways to reduce the convergence error, by increasing rc or qc. Increasing rc leads to a less transferable potential, while increasing qc leads to a larger cut-off energy. So, lets plot the all-electron wavefunctions and see where rc is relative to to the 1s peak.

The cut-off radius is at 1.80 au and is pretty far from the peak. Therefore, it is probably better to increase qc.

Increasing qc to 4.75 gives the following result:

 
### PS report ########################################

    Orbital  Conv. error: [mRy/e]            [mRy]             [meV]     Ghost
    --------------------------------------------------------------------------
        100            0.1718933923      0.1718933923      2.3387471167     no

                  Tot. error =           0.1718933923      2.3387471167

A convergence error of 2 meV/atom is a significant improvement over 252 meV/atom. Of course, qc could be increased further if even higher accuracy is desired.

Now that the convergence error is fixed, we can now analyze the transferability. Here, we list the lines that begin with 'AE-NL' which is the difference between the all-electron and psuedopotential results:

 

 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.750        -0.9201432489      -1.4704986312
 AE-NL-  total error =         0.9201432489       1.4704986312
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.500        -3.2455119043      -3.2095046059
 AE-NL-  total error =         3.2455119043       3.2095046059
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.350        -5.3718978139      -4.2422160466
 AE-NL-  total error =         5.3718978139       4.2422160466
 AE-NL-  i   j          DD[mRy]        DD[meV]
 AE-NL- ------------------------------------------
 AE-NL-   0   1        -0.090566      -1.232220
 AE-NL-   0   2        -0.578335      -7.868648
 AE-NL-   0   3        -1.218700     -16.581266
 AE-NL-   1   2        -0.487768      -6.636428
 AE-NL-   1   3        -1.128133     -15.349046
 AE-NL-   2   3        -0.640365      -8.712618

The transferability is quite good, but if we wanted to make it better, we could try by reducing rc. Lets pull it back to 1.4 au and retest the transferability:

 
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.750        -0.3792913715      -0.7511997938
 AE-NL-  total error =         0.3792913715       0.7511997938
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.500        -1.3891149867      -1.7356415420
 AE-NL-  total error =         1.3891149867       1.7356415420
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.350        -2.3418063212      -2.3655590767
 AE-NL-  total error =         2.3418063212       2.3655590767
 AE-NL-  i   j          DD[mRy]        DD[meV]
 AE-NL- ------------------------------------------
 AE-NL-   0   1        -0.036849      -0.501362
 AE-NL-   0   2        -0.242634      -3.301207
 AE-NL-   0   3        -0.519554      -7.068902
 AE-NL-   1   2        -0.205785      -2.799844
 AE-NL-   1   3        -0.482705      -6.567539
 AE-NL-   2   3        -0.276920      -3.767695


Now the transferability is even better. But, remember, making rc smaller makes a harder pseudopotential which requires a larger qc. Lets recheck the convergence error:

 
### PS report ########################################

    Orbital  Conv. error: [mRy/e]            [mRy]             [meV]     Ghost
    --------------------------------------------------------------------------
        100            1.9344081672      1.9344081672     26.3191706410     no

                  Tot. error =           1.9344081672     26.3191706410

As suspected, the smaller rc increases the convergence error. So, we can increase qc again to get back to a reasonable level of convergence. Lets try 4.75:

 
### PS report ########################################

    Orbital  Conv. error: [mRy/e]            [mRy]             [meV]     Ghost
    --------------------------------------------------------------------------
        100            0.3759912156      0.3759912156      5.1156612817     no

Pretty good, but how is the transferability?:

 
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.750        -0.3178702858      -0.6330880156
 AE-NL-  total error =         0.3178702858       0.6330880156
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.500        -1.1673939074      -1.4641105002
 AE-NL-  total error =         1.1673939074       1.4641105002
 AE-NL:Orbital Filling       Eigenvalues[mRy]         Norm[1e-3]
 AE-NL- --------------------------------------------------------------
 AE-NL- 100      0.350        -1.9696295215      -1.9959511662
 AE-NL-  total error =         1.9696295215       1.9959511662
 AE-NL-  i   j          DD[mRy]        DD[meV]
 AE-NL- ------------------------------------------
 AE-NL-   0   1        -0.030837      -0.419562
 AE-NL-   0   2        -0.203612      -2.770278
 AE-NL-   0   3        -0.436448      -5.938186
 AE-NL-   1   2        -0.172774      -2.350716
 AE-NL-   1   3        -0.405611      -5.518624
 AE-NL-   2   3        -0.232837      -3.167908

Very good! This potential is ready to be written to a file. Lets use the .fhi format:

 
<~/prompt->./opium all fhi rpt

The command "all" is an abbreviation for "ae ps nl tc " and we repeat all of the steps to ensure that all steps of the generation and testing are in the log and report file and to make sure that no steps were skipped.

Last updated: Apr 10, 2018