G(P,T): A Gibbs Free Energy Package
Lizhi Ouyang (c)
Spring, 2005
CONTENT
Program Details
Examples
Future plan
Bibliography
1. Introduction
2.1 Installation
Obtains the package. Please email lizhi for detail.
At your home directory, type
[prompt]> gzip -dc gpt.tar.gz | tar xf -cd ~/gpt
Run
./installInstallation complete.
2.2 Directory structure
Home/
|---------------bin (executable directory)
|---------------gpt
|--------examples (examples included in the package)
|--------kp (special k-point sets of all 14 lattices for dispersion or band plot)2.3 File lists
Prerequisitions:
Bash and Perl Scripts:
calFVT: Bash script that automates the calculation of Helmholtz free energy H. calFVT utilizes calPHONON to calculate the Helmholtz free energy for a serial of volumes;
Purpose: calFVT calculates F(V,T) for a set of predefined volume with a scale factor ranging from 0.97 to 1.03 with incremental step of 0.01. It produces a console output and an identical copy appended to file LOG.
Usage:
[For console output] calFVT [-command options]
[For background run] calFVT [-command options] > /dev/null 2>&1 &Options:
-n: no optimization. This is designed for systems of no-internal structural parameters.Input file dependence:
INCAR.opt, INCAR.phonon.scf, POSCAR, POTCAR, KPOINTS.opt, KPOINTS.phonon.calPHONON: Bash script that automates the calculation of Phonon frequency, Density of State, Free energy and other thermodynamic properties for a fixed volume V;
Purpose: calPHONON calculates phonon dispersion, phonon DOS and several important thermodynamic quantities such as: internal energy, free energy, entropy, etc.
Usage: not designed to be directly called. Called by calFVT.
Options: N/A
Input file dependence: same as calFVT plus OPTCELL
calPhon: An independent script that calculate the phonon dispersion, phonon density of states and others
Purpose: calPhon calculates phonon dispersion, phonon DOS and several important thermodynamic quantities such as: internal energy, free energy, entropy, etc.
Usage:
[For console output] calPhon [-command options]
[For background run] calPhon [-command options] > /dev/null 2>&1 &Options:
-n: no optimizationInput file dependence:
INCAR.opt, INCAR.phonon.scf, POSCAR, POTCAR, KPOINTS.opt, KPOINTS.phononcalBP: Bash script that automates the calculation of Born effective charge using the Berry phase approach implemented in VASP;
Purpose: calBP calculates Born Effective Charge tensor using the berry-phase method in VASP.
Usage: (can be used independently)
[For console output] calBP [-command options]
[For background run] calBP [-command options] > /dev/null 2>&1 &Options:
Input file dependence:
INCAR.bp.scf, INCAR.bp.pol, POSCAR.sc, KPOINTS.bp, POTCAR
Purpose: calOPTICS calculates the optical dielectric tensor using VASP.
Usage:
[For console output] calOPTICS [-command options]
[For background run] calOPTICS [-command options] > /dev/null 2>&1 &Options: N/A
Input file dependence:
INCAR.optics.scf, INCAR.optics.band, POSCAR.sc, KPOINTS.optics, POTCAR, OPTCTR
Purpose: calELASTIC calculates the elastic tensor using VASP
Usage:
[For console output] calELASTIC [-command options]
[For background run] calELASTIC [-command options] > /dev/null 2>&1 &Options: N/A
Input file dependence:
INCAR.opt, KPOINTS.opt, POSCAR, POTCARcalForce:
Purpose: calForce calculates the forces due to small perturbations to the optimized supercell. It is called by calPHONON and calPhon.
Usage: N/A
Options: N/A
Input file dependence: same as calPHONON/calPhon
moveatom:
Purpose: Subroutine for calBP
Usage: N/A
Options: N/A
Input file dependence: N/A
dipole_center:
Purpose: Subroutine for calBP
Usage:
Options
Input file dependence:
berry:
Purpose: Subroutine for calBP
Usage:
Options
Input file dependence:
fvt2gpt:
Purpose: Convert F(V,T) data to G(P,T)
Usage:
fvt2gpt < FVT.dat > GPT.datOptions: N/A
Input file dependence: none
plot.band:
Purpose: Plot the phonon dispersion using Gnuplot
Usage:
plot.band <terminal type>Options: N/A
Input file dependence: FREQ.bcm
gen_skpt:
Purpose: Generate special k-point positions
Usage:
gen_skptOptions: N/A
Input file dependence: phon.disp.out
3. Program Details
[brief introduction]
3.1 Job directory structure
Because of the enormous number of intermediate files generated during the Gibbs Free energy calculation, GPT package maintains a tree-like structure under each job. The following diagram illustrates the tree structure;
<Job name, for example MgO>
|--------Input ( Input files for the GPT package )
|
|--------<a serial of directories: for example, 0.97/, 0.98/, ..., 1.03/>
| |---------Input (Input files for calPHONON, etc.)
| |---------geom (fix volume relaxation)
| |---------phonon (phonon calculation, for calPHONON)
| | |---------<a serial of directories with name [id of atom]#[id of direction]>
| |---------optics (optical dielectric tensor calculation, for calOPTICS)
| |---------BP (Born effective charge calculation, for calBP)
|
|--------etensor (Directory for calELASTIC)
3.2 Input files
The bold letter indicate the file name used in the calculation. The extension name indicates the purpose of the job. For example, INCAR.opt is a INCAR file for VASP calculation, the purpose of the job is to optimize the geometry of the structure described in POSCAR. The reason to have a different input file for each type of calculation is that different type of calculation may require different accuracy setting and k-point sampling. For example, for optical dielectric tensor calculation, a much large set of k-points may be required to obtain sufficient accuracy. On the other hand, for Berry phase calculation, a medium fine k-point mesh and accuracy would be sufficient. The main problem with this approach is that there are a large set of input file needs to be prepared and maintaining the consistency among the input files is not straightforward. Script makeGPTinput to generate input file sets from GULP input file and a few compound accuracy control words such as "ACCURACY=PRODUCTION, MEDIUM, TEST" is currently under development.
INPHON:
Input for the PHON program. Details about the input file format can be found here;
Important parameters in the INPHON file;
NDIM = <Nx Ny Nz> (super cell size): This is the most important parameter in the phonon calculation using the direct method. A super cell with the size > 7~8Å is generally needed to properly describe long wave length modes.
TEMP = <T_end> (the highest temperature). This is the temperature parameter used to calculate the Fn(V,T) curve.
QA =<na>; QB=<nb>;QC=<nc>. This is the k-point sampling for phonon DOS calculation. QA,QB,QC should be large to obtain a smooth DOS curve (In general, QA,QB,QC>=20)
NPOINTS=<np>. Number of K-point per phonon dispersion segments.
Several enhancements have been added to the original PHON program:
Symmetry analysis of zone center phonon modes. the results can be found in file MODES under the directory $(current_job)/$(volume)/phonon;
Non-analytical contribution that leads to
LO/TO splitting. Add the following line into the INPHON file
will cause the calFVT script to initiate Berry Phase
calculation to obtain Born effective charge and optical
calculation to obtain the optical dielectric tensor:
LNONANALYTICAL = .T.
Calculate Helmholtz free energy and other thermodynamic properties from temperature T=0 to the temperature specified in INPHON (TEMP = <maximum temperature>).
A special k-point set has been generated for each lattice type. You can simply copy and paste into the INPHON file. The location of this dataset is at ${HOME}/gpt/kp/.
Special note: donot remove the following comment line
before the special k-point section
#SKPT::<special k-point
sequence>
script gen_skpt parses this line to generate special
k-point set for plot.band
INCAR.opt:
VASP Input file INCAR for geometry optimization, elastic tensor calculation;
make sure accuracy settings are consistent with INCAR.phonon.scf;
INCAR.phonon.scf:
VASP input file for force evaluation. Required for calPHONON;
INCAR.optics.scf: [optional: invoked by LNONANALYTICAL = .T.]
VASP input file for VASP optical properties calculation (SCF part);
INCAR.optics.band: [optional: invoked by LNONANALYTICAL = .T.]
INCAR for VASP optical properties calculation (Transition Matrix);
INCAR.bp.scf: [optional: invoked by LNONANALYTICAL = .T.]
INCAR for VASP Berry Phase calculation (SCF part)
Normal accuracy is sufficient
INCAR.bp.pol: [optional: invoked by LNONANALYTICAL = .T.]
INCAR for VASP Berry Phase calculation (Polarization part)
Normal accuracy is sufficient
KPOINTS.opt
VASP input file KPOINTS for geometry optimization
one of the key factor control the computation time and accuracy
The rule of thumb is that K_mesh_points * number_of_atoms >= 1000
KPOINTS.bp: [optional: invoked by LNONANALYTICAL = .T.]
VASP input file KPOINTS for berry phase calculation (medium fine K-grid)
KPOINTS.optics: [optional: invoked by LNONANALYTICAL = .T.]
VASP input file KPOINTS for optical calculation (need much finer K-grid)
POTCAR:
VASP input file POTCAR
3.3 Output file
FVT.dat: Helmholtz free energy F(V,T). Generated by script calFVT
GPT.dat: Gibbs free energy G(P,T). Generated by script fvt2gpt
ETENSOR: elastic tensor. Generated by script calELASTIC
MODES: zone center phonon modes symmetry analysis. Generated by phon program
FREQ.*: phonon dispersion. Generated by phon program
BORNCHG: Born effective charge. Generated by script calBP
EPS: Optical dielectric constant. Generated by script calOPTICS
4. Examples
MgO: MgO is an ionic crystal with a simple crystal structure. [See ~/gpt/examples/MgO/ for details]
Task 1: phonon calculation for a specific volume; phonon
dispersion, DOS;
==> No LO/TO splitting
Step 1: Input preparation: in directory $examples/MgO/Input;
INCAR.opt: PREC=Accurate, ENCUT=600eV,
EDIFF=1.0E-8, EDIFFG=-1.0E-5
INCAR.phonon.scf: PREC=Accurate,
ENCUT=600eV
KPOINTS.opt: 4x4x4,
Monkhorst-Pack
KPOINTS.phonon: 4x4x4
POSCAR:
primitive cell
POTCAR: PAW
LDA potential
INPHON:
specify 2x2x2 supercell
Step 2: Run
cd $examples/MgO;
calFVT > /dev/null 2>&1 &
Step 3: Results analysis
cd $examples/MgO/1.00/phonon;
cat MODES
gen_skpt
plot.band tek40xx
<plot.dos tek40xx>
==> Including LO/TO splitting
Step 1: Input preparation
Step 2: Run
Step 3: Results analysis
Task 2: Elastic tensor calculation
Step 1: Input preparation
Step 2: Run
Step 3: Results analysis
5. Future plan
GPT is a very computation intense package. Parallelization at batch job level is a very important direction for improving its performance. In fact, many tasks, here a task referring a first principles calculation, are easy-parallelizable tasks that require virtually no-inter communications among individual tasks. For example, force calculations after small perturbations from the equilibrium position. Each force calculation is complete independence task and there is no inter-dependence between each force calculations. I am currently evaluating the two solutions: a parallel job queuing system;
6. Bibliography
Lizhi Ouyang, W.Y. Ching, Phys. Stat. Sol. (b) 242, R66, 2005 (Rap. Res. Lett.)