Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/vasp_resources' into energy_comp…
Browse files Browse the repository at this point in the history
…onents

# Conflicts:
#	pyiron_atomistics/vasp/outcar.py
  • Loading branch information
jan-janssen committed Aug 15, 2022
2 parents 48575ff + 16c3389 commit 5d9eab3
Show file tree
Hide file tree
Showing 2 changed files with 207 additions and 0 deletions.
112 changes: 112 additions & 0 deletions pyiron_atomistics/vasp/outcar.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ def from_file(self, filename="OUTCAR"):
)
elastic_constants = self.get_elastic_constants(filename=filename, lines=lines)
energy_components = self.get_energy_components(filename=filename, lines=lines)
cpu_time = self.get_cpu_time(filename=filename, lines=lines)
user_time = self.get_user_time(filename=filename, lines=lines)
system_time = self.get_system_time(filename=filename, lines=lines)
elapsed_time = self.get_elapsed_time(filename=filename, lines=lines)
memory_used = self.get_memory_used(filename=filename, lines=lines)
try:
(
irreducible_kpoints,
Expand Down Expand Up @@ -111,6 +116,13 @@ def from_file(self, filename="OUTCAR"):
self.parse_dict["cbm_list"] = cbm_list
self.parse_dict["elastic_constants"] = elastic_constants
self.parse_dict["energy_components"] = energy_components
self.parse_dict["resources"] = {
"cpu_time": cpu_time,
"user_time": user_time,
"system_time": system_time,
"elapsed_time": elapsed_time,
"memory_used": memory_used,
}
try:
self.parse_dict["pressures"] = (
np.average(stresses[:, 0:3], axis=1) * KBAR_TO_EVA
Expand Down Expand Up @@ -786,6 +798,106 @@ def get_nelect(filename="OUTCAR", lines=None):
if nelect_trigger in line:
return float(line.split()[2])

@staticmethod
def get_cpu_time(filename="OUTCAR", lines=None):
"""
Returns the total CPU time in seconds
Args:
filename (str): OUTCAR filename
lines (list/None): lines read from the file
Returns:
float: CPU time in seconds
"""
nelect_trigger = "Total CPU time used (sec):"
lines = _get_lines_from_file(filename=filename, lines=lines)
for i, line in enumerate(lines):
line = line.strip()
if nelect_trigger in line:
return float(line.split()[-1])

@staticmethod
def get_user_time(filename="OUTCAR", lines=None):
"""
Returns the User time in seconds
Args:
filename (str): OUTCAR filename
lines (list/None): lines read from the file
Returns:
float: User time in seconds
"""
nelect_trigger = "User time (sec):"
lines = _get_lines_from_file(filename=filename, lines=lines)
for i, line in enumerate(lines):
line = line.strip()
if nelect_trigger in line:
return float(line.split()[-1])

@staticmethod
def get_system_time(filename="OUTCAR", lines=None):
"""
Returns the system time in seconds
Args:
filename (str): OUTCAR filename
lines (list/None): lines read from the file
Returns:
float: system time in seconds
"""
nelect_trigger = "System time (sec):"
lines = _get_lines_from_file(filename=filename, lines=lines)
for i, line in enumerate(lines):
line = line.strip()
if nelect_trigger in line:
return float(line.split()[-1])

@staticmethod
def get_elapsed_time(filename="OUTCAR", lines=None):
"""
Returns the elapsed time in seconds
Args:
filename (str): OUTCAR filename
lines (list/None): lines read from the file
Returns:
float: elapsed time in seconds
"""
nelect_trigger = "Elapsed time (sec):"
lines = _get_lines_from_file(filename=filename, lines=lines)
for i, line in enumerate(lines):
line = line.strip()
if nelect_trigger in line:
return float(line.split()[-1])

@staticmethod
def get_memory_used(filename="OUTCAR", lines=None):
"""
Returns the maximum memory used during the simulation in kB
Args:
filename (str): OUTCAR filename
lines (list/None): lines read from the file
Returns:
float: Maximum memory used in kB
"""
nelect_trigger = "Maximum memory used (kb):"
lines = _get_lines_from_file(filename=filename, lines=lines)
for i, line in enumerate(lines):
line = line.strip()
if nelect_trigger in line:
return float(line.split()[-1])

@staticmethod
def get_number_of_atoms(filename="OUTCAR", lines=None):
"""
Expand Down
95 changes: 95 additions & 0 deletions tests/vasp/test_outcar.py
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,101 @@ def test_get_positions_and_forces(self):
self.assertEqual(positions.__str__(), output[0].__str__())
self.assertEqual(forces.__str__(), output[1].__str__())

def test_get_memory_used(self):
memory_usage_dict = {
1: 29757440.0,
2: 39524.0,
3: 42936.0,
4: 24162304.0,
5: 54948.0,
6: None,
7: 463144.0,
8: 0.0,
9: 787952.0,
10: 1036056.0,
}
for filename in self.file_list:
self.assertEqual(
self.outcar_parser.get_memory_used(filename),
memory_usage_dict[int(filename.split("/OUTCAR_")[-1])]
)

def test_get_cpu_time(self):
cpu_time_dict = {
1: 3.543,
2: 0.426,
3: 0.761,
4: 1.98,
5: 1.7,
6: None,
7: 2705.081,
8: 11374.639,
9: 20.894,
10: 225.942,
}
for filename in self.file_list:
self.assertEqual(
self.outcar_parser.get_cpu_time(filename),
cpu_time_dict[int(filename.split("/OUTCAR_")[-1])]
)

def test_get_user_time(self):
user_time_dict = {
1: 3.439,
2: 0.336,
3: 0.68,
4: 1.902,
5: 1.591,
6: None,
7: 2679.4,
8: 11373.883,
9: 20.347,
10: 222.991,
}
for filename in self.file_list:
self.assertEqual(
self.outcar_parser.get_user_time(filename),
user_time_dict[int(filename.split("/OUTCAR_")[-1])]
)

def test_get_system_time(self):
system_time_dict = {
1: 0.104,
2: 0.089,
3: 0.081,
4: 0.078,
5: 0.108,
6: None,
7: 25.68,
8: 0.756,
9: 0.548,
10: 2.952,
}
for filename in self.file_list:
self.assertEqual(
self.outcar_parser.get_system_time(filename),
system_time_dict[int(filename.split("/OUTCAR_")[-1])]
)

def test_get_elapsed_time(self):
elapsed_time_dict = {
1: 2.117,
2: 2.136,
3: 3.314,
4: 1.19,
5: 3.512,
6: None,
7: 2716.647,
8: 11382.323,
9: 21.06,
10: 226.501,
}
for filename in self.file_list:
self.assertEqual(
self.outcar_parser.get_elapsed_time(filename),
elapsed_time_dict[int(filename.split("/OUTCAR_")[-1])]
)

def test_get_positions(self):
for filename in self.file_list:
output = self.outcar_parser.get_positions(filename)
Expand Down

0 comments on commit 5d9eab3

Please sign in to comment.