def __init__(self, poscar='POSCAR'): if type(poscar) is str: try: poscar_lines = Cabinet.read_file(poscar) except IOError: print("error: vaspy.Poscar could not " "find '{0}' file !!!".format(poscar)) exit() elif type(poscar) is list: poscar_lines = poscar elif poscar is None: print("POSCAR was not read !!! (Template POSCAR is loaded !!!)") poscar = os.path.join(MODULE_DIR, '../sorce/originalsVASP', 'poscar') poscar_lines = Cabinet.read_file(poscar) self.poscar_title = poscar_lines[0] self.cell_scale = float(poscar_lines[1]) self.cell_lattices = Cabinet.conv_lines2array(poscar_lines[2:5]) # self.cell_latticesはarrayとして読み込む if poscar_lines[5].split()[0].isdigit(): # vasp4 self.elements = None self.num_atoms = [int(x) for x in poscar_lines[5].split()] i = sum(self.num_atoms) self.cell_sites = Cabinet.conv_lines2array(poscar_lines[7:7+i]) self.vasp_version = 4 else: self.elements = poscar_lines[5].split() # vasp5 self.num_atoms = [int(x) for x in poscar_lines[6].split()] i = sum(self.num_atoms) self.cell_sites = Cabinet.conv_lines2array(poscar_lines[8:8+i]) self.vasp_version = 5