********************************************************************************
* *
* Aflow STEFANO CURTAROLO - Duke University 2003-2018 *
* High-Throughput ab-initio Materials Discovery *
* *
********************************************************************************
LATEST VERSION OF THE FILE: materials.duke.edu/AFLOW/README_AFLOW_AEL.TXT
********************************************************************************
Elastic properties calculated directly from stress-strain data.
This implementation in AFLOW written by Cormac Toher and Stefano Curtarolo,
and is described in the paper Phys. Rev. Materials 1, 015401 (2017),
and is developed from the method described in Scientific Data 2, 150009 (2015).
Please cite the papers mentioned above in addition to the standard AFLOW papers
if you use results obtained using the AFLOW AEL code.
The current version of AEL can calculate the Poisson ratio, bulk modulus, shear modulus,
compliance tensor and stiffness tensor (elastic constants). The results are written in a
variety of formats in different output files. For further details on the output files
written, see points (9) and (10) below. Other results can be written and plotted by
setting the appropriate values in the aflow.in file, as described in point (10) below.
AFLOW AEL expects a well relaxed structure on input. There is no additional relaxation
of the cell shape and size inside the AFLOW AEL, only of the ion positions. So, you
have to prepare such a structure by a separate AFLOW run using a relaxation mode for
energy and/or forces.
When AFLOW AEL is run, it will first check for the existence of the required DFT
calculations. If these exist, then it will extract the required information and
proceed to calculate the thermal properties. If these do not exist, then it will
create the required directories and aflow.in files, and then stop. By running AFLOW
with the "--D" and "--multi" flags, AFLOW will then automatically descend into these
subdirectories and run the required electronic structure calculations, after which it
will stop. The user will then have to rename or delete the LOCK file in the main
directory, and the run AFLOW again to calculate the thermal properties. This can all
be performed within a submission script as in the following example:
aflow --multi -D $pathname/ >> log.$PBS_JOBID
mv $pathname/LOCK $pathname/LOCK.old
aflow --multi -D $pathname/ >> log.$PBS_JOBID
This procedure is similar to that required to run AFLOW APL and AFLOW AGL.
1) To perform a AFLOW AEL calculation the following line has to be present in aflow.in:
[AFLOW_AEL]CALC
AFLOW checks for the existence of this line in aflow.in. If it does not exist, then
the job is not an AFLOW AEL calculation and no other AEL settings are read.
AEL can also be run from within other parts of AFLOW, such as from AGL, in order to
obtain properties such as Poisson ratio to be used within these other parts of AFLOW.
In this case, AEL will run and the other AEL settings in the aflow.in file will be
read, even if the "[AFLOW_AEL]CALC" line is not present.
2) The AFLOW AEL method requires a set of stress vs. strain data, which are obtained
from DFT calculations of a set of strained structures. There are two types of strains:
normal strains and shear strains. For each strain type, there are up to three
independent strain directions. The user has the possibility to set the number of
strained structures in each direction, and the size of the strain step, for each
type of strain. These parameters can be set by including the following lines in
the aflow.in file:
[AFLOW_AEL]NNORMALSTRAINS=number
[AFLOW_AEL]NSHEARSTRAINS=number
[AFLOW_AEL]NORMALSTRAINSTEP=number
[AFLOW_AEL]SHEARSTRAINSTEP=number
The default setting is 4 strains in each direction and a step size of 0.005. The
default is to apply both positive and negative strains, i.e. to both stretch and
compress the lattice. This can be controlled by including the following line in
the aflow.in file:
[AFLOW_AEL]NEGSTRAINS=option
A value of "ON" uses both positive and negative strains, while a value of "OFF"
uses positive strains only.
3) The AFLOW AEL method can use the symmetry of the lattice to reduce the number
of independent strains required for an elasticity calculation. For example, for
lattices with cubic symmetry, the three orthogonal directions are equivalent so
that there is only one independent strain direction for each type of strain. The
number of strain directions can be set automatically by including the following
line in the aflow.in file:
[AFLOW_AEL]STRAINSYMMETRY=option
The default is "OFF" so that all three directions are treated as independent for
each strain type. The number of independent strain directions can also be set
directly by the user by including the following line in the aflow.in file:
[AFLOW_AEL]NINDSTRAINS=number
The default value for the number of strain directions is three for each type of
strain.
The lattice symmetry can also be used to check the elastic constant tensor
calculated by AFLOW AEL. If the tensor does not have the correct symmetry,
AFLOW AEL will issue a warning for the user. This can be controlled by including
the following line in the aflow.in file:
[AFLOW_AEL]CHECKELASTICSYMMETRY=option
The default is "ON" so that the symmetry check is performed. The tolerance used
for checking the symmetry can be set by including the following line in the aflow.in
file:
[AFLOW_AEL]SYMTOLFRAC=number
The default value is 0.05, and refers to the fractional difference allowed between
two values which should be equal.
4) The AFLOW AEL method allows to choose whether or not to calculate and/or fit the
stress for the zero-strain system. The stress tensor for the zero-strain system can
be calculated by including the following line in the aflow.in file:
[AFLOW_AEL]CALCSTRAINORIGIN=option
The default is "OFF" so that the zero-strain system is not calculated. The zero-strain
stress can be included in the fitting points used to obtain the elastic constants by
including the following line in the aflow.in file:
[AFLOW_AEL]FITSTRAINORIGIN=option
The default is "OFF" so that the zero-strain system is not calculated. Note that if
the zero-strain system is fitted without the stress being explicitly calculated,
AFLOW AEL will use values of 0.0 for all elements of the stress tensor. This requires
the system to be very well relaxed (including cell size and shape) prior to the AEL
run in order to be valid.
The stress-strain data from a previous AFLOW relaxation can also be fitted by including
the following line in the aflow.in file:
[AFLOW_AEL]FITRELAXEDSTRUCT=option
The default is "OFF" so that the previously relaxed system is not calculated. Note
that this keyword requires that the results of a full AFLOW relaxation run be present
in the directory in which is AEL calculation is being run. This keyword is useful if
such a relaxation already exists, so that an additional point can be added to the
stress-strain data for the fit without the need for additional DFT calculations.
5) The PREC and ALGO settings for the VASP calculations for the strained systems are set
to ACCURATE and NORMAL by default. These values are chosen as tests of the AFLOW AEL
method has shown that these settings produce the most reliable results. To read the
values for PREC and ALGO from the original aflow.in file, the following line should
be included in the aflow.in file:
[AFLOW_AEL]PRECACCALGONORM=option
The default is "OFF" so that the PREC and ALGO settings in the initial aflow.in file
are ignored and the setting of PREC=ACCURATE and ALGO=NORMAL are used.
6) The stress tensor for a particular deformed system as calculated with VASP can be
read from either the OUTCAR file or from the vasprun.xml file. The stress tensor
can be read from the vasprun.xml file by including the following line in the aflow.in
file:
[AFLOW_AEL]VASPRUNXMLSTRESS=option
The default is "OFF" so that the stress tensor is read from the OUTCAR file.
7) The AFLOW AEL method allows the user to control what type of AFLOW runs are used to
calculate the stress tensor for each strained structure, independently of the [VASP_RUN]
setting contained in the original aflow.in file. The possible settings are RELAX=2,
RELAX_STATIC=2, and STATIC, and can be set by including the following lines in the
aflow.in file respectively:
[AFLOW_AEL]RELAX=option
[AFLOW_AEL]RELAX_STATIC=option
[AFLOW_AEL]STATIC=option
The default is RELAX_STATIC=ON, which runs RELAX_STATIC=2 for each strained structure.
8) Since multiple calculations are performed for each independent direction, there is a
certain amount of redundancy towards the failure of some of these calculations, and
therefore options have been implemented within AEL to allow for the skipping of one
or more failed run in each independent direction. Failed runs can be detected
automatically (by the absence of the appropriate LOCK or OUTCAR file in the directory),
and the option of whether or not to skip these runs can be set by including the
following line in the aflow.in file:
[AFLOW_AEL]AUTOSKIPFAILEDARUNS=option
The default is "OFF" so that no runs are skipped automatically; instead detection of
a failed run will cause AEL to exit with an error unless this particular run was
explicitly listed to be skipped.
Specific runs can be listed for skipping by including the following line in the aflow.in
file:
[AFLOW_AEL]SKIPFAILEDARUNS=directory_name_list
where "directory_name_list" is a string with the list of directory names containing the
failed runs to be skipped by the AEL fitting algorithm. If there is more than one failed
run, the individual directory names should be listed on the same line, separated by commas.
AEL only permits a certain number of runs for any given independent strain direction to
be skipped. The maximum number of runs permitted to be skipped in any strain direction
can be set by including the following line in the aflow.in file:
[AFLOW_AEL]SKIPARUNSMAX=number
The default value is 1, so that only one run can be skipped per independent direction.
Note that there is also a hard limit on the number of runs in a given direction which
can be skipped which is equal to half of the initial number of runs set up in that
direction.
9) The main output file for the AEL method is aflow.ael.out. It contains the AEL results
for the Poisson ratio, bulk modulus (Voigt, Reuss, and Voigt-Reuss-Hill (VRH)), shear
modulus (Voigt, Reuss, and Voigt-Reuss-Hill (VRH)), speed of sound, AEL Debye temperature,
and elastic anistropy. It also contains the elastic constants in the form of the stiffness
tensor and the compliance tensor.
Results are also written in JSON format in three files: AEL_elastic_tensor.json and
AEL_energy_structures.json. The file AEL_elastic_tensor.json contains the elastic
constants in the form of the individual elements of the stiffness and compliance
tensors. The file AEL_energy_structures.json contains the energies, stresses and pressures
for each calculated structure, as well as the structures themselves and the distortions
applied to them.
10) The AFLOW AEL method allows the user to choose whether or not to automatically write
the directional elastic moduli (Young's moduli, etc.) to a file. The writing of this
file can be controlled by including the following entry in the aflow.in file:
[AFLOW_AEL]WRITEFULLRESULTS=option
The default is "OFF", so that these tensors are not written.
Finally, the values of the Poisson ratio, bulk modulus, shear modulus and elastic
anistropy are written in a script-parsable format in the file aellib.dat. The format
used is the same as that used for the file aflowlib_entry.out. The elastic constants
(in the form of the stiffness and compliance tensor) are also written to files
independently of the value of the WRITEFULLRESULTS setting.
11) The elastic properties can be calculated at different pressures using AEL, which is
useful for determining the pressure range in which a material is mechanically stable.
This calculation is controlled by including the following line in the aflow.in file:
[AFLOW_AEL]PRESSURECALC=option
The default is "OFF", so that the elastic properties are only calculated at zero
pressure.
If this option is set to "ON", AEL will call AGL to run a set of different volume
calculations, to determine the pressure as a function of cell volume. This data is
then used to determine the cell volumes corresponding to the required pressures.
These pressures are provided by using the AGL pressure stepsize and number of
pressure steps options:
[AFLOW_AGL]SPRESSURE=number
[AFLOW_AGL]NPRESSURE=number
Once the appropriate volumes are determined from the AGL calculations, AEL then
generates the appropriate normal and shear strained structures, and calculates
the stress tensors with DFT. The elastic properties at different pressures are
then written in the file aflow.ael_pressure.out. The output data includes a
statement of whether or not the material is mechanically stable at each pressure.
Note that this method will only guarantee that the cell pressure will only have
the set value prior to any relaxation performed. Relaxing the ion positions, as
is the default for AEL, could result in a change in the cell pressure. Using the
STATIC option will prevent any relaxation, and will ensure that the set pressure
is obtained, although this will result in the "clamped ion" elastic tensor being
obtained.
12) The elastic tensor can be symmetrized after calculation. This option can be selected
by including the following line in the aflow.in file:
[AFLOW_AEL]SYMMETRIZE=option
The default is "OFF", so that the elastic tensor is not symmetrized. If the elastic tensor
is asymmetric, AEL will give a warning, and the user may want to symmetrize the tensor.
If the option is set to "ON", then the tensor is symmetrized according to the following
equation:
sc_{ij} = (c_{ij} + c_{ji}) / 2
where c_{ij} are the elements of the unsymmetrized tensor, and sc_{ij} are the elements of
the symmetrized tensor.
13) The symmetry for the VASP calculations for the strained structures can be switched on and off
by including the following line in the aflow.in file:
[AFLOW_AEL]VASPSYM=option
The default is "OFF", so that the VASP symmetry is switched off (sets SYM=0 in the INCAR file).
This is because the VASP symmetry routines can have problems with the distorted cells used for
calculating the elastic tensor. Setting this option to "ON" switches on the VASP symmetry.
14) EXAMPLE: CaO FCC with default AEL settings (note that this will give the same results if all of the "[AFLOW_AEL]"
lines except "[AFLOW_AEL]CALC" are removed or commented out):
[AFLOW] **************************************************
[AFLOW] Test file for AEL calculation of CaO (fcc)
[AFLOW] **************************************************
[AFLOW] **************************************************************************************************************************
[AFLOW] input file for aflow
[AFLOW_MODE=VASP]
[AFLOW] **************************************************************************************************************************
[AFLOW_MODE_ZIP=bzip2]
[AFLOW_MODE_BINARY=vasp46s]
[AFLOW] **************************************************************************************************************************
[AFLOW] **************************************************************************************************************************
[AFLOW_MODE_MPI]
[AFLOW_MODE_MPI_MODE]NCPUS=MAX
[AFLOW_MODE_MPI_MODE]COMMAND ="mpirun -np"
[AFLOW_MODE_MPI_MODE]AUTOTUNE
[AFLOW_MODE_MPI_MODE]BINARY="mpivasp46s"
[AFLOW] **************************************************************************************************************************
[AFLOW_SYMMETRY]CALC
#[AFLOW_SYMMETRY]SGROUP_WRITE
#[AFLOW_SYMMETRY]SGROUP_RADIUS=7.77
[AFLOW] **************************************************************************************************************************
#[AFLOW_NEIGHBOURS]CALC
[AFLOW_NEIGHBOURS]RADIUS=7.7
[AFLOW_NEIGHBOURS]DRADIUS=0.1
[AFLOW] **************************************************************************************************************************
#[AFLOW_APL]CALC // README_AFLOW_APL.TXT
[AFLOW_APL]ENGINE=DM // README_AFLOW_APL.TXT
[AFLOW_APL]DISMAG=0.015 // README_AFLOW_APL.TXT
[AFLOW_APL]MINATOMS=100 // README_AFLOW_APL.TXT
#[AFLOW_APL]SUPERCELL=3x3x3 // README_AFLOW_APL.TXT
[AFLOW_APL]DC=y // README_AFLOW_APL.TXT
[AFLOW_APL]DPM=y // README_AFLOW_APL.TXT
[AFLOW_APL]ZEROSTATE=y // README_AFLOW_APL.TXT
[AFLOW_APL]DOS=y // README_AFLOW_APL.TXT
[AFLOW_APL]TP=y // README_AFLOW_APL.TXT
[AFLOW_APL]TPT=0:2000:10 // README_AFLOW_APL.TXT
[AFLOW] **************************************************************************************************************************
#[AFLOW_QHA]CALC // README_AFLOW_APL.TXT
[AFLOW_QHA]GP_VOL_DISTORTION_PERCENTAGE=0.03 // README_AFLOW_APL.TXT
[AFLOW_QHA]DISPLACEMENTS=y // README_AFLOW_APL.TXT
[AFLOW_QHA]PROJECTION_DIR=1:1:1 // README_AFLOW_APL.TXT
[AFLOW_QHA]EOS=n // README_AFLOW_APL.TXT
[AFLOW_QHA]EOS_VOLRANGE_DIST=-2:4:0.5 // README_AFLOW_APL.TXT
[AFLOW_QHA]EOS_KPOINTS_MODE=32768:10000:20:100000 // README_AFLOW_APL.TXT
[AFLOW] **************************************************************************************************************************
#[AFLOW_AAPL]CALC // README_AFLOW_APL.TXT
[AFLOW_AAPL]TDMAG=0.015 // README_AFLOW_APL.TXT
[AFLOW_AAPL]CUT_SHELL=4 // README_AFLOW_APL.TXT
[AFLOW_AAPL]CUT_RAD=4.5 // README_AFLOW_APL.TXT
[AFLOW_AAPL]SUMRULE=1E-5 // README_AFLOW_APL.TXT
[AFLOW_AAPL]BTE=FULL // README_AFLOW_APL.TXT
[AFLOW_AAPL]THERMALGRID=21x21x21 // README_AFLOW_APL.TXT
[AFLOW_AAPL]ISOTOPE=y // README_AFLOW_APL.TXT
[AFLOW_AAPL]CUMULATIVEK=y // README_AFLOW_APL.TXT
[AFLOW_AAPL]BOUNDARY=n // README_AFLOW_APL.TXT
[AFLOW_AAPL]NANO_SIZE=100 // README_AFLOW_APL.TXT
[AFLOW_AAPL]TCT=200:700:20 // README_AFLOW_APL.TXT
[AFLOW] **************************************************************************************************************************
#[VASP_RUN]RELAX_STATIC_BANDS=2 // GENERATE | STATIC | RELAX=N | RELAX_STATIC=N | STATIC_BANDS | RELAX_STATIC_BANDS=N | REPEAT_BANDS [,DS[,DD[,DSCF]]]
#[VASP_FORCE_OPTION]NEGLECT_NOMIX
[VASP_FORCE_OPTION]CHGCAR=OFF // ON | OFF (default ON)
#[VASP_FORCE_OPTION]KPOINTS=keyword[,keyword] // EVEN | ODD | KSHIFT_GAMMA_EVEN | KSHIFT_GAMMA_ODD | KSCHEME_MONKHORST_PACK | KSCHEME_GAMMA | GAMMA | KEEPK | IBZKPT
[VASP_FORCE_OPTION]SYM=ON // ON | OFF (default ON)
[VASP_FORCE_OPTION]AUTO_PSEUDOPOTENTIALS=potpaw_PBE // pot_LDA | pot_GGA | potpaw_LDA | potpaw_GGA | potpaw_PBE
[VASP_FORCE_OPTION]NBANDS // Estimate Bands (better than VASP)
#[VASP_FORCE_OPTION]SPIN=ON,REMOVE_RELAX_1 // (ON | OFF (default ON)), REMOVE_RELAX_1 | _2
#[VASP_FORCE_OPTION]AUTO_MAGMOM=ON // ON | OFF (default OFF)
[VASP_FORCE_OPTION]RELAX_MODE=ENERGY // ENERGY | FORCES | ENERGY_FORCES | FORCES_ENERGY (default ENERGY)
[VASP_FORCE_OPTION]PREC=HIGH // (LOW | MEDIUM | NORMAL | HIGH | ACCURATE), PRESERVED (default=MEDIUM)
[VASP_FORCE_OPTION]ALGO=FAST // (NORMAL | VERYFAST | FAST | ALL | DAMPED), PRESERVED (default=NORMAL)
#[VASP_FORCE_OPTION]NOTUNE
[VASP_FORCE_OPTION]TYPE=DEFAULT // METAL | INSULATOR | SEMICONDUCTOR | DEFAULT (default DEFAULT)
[VASP_FORCE_OPTION]CONVERT_UNIT_CELL=SPRIM // SPRIM, SCONV, NIGGLI, MINK, INCELL, COMPACT, WS, CART, FRAC, PRES
#[VASP_FORCE_OPTION]VOLUME+=10.0
#[VASP_FORCE_OPTION]VOLUME*=1.05
[AFLOW] **************************************************************************************************************************
[AFLOW] **************************************************************************************************************************
[VASP_INCAR_MODE_EXPLICIT]START
SYSTEM=Ca1O1_ICSD_26959
NELM = 120
NELMIN=2
LPLANE=.TRUE.
LREAL=.FALSE.
LSCALU=.FALSE.
#NBANDS=XX # for hand modification
#IALGO=48 # for hand modification
[VASP_INCAR_MODE_EXPLICIT]STOP
[AFLOW] **************************************************************************************************************************
[VASP_KPOINTS_MODE_IMPLICIT]
[VASP_KPOINTS_FILE]KSCHEME=M
[VASP_KPOINTS_FILE]KPPRA=8000
[VASP_KPOINTS_FILE]STATIC_KSCHEME=M
[VASP_KPOINTS_FILE]STATIC_KPPRA=10000
[VASP_KPOINTS_FILE]BANDS_LATTICE=FCC
[VASP_KPOINTS_FILE]BANDS_GRID=20
[AFLOW] **************************************************************************************************************************
[AFLOW_AEL]CALC
[AFLOW_AEL]NNORMALSTRAINS=4
[AFLOW_AEL]NSHEARSTRAINS=4
[AFLOW_AEL]NORMALSTRAINSTEP=0.005
[AFLOW_AEL]SHEARSTRAINSTEP=0.005
[AFLOW_AEL]NEGSTRAINS=ON
[AFLOW_AEL]NINDSTRAINS=3
[AFLOW_AEL]STRAINSYMMETRY=OFF
[AFLOW_AEL]CHECKELASTICSYMMETRY=OFF
[AFLOW_AEL]SYMTOLFRAC=0.05
[AFLOW_AEL]WRITEFULLRESULTS=OFF
[AFLOW_AEL]CALCSTRAINORIGIN=OFF
[AFLOW_AEL]FITRELAXEDSTRUCT=OFF
[AFLOW_AEL]FITSTRAINORIGIN=OFF
[AFLOW_AEL]VASPRUNXMLSTRESS=OFF
[AFLOW_AEL]PRECACCALGONORM=ON
[AFLOW_AEL]SYMMETRIZE=OFF
[AFLOW_AEL]VASPSYM=ON
[AFLOW] **************************************************************************************************************************
[VASP_POSCAR_MODE_EXPLICIT]START
Ca1O1 #225 - (Ca1O1_ICSD_26959) - Ca1O1 [Ca1O1] cF8 Fm-3m CaO 225 Ca1O1_ICSD_26959 ICSD_26959 (icsd library) (WICKOFF 225 #225) [FCC,FCC,cF8] (STD_PRIM doi:10.1016/j.commatsci.2010.05.010)
1.224745
0.00000000000000 1.95061033183634 1.95061033183634
1.95061033183634 0.00000000000000 1.95061033183634
1.95061033183634 1.95061033183634 0.00000000000000
1 1
Direct(2) [A1B1]
0.00000000000000 0.00000000000000 0.00000000000000 Ca
0.50000000000000 0.50000000000000 0.50000000000000 O
[VASP_POSCAR_MODE_EXPLICIT]STOP
[AFLOW] **************************************************************************************************************************
[VASP_POTCAR_MODE_IMPLICIT]
[VASP_POTCAR_FILE]Ca
[VASP_POTCAR_FILE]O
[AFLOW] potpaw_PBE: Ca_sv O
[AFLOW] COMPOSITION_PP=|Ca_sv1|O1|
[AFLOW] COMPOSITION=|Ca1|O1|
[AFLOW] VOLUME(A^3)=|0|0|
[AFLOW] MASS(amu)=|40.08|15.9994|
[AFLOW] **************************************************************************************************************************
[AFLOW] Aflow automatically generated (aflow_avasp.cpp)
[AFLOW] **************************************************************************************************************************
[AFLOW] aflow/aconvasp/aqe/apennsy v(30793) in ICSD/FCC/Ca1O1_ICSD_26959
[AFLOW] **************************************************************************************************************************
[AFLOW] SELF-MODIFICATION
[AFLOW] Recycling CONTCAR of relax1
[AFLOW] **************************************************************************************************************************
[VASP_POSCAR_MODE_EXPLICIT]START
Ca1O1 #225 - (Ca1O1_ICSD_26959) - Ca1O1
1.224745
0.00000000000000 1.97560216103176 1.97560216103176
1.97560216103176 0.00000000000000 1.97560216103176
1.97560216103176 1.97560216103176 -0.00000000000000
1 1
Direct(2) [A1B1]
0.00000000000000 -0.00000000000000 -0.00000000000000
0.50000000000000 0.50000000000000 0.50000000000000
[VASP_POSCAR_MODE_EXPLICIT]STOP
[AFLOW] **************************************************************************************************************************
[VASP_FORCE_OPTION]SPIN=OFF // Self Correction
[AFLOW] SELF-MODIFICATION
[AFLOW] Recycling CONTCAR of relax2
[AFLOW] **************************************************************************************************************************
[VASP_POSCAR_MODE_EXPLICIT]START
Ca1O1 #225 - (Ca1O1_ICSD_26959) - Ca1O1
1.224745
0.00000000000000 1.97560216103176 1.97560216103176
1.97560216103176 0.00000000000000 1.97560216103176
1.97560216103176 1.97560216103176 0.00000000000000
1 1
Direct(2) [A1B1]
0.00000000000000 0.00000000000000 0.00000000000000
0.50000000000000 0.50000000000000 0.50000000000000
[VASP_POSCAR_MODE_EXPLICIT]STOP
[AFLOW] **************************************************************************************************************************