Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions pyiron_vasp/dft/bader.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@
# Copyright (c) Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department
# Distributed under the terms of "New BSD License", see the LICENSE file.

from typing import Optional, Tuple
import numpy as np
import os
import subprocess

from ase.atoms import Atoms
from pyiron_vasp.vasp.volumetric_data import VaspVolumetricData


Expand All @@ -29,7 +31,7 @@ class Bader:
.. _Bader code: http://theory.cm.utexas.edu/henkelman/code/bader
"""

def __init__(self, structure, working_directory):
def __init__(self, structure: Atoms, working_directory: str) -> None:
"""
Initialize the Bader module

Expand All @@ -39,7 +41,7 @@ def __init__(self, structure, working_directory):
self._working_directory = working_directory
self._structure = structure

def _create_cube_files(self):
def _create_cube_files(self) -> None:
"""
Create CUBE format files of the total and valce charges to be used by the Bader program
"""
Expand All @@ -53,7 +55,9 @@ def _create_cube_files(self):
filename=os.path.join(self._working_directory, "total_charge.CUBE")
)

def compute_bader_charges(self, extra_arguments=None):
def compute_bader_charges(
self, extra_arguments: Optional[str] = None
) -> Tuple[np.ndarray, np.ndarray]:
"""
Run Bader analysis on the output from the DFT job

Expand All @@ -74,14 +78,14 @@ def compute_bader_charges(self, extra_arguments=None):
self._remove_cube_files()
return self._parse_charge_vol()

def _remove_cube_files(self):
def _remove_cube_files(self) -> None:
"""
Delete created CUBE files
"""
os.remove(os.path.join(self._working_directory, "valence_charge.CUBE"))
os.remove(os.path.join(self._working_directory, "total_charge.CUBE"))

def _parse_charge_vol(self):
def _parse_charge_vol(self) -> Tuple[np.ndarray, np.ndarray]:
"""
Parse Bader charges and volumes

Expand All @@ -93,7 +97,7 @@ def _parse_charge_vol(self):
return parse_charge_vol_file(structure=self._structure, filename=filename)


def call_bader(foldername, extra_arguments=None):
def call_bader(foldername: str, extra_arguments: Optional[str] = None) -> int:
"""
Call the Bader program inside a given folder

Expand All @@ -111,7 +115,9 @@ def call_bader(foldername, extra_arguments=None):
return subprocess.call(cmd, shell=True, cwd=foldername)


def parse_charge_vol_file(structure, filename="ACF.dat"):
def parse_charge_vol_file(
structure: Atoms, filename: str = "ACF.dat"
) -> Tuple[np.ndarray, np.ndarray]:
"""
Parse charges and volumes from the output file

Expand All @@ -130,7 +136,9 @@ def parse_charge_vol_file(structure, filename="ACF.dat"):
return charges, volumes


def get_valence_and_total_charge_density(working_directory):
def get_valence_and_total_charge_density(
working_directory: str,
) -> Tuple[VaspVolumetricData, VaspVolumetricData]:
"""
Gives the valence and total charge densities

Expand Down
Loading
Loading