This is an official place to find the novel computational scheme of ”effective screening medium” (ESM) method developed originally by M. Otani and O. Sugino




This is the SIESTA porting of a novel computational scheme called "effective screening medium" (ESM) method [Phys. Rev. B 73, 115407 (2006)].

This method enable to describe the surface and interface, e.g. a slab system that is periodic in the direction parallel to the surface but is arbitrary shape in the perpendicular direction, sandwiched by semi-infinite media, such as vacuum, an electrode, or an electrolyte. Here, we call the medium "effective screening medium" (ESM).

We assume that the surface is in the yz plane and the electrons are confined within the region a math image, where a math image is the cell size in x-direction. The location of ESMs are outside the confined box a math image and a math image, where w is the optional spacer(vacuum) region between cell edge to the ESMs. See the drawing below (the slab is periodic in y and z direction):


The self-consistent electronic wave functions in the slab region is solved with SIESTA package [J. Phys.: Condens. Matter 14, 2745 (2002)] based on the density functional (DFT) method using standard norm-conserving pseudopotentials and a numerical linear combination of atomic orbital (LCAO) basis set.

The SIESTA package is available at and this ESM implementation is based on the SIESTA release version 2.0.2.

Install and Compilation

This package is add-on to the SIESTA program, you will need to agree to their
license agreement and obtain the source code in advance.

Unpack SIESTA (siesta-x.x.x.tgz where x.x.x is the version number), and then apply the ESM patch file as follows:

$ tar zxvf siestax.x.x_esm_v1.04.tar.gz
$ tar zxvf sista-x.x.x.tgz
$ patch -p2 -d siesta-x.x.x/Src < siestax.x.x_esm_v1.04/esm_v1.04.diff

Following files are patched (either modified or added):

Makefile  (added new target links m_esm.o and fft1d.o)
dhscf.F   (file I/O and minor changes)
fft1d.f90 (perform 1D FFT with fft3d routine)
fft3d.F   (modified to perform FFT in reverse direction)
m_esm.F90 (new module file used for ESM)
poison.F  (added ESM)

Now, read SIESTA document and compile the program. In short, you will need to provide your own arch.make file in the Src/ directory and run make. Please read the SIESTA document for the further detail.


We only describe the additional feature of ESM on SIESTA. We assume that a user already knows the basic usage of the SIESTA program.

The input parameters related ESM program is following along with their default value:

ESM.BoundaryCondition pbc     # bc0/bc1/bc2/bc3
ESM.SpacerWidth       0.0 Ang # optional spacer, must be positive
ESM.WriteRhoPotX      F       # output density and potential along x
ESM.Barrier           F       # all barrier option is ignored
ESM.Barrier.L.Width   0.0 Ang # must be positive value
ESM.Barrier.R.Width   0.0 Ang
ESM.Barrier.L.Height  0.0 eV
ESM.Barrier.R.Height  0.0 eV
ESM.ZeroAt            center  # either center or left


  1. You need to be sure that SIESTA detects your system correctly. For example, if you are running slab system, SIESTA should report system type as 'slab'. When the system type is 'bulk', we advise you to increase the cell size in the x-direction. Otherwise, the total energy may not be meaningful.
  2. We advise to include the following input key even if you are *not* running MD calculation.
    MD.TypeOfRun cg
    This ensures that atomic position are fixed after the end of SCF loop.

Input data file


This sets the boundary condition at the slab/medium interface. The condition pbc and bc0 are both periodic boundary condition (PBC), where two are the same except loop structure in g-space (bc0 is available only for developers). The condition bc1 is the "vacuum" model that we place a slab in a vacuum in the region a math image (medium I and medium II are vacuum). The condition bc2 is so-called "capacitor" model that we have metals in the region a math image (medium I and medium II are metal).
The condition bc3 has metal only on one side (medium II) and the other side is vacuum (medium I).

The advantage of bc1 includes the calculation of polarized surface without dipole correction.


This sets the width of w of the spacer from the boundary of cell and position of ESM medium. The value must be positive. The default value is zero, meaning that w = 0.



If this option is set to 'true', the output file will be generated at the end of the SCF loop. The output file name is bc#.ESM where bc# is the boundary condition. The first column is the distance along x in Angstrom, the second column is the total electron density, and the third column is the total SCF potential in eV, both are along x averaged over yz plane.

ESM.Barrier [Advanced Option]

If this option is set to 'true', the potential barrier is added the total SCF potential near the cell boundary. This is sometime necessary to ensure that electrons are confined within the slab region. You may control the width and the height of this barrier by setting ESM.Barrier.L.Width and ESM.Barrier.L.Height for the barrier on the left, similarly on the right boundary.

ESM.ZeroAt [Advanced Option]

The default location of the origin is located at the center of the unit cell (the value of ESM.ZeroAt is center). In some case, it may be more convenient if the origin is defined at the edge of the cell. If this value is set to left, the location of zero is set to the left-side of the cell edge, i.e.:


ESM.Debug.* [Debug Option]

These debug options are developer's debug purpose only and output files at every SCF loop to checking purpose. Ask developers if you are interested.

ESM.Debug.WriteDRhoX  F # output 'esm.drho.bc#.dat'
ESM.Debug.WriteDPotX  F # output 'esm.dpot.bc#.dat'
ESM.Debug.WritePotX   F # output 'esm.pot.bc#.dat'
ESM.Debug.PrintInfo   F # print average delta rho

External electric field

In case of bc2, one may add an external electric field along x-axis (the direction perpendicular to ESM surface) to model the charged capacitor. Use the
standard SIESTA option to add the field, e.g:

%block ExternalElectricField
 0.0001  0.0000 0.0000  V/Ang
%endblock ExternalElectricField

This will add E=0.0001 V/Ang in x-direction (the fields in the periodic y,z-direction are ignored).

Excess/deficit electrons

In case of bc2 or bc3, you can perform ESM calculation by adding/removing electrons with SIESTA's NetCharge option. For example, if you want to remove 1/1000th of electron, you add the following:

NetCharge 0.001

The 'sample' directory

We have included sample input/output files for H2O molecule, and Al(111) slab.
The input file for SiAl calculation is also available. The '*.psf' files are the gga pseudo potentials obtained from the SIESTA website. The file 'h2o/h2o.fdf', and 'al/al.fdf' are the SIESTA input file.
In each sample directory, output files are also available. The script '' is the gnuplot script to plot the total potential *.ESM with various boundary
condition (also saved in pdf file) with and without addition of charge(bc2/bc3). Please check if you can obtain the same result.

Testing machine spec

Our testing machine spec is following:
Xserve Quad-Core Intel Xeon @ 3GHz with 4GB momery
running at single core.
The code is compiled with Intel ifort compiler version 10.1.
We use -DGRID_DP to compile and create sample outputs.

powered by Quick Homepage Maker 4.20
based on PukiWiki 1.4.7 License is GPL. QHM

最新の更新 RSS  Valid XHTML 1.0 Transitional