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_FORCES(lattice, forces_filenames, displacements, filename='FORCE_SETS', amplitude=0.01, mode='vasp', is_zero_point=False, is_fropho_disp=False): if mode == "vasp": try: from lxml import etree except ImportError: print "You need to install python-lxml." sys.exit(1) if is_zero_point: force_files = forces_filenames[1:] if mode == "wien2k": zero_forces = wien2k.get_forces_wien2k(forces_filenames[0], lattice) else: # "vasp" case zero_forces = \ vasp.get_forces_vasprun_xml(etree.iterparse( vasp.VasprunWrapper(forces_filenames[0]), tag='varray')) else: force_files = forces_filenames zero_forces = None displacements = sort_displacements(displacements) forces = [] # Show progress print >> sys.stderr, "counter (file index):", for i in range(len(displacements)): if mode == "wien2k": # wien2k forces.append(wien2k.get_forces_wien2k(force_files[i], lattice)) else: # vasp forces.append( vasp.get_forces_vasprun_xml( etree.iterparse(vasp.VasprunWrapper(force_files[i]), tag='varray'))) write_FORCES_from_forces(lattice, forces, displacements, amplitude, filename, zero_forces, is_fropho_disp, verbose=True) # Show progress print >> sys.stderr, "\n"
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 write_FORCES( lattice, forces_filenames, displacements, filename='FORCE_SETS', amplitude=0.01, mode='vasp', is_zero_point=False, is_fropho_disp=False ): if mode == "vasp": try: from lxml import etree except ImportError: print "You need to install python-lxml." sys.exit(1) if is_zero_point: force_files = forces_filenames[1:] if mode == "wien2k": zero_forces = wien2k.get_forces_wien2k(forces_filenames[0], lattice) else: # "vasp" case zero_forces = \ vasp.get_forces_vasprun_xml(etree.iterparse( vasp.VasprunWrapper( forces_filenames[0] ), tag='varray' ) ) else: force_files = forces_filenames zero_forces = None displacements = sort_displacements( displacements ) forces = [] # Show progress print >> sys.stderr, "counter (file index):", for i in range( len( displacements ) ): if mode == "wien2k": # wien2k forces.append( wien2k.get_forces_wien2k( force_files[i], lattice ) ) else: # vasp forces.append( vasp.get_forces_vasprun_xml( etree.iterparse( vasp.VasprunWrapper( force_files[i] ), tag='varray') ) ) write_FORCES_from_forces( lattice, forces, displacements, amplitude, filename, zero_forces, is_fropho_disp, verbose=True ) # Show progress print >> sys.stderr, "\n"
def write_FORCE_SETS_vasp( forces_filenames, displacements, num_atom, 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 is_zero_point: force_files = forces_filenames[1:] zero_forces = vasp.get_forces_vasprun_xml(etree.iterparse( vasp.VasprunWrapper( forces_filenames[0] ), tag='varray' ) ) else: force_files = forces_filenames zero_forces = None displacements = sort_displacements( displacements ) forces = [] # Show progress for i in range( len( displacements ) ): forces.append( vasp.get_forces_vasprun_xml( etree.iterparse( vasp.VasprunWrapper( force_files[i] ), tag='varray') ) ) if is_zero_point: dummy_forces = [ zero_forces ] + forces else: dummy_forces = forces if is_forces_read( dummy_forces, num_atom, forces_filenames ): if verbose: print >> sys.stderr, "counter (file index):", write_FORCE_SETS( filename, num_atom, displacements, forces, zero_forces, verbose ) return True else: return False
def write_FORCE_SETS_vasp(forces_filenames, displacements, num_atom, 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 is_zero_point: force_files = forces_filenames[1:] zero_forces = vasp.get_forces_vasprun_xml( etree.iterparse(vasp.VasprunWrapper(forces_filenames[0]), tag='varray')) else: force_files = forces_filenames zero_forces = None forces = [] # Show progress for i in range(len(displacements)): forces.append( vasp.get_forces_vasprun_xml( etree.iterparse(vasp.VasprunWrapper(force_files[i]), tag='varray'))) if is_zero_point: dummy_forces = [zero_forces] + forces else: dummy_forces = forces if is_forces_read(dummy_forces, num_atom, forces_filenames): if verbose: print >> sys.stderr, "counter (file index):", write_FORCE_SETS(filename, num_atom, displacements, forces, zero_forces, verbose) return True else: return False