Commit 9e826884 authored by Michal Hermanowicz's avatar Michal Hermanowicz
Browse files

Initial commit

parents
This diff is collapsed.
EQMO: Equation of motion method for electronic structure calculations
Copyright (C) 1988, 1989, 1991, 1992, 1994, 1998, 1999, 2020, 2021
Marek T. Michalewicz <m.michalewicz@icm.edu.pl>
Copyright (C) 2020, 2021 Vadim Zhuravlev <v.zhuravlev@cent.uw.edu.pl>
(MPI, NEC SX-Aurora TSUBASA implementation)
Copyright (C) 1985 Herbert Shore
(Prototype 2-D code with a single orbital)
See 'REFERENCES' below for a list of relevant papers.
This file is part of EQMO.
See the end of the file for license conditions.
==========
About EQMO
==========
This code calculates electronic structure (density of electronic
states) for rutile TiO2 structure distorted by point defects.
============
Installation
============
Fortran compiler supporting 2008 standard features is required. The
program was developed and tested with:
- GNU Fortran (x86_64)
- NEC Fortran (NEC SX-Aurora TSUBASA)
The serial version was tested on both x86_64 and NEC SX-Aurora TSUBASA
vector computer. The MPI version was tested on the latter only.
To build the serial version:
x86_64 CPU:
gfortran eqmo_serial.f90 -o eqmo_serial
NEC SX-Aurora TSUBASA:
nfort -bss eqmo_serial.f90 -o eqmo_serial
To build the MPI version:
x86_64 CPU:
mpif90 eqmo_mpi.f90 -o eqmo_mpi
NEC SX-Aurora TSUBASA:
mpinfort -bss eqmo_mpi.f90 -o eqmo_mpi
NOTE: When compiling with MPI, some versions of the NEC Fortran
compiler might require an optimization option other than the default
"-O2". This is known to be the case for 'nfort' 3.2.0 which results in
incorrect (NaN) output produced by the executable. Changing it to
"-O1" should work fine, although it is not recommended due to poor
performance. In such case, the use of prior version, e.g. 3.1.1, is
advised.
===========
Input files
===========
The 'input' directory contains the following files:
i) 'data' file:
- First line: Title of the program.
- Second line: Three logical variables controlling what output
should be generated; (1) Total DOS, (2) Diagonal and off-diagonal
elements of the Hamiltonian (serial version only!). NOTE: those
files may become huge for large number of cells; (3) Mode of
calculation (Total DOS and Local DOS for .true. and .false.,
respectively).
- Third line: minimum energy, bandwidth, (recommended: 30.0 for a
system without defects, 35.0 otherwise), percentage of random
vacancies of total oxygen sites divided by 100%, respectively.
The crystal is modeled with multiple unit cells: each represented by a
3D index denoting its position within the system. Each unit cell
contains 6 ions: 2 Ti(4+) with unique indices 1-2, and 4 O(2-) with
unique indices 3-6.
ii) 'LDOS_sites' file - sites for the Local DOS calculation:
- nLDOS - represents the number of sites in a sample of a specific
ion type which will be used for Local DOS computation. It takes
values from 0 to 20 (20 is a limitation, but it can be easily
changed). Example: (0,0,1,0,19,3). It means that we do not
calculate Ti(4+) (0,0), we DO calculate 1 ion O(2-) with index 3,
19 ions O(2-) with index 5, and 3 ions O(2-) with index 6.
- ncoord_LDOS - contains 20 x (Nx, Ny, Nz) ion positions, used in
Local DOS calculation, for each of 6 ion types. How many of them we
use in the program depends on nLDOS.
iii) 'point_defects' file:
- nlv_array - represents the number of vacancies of a specific ion
type in a sample. It takes values from 0 to 20 (20 is a
limitation, but it can be easily changed). Example:
(0,0,1,0,19,3). It means that there are no vacancies for Ti(4+)
(0,0), there is 1 vacancy for O(2-) with index 3, 19 vacancies
for O(2-) with index 5, and 3 vacancies for O(2-) with index 6.
- nvl_coord - contains 20 x (Nx, Ny, Nz) vacancy positions for each
of the 6 ion types. How many of them we use in the program
depends on nlv.
In addition, file 'model.h' contains parameters for the calculation.
=====
Usage
=====
The program can be invoked as:
./eqmo_serial
or
mpirun ./eqmo_mpi
for serial and MPI versions, respectively. Upon succesful run, the
results will be placed in the 'output' directory.
Please note that every modification of 'model.h' should be followed by
recompilation of the program.
==========
REFERENCES
==========
[1] J. W. Halley, Herbert B. Shore, 'Equation-of-motion method for the
study of defects in insulators: Application to a simple model of
TiO2', Phys. Rev. B 36, 6640 (1987).
[2] J. W. Halley, M. T. Michalewicz, N. Tit, 'Electronic structure of
multiple vacancies in rutile TiO2 by the equation-of-motion method',
Phys. Rev. B 41, 10165 (1990).
[3] J.W. Halley, M. Kozlowski, M. Michalewicz, W. Smyrl, N. Tit,
'Photoelectrochemical spectroscopy studies of titanium dioxide
surfaces: theory and experiment', Surface Science 256 (1991) 397-408.
[4] Nacir Tit, J. W. Halley, M. T. Michalewicz, 'Electronic properties
of disordered anodic TiO2 (001) surfaces: Application of the
equation‐of‐motion method', Surface and Interface Analysis 18 (1992)
87-92.
[5] Marek T. Michalewicz, Herbert B. Shore, N. Tit, J.W. Halley,
'Equation of motion method for the electronic structure of disordered
transition metal oxides', Comput. Phys. Commun. 71 (1992), 222-234.
[6] N. Tit, J. Halley, M. T. Michalewicz, H. Shore, 'Role of oxygen
vacancies in anodic TiO2 thin films', Appl. Surf. Sci. 65/66 (1993)
246-251.
[7] M. T. Michalewicz, 'Massively parallel calculations of the
electronic structure of non-periodic micro-crystallites of transition
metal oxides', Comput. Phys. Commun. 79 (1994) 13-23.
[8] M. T. Michalewicz, M. Priebatsch, 'Perfect scaling of the
electronic structure problem on a SIMD architecture', Parallel
Computing 21 (1995) 853-870.
[9] M.T. Michalewicz, Roger Brown, 'Electronic structure computations
of very large nonperiodic atomic systems on Cray PVP and MPP
architectures', Computational Chemistry and Chemical Engineering,
World Scientific, pp. 301-313, 1996 (978-981-4545-80-8).
[10] Marek T. Michalewicz, Per Nyberg, 'Equation-of-Motion O(N)
Electronic Structure Studies of Very Large Systems (N ~ 10^7)',
Australian Journal of Physics 52(5) 919-927, 1999.
=======
LICENSE
=======
EQMO is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your
option) any later version.
EQMO is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with EQMO. If not, see <https://www.gnu.org/licenses/>.
This diff is collapsed.
This diff is collapsed.
1,1,1,1,1,1 'nLDOS(nincell),nincell=1,Nions), # of LDOS sites at u.c.'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of LDOS at loc 1, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of LDOS at loc 1, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of LDOS at loc 1, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of LDOS at loc 2, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of LDOS at loc 2, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of LDOS at loc 2, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of LDOS at loc 3, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of LDOS at loc 3, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of LDOS at loc 3, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of LDOS at loc 4, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of LDOS at loc 4, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of LDOS at loc 4, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of LDOS at loc 5, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of LDOS at loc 5, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of LDOS at loc 5, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of LDOS at loc 6, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of LDOS at loc 6, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of LDOS at loc 6, LE.20'
'EQMO program'
true, false, true
-30.00E+0, 35.00E+0, 0.05E+0
\ No newline at end of file
0,0,0,0,0,0 'nlv(nincell),nincell=1,Nions), # of defects at u.c. site'
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of vac at loc 1, LE.20'
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of vac at loc 1, LE.20'
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of vac at loc 1, LE.20'
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of vac at loc 2, LE.20'
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of vac at loc 2, LE.20'
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of vac at loc 2, LE.20'
1,10,1,2,5,7,12,53,99,102,0,0,0,0,0,0,0,0,0,0 'x coord of vac at loc 3, LE.20'
1,20,30,40,50,60,70,80,90,100,0,0,0,0,0,0,0,0,0,0 'y of vac at loc 3, LE.20'
1,1,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0 'z coord of vac at loc 3, LE.20'
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of vac at loc 4, LE.20'
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of vac at loc 4, LE.20'
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of vac at loc 4, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of vac at loc 5, LE.20'
3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of vac at loc 5, LE.20'
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of vac at loc 5, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'x coord of vac at loc 6, LE.20'
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'y coord of vac at loc 6, LE.20'
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 'z coord of vac at loc 6, LE.20'
\ No newline at end of file
! model.h - parameters for EQMO calculation
!
! Copyright (C) 1988, 1989, 1991, 1992, 1994, 1998, 1999, 2020, 2021
! Marek T. Michalewicz <m.michalewicz@icm.edu.pl>
!
! Copyright (C) 2020, 2021 Vadim Zhuravlev <v.zhuravlev@cent.uw.edu.pl>
! (MPI, NEC SX-Aurora TSUBASA implementation)
!
! Copyright (C) 1985 Herbert Shore
! (Prototype 2-D code with a single orbital)
!
! See README for references to relevant papers.
!
! This file is part of EQMO.
!
! EQMO is free software: you can redistribute it and/or modify it
! under the terms of the GNU General Public License as published by
! the Free Software Foundation, either version 3 of the License, or
! (at your option) any later version.
!
! EQMO is distributed in the hope that it will be useful, but WITHOUT
! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
! License for more details.
!
! You should have received a copy of the GNU General Public License
! along with EQMO. If not, see <https://www.gnu.org/licenses/>.
integer, parameter :: Nx=15, Ny=15, Nz=15, ideg=8, Nions=6, Nneigh=16, NMAX = 50, Norbit=5, Ntype=2, NW=512, &
Ndim=Nx*Ny*Nz*Nions, IordMx=Nx*Ny*Nz*Nions, Nxy=Nx*Ny, Nyz=Ny*Nz, Nxyz=Nx*Ny*Nz, Nwork=5*NW/2, NW_2=NW/2
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment