Head First OpenMX

Author: Yue-Wen FANG

Contact: fyuewen@gmail.com

Revision history: created in 6th, September 2017, at New York Uniersity, Shanghai

New York University, Shanghai

Kyto University

The simple tutorial is actually my learning notes of OpenMX.

1. An introduction to openMX

OpenMX (Open source package for Material eXplorer) http://www.openmx-square.org/ is a software package for nano-scale material simulations based on density functional theories (DFT), it was initially developped by Prof. T. Ozaki at University of Tokyo, and has been contributed by many other contributors.

2. Running environment

As far as I have known, OpenMX can only work in the LINUX/UNIX systems.

2.1. Installation

The installation is very simple, more details can be found from its official [webpage]http://www.openmx-square.org. Note that some versions may need patches. In avoid of unexpected running erros, just use the latest version. Currently the latest one is OpenMX 3.8.

3. How to use OpenMX

Although we can find a very well-written and complete manual from the official page. Here, I will only show the important featurs and usages.

3.1 input file and its format

Here, let me show you an example of non-collinear calculations for SrMnO3. The good implement of non-collinear calculations with spin-orbital coupling in OpenMX is the main reason why I learn using it.

Here is my input (BMO.dat):

#
#      File Name
#

System.CurrrentDirectory         ./    # default=./
System.Name                      bmo
level.of.stdout                   1    # default=1 (1-3)
level.of.fileout                  1    # default=1 (0-2)
DATA.PATH                        /home/cgduan/software/openmx3.8/DFT_DATA13

#
# Definition of Atomic Species
#

# The empirical orbital basis (i.e. s3p3d3f2) can be found from the http://www.jaist.ac.jp/~t-ozaki/vps_pao2013/Ba/
Species.Number       3
<Definition.of.Atomic.Species
 Ba  Ba10.0-s3p3d3f2  Ba_PBE13 
 Mn  Mn6.0-s3p2d2f1   Mn_PBE13
 O   O5.0-s2p2d1      O_PBE13
Definition.of.Atomic.Species>


#<Hubbard.U.values                 #  eV
# Mn  1s 0.0 2s 0.0 3s 0.0 1p 0.0 2p 0.0 1d 3.0 2d 0.0 1f 0.0
# O   1s 0.0 2s 0.0 1p 0.0 2p 0.0 1d 0.0
#Hubbard.U.values>


#
# Atoms
#

Atoms.Number        5
Atoms.SpeciesAndCoordinates.Unit   FRAC  # Ang|AU
<Atoms.SpeciesAndCoordinates           # Unit=AU
1  Ba   0.5       0.5       0.5        5.0  5.0   0.0  0.0   0.00  0.0  0 off
2  Mn   0.000     0.000     0.000     10.0  5.0   0.00 0.0   0.00  0.0  0 off
3   O   0.5000    0.000     0.000      3.0  3.0   0.00  0.0   0.00  0.0  0 off
4   O   0.0000    0.5000    0.0000     3.0  3.0   0.00  0.0   0.00  0.0  0 off
5   O   0.0000    0.0000    0.5000     3.0  3.0   0.00  0.0   0.00  0.0  0 off
Atoms.SpeciesAndCoordinates>
Atoms.UnitVectors.Unit             Ang  #  Ang|AU
<Atoms.UnitVectors                     # unit=AU
  3.9361000061         0.0000000000         0.0000000000
  0.0000000000         3.9361000061         0.0000000000
  0.0000000000         0.0000000000         4.3
Atoms.UnitVectors>

#
# SCF or Electronic System
#

scf.XcType                 GGA-PBE     # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.Hubbard.U              off          # On|Off , default=off
scf.Hubbard.Occupation     dual        # onsite|full|dual, default=dual
scf.SpinPolarization       NC          # On|Off|NC
scf.SpinOrbit.Coupling     on          # On|Off, default=off
scf.ElectronicTemperature  300.0       # default=300 (K)
scf.energycutoff           150.0       # default=150 (Ry)
scf.maxIter                1000         # default=40
scf.EigenvalueSolver       band        # Recursion|Cluster|Band
scf.Kgrid                  5 5 5       # means 4x4x4
scf.Mixing.Type           rmm-diis     # Simple|Rmm-Diis|Gr-Pulay|Kerker|Rmm-Diisk
scf.Init.Mixing.Weight     0.010       # default=0.30
scf.Min.Mixing.Weight      0.010       # default=0.001
scf.Max.Mixing.Weight      0.250       # default=0.40
scf.Mixing.History          20         # default=5
scf.Mixing.StartPulay       14         # default=6
scf.Mixing.EveryPulay       10         # default=6
scf.criterion             1.0e-6       # default=1.0e-6 (Hartree)
scf.lapack.dste            dstevx      # dstegr|dstedc|dstevx, default=dstevx

scf.NC.Zeeman.Spin          off        # on|off, default=off
scf.NC.Mag.Field.Spin      1.0e+2      # default=0.0(Tesla)
scf.NC.Zeeman.Orbital       off        # on|off, default=off
scf.NC.Mag.Field.Orbital   1.0e+3      # default=0.0(Tesla)

#
# Voronoi Charge
#

Voronoi.Charge              on         # default = Off



#
# MD or Geometry Optimization
#

MD.Type                     Nomd       # Nomd|Constant_Energy_MD|Opt
MD.maxIter                   1         # default=1
MD.TimeStep                 0.01       # default=0.5 (fs)
MD.Opt.criterion          1.0e-4       # default=1.0e-4 (Hartree/bohr)



#
# restarting using a restart file, *.rst
#

scf.restart                 off        # on|off , default=off

#
# MO output
#

MO.fileout                  off        # on|off
num.HOMOs                    3         # default=1
num.LUMOs                    3         # default=1
MO.Nkpoint                   1         # default=1
<MO.kpoint
 0.0  0.0  0.0
MO.kpoint>

In calculations, please carefully examine the convergence of the cutoff energy and k-grid. Readers can refer to http://www.openmx-square.org/openmx_man3.7/node33.html for more details.

Important references:

  1. T. Ozaki and H. Kino, Numerical atomic basis orbitals from H to Kr

  2. A presentation by Javier Junquera, Exercises on basis set generation Full control on the definition of the basis set functions: the PAO.Basis block

  3. Michele Gusso, Study on the maximum accuracy of the pseudopotential density functional method with localized atomic orbitals versus plane-wave basis sets: A detailed study on the accuracy attainable with numerical atomic orbitals in the context of pseudopotential first-principles density functional theory is presented.

  4. A blog on the comparison of efficiency of OpenMX DFT and VASP DFT by Peter Larsson.

Output file

Openmx can generate about ten output files with rich format. Some of them are structured data, and some of them can be visulazed by XCrysden or VESTA easily.

For non-collinear calculations, it will output the xsf file with spin moment sited in the magnetic ions. Hence it will be easy for us to visulize them in Xcrysden or VESTA. I recommend to use VESTA because it is more flexible and can be used in many operating systems.