def get_force_sets(interface_mode, num_atoms, num_displacements, force_filenames, disp_filename=None, verbose=True): if interface_mode is None or interface_mode == 'vasp': from phonopy.interface.vasp import parse_set_of_forces elif interface_mode == 'abinit': from phonopy.interface.abinit import parse_set_of_forces elif interface_mode == 'qe': from phonopy.interface.qe import parse_set_of_forces elif interface_mode == 'elk': from phonopy.interface.elk import parse_set_of_forces elif interface_mode == 'siesta': from phonopy.interface.siesta import parse_set_of_forces elif interface_mode == 'cp2k': from phonopy.interface.cp2k import parse_set_of_forces elif interface_mode == 'crystal': from phonopy.interface.crystal import parse_set_of_forces elif interface_mode == 'dftbp': from phonopy.interface.dftbp import parse_set_of_forces elif interface_mode == 'turbomole': from phonopy.interface.turbomole import parse_set_of_forces elif interface_mode == 'aims': from phonopy.interface.aims import parse_set_of_forces else: return [] force_sets = parse_set_of_forces(num_atoms, force_filenames, verbose=verbose) return force_sets
def write_force_constants_to_file_path(initial_structure, phonopy_inputs, vasp_xml_file_paths_list, file_path): """ Writes the phonopy-calculated force constants to file_path """ phonon = get_initialized_phononopy_instance(initial_structure, phonopy_inputs) sets_of_forces = parse_set_of_forces( num_atoms=get_supercell_atom_count(initial_structure, phonopy_inputs), forces_filenames=vasp_xml_file_paths_list) phonon.produce_force_constants(sets_of_forces) write_FORCE_CONSTANTS(phonon.get_force_constants(), filename=file_path)
def get_force_sets_wien2k(num_displacements, force_filenames, disp_filename, supercell, disp_dataset, wien2k_P1_mode=False, symmetry_tolerance=None, verbose=False): from phonopy.interface.wien2k import parse_set_of_forces disps, _ = get_displacements_and_forces(disp_dataset) force_sets = parse_set_of_forces(disps, force_filenames, supercell, wien2k_P1_mode=wien2k_P1_mode, symmetry_tolerance=symmetry_tolerance, verbose=verbose) return force_sets
def get_force_sets( interface_mode, num_atoms, force_filenames, verbose=True, ): """Read calculator output files and parse force sets. Note ---- Wien2k output is treated by ``get_force_sets_wien2k``. """ if interface_mode is None or interface_mode == "vasp": from phonopy.interface.vasp import parse_set_of_forces elif interface_mode == "abinit": from phonopy.interface.abinit import parse_set_of_forces elif interface_mode == "qe": from phonopy.interface.qe import parse_set_of_forces elif interface_mode == "elk": from phonopy.interface.elk import parse_set_of_forces elif interface_mode == "siesta": from phonopy.interface.siesta import parse_set_of_forces elif interface_mode == "cp2k": from phonopy.interface.cp2k import parse_set_of_forces elif interface_mode == "crystal": from phonopy.interface.crystal import parse_set_of_forces elif interface_mode == "dftbp": from phonopy.interface.dftbp import parse_set_of_forces elif interface_mode == "turbomole": from phonopy.interface.turbomole import parse_set_of_forces elif interface_mode == "aims": from phonopy.interface.aims import parse_set_of_forces elif interface_mode == "castep": from phonopy.interface.castep import parse_set_of_forces elif interface_mode == "fleur": from phonopy.interface.fleur import parse_set_of_forces else: return [] force_sets = parse_set_of_forces(num_atoms, force_filenames, verbose=verbose) return force_sets
def get_force_sets_wien2k( force_filenames, supercell, disp_dataset, wien2k_P1_mode=False, symmetry_tolerance=None, verbose=False, ): """Read Wien2k output files and parse force sets.""" from phonopy.interface.wien2k import parse_set_of_forces disps, _ = get_displacements_and_forces(disp_dataset) force_sets = parse_set_of_forces( disps, force_filenames, supercell, wien2k_P1_mode=wien2k_P1_mode, symmetry_tolerance=symmetry_tolerance, verbose=verbose, ) return force_sets
def create_FORCE_SETS(interface_mode, force_filenames, options, log_level): if interface_mode == "vasp": displacements = parse_disp_yaml(filename="disp.yaml") if ( interface_mode == "wien2k" or interface_mode == "abinit" or interface_mode == "elk" or interface_mode == "pwscf" or interface_mode == "siesta" ): displacements, supercell = parse_disp_yaml(filename="disp.yaml", return_cell=True) num_disp_files = len(force_filenames) if options.force_sets_zero_mode: num_disp_files -= 1 if len(displacements["first_atoms"]) != num_disp_files: print("") print("Number of files to be read don't match " "to number of displacements in disp.yaml.") return 1 if interface_mode == "vasp": from phonopy.interface.vasp import parse_set_of_forces is_parsed = parse_set_of_forces(displacements, force_filenames, is_zero_point=options.force_sets_zero_mode) if interface_mode == "abinit": from phonopy.interface.abinit import parse_set_of_forces print("**********************************************************") print("**** Abinit FORCE_SETS support is experimental. ****") print("**** Your feedback would be appreciated. ****") print("**********************************************************") is_parsed = parse_set_of_forces(displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == "pwscf": from phonopy.interface.pwscf import parse_set_of_forces print("**********************************************************") print("**** Pwscf FORCE_SETS support is experimental. ****") print("**** Your feedback would be appreciated. ****") print("**********************************************************") is_parsed = parse_set_of_forces(displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == "wien2k": from phonopy.interface.wien2k import parse_set_of_forces print("**********************************************************") print("**** Wien2k FORCE_SETS support is experimental. ****") print("**** Your feedback would be appreciated. ****") print("**********************************************************") is_parsed = parse_set_of_forces( displacements, force_filenames, supercell, is_distribute=(not options.is_wien2k_p1), symprec=options.symprec ) if interface_mode == "elk": from phonopy.interface.elk import parse_set_of_forces print("**********************************************************") print("**** Elk FORCE_SETS support is experimental. ****") print("**** Your feedback would be appreciated. ****") print("**********************************************************") is_parsed = parse_set_of_forces(displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == "siesta": from phonopy.interface.siesta import parse_set_of_forces print("**********************************************************") print("**** Siesta FORCE_SETS support is experimental. ****") print("**** Your feedback would be appreciated. ****") print("**********************************************************") is_parsed = parse_set_of_forces(displacements, force_filenames, supercell.get_number_of_atoms()) if is_parsed: write_FORCE_SETS(displacements, filename="FORCE_SETS") if log_level > 0: if is_parsed: print("FORCE_SETS has been created.") else: print("FORCE_SETS could not be created.") return 0
def create_FORCE_SETS(interface_mode, force_filenames, options, log_level): if interface_mode == 'vasp': displacements = parse_disp_yaml(filename='disp.yaml') if (interface_mode == 'wien2k' or interface_mode == 'abinit' or interface_mode == 'pwscf'): displacements, supercell = parse_disp_yaml(filename='disp.yaml', return_cell=True) num_disp_files = len(force_filenames) if options.force_sets_zero_mode: num_disp_files -= 1 if len(displacements['first_atoms']) != num_disp_files: print print( "Number of files to be read don't match " "to number of displacements in disp.yaml.") return 1 if interface_mode == 'vasp': from phonopy.interface.vasp import parse_set_of_forces is_parsed = parse_set_of_forces( displacements, force_filenames, is_zero_point=options.force_sets_zero_mode) if interface_mode == 'abinit': from phonopy.interface.abinit import parse_set_of_forces print "**********************************************************" print "**** Abinit FORCE_SETS support is experimental. ****" print "**** Your feedback would be appreciated. ****" print "**********************************************************" is_parsed = parse_set_of_forces(displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == 'pwscf': from phonopy.interface.pwscf import parse_set_of_forces print "**********************************************************" print "**** Pwscf FORCE_SETS support is experimental. ****" print "**** Your feedback would be appreciated. ****" print "**********************************************************" is_parsed = parse_set_of_forces(displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_set_of_forces print "**********************************************************" print "**** Wien2k FORCE_SETS support is experimental. ****" print "**** Your feedback would be appreciated. ****" print "**********************************************************" is_parsed = parse_set_of_forces( displacements, force_filenames, supercell, is_distribute=(not options.is_wien2k_p1), symprec=options.symprec) if is_parsed: write_FORCE_SETS(displacements, filename='FORCE_SETS') if log_level > 0: if is_parsed: print "FORCE_SETS has been created." else: print "FORCE_SETS could not be created." return 0
def create_FORCE_SETS(interface_mode, force_filenames, options, log_level): if interface_mode == 'vasp': displacements = parse_disp_yaml(filename='disp.yaml') if (interface_mode == 'wien2k' or interface_mode == 'abinit' or interface_mode == 'pwscf'): displacements, supercell = parse_disp_yaml(filename='disp.yaml', return_cell=True) num_disp_files = len(force_filenames) if options.force_sets_zero_mode: num_disp_files -= 1 if len(displacements['first_atoms']) != num_disp_files: print print ("Number of files to be read don't match " "to number of displacements in disp.yaml.") return 1 if interface_mode == 'vasp': from phonopy.interface.vasp import parse_set_of_forces is_parsed = parse_set_of_forces( displacements, force_filenames, is_zero_point=options.force_sets_zero_mode) if interface_mode == 'abinit': from phonopy.interface.abinit import parse_set_of_forces print "**********************************************************" print "**** Abinit FORCE_SETS support is experimental. ****" print "**** Your feedback would be appreciated. ****" print "**********************************************************" is_parsed = parse_set_of_forces( displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == 'pwscf': from phonopy.interface.pwscf import parse_set_of_forces print "**********************************************************" print "**** Pwscf FORCE_SETS support is experimental. ****" print "**** Your feedback would be appreciated. ****" print "**********************************************************" is_parsed = parse_set_of_forces( displacements, force_filenames, supercell.get_number_of_atoms()) if interface_mode == 'wien2k': from phonopy.interface.wien2k import parse_set_of_forces print "**********************************************************" print "**** Wien2k FORCE_SETS support is experimental. ****" print "**** Your feedback would be appreciated. ****" print "**********************************************************" is_parsed = parse_set_of_forces( displacements, force_filenames, supercell, is_distribute=(not options.is_wien2k_p1), symprec=options.symprec) if is_parsed: write_FORCE_SETS(displacements, filename='FORCE_SETS') if log_level > 0: if is_parsed: print "FORCE_SETS has been created." else: print "FORCE_SETS could not be created." return 0