Commit dfecd23b authored by Lauri Himanen's avatar Lauri Himanen
Browse files

Added the parsing of MD velocities, added unit conversion to external...

Added the parsing of MD velocities, added unit conversion to external trajectory and velocity files.
parent d54553aa
......@@ -41,11 +41,11 @@ class CommonMatcher(object):
#=======================================================================
# Globally cached values
self.cache_service.add_cache_object("simulation_cell", single=False, update=True)
self.cache_service.add_cache_object("number_of_scf_iterations", 0)
self.cache_service.add_cache_object("atom_positions", single=False, update=True)
self.cache_service.add_cache_object("atom_labels", single=False, update=False)
self.cache_service.add_cache_object("number_of_atoms", single=False, update=False)
self.cache_service.add("simulation_cell", single=False, update=True)
self.cache_service.add("number_of_scf_iterations", 0)
self.cache_service.add("atom_positions", single=False, update=True)
self.cache_service.add("atom_labels", single=False, update=False)
self.cache_service.add("number_of_atoms", single=False, update=False)
#===========================================================================
# SimpleMatchers
......
......@@ -22,10 +22,10 @@ class CP2KGeoOptParser(MainHierarchicalParser):
#=======================================================================
# Globally cached values
self.cache_service.add_cache_object("number_of_frames_in_sequence", 0)
self.cache_service.add_cache_object("frame_sequence_potential_energy", [])
self.cache_service.add_cache_object("frame_sequence_local_frames_ref", [])
self.cache_service.add_cache_object("geometry_optimization_method")
self.cache_service.add("number_of_frames_in_sequence", 0)
self.cache_service.add("frame_sequence_potential_energy", [])
self.cache_service.add("frame_sequence_local_frames_ref", [])
self.cache_service.add("geometry_optimization_method")
#=======================================================================
# Cache levels
......
......@@ -39,13 +39,31 @@ class CP2KInputParser(BasicParser):
super(CP2KInputParser, self).__init__(file_path, parser_context)
self.input_tree = None
self.input_lines = None
self.unit_mapping = {
# Distance
"BOHR": "bohr",
"M": "m",
"PM": "pm",
"NM": "nm",
"ANGSTROM": "angstrom",
# Time
"S": "s",
"FS": "fs",
"PS": "ps",
"AU_T": "(planckConstant/hartree)",
"WAVENUMBER_T": None,
}
#=======================================================================
# Cached values
self.cache_service.add_cache_object("configuration_periodic_dimensions", single=False, update=False)
self.cache_service.add_cache_object("trajectory_format")
self.cache_service.add_cache_object("each_geo_opt")
self.cache_service.add_cache_object("traj_add_last")
self.cache_service.add("configuration_periodic_dimensions", single=False, update=False)
self.cache_service.add("trajectory_format")
self.cache_service.add("trajectory_unit")
self.cache_service.add("velocity_format")
self.cache_service.add("velocity_unit")
self.cache_service.add("vel_add_last")
self.cache_service.add("each_geo_opt")
self.cache_service.add("traj_add_last")
def parse(self):
......@@ -178,9 +196,25 @@ class CP2KInputParser(BasicParser):
self.setup_force_file_name()
#=======================================================================
# Trajectory file name and print settings
# Trajectory file name
self.setup_trajectory_file_name()
#=======================================================================
# Trajectory file format
self.cache_service["trajectory_format"] = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/FORMAT")
self.cache_service["traj_add_last"] = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/ADD_LAST")
traj_unit = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/UNIT")
pint_traj_unit = self.get_pint_unit_string(traj_unit)
self.cache_service["trajectory_unit"] = pint_traj_unit
#=======================================================================
# Velocity file format
self.cache_service["velocity_format"] = self.input_tree.get_keyword("MOTION/PRINT/VELOCITIES/FORMAT")
self.cache_service["vel_add_last"] = self.input_tree.get_keyword("MOTION/PRINT/VELOCITIES/ADD_LAST")
vel_unit = self.input_tree.get_keyword("MOTION/PRINT/VELOCITIES/UNIT")
pint_vel_unit = self.get_pint_unit_string(vel_unit)
self.cache_service["velocity_unit"] = pint_vel_unit
#=======================================================================
# Stress tensor calculation method
stress_tensor_method = self.input_tree.get_keyword("FORCE_EVAL/STRESS_TENSOR")
......@@ -214,6 +248,19 @@ class CP2KInputParser(BasicParser):
normalized_path = project_name
return normalized_path
def get_pint_unit_string(self, cp2k_unit_string):
"""Translate the CP2K unit definition into a valid pint unit.
"""
units = re.split('[\^\-\+\*\d]+', cp2k_unit_string)
for unit in units:
if unit == "":
continue
pint_unit = self.unit_mapping.get(unit.upper())
if pint_unit is None:
return None
cp2k_unit_string = cp2k_unit_string.replace(unit, pint_unit)
return cp2k_unit_string
def setup_force_file_name(self):
"""Setup the force file path.
"""
......@@ -229,11 +276,9 @@ class CP2KInputParser(BasicParser):
"""
traj_format = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/FORMAT")
traj_filename = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/FILENAME")
self.cache_service["traj_add_last"] = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/ADD_LAST")
self.cache_service["each_geo_opt"] = self.input_tree.get_keyword("MOTION/PRINT/TRAJECTORY/EACH/GEO_OPT")
if traj_filename is None:
traj_filename = ""
self.cache_service["trajectory_format"] = traj_format
extension_map = {
"XYZ": "xyz",
"XMOL": "xyz",
......@@ -323,24 +368,7 @@ class CP2KInputParser(BasicParser):
else:
keyword_value = split[1]
keyword_name = split[0].upper()
try:
self.input_tree.set_keyword(path + "/" + keyword_name, keyword_value)
except UnboundLocalError:
print line
# Here we store some exceptional print settings that are
# inportant to the parsing. These dont exist in the input tree
# because they take much space and are not really important
# otherwise.
# if path == "FORCE_EVAL/PRINT/FORCES":
# if keyword_name == "FILENAME":
# self.force_file_name = keyword_value
# if path == "MOTION/PRINT/TRAJECTORY":
# if keyword_name == "FILENAME":
# self.trajectory_file_name = keyword_value
# if path == "MOTION/PRINT/TRAJECTORY":
# if keyword_name == "FORMAT":
# self.trajectory_format = keyword_value
self.input_tree.set_keyword(path + "/" + keyword_name, keyword_value)
def fill_metadata(self):
"""Goes through the input data and pushes everything to the
......
......@@ -7,7 +7,6 @@ import cp2kparser.generic.csvparsing
from nomadcore.caching_backend import CachingLevel
from nomadcore.unit_conversion.unit_conversion import convert_unit
import logging
import math
logger = logging.getLogger("nomad")
......@@ -23,6 +22,7 @@ class CP2KMDParser(MainHierarchicalParser):
super(CP2KMDParser, self).__init__(file_path, parser_context)
self.setup_common_matcher(CommonMatcher(parser_context))
self.traj_iterator = None
self.vel_iterator = None
self.energy_iterator = None
self.cell_iterator = None
self.n_steps = None
......@@ -168,28 +168,35 @@ class CP2KMDParser(MainHierarchicalParser):
# Files
coord_filename = section.get_latest_value("x_cp2k_md_coordinates_filename")
velocities_filename = section.get_latest_value("x_cp2k_md_velocities_filename")
vel_filename = section.get_latest_value("x_cp2k_md_velocities_filename")
energies_filename = section.get_latest_value("x_cp2k_md_energies_filename")
cell_filename = section.get_latest_value("x_cp2k_md_simulation_cell_filename")
self.file_service.set_file_id(coord_filename, "coordinates")
self.file_service.set_file_id(velocities_filename, "velocities")
coord_filepath = self.file_service.set_file_id(coord_filename, "coordinates")
vel_filepath = self.file_service.set_file_id(vel_filename, "velocities")
cell_filepath = self.file_service.set_file_id(cell_filename, "cell")
energies_filepath = self.file_service.set_file_id(energies_filename, "energies")
# Setup trajectory iterator
traj_format = self.cache_service["trajectory_format"]
traj_file = self.file_service.get_file_by_id("coordinates")
if traj_format is not None and traj_file is not None:
if traj_format is not None and coord_filepath is not None:
# Use special parsing for CP2K pdb files because they don't follow the proper syntax
if traj_format == "PDB":
self.traj_iterator = cp2kparser.generic.csvparsing.iread(traj_file, columns=[3, 4, 5], start="CRYST", end="END")
self.traj_iterator = cp2kparser.generic.csvparsing.iread(coord_filepath, columns=[3, 4, 5], start="CRYST", end="END")
else:
try:
self.traj_iterator = cp2kparser.generic.configurationreading.iread(traj_file)
self.traj_iterator = cp2kparser.generic.configurationreading.iread(coord_filepath)
except ValueError:
pass
# Setup velocity iterator
vel_format = self.cache_service["velocity_format"]
if vel_format is not None and vel_filepath is not None:
try:
self.vel_iterator = cp2kparser.generic.configurationreading.iread(vel_filepath)
except ValueError:
pass
# Setup energy file iterator
if energies_filepath is not None:
self.energy_iterator = cp2kparser.generic.csvparsing.iread(energies_filepath, columns=[0, 1, 2, 3, 4, 5, 6], comments="#")
......@@ -204,7 +211,7 @@ class CP2KMDParser(MainHierarchicalParser):
# single configuration calculations
freqs = {
"output": [self.output_freq, True],
"coordinates": [self.coord_freq, True],
"trajectory": [self.coord_freq, True],
"velocities": [self.velo_freq, True],
"energies": [self.energy_freq, True],
"cell": [self.cell_freq, True],
......@@ -213,7 +220,7 @@ class CP2KMDParser(MainHierarchicalParser):
# See if the files actually exist
traj_file = self.file_service.get_file_by_id("coordinates")
if traj_file is None:
freqs["coordinates"][1] = False
freqs["trajectory"][1] = False
velocities_file = self.file_service.get_file_by_id("velocities")
if velocities_file is None:
freqs["velocities"][1] = False
......@@ -224,12 +231,26 @@ class CP2KMDParser(MainHierarchicalParser):
if cell_file is None:
freqs["cell"][1] = False
# See if we can determine the units
traj_unit = self.cache_service["trajectory_unit"]
if traj_unit is None:
freqs["coordinates"][1] = False
vel_unit = self.cache_service["velocity_unit"]
if vel_unit is None:
freqs["velocities"][1] = False
# Trajectory print settings
add_last_traj = False
add_last_traj_setting = self.cache_service["traj_add_last"]
if add_last_traj_setting == "NUMERIC" or add_last_traj_setting == "SYMBOLIC":
add_last_traj = True
# Velocities print settings
add_last_vel = False
add_last_vel_setting = self.cache_service["vel_add_last"]
if add_last_vel_setting == "NUMERIC" or add_last_vel_setting == "SYMBOLIC":
add_last_vel = True
last_step = self.n_steps - 1
md_steps = section["x_cp2k_section_md_step"]
......@@ -249,14 +270,24 @@ class CP2KMDParser(MainHierarchicalParser):
single_conf_gids.append(sectionGID)
# Trajectory
if self.traj_iterator is not None:
if (i_step + 1) % freqs["coordinates"][0] == 0 or (i_step == last_step and add_last_traj):
if freqs["trajectory"][1] and self.traj_iterator is not None:
if (i_step + 1) % freqs["trajectory"][0] == 0 or (i_step == last_step and add_last_traj):
try:
pos = next(self.traj_iterator)
except StopIteration:
logger.error("Could not get the next geometries from an external file. It seems that the number of optimization steps in the CP2K outpufile doesn't match the number of steps found in the external trajectory file.")
else:
backend.addArrayValues("atom_positions", pos, unit="angstrom")
backend.addArrayValues("atom_positions", pos, unit=traj_unit)
# Velocities
if freqs["velocities"][1] and self.vel_iterator is not None:
if (i_step + 1) % freqs["velocities"][0] == 0 or (i_step == last_step and add_last_vel):
try:
vel = next(self.vel_iterator)
except StopIteration:
logger.error("Could not get the next velociies from an external file. It seems that the number of optimization steps in the CP2K outpufile doesn't match the number of steps found in the external velocities file.")
else:
backend.addArrayValues("atom_velocities", vel, unit=vel_unit)
# Energy file
if self.energy_iterator is not None:
......@@ -334,31 +365,26 @@ class CP2KMDParser(MainHierarchicalParser):
# Temperature stats
mean_temp = frame_sequence_temperature.mean()
c = frame_sequence_temperature - mean_temp
std_temp = math.sqrt(np.dot(c, c)/frame_sequence_temperature.size)
std_temp = frame_sequence_temperature.std()
backend.addArrayValues("frame_sequence_temperature_stats", np.array([mean_temp, std_temp]))
# Potential energy stats
mean_pot = frame_sequence_potential_energy.mean()
c = frame_sequence_potential_energy - mean_pot
std_pot = math.sqrt(np.dot(c, c)/frame_sequence_potential_energy.size)
std_pot = frame_sequence_potential_energy.std()
backend.addArrayValues("frame_sequence_potential_energy_stats", np.array([mean_pot, std_pot]))
# Kinetic energy stats
mean_kin = frame_sequence_kinetic_energy.mean()
c = frame_sequence_kinetic_energy - mean_kin
std_kin = math.sqrt(np.dot(c, c)/frame_sequence_kinetic_energy.size)
std_kin = frame_sequence_kinetic_energy.std()
backend.addArrayValues("frame_sequence_kinetic_energy_stats", np.array([mean_kin, std_kin]))
# Conserved quantity stats
mean_cons = frame_sequence_conserved_quantity.mean()
c = frame_sequence_conserved_quantity - mean_cons
std_cons = math.sqrt(np.dot(c, c)/frame_sequence_conserved_quantity.size)
std_cons = frame_sequence_conserved_quantity.std()
backend.addArrayValues("frame_sequence_conserved_quantity_stats", np.array([mean_cons, std_cons]))
# Pressure stats
if frame_sequence_pressure.size != 0:
mean_pressure = frame_sequence_pressure.mean()
c = frame_sequence_pressure - mean_pressure
std_pressure = math.sqrt(np.dot(c, c)/frame_sequence_pressure.size)
std_pressure = frame_sequence_pressure.std()
backend.addArrayValues("frame_sequence_pressure_stats", np.array([mean_pressure, std_pressure]))
......@@ -13,16 +13,18 @@ def main():
version="0.1",
include_package_data=True,
package_data={
'cp2kparser.versions.cp2k262': ['input_data/*.json', 'input_data/*.pickle'],
'cp2kparser.versions.cp2k262': ['input_data/cp2k_input_tree.pickle'],
},
description="NoMaD parser implementation for CP2K",
description="NoMaD parser implementation for CP2K.",
author="Lauri Himanen",
author_email="lauri.himanen@gmail.com",
author_email="lauri.himanen@aalto.fi",
license="GPL3",
packages=find_packages(),
install_requires=[
'pint',
'numpy',
'mdtraj',
'ase'
],
zip_safe=False
)
......
# Step Nr. Time[fs] Kin.[a.u.] Temp[K] Pot.[a.u.] Cons Qty[a.u.] UsedTime[s]
0 0.000000 0.007125335 300.000000000 -34.336403530 -34.324047996 0.000000000
1 0.500000 0.007358038 309.797597156 -34.336638312 -34.324054403 2.884762674
2 1.000000 0.007414878 312.190722217 -34.336698674 -34.324056733 0.846901371
3 1.500000 0.007245416 305.055835462 -34.336539787 -34.324059082 1.401093733
4 2.000000 0.006832946 287.689475065 -34.336141815 -34.324057040 1.396403917
5 2.500000 0.006241331 262.780549510 -34.335562912 -34.324043992 1.396984484
6 3.000000 0.005685824 239.391887129 -34.335021181 -34.324022684 0.848225022
7 3.500000 0.005480859 230.762197167 -34.334844452 -34.324007616 1.259262077
8 4.000000 0.005835031 245.673981276 -34.335254239 -34.324014235 1.244773507
9 4.500000 0.006642601 279.675336061 -34.336142063 -34.324043595 1.243345618
10 5.000000 0.007478540 314.871094720 -34.337060810 -34.324078054 1.577752011
1 0.500000 0.007358038 309.797597156 -34.336638312 -34.324054403 1.972006205
2 1.000000 0.007414878 312.190722217 -34.336698674 -34.324056733 0.606219402
3 1.500000 0.007245416 305.055835462 -34.336539787 -34.324059082 0.961466920
4 2.000000 0.006832946 287.689475065 -34.336141815 -34.324057040 0.950284295
5 2.500000 0.006241331 262.780549510 -34.335562912 -34.324043992 0.942355444
6 3.000000 0.005685824 239.391887130 -34.335021181 -34.324022684 0.560770646
7 3.500000 0.005480859 230.762197167 -34.334844452 -34.324007616 0.823932849
8 4.000000 0.005835031 245.673981276 -34.335254239 -34.324014235 0.818104614
9 4.500000 0.006642601 279.675336061 -34.336142063 -34.324043595 0.821988390
10 5.000000 0.007478540 314.871094721 -34.337060810 -34.324078054 0.911705150
......@@ -13,7 +13,7 @@
H -3.7808196412 5.3299000381 0.9495250366
H -5.0946313631 4.5838911317 1.1707137947
H -3.7897032638 8.3431761391 0.9355342799
H -5.0853477221 7.6085130826 1.1707220814
H -5.0853477221 7.6085130826 1.1707220815
6
i = 2, time = 1.000, E = -34.3366986739
O -4.5799918657 5.3371286726 1.5575079911
......@@ -56,7 +56,7 @@
H -5.1256013031 7.6656128586 1.1416025367
6
i = 7, time = 3.500, E = -34.3348444523
O -4.5722672947 5.3417167646 1.5466308712
O -4.5722672947 5.3417167645 1.5466308712
O -4.5859384471 8.3550968032 1.5566437253
H -3.8079480022 5.3235909353 1.0032208412
H -5.1403047092 4.5825311319 1.1745837856
......
......@@ -9,10 +9,10 @@
DBCSR| Communication thread load 87
**** **** ****** ** PROGRAM STARTED AT 2016-06-11 10:35:13.332
***** ** *** *** ** PROGRAM STARTED ON lauri-Lenovo-Z50-70
**** **** ****** ** PROGRAM STARTED AT 2016-06-13 12:07:22.388
***** ** *** *** ** PROGRAM STARTED ON lenovo700
** **** ****** PROGRAM STARTED BY lauri
***** ** ** ** ** PROGRAM PROCESS ID 5514
***** ** ** ** ** PROGRAM PROCESS ID 30558
**** ** ******* ** PROGRAM STARTED IN /home/lauri/Dropbox/nomad-dev/nomad-l
ab-base/parsers/cp2k/test/unittests/c
p2k_2.6.2/md/npt
......@@ -20,8 +20,8 @@
CP2K| version string: CP2K version 2.6.2
CP2K| source code revision number: svn:15893
CP2K| is freely available from http://www.cp2k.org/
CP2K| Program compiled at ke 4.11.2015 08.48.42 +0200
CP2K| Program compiled on lauri-Lenovo-Z50-70
CP2K| Program compiled at ma 13.6.2016 11.25.35 +0300
CP2K| Program compiled on lenovo700
CP2K| Program compiled for Linux-x86-64-gfortran_basic
CP2K| Input file name H2O-md.inp
......@@ -45,13 +45,13 @@
MEMORY| system memory details [Kb]
MEMORY| rank 0 min max average
MEMORY| MemTotal 8070364 8070364 8070364 8070364
MEMORY| MemFree 2826576 2826576 2826576 2826576
MEMORY| Buffers 887736 887736 887736 887736
MEMORY| Cached 1753152 1753152 1753152 1753152
MEMORY| Slab 493820 493820 493820 493820
MEMORY| SReclaimable 457008 457008 457008 457008
MEMORY| MemLikelyFree 5924472 5924472 5924472 5924472
MEMORY| MemTotal 7962024 7962024 7962024 7962024
MEMORY| MemFree 764588 764588 764588 764588
MEMORY| Buffers 532128 532128 532128 532128
MEMORY| Cached 3585416 3585416 3585416 3585416
MEMORY| Slab 350512 350512 350512 350512
MEMORY| SReclaimable 299476 299476 299476 299476
MEMORY| MemLikelyFree 5181608 5181608 5181608 5181608
*** Fundamental physical constants (SI units) ***
......@@ -617,7 +617,7 @@
Total charge density on r-space grids: 0.0000030541
Total charge density g-space grids: 0.0000030541
1 P_Mix/Diag. 0.40E+00 0.1 0.95707449 -34.0259068763 -3.40E+01
1 P_Mix/Diag. 0.40E+00 0.0 0.95707449 -34.0259068763 -3.40E+01
Trace(PS): 16.0000000000
Electronic density on regular grids: -15.9999965263 0.0000034737
......@@ -705,7 +705,7 @@
Total charge density on r-space grids: 0.0000033371
Total charge density g-space grids: 0.0000033371
12 DIIS/Diag. 0.38E-06 0.1 0.00000054 -34.3364035304 -5.27E-12
12 DIIS/Diag. 0.38E-06 0.1 0.00000054 -34.3364035304 -5.29E-12
*** SCF run converged in 12 steps ***
......@@ -717,9 +717,9 @@
Overlap energy of the core charge distribution: 0.00000005862748
Self energy of the core charge distribution: -87.66578109182967
Core Hamiltonian energy: 25.56682954769512
Hartree energy: 35.99884009118039
Exchange-correlation energy: -8.23629213607865
Core Hamiltonian energy: 25.56682954769509
Hartree energy: 35.99884009118040
Exchange-correlation energy: -8.23629213607864
Total energy: -34.33640353040533
......@@ -757,7 +757,7 @@
Total charge density g-space grids: 0.0000033371
ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -34.336403530405384
ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -34.336403530405377
MD_ENERGIES| Initialization proceeding
......@@ -768,7 +768,7 @@
INITIAL KINETIC ENERGY[hartree] = 0.712533452240E-02
INITIAL TEMPERATURE[K] = 300.000
INITIAL BAROSTAT TEMP[K] = 0.300000000000E+03
INITIAL PRESSURE[bar] = -0.192828092558E+04
INITIAL PRESSURE[bar] = -0.192828092559E+04
INITIAL VOLUME[bohr^3] = 0.145764026995E+04
INITIAL CELL LNTHS[bohr] = 0.1133836E+02 0.1133836E+02 0.1133836E+02
INITIAL CELL ANGLS[deg] = 0.9000000E+02 0.9000000E+02 0.9000000E+02
......@@ -944,7 +944,7 @@
Total charge density on r-space grids: 0.0000034376
Total charge density g-space grids: 0.0000034376
9 DIIS/Diag. 0.53E-06 0.1 0.00000154 -34.3366383116 -7.11E-14
9 DIIS/Diag. 0.53E-06 0.1 0.00000154 -34.3366383116 -5.68E-14
Trace(PS): 16.0000000000
Electronic density on regular grids: -15.9999965512 0.0000034488
......@@ -952,7 +952,7 @@
Total charge density on r-space grids: 0.0000034376
Total charge density g-space grids: 0.0000034376
10 DIIS/Diag. 0.62E-07 0.1 0.00000013 -34.3366383116 -9.02E-13
10 DIIS/Diag. 0.62E-07 0.1 0.00000013 -34.3366383116 -9.17E-13
*** SCF run converged in 10 steps ***
......@@ -964,8 +964,8 @@
Overlap energy of the core charge distribution: 0.00000005920863
Self energy of the core charge distribution: -87.66578109182967
Core Hamiltonian energy: 25.57277665956343
Hartree energy: 35.99443962305116
Core Hamiltonian energy: 25.57277665956342
Hartree energy: 35.99443962305115
Exchange-correlation energy: -8.23807356159897
Total energy: -34.33663831160543
......@@ -1018,12 +1018,12 @@
CONSERVED QUANTITY [hartree] = -0.343240544028E+02
INSTANTANEOUS AVERAGES
CPU TIME [s] = 2.88 2.88
ENERGY DRIFT PER ATOM [K] = -0.337174401249E+00 0.000000000000E+00
CPU TIME [s] = 1.97 1.97
ENERGY DRIFT PER ATOM [K] = -0.337174401623E+00 0.000000000000E+00
POTENTIAL ENERGY[hartree] = -0.343366383116E+02 -0.343366383116E+02
KINETIC ENERGY [hartree] = 0.735803837990E-02 0.735803837990E-02
TEMPERATURE [K] = 309.798 309.798
PRESSURE [bar] = -0.145371071469E+04 -0.145371071469E+04
PRESSURE [bar] = -0.145371071470E+04 -0.145371071470E+04
BAROSTAT TEMP[K] = 0.299471596664E+03 0.299471596664E+03
VOLUME[bohr^3] = 0.145827751823E+04 0.145827751823E+04
CELL LNTHS[bohr] = 0.1133758E+02 0.1134253E+02 0.1133993E+02
......@@ -1175,11 +1175,11 @@
Overlap energy of the core charge distribution: 0.00000006717797
Self energy of the core charge distribution: -87.66578109182967
Core Hamiltonian energy: 25.58909992752676
Core Hamiltonian energy: 25.58909992752680
Hartree energy: 35.98272150138760
Exchange-correlation energy: -8.24273907809342
Exchange-correlation energy: -8.24273907809343
Total energy: -34.33669867383075
Total energy: -34.33669867383072
MULLIKEN POPULATION ANALYSIS
......@@ -1215,7 +1215,7 @@
Total charge density g-space grids: 0.0000035626
ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -34.336698673903705
ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -34.336698673903676
Centre of mass motion (COM): x = 0.0000124969
......@@ -1229,12 +1229,12 @@
CONSERVED QUANTITY [hartree] = -0.343240567328E+02
INSTANTANEOUS AVERAGES
CPU TIME [s] = 0.85 1.87
ENERGY DRIFT PER ATOM [K] = -0.459802540657E+00 -0.229901270328E+00
CPU TIME [s] = 0.61 1.29
ENERGY DRIFT PER ATOM [K] = -0.459802539535E+00 -0.229901269768E+00
POTENTIAL ENERGY[hartree] = -0.343366986739E+02 -0.343366684928E+02
KINETIC ENERGY [hartree] = 0.741487776862E-02 0.738645807426E-02
TEMPERATURE [K] = 312.191 310.994
PRESSURE [bar] = -0.210098903760E+03 -0.831904809227E+03
PRESSURE [bar] = -0.210098903760E+03 -0.831904809228E+03
BAROSTAT TEMP[K] = 0.299328180855E+03 0.299399888760E+03
VOLUME[bohr^3] = 0.145891374863E+04 0.145859563343E+04
CELL LNTHS[bohr] = 0.1133678E+02 0.1134673E+02 0.1134148E+02
......@@ -1406,7 +1406,7 @@
Total charge density on r-space grids: 0.0000036935
Total charge density g-space grids: 0.0000036935
8 DIIS/Diag. 0.29E-06 0.1 0.00000076 -34.3365397866 -5.91E-12
8 DIIS/Diag. 0.29E-06 0.1 0.00000076 -34.3365397866 -5.90E-12
*** SCF run converged in 8 steps ***
......@@ -1418,11 +1418,11 @@
Overlap energy of the core charge distribution: 0.00000008016148
Self energy of the core charge distribution: -87.66578109182967
Core Hamiltonian energy: 25.61388565103954
Core Hamiltonian energy: 25.61388565103955
Hartree energy: 35.96507794864263
Exchange-correlation energy: -8.24972237459583
Exchange-correlation energy: -8.24972237459584
Total energy: -34.33653978658185
Total energy: -34.33653978658184
MULLIKEN POPULATION ANALYSIS
......@@ -1434,7 +1434,7 @@
4 H 2 0.683300 0.316700
5 H 2 0.697705 0.302295
6 H 2 0.681950 0.318050
# Total charge 16.000000 -0.000000
# Total charge 16.000000 0.000000
!-----------------------------------------------------------------------------!
......@@ -1458,7 +1458,7 @@
Total charge density g-space grids: 0.0000036935
ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -34.336539786582719
ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -34.336539786582705
Centre of mass motion (COM): x = 0.0000184991
......@@ -1472,12 +1472,12 @@
CONSERVED QUANTITY [hartree] = -0.343240590823E+02
INSTANTANEOUS AVERAGES
CPU TIME [s] = 1.40 1.71