x_error_force_constant_and_frequencies_selective_subspace
esta.phonon.x_error_force_constant_and_frequencies_selective_subspace
¶
get_forces_dict(atommove)
¶
get forces fron qe output files with + and - displacements and store them in dictionary with indices indication atoms moving index, atom shift index, and displacemet(+ or -)
get_forces_dict_parta(atommove)
¶
get forces fron qe output files with + and - displacements and store them in dictionary with indices indication atoms moving index, atom shift index, and displacemet(+ or -)
get_idatm_iddir_iddispl(atommove)
¶
get a list of 'idatm-iddir-iddispl' idatm: atom id iddir : atom move direction index iddispl: + or - shift of atoms
atom_direction_shift ==> id atom, id direction, id shift
get_forces_minus(atommove, forces_dict, atom_direction_shift)
¶
extract forces from forces_dict for minus (id=0) displacement
get_forces_plus(atommove, forces_dict, atom_direction_shift)
¶
extract forces from forces_dict for plus (id=1) displacement
get_symmetrized_force_constant_matrix(fcMatrx, atommove)
¶
symmetrize force constant matrix fc(iat, ia, jat, ja)
return (fc(iat, ia, jat, ja) + fc(jat, ja, iat, ia))/2
get_asr(fcMatrix, atommove)
¶
apply accoustic sum rule on the force constant matrix
see Xavier gonze PRB paper:
XAVIER GONZE AND CHANGYOL LEE PHYSICAL REVIEW B VOLUME 55, NUMBER 16 15 APRIL 1997-I
specifically see equations: 44 and 45.. good luck ..read whole paper..sk!!
write_forces(force_row, ldisp)
¶
may be you need to add ... atoms parameter in the call ..
write forces rows to a file NOTE: only for - and + displacement
todo : for writing central diff force constant .. no need of ldisp tag
get_sqrt_mass_array(label)
¶
for given atomic symbols, return correspoinding masses in amu
get_dynamical_matrix(atommove, sqrt_mass_array, forceconstant)
¶
getting dynamical matrix from force constant matrix at q=0 point
NOTE: for q=0
1. dynmat = fc matric/ sqrt(mass1)/ sqrt(mass2)
2. dynmat in q space = dynmat in R space; see equation 7 in
paper of Ab initio calculation of phonon dispersions in semiconductors
prb. Paolo Giannozzi et al. 1991
get_eigen(dynamatical_matrix)
¶
dynamical matrix is hermitian matrix .. try taking it Hermitian matrix instead of general matrix