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
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.
|