Developed "EStA" software package for analyzing, pre-processing, and post-processing data from different software packages such as vasp, quantum-espresso, gaussian, GRRM, xTB, and so on. It can automatically generate input files for vasp, quantum-esspresso, and other codes as well can do some model calculations. It is written in python3, Fotran90, and some part in C. In future, it will be able to perform calculations for predicting electronic and transport properties.
automatic input generations for different electronic structure softwares
output analysis of different file formats such xml, yaml, json, and so on
vibrational and thermodynamical analysis of atomic and molecular systems
transition state finding using CI-NEB approach (interfaced with quantum-espresso for the time being!!)
zone centre phonon calculations based on gradient input (to be expanded to whole zone)
model calculations of lattice thermal conductivity (first principles calculation is experimental)
tight binding calculation of bulk materials
point group detection (space group detection and other stuff carried out using spglib)
lattice transformation analysis
machine learning prediction of *important* physical property
easy to use unit conversion routine; axsf, bxsf, cube files .. for visualizations etc
more routines (interfacing of xTB with GRRM, minimization procedures, fortran code for calculating static dielectric constant, mode oscillator strength etc..) are there, but to be added to esta package!!!
More to add about the theory:
Lattice transformation: to be added
point group symmetry: to be added
space group symmetry :
The geometric meaning of (W, w): How can one find the geometric meaning of a matrix–column pair ? (see Matrices, Mappings and Crystallographic Symmetry by Hans Wondratschek; page 64 of 82; good-sk!!)
Direct sum of matrix representatives: the matrix representative of operator A in space S is the direct sum of the matrix representatives of A in the component subspaces(say S1, S2,and S3 in 3D and so on). The space S must be decomposed into a sum of non-overlapping sub-spaces SI, S2.. .. under the A operator. [GROUP THEORY IN SOLID STATE PHYSICS BY D. F. JOHKSTON]
3D matrix as direct sum of 1D and 2D matrices. Find the example; you know it!! water example: space group operations ...confirm it!!
Direct product of matrix representatives: If S’ x S“ is the product space constructed from spaces S‘, basis {u_p,} and S”, basis {u_r}, each invariant under an operator A. The matrix representative of A in S’ x S” is the direct product of the matrix representatives of A in S’ and S”.
Decomposition of an invariant space: The concept of irreducibility raises a question: can a space S, invariant under a set of operators {A}, be decomposed into a sum of non-overlapping sub-spaces S', S", , , ,, each invariant and irreducible under {A} ? The answer is yes - if certain conditions are satisfied. We only give sufficient condition: if ( A } is a set of unitary operators, then complete decomposition of a finite space, invariant under (A}, is always possible.
Program to calculate the static dielectric constant from electronic dielectric constant, Born charges, and lattice vibrational stuff: see below what it can do!!
!==========================================================================
! Program to compute the static dielectric constant 'epsilon_zero'. =
!==========================================================================
! email: sonukumar.physics@gmail.com =
! Supervisor: Prof. H.C. Gupta =
! Lattice Dynamics Group, Indian Institute of Technology, Delhi - 110016 =
!==========================================================================
!!!! What it does !!!
! 1. static dielectric constant and contributing terms.
! 2. evaluate the value of the dielectric permittivity
! constant along the direction q^, unit vector.
! 3. reflectivity spectrum with no damping
!!!
! more functionalites to be added later on....
! -> sorting of phonon bands.
! -> LO-TO splitting
! -> LST relation at w=0 cm-1. (see bi et al.)
! -> reflectivity with damping
!==========================================================================
Program dielconst_static
use kinds, only : dp
use constants
Implicit none
!-----------------------------------------------------------------------------------------
double precision, parameter :: factor1 = four*pi*(two*ry_to_ev*8065.5)* &
(two*ry_to_ev*8065.5) !harte freq
integer, parameter :: maxfreq = 5000 !1100.0 cm-1 ! 16/6/2022 sk
integer :: ntyp, & ! typesatoms,
nat, & ! no.ofatoms,
ibrav,& ! ibravIndex ....
na, naa, nb, nbb, naa_z, &
i, j, icar, jcar, &
mu, mu_, nt, &
nu_i, iost !-- check if uninitialized ! 16/6/2022 sk
! integer arrays
integer :: nmodes, nmod, verbosity ! corrected 16June 2022
integer, allocatable :: ityp(:), nmodes1(:), nmodes2(:), nu_ii(:), &
nat_(:) ! only 5 atoms types are possible ! 16/6/2022 sk
! real variables
real(dp) :: celldm(6), at(3, 3), xq(3), epsilon_inf(3, 3), & ! at(3,3) -lattice matrix/vectors
epsilon_zero(3, 3), add, sum_sqr_mode, sum_prod_mode, &
osstrsum(3, 3), vol_ucell, factor2, q(3), & ! oscillatorStrength, volucell, factor, qvector
polarization_vector(3), reflect(maxfreq), & ! polarizationDirection, reflectivity
!nat_(5), & ! only 5 atoms types are possible
w1, m_0 ! w1, m_0 -- check if uninitialized ! 16/6/2022 sk
! real arrays
double precision, allocatable :: tau(:, :), phi(:, :, :, :), & ! atomicPositions, forceConstant
zstareu(:, :, :), w1_rydthz(:), w1_rydcm1(:), dynn(:, :, :), &
dynn_r(:, :, :), dynn_i(:, :, :), osstr_part(:, :), mode_chrg(:, :), &
osstr(:, :, :), mass(:), pmass(:), sq_mode_eff_charg(:), norm(:), &
tr_osstr(:), wnzone_rydcm1(:), diff_w(:)!,reflect(:)
! character variables
character :: symm_type*10, title, atm*2, flname*30, input_file*30 !,mass_flname*10
CHARACTER :: qe_version*10
! logical variables
logical :: check_orthogonal, check_file, l_correct_eignvec, &
loto_freq_relate, lreflectivity, lreal_epsilon
!--------------------------------------------------------------------------------------------------
!==========================================================================
! Program to compute the static dielectric constant 'epsilon_zero'. =
!==========================================================================
! email: sonukumar.physics@gmail.com =
! Supervisor: Prof. H.C. Gupta =
! Lattice Dynamics Group, Indian Institute of Technology, Delhi - 110016 =
!==========================================================================
!!!! What it does !!!
! 1. static dielectric constant and contributing terms.
! 2. evaluate the value of the dielectric permittivity
! constant along the direction q^, unit vector.
! 3. reflectivity spectrum with no damping
!!!
! more functionalites to be added later on....
! -> sorting of phonon bands.
! -> LO-TO splitting
! -> LST relation at w=0 cm-1. (see bi et al.)
! -> reflectivity with damping
!==========================================================================
Program dielconst_static
use kinds, only : dp
use constants
Implicit none
!-----------------------------------------------------------------------------------------
double precision, parameter :: factor1 = four*pi*(two*ry_to_ev*8065.5)* &
(two*ry_to_ev*8065.5) !harte freq
integer, parameter :: maxfreq = 5000 !1100.0 cm-1 ! 16/6/2022 sk
integer :: ntyp, & ! typesatoms,
nat, & ! no.ofatoms,
ibrav,& ! ibravIndex ....
na, naa, nb, nbb, naa_z, &
i, j, icar, jcar, &
mu, mu_, nt, &
nu_i, iost !-- check if uninitialized ! 16/6/2022 sk
! integer arrays
integer :: nmodes, nmod, verbosity ! corrected 16June 2022
integer, allocatable :: ityp(:), nmodes1(:), nmodes2(:), nu_ii(:), &
nat_(:) ! only 5 atoms types are possible ! 16/6/2022 sk
! real variables
real(dp) :: celldm(6), at(3, 3), xq(3), epsilon_inf(3, 3), & ! at(3,3) -lattice matrix/vectors
epsilon_zero(3, 3), add, sum_sqr_mode, sum_prod_mode, &
osstrsum(3, 3), vol_ucell, factor2, q(3), & ! oscillatorStrength, volucell, factor, qvector
polarization_vector(3), reflect(maxfreq), & ! polarizationDirection, reflectivity
!nat_(5), & ! only 5 atoms types are possible
w1, m_0 ! w1, m_0 -- check if uninitialized ! 16/6/2022 sk
! real arrays
double precision, allocatable :: tau(:, :), phi(:, :, :, :), & ! atomicPositions, forceConstant
zstareu(:, :, :), w1_rydthz(:), w1_rydcm1(:), dynn(:, :, :), &
dynn_r(:, :, :), dynn_i(:, :, :), osstr_part(:, :), mode_chrg(:, :), &
osstr(:, :, :), mass(:), pmass(:), sq_mode_eff_charg(:), norm(:), &
tr_osstr(:), wnzone_rydcm1(:), diff_w(:)!,reflect(:)
! character variables
character :: symm_type*10, title, atm*2, flname*30, input_file*30 !,mass_flname*10
CHARACTER :: qe_version*10
! logical variables
logical :: check_orthogonal, check_file, l_correct_eignvec, &
loto_freq_relate, lreflectivity, lreal_epsilon
!--------------------------------------------------------------------------------------------------