nbands=8*3, width=0.01, kpts=(2, 2, 2), convergence={'eigenstates': 1e-9} ) # Phonopy pre-process print "------" print "Phonon" print "------" # 1st arg. is the input unit cell. # 2nd arg. is the supercell lattice relative to the unit cell. # 'distance' is the distance of displacements. # Default symmetry tolerance is 1e-5 in fractional coordinates. phonon = Phonopy(bulk, [[1,0,0],[0,1,0],[0,0,1]], distance=0.01) phonon.print_displacements() supercells = phonon.get_supercells_with_displacements() # Force calculations by calculator set_of_forces = [] for scell in supercells: cell = Atoms( symbols=scell.get_chemical_symbols(), scaled_positions=scell.get_scaled_positions(), cell=scell.get_cell(), pbc=True ) cell.set_calculator(calc) forces = cell.get_forces() drift_force = forces.sum(axis=0) print " ---------------------------------" print " ", "%11.5f"*3 % tuple(drift_force) # Simple translational invariance
bulk = diamond(a, 14) pot = Potential('IP SW') bulk.set_calculator(pot) # Phonopy pre-process print "------" print "Phonon" print "------" # 1st arg. is the input unit cell. # 2nd arg. is the supercell lattice relative to the unit cell. # 'distance' is the distance of displacements. # Default symmetry tolerance is 1e-5 in fractional coordinates. phonon = Phonopy(bulk, [[1, 0, 0], [0, 1, 0], [0, 0, 1]], distance=0.01, factor=VaspToTHz) phonon.print_displacements() supercells = phonon.get_supercells_with_displacements() # Do force calculations using QUIP Potential set_of_forces = [] for cell in supercells: forces = pot.get_forces(cell) drift_force = forces.sum(axis=0) print " ---------------------------------" print " ", "%11.5f" * 3 % tuple(drift_force) # Simple translational invariance for force in forces: force -= drift_force / forces.shape[0] set_of_forces.append(forces) # Phonopy post-process