Skip to content

Commit

Permalink
Merge pull request #1521 from sthartman/master
Browse files Browse the repository at this point in the history
Pseudo_zval bugfix
  • Loading branch information
shyuep committed Jul 4, 2019
2 parents 305b5bd + 219019b commit 0525ee5
Show file tree
Hide file tree
Showing 3 changed files with 5,255 additions and 8 deletions.
18 changes: 10 additions & 8 deletions pymatgen/io/vasp/outputs.py
Expand Up @@ -2583,27 +2583,29 @@ def read_pseudo_zval(self):
Create pseudopotential ZVAL dictionary.
"""
try:
def poscar_line(results, match):
poscar_line = match.group(1)
results.poscar_line = re.findall(r'[A-Z][a-z]?', poscar_line)
def atom_symbols(results, match):
element_symbol = match.group(1)
if not hasattr(results, 'atom_symbols'):
results.atom_symbols = []
results.atom_symbols.append(element_symbol.strip())

def zvals(results, match):
zvals = match.group(1)
results.zvals = map(float, re.findall(r'-?\d+\.\d*', zvals))

search = []
search.append([r'^.*POSCAR.*=(.*)', None, poscar_line])
search = []
search.append([r'(?<=VRHFIN =)(.*)(?=:)', None, atom_symbols])
search.append([r'^\s+ZVAL.*=(.*)', None, zvals])

micro_pyawk(self.filename, search, self)

zval_dict = {}
for x, y in zip(self.poscar_line, self.zvals):
zval_dict = {}
for x, y in zip(self.atom_symbols, self.zvals):
zval_dict.update({x: y})
self.zval_dict = zval_dict

# Clean-up
del (self.poscar_line)
del (self.atom_symbols)
del (self.zvals)
except:
raise Exception("ZVAL dict could not be parsed.")
Expand Down
5 changes: 5 additions & 0 deletions pymatgen/io/vasp/tests/test_outputs.py
Expand Up @@ -685,6 +685,11 @@ def test_pseudo_zval(self):
self.assertDictEqual({'Ba': 10.00, 'Ti': 10.00, 'O': 6.00},
outcar.zval_dict)

filepath = self.TEST_FILES_DIR / "OUTCAR.LaSnNO2.polar"
outcar = Outcar(filepath)
self.assertDictEqual({'La': 11.0, 'N': 5.0, 'O': 6.0, 'Sn': 14.0},
outcar.zval_dict)

def test_dielectric(self):
filepath = self.TEST_FILES_DIR / "OUTCAR.dielectric"
outcar = Outcar(filepath)
Expand Down

0 comments on commit 0525ee5

Please sign in to comment.