def write_FORCE_SETS_vasp(forces_filenames, displacements, filename='FORCE_SETS', is_zero_point=False, verbose=True): try: from lxml import etree except ImportError: print "You need to install python-lxml." sys.exit(1) if verbose: print "counter (file index):", num_atom = displacements['natom'] count = 0 are_files_correct = True if is_zero_point: force_files = forces_filenames[1:] if vasp.is_version528(forces_filenames[0]): zero_forces = vasp.get_forces_vasprun_xml(etree.iterparse( vasp.VasprunWrapper(forces_filenames[0]), tag='varray')) else: zero_forces = vasp.get_forces_vasprun_xml( etree.iterparse(forces_filenames[0], tag='varray')) if verbose: print "%d" % (count + 1), count += 1 if not check_forces(zero_forces, num_atom, forces_filenames[0]): are_files_correct = False else: force_files = forces_filenames zero_forces = None for i, disp in enumerate(displacements['first_atoms']): if vasp.is_version528(force_files[i]): disp['forces'] = vasp.get_forces_vasprun_xml(etree.iterparse( vasp.VasprunWrapper(force_files[i]), tag='varray')) else: disp['forces'] = vasp.get_forces_vasprun_xml( etree.iterparse(force_files[i], tag='varray')) if verbose: print "%d" % (count + 1), count += 1 if not check_forces(disp['forces'], num_atom, force_files[i]): are_files_correct = False if verbose: print write_FORCE_SETS(displacements, filename=filename, zero_forces=zero_forces) return are_files_correct
def write_FORCE_SETS_vasp(forces_filenames, displacements, filename='FORCE_SETS', is_zero_point=False, verbose=True): if verbose: print "counter (file index):", num_atom = displacements['natom'] count = 0 are_files_correct = True if is_zero_point: force_files = forces_filenames[1:] if vasp.is_version528(forces_filenames[0]): zero_forces = vasp.get_forces_vasprun_xml( iterparse(vasp.VasprunWrapper(forces_filenames[0]), tag='varray')) else: zero_forces = vasp.get_forces_vasprun_xml( iterparse(forces_filenames[0], tag='varray')) if verbose: print "%d" % (count + 1), count += 1 if not check_forces(zero_forces, num_atom, forces_filenames[0]): are_files_correct = False else: force_files = forces_filenames zero_forces = None for i, disp in enumerate(displacements['first_atoms']): if vasp.is_version528(force_files[i]): disp['forces'] = vasp.get_forces_vasprun_xml( iterparse(vasp.VasprunWrapper(force_files[i]), tag='varray')) else: disp['forces'] = vasp.get_forces_vasprun_xml( iterparse(force_files[i], tag='varray')) if verbose: print "%d" % (count + 1), count += 1 if not check_forces(disp['forces'], num_atom, force_files[i]): are_files_correct = False if verbose: print write_FORCE_SETS(displacements, filename=filename, zero_forces=zero_forces) return are_files_correct
def read_force_constant_vasprun_xml(filename): import sys try: from lxml import etree except ImportError: print "You need to install python-lxml." sys.exit(1) if vasp.is_version528(filename): vasprun = etree.iterparse(vasp.VasprunWrapper(filename)) else: vasprun = etree.iterparse(filename) return vasp.get_force_constants_vasprun_xml(vasprun)
def read_force_constant_vasprun_xml(filename): if vasp.is_version528(filename): vasprun = iterparse(vasp.VasprunWrapper(filename)) else: vasprun = iterparse(filename) return vasp.get_force_constants_vasprun_xml(vasprun)