diff --git a/.gitignore b/.gitignore index 6f8ec4578462901c710bad08f338d6e62ab6187f..89fab064ccd7d05bccee889818d8ef84ffb65fb8 100644 --- a/.gitignore +++ b/.gitignore @@ -53,4 +53,5 @@ TAGS lib/ env/ -# CP2K files +# CPMD files +parser/parser-cpmd/cpmdparser.egg-info/ diff --git a/parser/parser-cpmd/cpmdparser/parser.py b/parser/parser-cpmd/cpmdparser/parser.py index f3f0fae1b4f899b00286abec300e2f7912aa5da1..8f6ecd9ffa1e538d757c33594f526191a701cdc1 100644 --- a/parser/parser-cpmd/cpmdparser/parser.py +++ b/parser/parser-cpmd/cpmdparser/parser.py @@ -3,8 +3,8 @@ from builtins import range import os import re import logging +import importlib from nomadcore.baseclasses import ParserInterface -from cpmdparser.versions.versionsetup import get_main_parser logger = logging.getLogger("nomad") @@ -27,28 +27,19 @@ class CPMDParser(ParserInterface): # Search for the CP2K version specification and the RUN_TYPE for the # calculation. The correct and optimized parser is initialized based on # this information. - regex_version = re.compile(r" CP2K\| version string:\s+CP2K version ([\d\.]+)") - regex_run_type = re.compile(r"\s+GLOBAL\| Run type\s+(.+)") + regex_version = re.compile("\s+VERSION ([\d\.]+)") n_lines = 50 version_id = None - run_type = None with open(self.parser_context.main_file, 'r') as outputfile: for i_line in range(n_lines): line = next(outputfile) result_version = regex_version.match(line) - result_run_type = regex_run_type.match(line) if result_version: version_id = result_version.group(1).replace('.', '') - if result_run_type: - run_type = result_run_type.group(1) if version_id is None: msg = "Could not find a version specification from the given main file." logger.exception(msg) raise RuntimeError(msg) - if run_type is None: - msg = "Could not find a version specification from the given main file." - logger.exception(msg) - raise RuntimeError(msg) # Setup the root folder to the fileservice that is used to access files dirpath, filename = os.path.split(self.parser_context.main_file) @@ -58,10 +49,33 @@ class CPMDParser(ParserInterface): # Setup the correct main parser based on the version id. If no match # for the version is found, use the main parser for CP2K 2.6.2 - self.main_parser = get_main_parser(version_id, run_type)(self.parser_context.main_file, self.parser_context) + self.setup_main_parser(version_id) def get_metainfo_filename(self): return "cpmd.nomadmetainfo.json" def get_parser_info(self): return {'name': 'cpmd-parser', 'version': '1.0'} + + def setup_main_parser(self, version_id): + # Currently the version id is a pure integer, so it can directly be mapped + # into a package name. + base = "cpmdparser.versions.cpmd{}.mainparser".format(version_id) + parser_module = None + parser_class = None + try: + parser_module = importlib.import_module(base) + except ImportError: + logger.warning("Could not find a parser for version '{}'. Trying to default to the base implementation for CPMD 4.1".format(version_id)) + base = "cpmdparser.versions.cp2k41.mainparser" + try: + parser_module = importlib.import_module(base) + except ImportError: + logger.exception("Tried to default to the CPMD 4.1 implementation but could not find the correct module.") + raise + try: + parser_class = getattr(parser_module, "CPMDMainParser") + except AttributeError: + logger.exception("A parser class 'CPMDMainParser' could not be found in the module '[]'.".format(parser_module)) + raise + self.main_parser = parser_class(self.parser_context.main_file, self.parser_context) diff --git a/parser/parser-cpmd/cpmdparser/versions/cpmd41/commonmatcher.py b/parser/parser-cpmd/cpmdparser/versions/cpmd41/commonmatcher.py new file mode 100644 index 0000000000000000000000000000000000000000..9ea4ee49fa11ca52432e93921666a31613406c3c --- /dev/null +++ b/parser/parser-cpmd/cpmdparser/versions/cpmd41/commonmatcher.py @@ -0,0 +1,18 @@ +from nomadcore.baseclasses import CommonMatcher + + +#=============================================================================== +class CPMDCommonMatcher(CommonMatcher): + """ + This class is used to store and instantiate common parts of the + hierarchical SimpleMatcher structure used in the parsing of a CPMD + calculation. + """ + def __init__(self, parser_context): + super(CPMDCommonMatcher, self).__init__(parser_context) + + #=========================================================================== + # onClose triggers + def onClose_section_run(self, backend, gIndex, section): + backend.addValue("program_name", "CPMD") + backend.addValue("program_basis_set_type", "plane waves") diff --git a/parser/parser-cpmd/cpmdparser/versions/cpmd41/inputparser.py b/parser/parser-cpmd/cpmdparser/versions/cpmd41/inputparser.py new file mode 100644 index 0000000000000000000000000000000000000000..1e9b3b7fb1c7b84d1638fb2bc35c9b0923d8254d --- /dev/null +++ b/parser/parser-cpmd/cpmdparser/versions/cpmd41/inputparser.py @@ -0,0 +1,43 @@ +from __future__ import absolute_import +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.baseclasses import MainHierarchicalParser +from nomadcore.caching_backend import CachingLevel +from .commonmatcher import CommonMatcher +import logging +logger = logging.getLogger("nomad") + + +#=============================================================================== +class CPMDSinglePointParser(MainHierarchicalParser): + """The main parser class. Used to parse the CP2K calculation with run types: + -ENERGY + -ENERGY_FORCE + """ + def __init__(self, file_path, parser_context): + """ + """ + super(CPMDSinglePointParser, self).__init__(file_path, parser_context) + self.setup_common_matcher(CommonMatcher(parser_context)) + + #======================================================================= + # Cache levels + self.caching_level_for_metaname.update({ + 'x_cp2k_energy_total_scf_iteration': CachingLevel.ForwardAndCache, + 'x_cp2k_energy_XC_scf_iteration': CachingLevel.ForwardAndCache, + 'x_cp2k_energy_change_scf_iteration': CachingLevel.ForwardAndCache, + 'x_cp2k_stress_tensor': CachingLevel.ForwardAndCache, + 'x_cp2k_section_stress_tensor': CachingLevel.ForwardAndCache, + }) + + #======================================================================= + # SimpleMatchers + self.root_matcher = SM("", + forwardMatch=True, + sections=['section_run', "section_single_configuration_calculation", "section_system", "section_method"], + otherMetaInfo=["atom_forces"], + subMatchers=[ + self.cm.header(), + self.cm.quickstep_header(), + self.cm.quickstep_calculation(), + ] + ) diff --git a/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py b/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py new file mode 100644 index 0000000000000000000000000000000000000000..39de580e9f4d5849ec6726471c34a9453521998b --- /dev/null +++ b/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py @@ -0,0 +1,67 @@ +from __future__ import absolute_import +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.baseclasses import MainHierarchicalParser +from nomadcore.caching_backend import CachingLevel +from .commonmatcher import CPMDCommonMatcher +import re +import logging +import datetime +logger = logging.getLogger("nomad") + + +#=============================================================================== +class CPMDMainParser(MainHierarchicalParser): + """The main parser class that is called for all run types. Parses the CPMD + output file. + """ + def __init__(self, file_path, parser_context): + """ + """ + super(CPMDMainParser, self).__init__(file_path, parser_context) + self.setup_common_matcher(CPMDCommonMatcher(parser_context)) + + #======================================================================= + # Cache levels + # self.caching_levels.update({ + # 'section_run': CachingLevel.ForwardAndCache, + # }) + + #======================================================================= + # SimpleMatchers + self.root_matcher = SM("", + forwardMatch=True, + sections=['section_run', "section_single_configuration_calculation", "section_system", "section_method"], + subMatchers=[ + SM( " PROGRAM CPMD STARTED AT: (?P<x_cpmd_start_datetime>{})".format(self.regexs.regex_eol)), + SM( "\s+VERSION (?P<program_version>\d+\.\d+)"), + SM( " THE INPUT FILE IS:\s+(?P<x_cpmd_input_file>{})".format(self.regexs.regex_eol)), + SM( " THIS JOB RUNS ON:\s+(?P<x_cpmd_run_host_name>{})".format(self.regexs.regex_eol)), + SM( " THE JOB WAS SUBMITTED BY:\s+(?P<x_cpmd_run_user_name>{})".format(self.regexs.regex_eol)), + ] + ) + + #======================================================================= + # onClose triggers + def onClose_section_run(self, backend, gIndex, section): + start_datetime = section.get_latest_value("x_cpmd_start_datetime") + start_date_stamp, start_wall_time = self.timestamp_from_string(start_datetime) + backend.addValue("time_run_date_start", start_date_stamp) + backend.addValue("time_run_wall_start", start_wall_time) + + #======================================================================= + # misc. functions + def timestamp_from_string(self, timestring): + timestring = timestring.strip() + date, time = timestring.split() + year, month, day = [int(x) for x in date.split("-")] + hour, minute, second, msec = [float(x) for x in re.split("[:.]", time)] + date_stamp = datetime.datetime(year, month, day).timestamp() + wall_time = hour*3600+minute*60+second+0.001*msec + return date_stamp, wall_time + + #======================================================================= + # adHoc + def debug(self): + def wrapper(parser): + print("DEBUG") + return wrapper diff --git a/parser/parser-cpmd/cpmdparser/versions/versionsetup.py b/parser/parser-cpmd/cpmdparser/versions/versionsetup.py deleted file mode 100644 index e4f917686feff161e52adc8160f1fceecc44c56a..0000000000000000000000000000000000000000 --- a/parser/parser-cpmd/cpmdparser/versions/versionsetup.py +++ /dev/null @@ -1,62 +0,0 @@ -import importlib -import logging -logger = logging.getLogger("nomad") - - -#=============================================================================== -def get_main_parser(version_id, run_type): - """ - Setups a main parser class for this calculation. The main class can be - different for each version and run type. - - Args: - version_id: An integer representing the CP2K version. The version - number is originally a string the form '2.6.2', but here the numbers - are just concatenated into a single integer number 262. - run_type: A string that identifies the RUN_TYPE for the calculation. - All the possible run types can be found in the CP2K reference manual. - - Returns: - A python class that should be instantiated later with the correct - parameters. - """ - - # Search for a RUN_TYPE specific parser - parser_map = { - "ENERGY": "SinglePointParser", - "ENERGY_FORCE": "SinglePointParser", - "WAVEFUNCTION_OPTIMIZATION": "SinglePointParser", - "WFN_OPT": "SinglePointParser", - "GEO_OPT": "GeoOptParser", - "GEOMETRY_OPTIMIZATION": "GeoOptParser", - "MD": "MDParser", - "MOLECULAR_DYNAMICS": "MDParser", - } - try: - parser = parser_map[run_type] - except KeyError: - logger.exception("A parser corresponding to the run_type '{}' could not be found.".format(run_type)) - raise - - # Currently the version id is a pure integer, so it can directly be mapped - # into a package name. - base = "cpmdparser.versions.cp2k{}.{}".format(version_id, parser.lower()) - parser_module = None - parser_class = None - try: - parser_module = importlib.import_module(base) - except ImportError: - logger.warning("Could not find a parser for version '{}' and run type '{}'. Trying to default to the base implementation for CP2K 2.6.2".format(version_id, run_type)) - base = "cp2kparser.versions.cp2k262.{}".format(parser.lower()) - try: - parser_module = importlib.import_module(base) - except ImportError: - logger.exception("Tried to default to the CP2K 2.6.2 implementation but could not find the correct modules for run_type '{}'.".format(run_type)) - raise - try: - parser_class = getattr(parser_module, "CP2K{}".format(parser)) - except AttributeError: - logger.exception("A parser class '{}' could not be found in the module '[]'.".format(parser_class, parser_module)) - raise - - return parser_class diff --git a/setup.py b/setup.py index fc623cc72744fdc9f2fb061fa484d904991bd93d..ff76355dc746f1088aab71f87c0aedd60688fc03 100644 --- a/setup.py +++ b/setup.py @@ -11,20 +11,15 @@ def main(): setup( name="cpmdparser", version="0.1", - # package_data={ - # 'cp2kparser.versions.cp2k262': ['input_data/cp2k_input_tree.pickle'], - # }, description="NoMaD parser implementation for CPMD.", author="Lauri Himanen", author_email="lauri.himanen@aalto.fi", license="GPL3", - # package_dir={'': 'parser/parser-cp2k'}, + package_dir={'': 'parser/parser-cpmd'}, packages=find_packages(), install_requires=[ 'pint', 'numpy', - # 'mdtraj', - # 'ase' ], ) diff --git a/src/main/scala/eu/nomad_lab/parsers/CpmdParser.scala b/src/main/scala/eu/nomad_lab/parsers/CpmdParser.scala index c0305e7da182389759d3f4e14895f80394a48c9b..8e2c8f1d89ee9ef447907afecd16733471e41be8 100644 --- a/src/main/scala/eu/nomad_lab/parsers/CpmdParser.scala +++ b/src/main/scala/eu/nomad_lab/parsers/CpmdParser.scala @@ -5,11 +5,11 @@ import eu.nomad_lab.DefaultPythonInterpreter import org.{ json4s => jn } import scala.collection.breakOut -object Cp2kParser extends SimpleExternalParserGenerator( - name = "Cp2kParser", +object CpmdParser extends SimpleExternalParserGenerator( + name = "CpmdParser", parserInfo = jn.JObject( ("name" -> jn.JString("CpmdParser")) :: - ("parserId" -> jn.JString("CpmdParser" + lab.Cp2kVersionInfo.version)) :: + ("parserId" -> jn.JString("CpmdParser" + lab.CpmdVersionInfo.version)) :: ("versionInfo" -> jn.JObject( ("nomadCoreVersion" -> jn.JObject(lab.NomadCoreVersionInfo.toMap.map { case (k, v) => k -> jn.JString(v.toString) @@ -21,16 +21,14 @@ object Cp2kParser extends SimpleExternalParserGenerator( )) :: Nil ), mainFileTypes = Seq("text/.*"), - mainFileRe = """ \*\*\*\* \*\*\*\* \*\*\*\*\*\* \*\* PROGRAM STARTED AT\s(?<cpmdStartedAt>.*) - \*\*\*\*\* \*\* \*\*\* \*\*\* \*\* PROGRAM STARTED ON\s*.* - \*\* \*\*\*\* \*\*\*\*\*\* PROGRAM STARTED BY .* - \*\*\*\*\* \*\* \*\* \*\* \*\* PROGRAM PROCESS ID .* - \*\*\*\* \*\* \*\*\*\*\*\*\* \*\* PROGRAM STARTED IN .* -(?:\s*\n| \s+.* -)* -(?:\s*CP2K\| version string:\s*(?<cpmdVersionString>.*) -)?(?:\s*CP2K\| source code revision number:\s*(?<cpmdRevision>.*) -)?""".r, + mainFileRe = """ \*\*\*\*\*\* \*\*\*\*\*\* \*\*\*\* \*\*\*\* \*\*\*\*\*\* + \*\*\*\*\*\*\* \*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\* + \*\*\* \*\* \*\*\* \*\* \*\*\*\* \*\* \*\* \*\*\* + \*\* \*\* \*\*\* \*\* \*\* \*\* \*\* \*\* + \*\* \*\*\*\*\*\*\* \*\* \*\* \*\* \*\* + \*\*\* \*\*\*\*\*\* \*\* \*\* \*\* \*\*\* + \*\*\*\*\*\*\* \*\* \*\* \*\* \*\*\*\*\*\*\* + \*\*\*\*\*\* \*\* \*\* \*\* \*\*\*\*\*\*""".r, cmd = Seq(DefaultPythonInterpreter.python2Exe(), "${envDir}/parsers/cpmd/parser/parser-cpmd/cpmdparser/scalainterface.py", "${mainFilePath}"), cmdCwd = "${mainFilePath}/..", @@ -38,16 +36,17 @@ object Cp2kParser extends SimpleExternalParserGenerator( "parser-cpmd/cpmdparser/__init__.py", "parser-cpmd/cpmdparser/setup_paths.py", "parser-cpmd/cpmdparser/parser.py", + "parser-cpmd/cpmdparser/scalainterface.py", "parser-cpmd/cpmdparser/generic/__init__.py", "parser-cpmd/cpmdparser/versions/__init__.py", - "parser-cpmd/cpmdparser/versions/versionsetup.py", "parser-cpmd/cpmdparser/versions/cpmd41/__init__.py", - "parser-cpmd/cpmdparser/scalainterface.py", + "parser-cpmd/cpmdparser/versions/cpmd41/commonmatcher.py", + "parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py", + "parser-cpmd/cpmdparser/versions/cpmd41/inputparser.py", "nomad_meta_info/public.nomadmetainfo.json", "nomad_meta_info/common.nomadmetainfo.json", "nomad_meta_info/meta_types.nomadmetainfo.json", "nomad_meta_info/cpmd.nomadmetainfo.json", - "nomad_meta_info/cpmd.general.nomadmetainfo.json" ) ++ DefaultPythonInterpreter.commonFiles(), dirMap = Map( "parser-cpmd" -> "parsers/cpmd/parser/parser-cpmd", diff --git a/src/test/scala/eu/nomad_lab/parsers/CpmdParserSpec.scala b/src/test/scala/eu/nomad_lab/parsers/CpmdParserSpec.scala index fd35602de6f5e3ea9b5fc7345b680e55dbfeca34..472e92b9e4641c7facb72312ccdc47954e6d16c9 100644 --- a/src/test/scala/eu/nomad_lab/parsers/CpmdParserSpec.scala +++ b/src/test/scala/eu/nomad_lab/parsers/CpmdParserSpec.scala @@ -3,13 +3,7 @@ package eu.nomad_lab.parsers import org.specs2.mutable.Specification object CpmdParserSpec extends Specification { - "CpmdParserTest" >> { - "test with json-events" >> { - ParserRun.parse(CpmdParser, "parsers/cpmd/test/examples/energy_force/si_bulk8.out", "json-events") must_== ParseResult.ParseSuccess - } - } - "test energy_force with json" >> { - ParserRun.parse(CpmdParser, "parsers/cpmd/test/examples/energy_force/si_bulk8.out", "json") must_== ParseResult.ParseSuccess + ParserRun.parse(CpmdParser, "parsers/cpmd/test/examples/single_point/output.out", "json") must_== ParseResult.ParseSuccess } } diff --git a/test/examples/single_point/GEOMETRY b/test/examples/single_point/GEOMETRY new file mode 100644 index 0000000000000000000000000000000000000000..4fc346d8d03ee55cc5ed943b11eb14af91be77a4 --- /dev/null +++ b/test/examples/single_point/GEOMETRY @@ -0,0 +1,2 @@ + 8.259992891426 7.558904499132 7.558904499132 0.017798524379 -0.000000000000 -0.000000000000 + 6.857816106837 7.558904499132 7.558904499132 -0.017798524379 -0.000000000000 -0.000000000000 diff --git a/test/examples/single_point/GEOMETRY.xyz b/test/examples/single_point/GEOMETRY.xyz new file mode 100644 index 0000000000000000000000000000000000000000..b13c48d0b6644a53a06502a83cea74fb0265e4e1 --- /dev/null +++ b/test/examples/single_point/GEOMETRY.xyz @@ -0,0 +1,4 @@ + 2 +GEOMETRY FILE / created by CPMD + H 4.371000000000 4.000000000000 4.000000000000 0.009418573488 -0.000000000000 -0.000000000000 + H 3.629000000000 4.000000000000 4.000000000000 -0.009418573488 -0.000000000000 -0.000000000000 diff --git a/test/examples/single_point/LATEST b/test/examples/single_point/LATEST new file mode 100644 index 0000000000000000000000000000000000000000..0e4449210602fd9c3a45bd3bc780cd67ad8721b0 --- /dev/null +++ b/test/examples/single_point/LATEST @@ -0,0 +1,2 @@ +./RESTART.1 + 1 diff --git a/test/examples/single_point/RESTART.1 b/test/examples/single_point/RESTART.1 new file mode 100644 index 0000000000000000000000000000000000000000..88b00a1a01f06fe6a5955b36cc01256a544cf1ce Binary files /dev/null and b/test/examples/single_point/RESTART.1 differ diff --git a/test/examples/single_point/input.inp b/test/examples/single_point/input.inp new file mode 100755 index 0000000000000000000000000000000000000000..c1b5c8a868f3b0aec8910af9399c6bfabec9fa3d --- /dev/null +++ b/test/examples/single_point/input.inp @@ -0,0 +1,35 @@ +&INFO +isolated hydrogen molecule. +single point calculation. +&END + +&CPMD + OPTIMIZE WAVEFUNCTION + CONVERGENCE ORBITALS + 1.0d-7 + CENTER MOLECULE ON + PRINT FORCES ON +&END + +&SYSTEM + SYMMETRY + 1 + ANGSTROM + CELL + 8.00 1.0 1.0 0.0 0.0 0.0 + CUTOFF + 70.0 +&END + +&DFT + FUNCTIONAL LDA +&END + +&ATOMS +*H_MT_LDA.psp + LMAX=S + 2 + 4.371 4.000 4.000 + 3.629 4.000 4.000 +&END + diff --git a/test/examples/single_point/output.out b/test/examples/single_point/output.out new file mode 100644 index 0000000000000000000000000000000000000000..b7fb802822bc95d7164dab1cff250c4b764493de --- /dev/null +++ b/test/examples/single_point/output.out @@ -0,0 +1,286 @@ + cp_groups: we are using a 1 x 1 grid (groups x nprocs). + PROGRAM CPMD STARTED AT: 2016-07-04 14:05:06.851 + SETCNST| USING: CODATA 2006 UNITS + + + ****** ****** **** **** ****** + ******* ******* ********** ******* + *** ** *** ** **** ** ** *** + ** ** *** ** ** ** ** ** + ** ******* ** ** ** ** + *** ****** ** ** ** *** + ******* ** ** ** ******* + ****** ** ** ** ****** + + VERSION 4.1-rUnversioned directory + + COPYRIGHT + IBM RESEARCH DIVISION + MPI FESTKOERPERFORSCHUNG STUTTGART + + The CPMD consortium + Home Page: http://www.cpmd.org + Mailing List: cpmd-list@cpmd.org + E-mail: cpmd@cpmd.org + + + *** Jun 22 2016 -- 12:41:05 *** + + THE INPUT FILE IS: input.inp + THIS JOB RUNS ON: lenovo700 + THE CURRENT DIRECTORY IS: + /home/lauri/Dropbox/nomad-dev/nomad-lab-base/parsers/cpmd/test/unittests/cpmd_4.1/h2 + THE TEMPORARY DIRECTORY IS: + /home/lauri/Dropbox/nomad-dev/nomad-lab-base/parsers/cpmd/test/unittests/cpmd_4.1/h2 + THE PROCESS ID IS: 32589 + THE JOB WAS SUBMITTED BY: lauri + + + ****************************************************************************** + * INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO * + ****************************************************************************** + * isolated hydrogen molecule. * + * single point calculation. * + ****************************************************************************** + + SINGLE POINT DENSITY OPTIMIZATION + + USING SEED 123456 TO INIT. PSEUDO RANDOM NUMBER GEN. + PATH TO THE RESTART FILES: ./ + GRAM-SCHMIDT ORTHOGONALIZATION + MAXIMUM NUMBER OF STEPS: 10000 STEPS + MAXIMUM NUMBER OF ITERATIONS FOR SC: 10000 STEPS + PRINT INTERMEDIATE RESULTS EVERY 10001 STEPS + STORE INTERMEDIATE RESULTS EVERY 10001 STEPS + NUMBER OF DISTINCT RESTART FILES: 1 + TEMPERATURE IS CALCULATED ASSUMING EXTENDED BULK BEHAVIOR + FICTITIOUS ELECTRON MASS: 400.0000 + TIME STEP FOR ELECTRONS: 5.0000 + TIME STEP FOR IONS: 5.0000 + CONVERGENCE CRITERIA FOR WAVEFUNCTION OPTIMIZATION: 1.0000E-07 + WAVEFUNCTION OPTIMIZATION BY PRECONDITIONED DIIS + THRESHOLD FOR THE WF-HESSIAN IS 0.5000 + MAXIMUM NUMBER OF VECTORS RETAINED FOR DIIS: 10 + STEPS UNTIL DIIS RESET ON POOR PROGRESS: 10 + FULL ELECTRONIC GRADIENT IS USED + SPLINE INTERPOLATION IN G-SPACE FOR PSEUDOPOTENTIAL FUNCTIONS + NUMBER OF SPLINE POINTS: 5000 + + EXCHANGE CORRELATION FUNCTIONALS + LDA EXCHANGE: NONE + LDA XC THROUGH PADE APPROXIMATION + S.GOEDECKER, J.HUTTER, M.TETER PRB 541703 (1996) + + *** DETSP| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + ***************************** ATOMS **************************** + NR TYPE X(BOHR) Y(BOHR) Z(BOHR) MBL + 1 H 8.259993 7.558904 7.558904 3 + 2 H 6.857816 7.558904 7.558904 3 + **************************************************************** + + NUMBER OF STATES: 1 + NUMBER OF ELECTRONS: 2.00000 + CHARGE: 0.00000 + ELECTRON TEMPERATURE(KELVIN): 0.00000 + OCCUPATION + 2.0 + + ============================================================ + | Pseudopotential Report Thu Jan 11 18:21:49 1996 | + ------------------------------------------------------------ + | Atomic Symbol : H | + | Atomic Number : 1 | + | Number of core states : 0 | + | Number of valence states : 1 | + | Exchange-Correlation Functional : | + | Slater exchange : .6667 | + | LDA correlation : Ceperley-Alder | + | Electron Configuration : N L Occupation | + | 1 S 1.0000 | + | Full Potential Total Energy -.445894 | + | Trouiller-Martins normconserving PP | + | n l rc energy | + | 1 S .5000 -.23366 | + | 2 P .5000 -.23366 | + | Number of Mesh Points : 511 | + | Pseudoatom Total Energy -.445889 | + ============================================================ + + **************************************************************** + * ATOM MASS RAGGIO NLCC PSEUDOPOTENTIAL * + * H 1.0080 1.2000 NO S LOCAL * + **************************************************************** + + + PARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARA + NCPU NGW NHG PLANES GXRAYS HXRAYS ORBITALS Z-PLANES + 0 17133 136605 90 1281 5089 1 1 + G=0 COMPONENT ON PROCESSOR : 0 + PARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARA + + *** loadpa| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + OPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPEN + NUMBER OF CPUS PER TASK 1 + OPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPEN + + *** rggen| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + ************************** SUPERCELL *************************** + SYMMETRY: SIMPLE CUBIC + LATTICE CONSTANT(a.u.): 15.11781 + CELL DIMENSION: 15.1178 1.0000 1.0000 0.0000 0.0000 0.0000 + VOLUME(OMEGA IN BOHR^3): 3455.14726 + LATTICE VECTOR A1(BOHR): 15.1178 0.0000 0.0000 + LATTICE VECTOR A2(BOHR): 0.0000 15.1178 0.0000 + LATTICE VECTOR A3(BOHR): 0.0000 0.0000 15.1178 + RECIP. LAT. VEC. B1(2Pi/BOHR): 0.0661 0.0000 0.0000 + RECIP. LAT. VEC. B2(2Pi/BOHR): 0.0000 0.0661 0.0000 + RECIP. LAT. VEC. B3(2Pi/BOHR): 0.0000 0.0000 0.0661 + REAL SPACE MESH: 90 90 90 + WAVEFUNCTION CUTOFF(RYDBERG): 70.00000 + DENSITY CUTOFF(RYDBERG): (DUAL= 4.00) 280.00000 + NUMBER OF PLANE WAVES FOR WAVEFUNCTION CUTOFF: 17133 + NUMBER OF PLANE WAVES FOR DENSITY CUTOFF: 136605 + **************************************************************** + + *** RINFORCE| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + *** FFTPRP| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + GENERATE ATOMIC BASIS SET + H SLATER ORBITALS + 1S ALPHA= 1.0000 OCCUPATION= 1.00 + + + INITIALIZATION TIME: 0.48 SECONDS + + *** WFOPTS| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + *** PHFAC| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + NOTE: ATOMIC GUESS USING DISTRIBUTED LINALG WITH LANCZOS + *** ATOMWF| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + ATRHO| CHARGE(R-SPACE): 2.000000 (G-SPACE): 2.000000 + + ATOM COORDINATES GRADIENTS (-FORCES) + 1 H 8.2600 7.5589 7.5589 0.000E+00 0.000E+00 0.000E+00 + 2 H 6.8578 7.5589 7.5589 0.000E+00 0.000E+00 0.000E+00 + + TIME FOR WAVEFUNCTION INITIALIZATION: 0.83 SECONDS + *** RWFOPT| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + EWALD| SUM IN REAL SPACE OVER 1* 1* 1 CELLS + + TOTAL INTEGRATED ELECTRONIC DENSITY + IN G-SPACE = 2.0000000000 + IN R-SPACE = 2.0000000000 + + (K+E1+L+N+X) TOTAL ENERGY = -1.09689770 A.U. + (K) KINETIC ENERGY = 0.81247072 A.U. + (E1=A-S+R) ELECTROSTATIC ENERGY = -0.48640053 A.U. + (S) ESELF = 0.66490380 A.U. + (R) ESR = 0.17302593 A.U. + (L) LOCAL PSEUDOPOTENTIAL ENERGY = -0.84879440 A.U. + (N) N-L PSEUDOPOTENTIAL ENERGY = 0.00000000 A.U. + (X) EXCHANGE-CORRELATION ENERGY = -0.57417350 A.U. + + NFI GEMAX CNORM ETOT DETOT TCPU + 1 3.816E-02 2.886E-03 -1.096898 0.000E+00 0.23 + 2 8.628E-03 1.041E-03 -1.130803 -3.391E-02 0.22 + 3 2.736E-03 2.293E-04 -1.132376 -1.572E-03 0.22 + 4 6.115E-04 4.235E-05 -1.132456 -8.056E-05 0.22 + 5 1.532E-04 7.007E-06 -1.132459 -3.315E-06 0.24 + 6 3.895E-05 1.396E-06 -1.132460 -1.338E-07 0.22 + 7 6.288E-06 4.459E-07 -1.132460 -7.717E-09 0.22 + 8 7.941E-07 1.282E-07 -1.132460 -4.283E-10 0.22 + 9 1.237E-07 2.861E-08 -1.132460 -1.992E-11 0.22 + 10 2.278E-08 5.401E-09 -1.132460 -8.606E-13 0.22 + + RESTART INFORMATION WRITTEN ON FILE ./RESTART.1 + *** RWFOPT| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + **************************************************************** + * * + * FINAL RESULTS * + * * + **************************************************************** + + ATOM COORDINATES GRADIENTS (-FORCES) + 1 H 8.2600 7.5589 7.5589 1.780E-02 -1.104E-16 -9.425E-17 + 2 H 6.8578 7.5589 7.5589 -1.780E-02 -1.867E-16 -1.490E-16 + + **************************************************************** + + + ELECTRONIC GRADIENT: + MAX. COMPONENT = 1.15980E-08 NORM = 1.11525E-09 + NUCLEAR GRADIENT: + MAX. COMPONENT = 1.77985E-02 NORM = 1.02760E-02 + + + TOTAL INTEGRATED ELECTRONIC DENSITY + IN G-SPACE = 2.0000000000 + IN R-SPACE = 2.0000000000 + + (K+E1+L+N+X) TOTAL ENERGY = -1.13245953 A.U. + (K) KINETIC ENERGY = 1.09007149 A.U. + (E1=A-S+R) ELECTROSTATIC ENERGY = -0.47319176 A.U. + (S) ESELF = 0.66490380 A.U. + (R) ESR = 0.17302593 A.U. + (L) LOCAL PSEUDOPOTENTIAL ENERGY = -1.09902228 A.U. + (N) N-L PSEUDOPOTENTIAL ENERGY = 0.00000000 A.U. + (X) EXCHANGE-CORRELATION ENERGY = -0.65031699 A.U. + + **************************************************************** + + + + **************************************************************** + * * + * TIMING * + * * + **************************************************************** + SUBROUTINE CALLS SELF TIME TOTAL TIME + AVERAGE MAXIMUM AVERAGE MAXIMUM + cpmd 1 0.00 0.00 3.67 3.67 + rwfopt 1 0.00 0.00 3.20 3.20 + updwf 11 0.00 0.00 2.37 2.37 + forcedr 11 0.00 0.00 2.33 2.33 + forces 11 0.00 0.00 2.33 2.33 + forces_a 11 0.00 0.00 1.80 1.80 + rscpot 11 0.00 0.00 1.80 1.80 + vofrho 12 0.00 0.00 1.79 1.79 + VOFRHOB 12 0.04 0.04 1.22 1.22 + INVFFTN 37 1.12 1.12 1.12 1.12 + initrun 1 0.00 0.00 0.82 0.82 + rinitwf 1 0.00 0.00 0.82 0.82 + ATOMWF 1 0.00 0.00 0.82 0.82 + FWFFTN 25 0.69 0.69 0.69 0.69 + xcener_new 12 0.04 0.04 0.67 0.67 + mikeu 12 0.63 0.63 0.63 0.63 + vpsi 13 0.06 0.06 0.63 0.63 + VOFRHOA 12 0.03 0.03 0.57 0.57 + ATRHO 1 0.35 0.35 0.39 0.39 + rhoofr 11 0.07 0.07 0.34 0.34 + rinit 1 0.00 0.00 0.26 0.26 + rggen 1 0.01 0.01 0.26 0.26 + loadpa 1 0.01 0.01 0.25 0.25 + dist_ksmat 1 0.00 0.00 0.11 0.11 + RINFORCE 1 0.00 0.00 0.10 0.10 + NUMPW 1 0.10 0.10 0.10 0.10 + loadpa_b 1 0.10 0.10 0.10 0.10 + loadpa_c 1 0.10 0.10 0.10 0.10 + FORMFN 1 0.10 0.10 0.10 0.10 + ppener 12 0.06 0.06 0.06 0.06 + loadpa_a 1 0.04 0.04 0.04 0.04 + EICALC 12 0.04 0.04 0.04 0.04 + odiis 11 0.04 0.04 0.04 0.04 + PUTPS 1 0.01 0.01 0.01 0.01 + forces_b 11 0.00 0.00 0.01 0.01 + potfor 1 0.01 0.01 0.01 0.01 + fftprp 1 0.00 0.00 0.00 0.00 + **************************************************************** + + CPU TIME : 0 HOURS 0 MINUTES 3.67 SECONDS + ELAPSED TIME : 0 HOURS 0 MINUTES 3.67 SECONDS + *** CPMD| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + PROGRAM CPMD ENDED AT: 2016-07-04 14:05:10.523 diff --git a/test/unittests/cpmd_4.1/H_MT_LDA.psp b/test/unittests/cpmd_4.1/H_MT_LDA.psp new file mode 100755 index 0000000000000000000000000000000000000000..f24a5a5b39bcf21727cc7ab07da90ba83893f2aa --- /dev/null +++ b/test/unittests/cpmd_4.1/H_MT_LDA.psp @@ -0,0 +1,1056 @@ +&ATOM + Z = 1 + ZV = 1 + XC = 1100 .666667 + TYPE = NORMCONSERVING NUMERIC +&END +&INFO + ============================================================ + | Pseudopotential Report Thu Jan 11 18:21:49 1996 | + ------------------------------------------------------------ + | Atomic Symbol : H | + | Atomic Number : 1 | + | Number of core states : 0 | + | Number of valence states : 1 | + | Exchange-Correlation Functional : | + | Slater exchange : .6667 | + | LDA correlation : Ceperley-Alder | + | Electron Configuration : N L Occupation | + | 1 S 1.0000 | + | Full Potential Total Energy -.445894 | + | Trouiller-Martins normconserving PP | + | n l rc energy | + | 1 S .5000 -.23366 | + | 2 P .5000 -.23366 | + | Number of Mesh Points : 511 | + | Pseudoatom Total Energy -.445889 | + ============================================================ +&END +&POTENTIAL + 511 + .62500000E-02 -.73542906E+01 -.54814743E+01 + .63593750E-02 -.73542899E+01 -.54814736E+01 + .64706641E-02 -.73542890E+01 -.54814728E+01 + .65839007E-02 -.73542882E+01 -.54814721E+01 + .66991189E-02 -.73542874E+01 -.54814713E+01 + .68163535E-02 -.73542866E+01 -.54814706E+01 + .69356397E-02 -.73542858E+01 -.54814700E+01 + .70570134E-02 -.73542851E+01 -.54814694E+01 + .71805111E-02 -.73542844E+01 -.54814688E+01 + .73061701E-02 -.73542837E+01 -.54814683E+01 + .74340281E-02 -.73542831E+01 -.54814678E+01 + .75641236E-02 -.73542825E+01 -.54814673E+01 + .76964957E-02 -.73542819E+01 -.54814669E+01 + .78311844E-02 -.73542814E+01 -.54814666E+01 + .79682301E-02 -.73542809E+01 -.54814663E+01 + .81076741E-02 -.73542805E+01 -.54814660E+01 + .82495584E-02 -.73542800E+01 -.54814658E+01 + .83939257E-02 -.73542796E+01 -.54814657E+01 + .85408194E-02 -.73542793E+01 -.54814655E+01 + .86902838E-02 -.73542789E+01 -.54814655E+01 + .88423637E-02 -.73542786E+01 -.54814654E+01 + .89971051E-02 -.73542783E+01 -.54814654E+01 + .91545544E-02 -.73542781E+01 -.54814655E+01 + .93147591E-02 -.73542778E+01 -.54814656E+01 + .94777674E-02 -.73542776E+01 -.54814658E+01 + .96436283E-02 -.73542774E+01 -.54814660E+01 + .98123918E-02 -.73542772E+01 -.54814662E+01 + .99841087E-02 -.73542771E+01 -.54814665E+01 + .10158831E-01 -.73542769E+01 -.54814668E+01 + .10336610E-01 -.73542768E+01 -.54814672E+01 + .10517501E-01 -.73542766E+01 -.54814677E+01 + .10701557E-01 -.73542765E+01 -.54814681E+01 + .10888834E-01 -.73542764E+01 -.54814686E+01 + .11079389E-01 -.73542762E+01 -.54814692E+01 + .11273278E-01 -.73542761E+01 -.54814698E+01 + .11470561E-01 -.73542759E+01 -.54814704E+01 + .11671295E-01 -.73542758E+01 -.54814711E+01 + .11875543E-01 -.73542756E+01 -.54814718E+01 + .12083365E-01 -.73542753E+01 -.54814726E+01 + .12294824E-01 -.73542751E+01 -.54814734E+01 + .12509983E-01 -.73542748E+01 -.54814742E+01 + .12728908E-01 -.73542744E+01 -.54814751E+01 + .12951664E-01 -.73542740E+01 -.54814760E+01 + .13178318E-01 -.73542736E+01 -.54814769E+01 + .13408939E-01 -.73542730E+01 -.54814779E+01 + .13643595E-01 -.73542724E+01 -.54814788E+01 + .13882358E-01 -.73542717E+01 -.54814798E+01 + .14125299E-01 -.73542709E+01 -.54814808E+01 + .14372492E-01 -.73542700E+01 -.54814819E+01 + .14624011E-01 -.73542689E+01 -.54814829E+01 + .14879931E-01 -.73542677E+01 -.54814840E+01 + .15140330E-01 -.73542663E+01 -.54814850E+01 + .15405285E-01 -.73542647E+01 -.54814860E+01 + .15674878E-01 -.73542630E+01 -.54814870E+01 + .15949188E-01 -.73542610E+01 -.54814880E+01 + .16228299E-01 -.73542588E+01 -.54814890E+01 + .16512294E-01 -.73542563E+01 -.54814900E+01 + .16801259E-01 -.73542535E+01 -.54814909E+01 + .17095281E-01 -.73542505E+01 -.54814917E+01 + .17394449E-01 -.73542470E+01 -.54814925E+01 + .17698852E-01 -.73542432E+01 -.54814932E+01 + .18008582E-01 -.73542390E+01 -.54814938E+01 + .18323732E-01 -.73542344E+01 -.54814943E+01 + .18644397E-01 -.73542292E+01 -.54814947E+01 + .18970674E-01 -.73542235E+01 -.54814950E+01 + .19302661E-01 -.73542173E+01 -.54814951E+01 + .19640457E-01 -.73542104E+01 -.54814950E+01 + .19984165E-01 -.73542028E+01 -.54814948E+01 + .20333888E-01 -.73541945E+01 -.54814943E+01 + .20689731E-01 -.73541854E+01 -.54814936E+01 + .21051802E-01 -.73541755E+01 -.54814927E+01 + .21420208E-01 -.73541646E+01 -.54814914E+01 + .21795062E-01 -.73541527E+01 -.54814898E+01 + .22176475E-01 -.73541397E+01 -.54814879E+01 + .22564564E-01 -.73541255E+01 -.54814856E+01 + .22959444E-01 -.73541100E+01 -.54814828E+01 + .23361234E-01 -.73540932E+01 -.54814796E+01 + .23770055E-01 -.73540748E+01 -.54814759E+01 + .24186031E-01 -.73540549E+01 -.54814716E+01 + .24609287E-01 -.73540332E+01 -.54814666E+01 + .25039950E-01 -.73540096E+01 -.54814610E+01 + .25478149E-01 -.73539840E+01 -.54814547E+01 + .25924016E-01 -.73539563E+01 -.54814476E+01 + .26377687E-01 -.73539262E+01 -.54814396E+01 + .26839296E-01 -.73538935E+01 -.54814306E+01 + .27308984E-01 -.73538582E+01 -.54814206E+01 + .27786891E-01 -.73538199E+01 -.54814095E+01 + .28273162E-01 -.73537784E+01 -.54813971E+01 + .28767942E-01 -.73537336E+01 -.54813834E+01 + .29271381E-01 -.73536850E+01 -.54813683E+01 + .29783630E-01 -.73536326E+01 -.54813517E+01 + .30304844E-01 -.73535759E+01 -.54813333E+01 + .30835178E-01 -.73535147E+01 -.54813132E+01 + .31374794E-01 -.73534485E+01 -.54812910E+01 + .31923853E-01 -.73533771E+01 -.54812668E+01 + .32482520E-01 -.73533001E+01 -.54812402E+01 + .33050964E-01 -.73532169E+01 -.54812111E+01 + .33629356E-01 -.73531272E+01 -.54811794E+01 + .34217870E-01 -.73530305E+01 -.54811447E+01 + .34816683E-01 -.73529263E+01 -.54811070E+01 + .35425975E-01 -.73528139E+01 -.54810658E+01 + .36045929E-01 -.73526929E+01 -.54810210E+01 + .36676733E-01 -.73525625E+01 -.54809723E+01 + .37318576E-01 -.73524221E+01 -.54809193E+01 + .37971651E-01 -.73522709E+01 -.54808618E+01 + .38636155E-01 -.73521081E+01 -.54807994E+01 + .39312287E-01 -.73519330E+01 -.54807317E+01 + .40000252E-01 -.73517445E+01 -.54806583E+01 + .40700257E-01 -.73515418E+01 -.54805788E+01 + .41412511E-01 -.73513238E+01 -.54804927E+01 + .42137230E-01 -.73510893E+01 -.54803994E+01 + .42874632E-01 -.73508373E+01 -.54802986E+01 + .43624938E-01 -.73505663E+01 -.54801896E+01 + .44388374E-01 -.73502751E+01 -.54800717E+01 + .45165171E-01 -.73499622E+01 -.54799444E+01 + .45955561E-01 -.73496260E+01 -.54798069E+01 + .46759784E-01 -.73492648E+01 -.54796585E+01 + .47578080E-01 -.73488770E+01 -.54794983E+01 + .48410696E-01 -.73484604E+01 -.54793255E+01 + .49257883E-01 -.73480132E+01 -.54791391E+01 + .50119896E-01 -.73475332E+01 -.54789383E+01 + .50996995E-01 -.73470179E+01 -.54787218E+01 + .51889442E-01 -.73464649E+01 -.54784885E+01 + .52797507E-01 -.73458715E+01 -.54782373E+01 + .53721464E-01 -.73452348E+01 -.54779669E+01 + .54661589E-01 -.73445519E+01 -.54776757E+01 + .55618167E-01 -.73438194E+01 -.54773624E+01 + .56591485E-01 -.73430338E+01 -.54770253E+01 + .57581836E-01 -.73421915E+01 -.54766628E+01 + .58589518E-01 -.73412884E+01 -.54762729E+01 + .59614835E-01 -.73403203E+01 -.54758537E+01 + .60658094E-01 -.73392827E+01 -.54754032E+01 + .61719611E-01 -.73381707E+01 -.54749191E+01 + .62799704E-01 -.73369792E+01 -.54743991E+01 + .63898699E-01 -.73357026E+01 -.54738405E+01 + .65016926E-01 -.73343351E+01 -.54732406E+01 + .66154722E-01 -.73328703E+01 -.54725966E+01 + .67312430E-01 -.73313017E+01 -.54719053E+01 + .68490398E-01 -.73296220E+01 -.54711634E+01 + .69688980E-01 -.73278237E+01 -.54703674E+01 + .70908537E-01 -.73258987E+01 -.54695135E+01 + .72149436E-01 -.73238383E+01 -.54685977E+01 + .73412051E-01 -.73216333E+01 -.54676156E+01 + .74696762E-01 -.73192740E+01 -.54665627E+01 + .76003955E-01 -.73167499E+01 -.54654342E+01 + .77334025E-01 -.73140499E+01 -.54642247E+01 + .78687370E-01 -.73111623E+01 -.54629288E+01 + .80064399E-01 -.73080745E+01 -.54615406E+01 + .81465526E-01 -.73047730E+01 -.54600537E+01 + .82891173E-01 -.73012439E+01 -.54584615E+01 + .84341768E-01 -.72974719E+01 -.54567568E+01 + .85817749E-01 -.72934411E+01 -.54549321E+01 + .87319560E-01 -.72891345E+01 -.54529794E+01 + .88847652E-01 -.72845340E+01 -.54508899E+01 + .90402486E-01 -.72796206E+01 -.54486548E+01 + .91984530E-01 -.72743739E+01 -.54462642E+01 + .93594259E-01 -.72687724E+01 -.54437078E+01 + .95232158E-01 -.72627934E+01 -.54409749E+01 + .96898721E-01 -.72564126E+01 -.54380538E+01 + .98594449E-01 -.72496047E+01 -.54349323E+01 + .10031985E+00 -.72423426E+01 -.54315974E+01 + .10207545E+00 -.72345978E+01 -.54280352E+01 + .10386177E+00 -.72263400E+01 -.54242312E+01 + .10567935E+00 -.72175375E+01 -.54201699E+01 + .10752874E+00 -.72081567E+01 -.54158350E+01 + .10941049E+00 -.71981622E+01 -.54112093E+01 + .11132518E+00 -.71875166E+01 -.54062744E+01 + .11327337E+00 -.71761806E+01 -.54010112E+01 + .11525565E+00 -.71641130E+01 -.53953992E+01 + .11727262E+00 -.71512702E+01 -.53894170E+01 + .11932489E+00 -.71376067E+01 -.53830420E+01 + .12141308E+00 -.71230747E+01 -.53762505E+01 + .12353781E+00 -.71076239E+01 -.53690173E+01 + .12569972E+00 -.70912019E+01 -.53613163E+01 + .12789947E+00 -.70737539E+01 -.53531196E+01 + .13013771E+00 -.70552223E+01 -.53443984E+01 + .13241512E+00 -.70355476E+01 -.53351223E+01 + .13473238E+00 -.70146673E+01 -.53252595E+01 + .13709020E+00 -.69925167E+01 -.53147766E+01 + .13948928E+00 -.69690285E+01 -.53036389E+01 + .14193034E+00 -.69441330E+01 -.52918103E+01 + .14441412E+00 -.69177579E+01 -.52792529E+01 + .14694137E+00 -.68898289E+01 -.52659274E+01 + .14951284E+00 -.68602690E+01 -.52517930E+01 + .15212932E+00 -.68289993E+01 -.52368076E+01 + .15479158E+00 -.67959388E+01 -.52209272E+01 + .15750043E+00 -.67610046E+01 -.52041067E+01 + .16025669E+00 -.67241123E+01 -.51862995E+01 + .16306118E+00 -.66851759E+01 -.51674577E+01 + .16591475E+00 -.66441084E+01 -.51475322E+01 + .16881826E+00 -.66008223E+01 -.51264726E+01 + .17177258E+00 -.65552293E+01 -.51042277E+01 + .17477860E+00 -.65072415E+01 -.50807453E+01 + .17783722E+00 -.64567717E+01 -.50559727E+01 + .18094938E+00 -.64037335E+01 -.50298566E+01 + .18411599E+00 -.63480428E+01 -.50023436E+01 + .18733802E+00 -.62896179E+01 -.49733800E+01 + .19061644E+00 -.62283805E+01 -.49429130E+01 + .19395222E+00 -.61642565E+01 -.49108902E+01 + .19734639E+00 -.60971772E+01 -.48772601E+01 + .20079995E+00 -.60270803E+01 -.48419733E+01 + .20431395E+00 -.59539110E+01 -.48049818E+01 + .20788944E+00 -.58776231E+01 -.47662407E+01 + .21152751E+00 -.57981809E+01 -.47257080E+01 + .21522924E+00 -.57155600E+01 -.46833454E+01 + .21899575E+00 -.56297495E+01 -.46391193E+01 + .22282818E+00 -.55407531E+01 -.45930013E+01 + .22672767E+00 -.54485912E+01 -.45449690E+01 + .23069540E+00 -.53533027E+01 -.44950069E+01 + .23473257E+00 -.52549465E+01 -.44431074E+01 + .23884039E+00 -.51536042E+01 -.43892717E+01 + .24302010E+00 -.50493811E+01 -.43335107E+01 + .24727295E+00 -.49424090E+01 -.42758464E+01 + .25160023E+00 -.48328477E+01 -.42163124E+01 + .25600323E+00 -.47208870E+01 -.41549555E+01 + .26048329E+00 -.46067487E+01 -.40918365E+01 + .26504175E+00 -.44906878E+01 -.40270315E+01 + .26967998E+00 -.43729943E+01 -.39606325E+01 + .27439938E+00 -.42539942E+01 -.38927488E+01 + .27920136E+00 -.41340504E+01 -.38235078E+01 + .28408739E+00 -.40135629E+01 -.37530551E+01 + .28905892E+00 -.38929686E+01 -.36815562E+01 + .29411745E+00 -.37727407E+01 -.36091954E+01 + .29926450E+00 -.36533865E+01 -.35361773E+01 + .30450163E+00 -.35354455E+01 -.34627250E+01 + .30983041E+00 -.34194852E+01 -.33890807E+01 + .31525244E+00 -.33060963E+01 -.33155036E+01 + .32076936E+00 -.31958866E+01 -.32422684E+01 + .32638283E+00 -.30894728E+01 -.31696629E+01 + .33209453E+00 -.29874713E+01 -.30979849E+01 + .33790618E+00 -.28904860E+01 -.30275379E+01 + .34381954E+00 -.27990954E+01 -.29586266E+01 + .34983638E+00 -.27138363E+01 -.28915508E+01 + .35595852E+00 -.26351863E+01 -.28265985E+01 + .36218779E+00 -.25635433E+01 -.27640381E+01 + .36852608E+00 -.24992039E+01 -.27041095E+01 + .37497528E+00 -.24423395E+01 -.26470137E+01 + .38153735E+00 -.23929721E+01 -.25929030E+01 + .38821425E+00 -.23509487E+01 -.25418689E+01 + .39500800E+00 -.23159189E+01 -.24939317E+01 + .40192064E+00 -.22873133E+01 -.24490293E+01 + .40895425E+00 -.22643296E+01 -.24070078E+01 + .41611095E+00 -.22459260E+01 -.23676157E+01 + .42339290E+00 -.22308294E+01 -.23305008E+01 + .43080227E+00 -.22175622E+01 -.22952152E+01 + .43834131E+00 -.22044970E+01 -.22612282E+01 + .44601228E+00 -.21899477E+01 -.22279537E+01 + .45381750E+00 -.21723102E+01 -.21947944E+01 + .46175931E+00 -.21502688E+01 -.21612106E+01 + .46984009E+00 -.21230868E+01 -.21268210E+01 + .47806229E+00 -.20910079E+01 -.20915449E+01 + .48642838E+00 -.20557990E+01 -.20557990E+01 + .49494088E+00 -.20204412E+01 -.20204412E+01 + .50360235E+00 -.19856916E+01 -.19856916E+01 + .51241539E+00 -.19515396E+01 -.19515396E+01 + .52138266E+00 -.19179750E+01 -.19179750E+01 + .53050685E+00 -.18849877E+01 -.18849877E+01 + .53979072E+00 -.18525677E+01 -.18525677E+01 + .54923706E+00 -.18207054E+01 -.18207054E+01 + .55884871E+00 -.17893910E+01 -.17893910E+01 + .56862856E+00 -.17586152E+01 -.17586152E+01 + .57857956E+00 -.17283687E+01 -.17283687E+01 + .58870470E+00 -.16986424E+01 -.16986424E+01 + .59900704E+00 -.16694274E+01 -.16694274E+01 + .60948966E+00 -.16407149E+01 -.16407149E+01 + .62015573E+00 -.16124962E+01 -.16124962E+01 + .63100845E+00 -.15847628E+01 -.15847628E+01 + .64205110E+00 -.15575064E+01 -.15575064E+01 + .65328700E+00 -.15307188E+01 -.15307188E+01 + .66471952E+00 -.15043919E+01 -.15043919E+01 + .67635211E+00 -.14785179E+01 -.14785179E+01 + .68818827E+00 -.14530888E+01 -.14530888E+01 + .70023157E+00 -.14280971E+01 -.14280971E+01 + .71248562E+00 -.14035352E+01 -.14035352E+01 + .72495412E+00 -.13793957E+01 -.13793957E+01 + .73764082E+00 -.13556715E+01 -.13556715E+01 + .75054953E+00 -.13323552E+01 -.13323552E+01 + .76368415E+00 -.13094400E+01 -.13094400E+01 + .77704862E+00 -.12869189E+01 -.12869189E+01 + .79064697E+00 -.12647852E+01 -.12647852E+01 + .80448329E+00 -.12430321E+01 -.12430321E+01 + .81856175E+00 -.12216531E+01 -.12216531E+01 + .83288658E+00 -.12006419E+01 -.12006419E+01 + .84746209E+00 -.11799920E+01 -.11799920E+01 + .86229268E+00 -.11596973E+01 -.11596973E+01 + .87738280E+00 -.11397516E+01 -.11397516E+01 + .89273700E+00 -.11201490E+01 -.11201490E+01 + .90835990E+00 -.11008836E+01 -.11008836E+01 + .92425620E+00 -.10819494E+01 -.10819494E+01 + .94043068E+00 -.10633410E+01 -.10633410E+01 + .95688822E+00 -.10450525E+01 -.10450525E+01 + .97363376E+00 -.10270786E+01 -.10270786E+01 + .99067235E+00 -.10094139E+01 -.10094139E+01 + .10080091E+01 -.99205296E+00 -.99205296E+00 + .10256493E+01 -.97499062E+00 -.97499062E+00 + .10435981E+01 -.95822174E+00 -.95822174E+00 + .10618611E+01 -.94174126E+00 -.94174126E+00 + .10804437E+01 -.92554423E+00 -.92554423E+00 + .10993514E+01 -.90962578E+00 -.90962578E+00 + .11185901E+01 -.89398111E+00 -.89398111E+00 + .11381654E+01 -.87860551E+00 -.87860551E+00 + .11580833E+01 -.86349435E+00 -.86349435E+00 + .11783498E+01 -.84864310E+00 -.84864310E+00 + .11989709E+01 -.83404727E+00 -.83404727E+00 + .12199529E+01 -.81970247E+00 -.81970247E+00 + .12413021E+01 -.80560440E+00 -.80560440E+00 + .12630248E+01 -.79174879E+00 -.79174879E+00 + .12851278E+01 -.77813149E+00 -.77813149E+00 + .13076175E+01 -.76474839E+00 -.76474839E+00 + .13305008E+01 -.75159547E+00 -.75159547E+00 + .13537846E+01 -.73866877E+00 -.73866877E+00 + .13774758E+01 -.72596439E+00 -.72596439E+00 + .14015816E+01 -.71347852E+00 -.71347852E+00 + .14261093E+01 -.70120739E+00 -.70120739E+00 + .14510662E+01 -.68914732E+00 -.68914732E+00 + .14764599E+01 -.67729466E+00 -.67729466E+00 + .15022979E+01 -.66564586E+00 -.66564586E+00 + .15285882E+01 -.65419741E+00 -.65419741E+00 + .15553385E+01 -.64294585E+00 -.64294585E+00 + .15825569E+01 -.63188782E+00 -.63188782E+00 + .16102516E+01 -.62101997E+00 -.62101997E+00 + .16384310E+01 -.61033904E+00 -.61033904E+00 + .16671036E+01 -.59984181E+00 -.59984181E+00 + .16962779E+01 -.58952512E+00 -.58952512E+00 + .17259627E+01 -.57938587E+00 -.57938587E+00 + .17561671E+01 -.56942100E+00 -.56942100E+00 + .17869000E+01 -.55962752E+00 -.55962752E+00 + .18181708E+01 -.55000248E+00 -.55000248E+00 + .18499888E+01 -.54054298E+00 -.54054298E+00 + .18823636E+01 -.53124617E+00 -.53124617E+00 + .19153049E+01 -.52210926E+00 -.52210926E+00 + .19488228E+01 -.51312950E+00 -.51312950E+00 + .19829272E+01 -.50430417E+00 -.50430417E+00 + .20176284E+01 -.49563064E+00 -.49563064E+00 + .20529369E+01 -.48710628E+00 -.48710628E+00 + .20888633E+01 -.47872853E+00 -.47872853E+00 + .21254184E+01 -.47049487E+00 -.47049487E+00 + .21626132E+01 -.46240282E+00 -.46240282E+00 + .22004589E+01 -.45444995E+00 -.45444995E+00 + .22389670E+01 -.44663385E+00 -.44663385E+00 + .22781489E+01 -.43895219E+00 -.43895219E+00 + .23180165E+01 -.43140264E+00 -.43140264E+00 + .23585818E+01 -.42398294E+00 -.42398294E+00 + .23998570E+01 -.41669085E+00 -.41669085E+00 + .24418545E+01 -.40952418E+00 -.40952418E+00 + .24845869E+01 -.40248076E+00 -.40248076E+00 + .25280672E+01 -.39555849E+00 -.39555849E+00 + .25723084E+01 -.38875527E+00 -.38875527E+00 + .26173237E+01 -.38206906E+00 -.38206906E+00 + .26631269E+01 -.37549785E+00 -.37549785E+00 + .27097316E+01 -.36903965E+00 -.36903965E+00 + .27571519E+01 -.36269253E+00 -.36269253E+00 + .28054021E+01 -.35645457E+00 -.35645457E+00 + .28544966E+01 -.35032390E+00 -.35032390E+00 + .29044503E+01 -.34429868E+00 -.34429868E+00 + .29552782E+01 -.33837708E+00 -.33837708E+00 + .30069956E+01 -.33255732E+00 -.33255732E+00 + .30596180E+01 -.32683766E+00 -.32683766E+00 + .31131613E+01 -.32121637E+00 -.32121637E+00 + .31676416E+01 -.31569177E+00 -.31569177E+00 + .32230754E+01 -.31026218E+00 -.31026218E+00 + .32794792E+01 -.30492597E+00 -.30492597E+00 + .33368701E+01 -.29968154E+00 -.29968154E+00 + .33952653E+01 -.29452731E+00 -.29452731E+00 + .34546824E+01 -.28946173E+00 -.28946173E+00 + .35151394E+01 -.28448327E+00 -.28448327E+00 + .35766543E+01 -.27959044E+00 -.27959044E+00 + .36392458E+01 -.27478176E+00 -.27478176E+00 + .37029326E+01 -.27005578E+00 -.27005578E+00 + .37677339E+01 -.26541108E+00 -.26541108E+00 + .38336692E+01 -.26084627E+00 -.26084627E+00 + .39007584E+01 -.25635997E+00 -.25635997E+00 + .39690217E+01 -.25195083E+00 -.25195083E+00 + .40384796E+01 -.24761753E+00 -.24761753E+00 + .41091530E+01 -.24335875E+00 -.24335875E+00 + .41810632E+01 -.23917322E+00 -.23917322E+00 + .42542318E+01 -.23505967E+00 -.23505967E+00 + .43286808E+01 -.23101688E+00 -.23101688E+00 + .44044327E+01 -.22704361E+00 -.22704361E+00 + .44815103E+01 -.22313869E+00 -.22313869E+00 + .45599367E+01 -.21930092E+00 -.21930092E+00 + .46397356E+01 -.21552916E+00 -.21552916E+00 + .47209310E+01 -.21182228E+00 -.21182228E+00 + .48035473E+01 -.20817914E+00 -.20817914E+00 + .48876094E+01 -.20459867E+00 -.20459867E+00 + .49731425E+01 -.20107977E+00 -.20107977E+00 + .50601725E+01 -.19762140E+00 -.19762140E+00 + .51487256E+01 -.19422251E+00 -.19422251E+00 + .52388283E+01 -.19088207E+00 -.19088207E+00 + .53305078E+01 -.18759909E+00 -.18759909E+00 + .54237916E+01 -.18437257E+00 -.18437257E+00 + .55187080E+01 -.18120155E+00 -.18120155E+00 + .56152854E+01 -.17808506E+00 -.17808506E+00 + .57135529E+01 -.17502218E+00 -.17502218E+00 + .58135401E+01 -.17201197E+00 -.17201197E+00 + .59152770E+01 -.16905354E+00 -.16905354E+00 + .60187944E+01 -.16614599E+00 -.16614599E+00 + .61241233E+01 -.16328844E+00 -.16328844E+00 + .62312954E+01 -.16048005E+00 -.16048005E+00 + .63403431E+01 -.15771995E+00 -.15771995E+00 + .64512991E+01 -.15500733E+00 -.15500733E+00 + .65641968E+01 -.15234136E+00 -.15234136E+00 + .66790703E+01 -.14972124E+00 -.14972124E+00 + .67959540E+01 -.14714618E+00 -.14714618E+00 + .69148832E+01 -.14461542E+00 -.14461542E+00 + .70358936E+01 -.14212818E+00 -.14212818E+00 + .71590218E+01 -.13968372E+00 -.13968372E+00 + .72843047E+01 -.13728130E+00 -.13728130E+00 + .74117800E+01 -.13492020E+00 -.13492020E+00 + .75414861E+01 -.13259971E+00 -.13259971E+00 + .76734621E+01 -.13031913E+00 -.13031913E+00 + .78077477E+01 -.12807777E+00 -.12807777E+00 + .79443833E+01 -.12587496E+00 -.12587496E+00 + .80834100E+01 -.12371004E+00 -.12371004E+00 + .82248697E+01 -.12158235E+00 -.12158235E+00 + .83688049E+01 -.11949126E+00 -.11949126E+00 + .85152590E+01 -.11743613E+00 -.11743613E+00 + .86642760E+01 -.11541635E+00 -.11541635E+00 + .88159009E+01 -.11343131E+00 -.11343131E+00 + .89701791E+01 -.11148040E+00 -.11148040E+00 + .91271573E+01 -.10956305E+00 -.10956305E+00 + .92868825E+01 -.10767868E+00 -.10767868E+00 + .94494030E+01 -.10582672E+00 -.10582672E+00 + .96147675E+01 -.10400660E+00 -.10400660E+00 + .97830260E+01 -.10221780E+00 -.10221780E+00 + .99542289E+01 -.10045975E+00 -.10045975E+00 + .10128428E+02 -.98731946E-01 -.98731946E-01 + .10305675E+02 -.97033857E-01 -.97033857E-01 + .10486025E+02 -.95364973E-01 -.95364973E-01 + .10669530E+02 -.93724792E-01 -.93724792E-01 + .10856247E+02 -.92112820E-01 -.92112820E-01 + .11046231E+02 -.90528572E-01 -.90528572E-01 + .11239540E+02 -.88971572E-01 -.88971572E-01 + .11436232E+02 -.87441351E-01 -.87441351E-01 + .11636366E+02 -.85937447E-01 -.85937447E-01 + .11840003E+02 -.84459410E-01 -.84459410E-01 + .12047203E+02 -.83006793E-01 -.83006793E-01 + .12258029E+02 -.81579159E-01 -.81579159E-01 + .12472544E+02 -.80176080E-01 -.80176080E-01 + .12690814E+02 -.78797132E-01 -.78797132E-01 + .12912903E+02 -.77441900E-01 -.77441900E-01 + .13138879E+02 -.76109994E-01 -.76109994E-01 + .13368809E+02 -.74800977E-01 -.74800977E-01 + .13602763E+02 -.73514474E-01 -.73514474E-01 + .13840812E+02 -.72250097E-01 -.72250097E-01 + .14083026E+02 -.71007467E-01 -.71007467E-01 + .14329479E+02 -.69786208E-01 -.69786208E-01 + .14580245E+02 -.68585954E-01 -.68585954E-01 + .14835399E+02 -.67406343E-01 -.67406343E-01 + .15095019E+02 -.66247020E-01 -.66247020E-01 + .15359181E+02 -.65107636E-01 -.65107636E-01 + .15627967E+02 -.63987849E-01 -.63987849E-01 + .15901457E+02 -.62887321E-01 -.62887321E-01 + .16179732E+02 -.61805721E-01 -.61805721E-01 + .16462877E+02 -.60742723E-01 -.60742723E-01 + .16750978E+02 -.59698008E-01 -.59698008E-01 + .17044120E+02 -.58671261E-01 -.58671261E-01 + .17342392E+02 -.57662173E-01 -.57662173E-01 + .17645884E+02 -.56670440E-01 -.56670440E-01 + .17954687E+02 -.55695764E-01 -.55695764E-01 + .18268894E+02 -.54737852E-01 -.54737852E-01 + .18588599E+02 -.53796415E-01 -.53796415E-01 + .18913900E+02 -.52871169E-01 -.52871169E-01 + .19244893E+02 -.51961837E-01 -.51961837E-01 + .19581679E+02 -.51068144E-01 -.51068144E-01 + .19924358E+02 -.50189823E-01 -.50189823E-01 + .20273034E+02 -.49326607E-01 -.49326607E-01 + .20627813E+02 -.48478238E-01 -.48478238E-01 + .20988799E+02 -.47644460E-01 -.47644460E-01 + .21356103E+02 -.46825022E-01 -.46825022E-01 + .21729835E+02 -.46019677E-01 -.46019677E-01 + .22110107E+02 -.45228184E-01 -.45228184E-01 + .22497034E+02 -.44450304E-01 -.44450304E-01 + .22890732E+02 -.43685802E-01 -.43685802E-01 + .23291320E+02 -.42934450E-01 -.42934450E-01 + .23698918E+02 -.42196019E-01 -.42196019E-01 + .24113649E+02 -.41470289E-01 -.41470289E-01 + .24535638E+02 -.40757041E-01 -.40757041E-01 + .24965012E+02 -.40056060E-01 -.40056060E-01 + .25401899E+02 -.39367135E-01 -.39367135E-01 + .25846433E+02 -.38690059E-01 -.38690059E-01 + .26298745E+02 -.38024628E-01 -.38024628E-01 + .26758973E+02 -.37370642E-01 -.37370642E-01 + .27227255E+02 -.36727903E-01 -.36727903E-01 + .27703732E+02 -.36096220E-01 -.36096220E-01 + .28188547E+02 -.35475400E-01 -.35475400E-01 + .28681847E+02 -.34865258E-01 -.34865258E-01 + .29183779E+02 -.34265610E-01 -.34265610E-01 + .29694496E+02 -.33676275E-01 -.33676275E-01 + .30214149E+02 -.33097076E-01 -.33097076E-01 + .30742897E+02 -.32527839E-01 -.32527839E-01 + .31280897E+02 -.31968392E-01 -.31968392E-01 + .31828313E+02 -.31418567E-01 -.31418567E-01 + .32385309E+02 -.30878199E-01 -.30878199E-01 + .32952052E+02 -.30347124E-01 -.30347124E-01 + .33528712E+02 -.29825183E-01 -.29825183E-01 + .34115465E+02 -.29312220E-01 -.29312220E-01 + .34712486E+02 -.28808078E-01 -.28808078E-01 + .35319954E+02 -.28312608E-01 -.28312608E-01 + .35938053E+02 -.27825659E-01 -.27825659E-01 + .36566969E+02 -.27347085E-01 -.27347085E-01 + .37206891E+02 -.26876742E-01 -.26876742E-01 + .37858012E+02 -.26414488E-01 -.26414488E-01 + .38520527E+02 -.25960185E-01 -.25960185E-01 + .39194636E+02 -.25513695E-01 -.25513695E-01 + .39880542E+02 -.25074885E-01 -.25074885E-01 + .40578452E+02 -.24643621E-01 -.24643621E-01 + .41288575E+02 -.24219775E-01 -.24219775E-01 + .42011125E+02 -.23803219E-01 -.23803219E-01 + .42746319E+02 -.23393827E-01 -.23393827E-01 + .43494380E+02 -.22991476E-01 -.22991476E-01 +&END +&WAVEFUNCTION + 511 CHANNELS=1 + .62500000E-02 .29278464E-02 .21178479E-04 + .63593750E-02 .29790837E-02 .21926212E-04 + .64706641E-02 .30312177E-02 .22700344E-04 + .65839007E-02 .30842640E-02 .23501808E-04 + .66991189E-02 .31382384E-02 .24331568E-04 + .68163535E-02 .31931567E-02 .25190619E-04 + .69356397E-02 .32490354E-02 .26079997E-04 + .70570134E-02 .33058914E-02 .27000772E-04 + .71805111E-02 .33637417E-02 .27954052E-04 + .73061701E-02 .34226036E-02 .28940985E-04 + .74340281E-02 .34824949E-02 .29962759E-04 + .75641236E-02 .35434334E-02 .31020602E-04 + .76964957E-02 .36054376E-02 .32115790E-04 + .78311844E-02 .36685259E-02 .33249639E-04 + .79682301E-02 .37327173E-02 .34423515E-04 + .81076741E-02 .37980311E-02 .35638830E-04 + .82495584E-02 .38644868E-02 .36897047E-04 + .83939257E-02 .39321044E-02 .38199680E-04 + .85408194E-02 .40009042E-02 .39548297E-04 + .86902838E-02 .40709067E-02 .40944521E-04 + .88423637E-02 .41421330E-02 .42390033E-04 + .89971051E-02 .42146045E-02 .43886572E-04 + .91545544E-02 .42883427E-02 .45435939E-04 + .93147591E-02 .43633699E-02 .47039998E-04 + .94777674E-02 .44397084E-02 .48700680E-04 + .96436283E-02 .45173813E-02 .50419984E-04 + .98123918E-02 .45964116E-02 .52199978E-04 + .99841087E-02 .46768232E-02 .54042804E-04 + .10158831E-01 .47586400E-02 .55950680E-04 + .10336610E-01 .48418865E-02 .57925901E-04 + .10517501E-01 .49265877E-02 .59970844E-04 + .10701557E-01 .50127689E-02 .62087970E-04 + .10888834E-01 .51004559E-02 .64279826E-04 + .11079389E-01 .51896749E-02 .66549050E-04 + .11273278E-01 .52804526E-02 .68898370E-04 + .11470561E-01 .53728161E-02 .71330615E-04 + .11671295E-01 .54667930E-02 .73848710E-04 + .11875543E-01 .55624113E-02 .76455684E-04 + .12083365E-01 .56596998E-02 .79154674E-04 + .12294824E-01 .57586873E-02 .81948927E-04 + .12509983E-01 .58594035E-02 .84841803E-04 + .12728908E-01 .59618784E-02 .87836784E-04 + .12951664E-01 .60661426E-02 .90937471E-04 + .13178318E-01 .61722272E-02 .94147594E-04 + .13408939E-01 .62801638E-02 .97471014E-04 + .13643595E-01 .63899846E-02 .10091173E-03 + .13882358E-01 .65017223E-02 .10447387E-03 + .14125299E-01 .66154101E-02 .10816174E-03 + .14372492E-01 .67310821E-02 .11197975E-03 + .14624011E-01 .68487724E-02 .11593251E-03 + .14879931E-01 .69685163E-02 .12002477E-03 + .15140330E-01 .70903492E-02 .12426144E-03 + .15405285E-01 .72143075E-02 .12864762E-03 + .15674878E-01 .73404279E-02 .13318859E-03 + .15949188E-01 .74687478E-02 .13788980E-03 + .16228299E-01 .75993055E-02 .14275690E-03 + .16512294E-01 .77321396E-02 .14779576E-03 + .16801259E-01 .78672894E-02 .15301242E-03 + .17095281E-01 .80047952E-02 .15841315E-03 + .17394449E-01 .81446976E-02 .16400445E-03 + .17698852E-01 .82870379E-02 .16979304E-03 + .18008582E-01 .84318585E-02 .17578586E-03 + .18323732E-01 .85792019E-02 .18199014E-03 + .18644397E-01 .87291119E-02 .18841331E-03 + .18970674E-01 .88816327E-02 .19506310E-03 + .19302661E-01 .90368093E-02 .20194750E-03 + .19640457E-01 .91946874E-02 .20907478E-03 + .19984165E-01 .93553136E-02 .21645349E-03 + .20333888E-01 .95187352E-02 .22409252E-03 + .20689731E-01 .96850003E-02 .23200101E-03 + .21051802E-01 .98541578E-02 .24018849E-03 + .21420208E-01 .10026257E-01 .24866477E-03 + .21795062E-01 .10201349E-01 .25744004E-03 + .22176475E-01 .10379485E-01 .26652484E-03 + .22564564E-01 .10560717E-01 .27593006E-03 + .22959444E-01 .10745099E-01 .28566700E-03 + .23361234E-01 .10932683E-01 .29574735E-03 + .23770055E-01 .11123525E-01 .30618320E-03 + .24186031E-01 .11317681E-01 .31698708E-03 + .24609287E-01 .11515207E-01 .32817195E-03 + .25039950E-01 .11716160E-01 .33975123E-03 + .25478149E-01 .11920600E-01 .35173882E-03 + .25924016E-01 .12128585E-01 .36414908E-03 + .26377687E-01 .12340176E-01 .37699690E-03 + .26839296E-01 .12555434E-01 .39029769E-03 + .27308984E-01 .12774421E-01 .40406739E-03 + .27786891E-01 .12997201E-01 .41832251E-03 + .28273162E-01 .13223838E-01 .43308013E-03 + .28767942E-01 .13454396E-01 .44835795E-03 + .29271381E-01 .13688943E-01 .46417426E-03 + .29783630E-01 .13927546E-01 .48054801E-03 + .30304844E-01 .14170273E-01 .49749882E-03 + .30835178E-01 .14417194E-01 .51504698E-03 + .31374794E-01 .14668378E-01 .53321350E-03 + .31923853E-01 .14923898E-01 .55202013E-03 + .32482520E-01 .15183826E-01 .57148938E-03 + .33050964E-01 .15448236E-01 .59164454E-03 + .33629356E-01 .15717203E-01 .61250972E-03 + .34217870E-01 .15990803E-01 .63410988E-03 + .34816683E-01 .16269113E-01 .65647085E-03 + .35425975E-01 .16552212E-01 .67961935E-03 + .36045929E-01 .16840178E-01 .70358305E-03 + .36676733E-01 .17133092E-01 .72839059E-03 + .37318576E-01 .17431036E-01 .75407159E-03 + .37971651E-01 .17734093E-01 .78065673E-03 + .38636155E-01 .18042347E-01 .80817774E-03 + .39312287E-01 .18355883E-01 .83666746E-03 + .40000252E-01 .18674788E-01 .86615988E-03 + .40700257E-01 .18999150E-01 .89669019E-03 + .41412511E-01 .19329056E-01 .92829478E-03 + .42137230E-01 .19664598E-01 .96101131E-03 + .42874632E-01 .20005867E-01 .99487878E-03 + .43624938E-01 .20352954E-01 .10299375E-02 + .44388374E-01 .20705955E-01 .10662292E-02 + .45165171E-01 .21064963E-01 .11037972E-02 + .45955561E-01 .21430074E-01 .11426860E-02 + .46759784E-01 .21801387E-01 .11829419E-02 + .47578080E-01 .22178999E-01 .12246128E-02 + .48410696E-01 .22563011E-01 .12677481E-02 + .49257883E-01 .22953522E-01 .13123992E-02 + .50119896E-01 .23350636E-01 .13586189E-02 + .50996995E-01 .23754455E-01 .14064622E-02 + .51889442E-01 .24165083E-01 .14559856E-02 + .52797507E-01 .24582627E-01 .15072480E-02 + .53721464E-01 .25007193E-01 .15603100E-02 + .54661589E-01 .25438888E-01 .16152345E-02 + .55618167E-01 .25877822E-01 .16720863E-02 + .56591485E-01 .26324104E-01 .17309327E-02 + .57581836E-01 .26777846E-01 .17918432E-02 + .58589518E-01 .27239158E-01 .18548898E-02 + .59614835E-01 .27708155E-01 .19201468E-02 + .60658094E-01 .28184950E-01 .19876910E-02 + .61719611E-01 .28669658E-01 .20576022E-02 + .62799704E-01 .29162394E-01 .21299625E-02 + .63898699E-01 .29663275E-01 .22048571E-02 + .65016926E-01 .30172418E-01 .22823741E-02 + .66154722E-01 .30689942E-01 .23626043E-02 + .67312430E-01 .31215965E-01 .24456419E-02 + .68490398E-01 .31750605E-01 .25315842E-02 + .69688980E-01 .32293984E-01 .26205320E-02 + .70908537E-01 .32846221E-01 .27125891E-02 + .72149436E-01 .33407437E-01 .28078631E-02 + .73412051E-01 .33977753E-01 .29064654E-02 + .74696762E-01 .34557291E-01 .30085107E-02 + .76003955E-01 .35146171E-01 .31141181E-02 + .77334025E-01 .35744516E-01 .32234102E-02 + .78687370E-01 .36352446E-01 .33365142E-02 + .80064399E-01 .36970084E-01 .34535612E-02 + .81465526E-01 .37597550E-01 .35746868E-02 + .82891173E-01 .38234965E-01 .37000312E-02 + .84341768E-01 .38882449E-01 .38297394E-02 + .85817749E-01 .39540121E-01 .39639609E-02 + .87319560E-01 .40208100E-01 .41028503E-02 + .88847652E-01 .40886505E-01 .42465676E-02 + .90402486E-01 .41575451E-01 .43952777E-02 + .91984530E-01 .42275054E-01 .45491511E-02 + .93594259E-01 .42985428E-01 .47083639E-02 + .95232158E-01 .43706684E-01 .48730981E-02 + .96898721E-01 .44438934E-01 .50435416E-02 + .98594449E-01 .45182286E-01 .52198883E-02 + .10031985E+00 .45936845E-01 .54023385E-02 + .10207545E+00 .46702716E-01 .55910992E-02 + .10386177E+00 .47479998E-01 .57863838E-02 + .10567935E+00 .48268790E-01 .59884128E-02 + .10752874E+00 .49069186E-01 .61974137E-02 + .10941049E+00 .49881277E-01 .64136214E-02 + .11132518E+00 .50705150E-01 .66372781E-02 + .11327337E+00 .51540888E-01 .68686341E-02 + .11525565E+00 .52388570E-01 .71079471E-02 + .11727262E+00 .53248270E-01 .73554835E-02 + .11932489E+00 .54120056E-01 .76115178E-02 + .12141308E+00 .55003992E-01 .78763332E-02 + .12353781E+00 .55900135E-01 .81502217E-02 + .12569972E+00 .56808538E-01 .84334845E-02 + .12789947E+00 .57729245E-01 .87264320E-02 + .13013771E+00 .58662294E-01 .90293843E-02 + .13241512E+00 .59607718E-01 .93426713E-02 + .13473238E+00 .60565539E-01 .96666331E-02 + .13709020E+00 .61535774E-01 .10001620E-01 + .13948928E+00 .62518429E-01 .10347993E-01 + .14193034E+00 .63513503E-01 .10706123E-01 + .14441412E+00 .64520986E-01 .11076395E-01 + .14694137E+00 .65540858E-01 .11459202E-01 + .14951284E+00 .66573089E-01 .11854951E-01 + .15212932E+00 .67617639E-01 .12264060E-01 + .15479158E+00 .68674458E-01 .12686960E-01 + .15750043E+00 .69743484E-01 .13124093E-01 + .16025669E+00 .70824645E-01 .13575916E-01 + .16306118E+00 .71917857E-01 .14042899E-01 + .16591475E+00 .73023024E-01 .14525524E-01 + .16881826E+00 .74140038E-01 .15024287E-01 + .17177258E+00 .75268780E-01 .15539701E-01 + .17477860E+00 .76409118E-01 .16072290E-01 + .17783722E+00 .77560908E-01 .16622595E-01 + .18094938E+00 .78723992E-01 .17191172E-01 + .18411599E+00 .79898202E-01 .17778592E-01 + .18733802E+00 .81083357E-01 .18385443E-01 + .19061644E+00 .82279264E-01 .19012328E-01 + .19395222E+00 .83485718E-01 .19659869E-01 + .19734639E+00 .84702502E-01 .20328703E-01 + .20079995E+00 .85929390E-01 .21019486E-01 + .20431395E+00 .87166144E-01 .21732893E-01 + .20788944E+00 .88412518E-01 .22469615E-01 + .21152751E+00 .89668256E-01 .23230366E-01 + .21522924E+00 .90933094E-01 .24015877E-01 + .21899575E+00 .92206762E-01 .24826900E-01 + .22282818E+00 .93488984E-01 .25664209E-01 + .22672767E+00 .94779481E-01 .26528599E-01 + .23069540E+00 .96077968E-01 .27420889E-01 + .23473257E+00 .97384162E-01 .28341917E-01 + .23884039E+00 .98697779E-01 .29292551E-01 + .24302010E+00 .10001854E+00 .30273680E-01 + .24727295E+00 .10134616E+00 .31286219E-01 + .25160023E+00 .10268038E+00 .32331112E-01 + .25600323E+00 .10402092E+00 .33409329E-01 + .26048329E+00 .10536754E+00 .34521869E-01 + .26504175E+00 .10671999E+00 .35669764E-01 + .26967998E+00 .10807805E+00 .36854074E-01 + .27439938E+00 .10944150E+00 .38075893E-01 + .27920136E+00 .11081016E+00 .39336351E-01 + .28408739E+00 .11218383E+00 .40636610E-01 + .28905892E+00 .11356238E+00 .41977872E-01 + .29411745E+00 .11494565E+00 .43361377E-01 + .29926450E+00 .11633354E+00 .44788404E-01 + .30450163E+00 .11772595E+00 .46260274E-01 + .30983041E+00 .11912280E+00 .47778351E-01 + .31525244E+00 .12052403E+00 .49344043E-01 + .32076936E+00 .12192959E+00 .50958805E-01 + .32638283E+00 .12333946E+00 .52624138E-01 + .33209453E+00 .12475360E+00 .54341592E-01 + .33790618E+00 .12617199E+00 .56112764E-01 + .34381954E+00 .12759457E+00 .57939303E-01 + .34983638E+00 .12902132E+00 .59822907E-01 + .35595852E+00 .13045214E+00 .61765324E-01 + .36218779E+00 .13188693E+00 .63768355E-01 + .36852608E+00 .13332553E+00 .65833846E-01 + .37497528E+00 .13476774E+00 .67963696E-01 + .38153735E+00 .13621327E+00 .70159851E-01 + .38821425E+00 .13766178E+00 .72424302E-01 + .39500800E+00 .13911281E+00 .74759087E-01 + .40192064E+00 .14056582E+00 .77166286E-01 + .40895425E+00 .14202017E+00 .79648023E-01 + .41611095E+00 .14347512E+00 .82206464E-01 + .42339290E+00 .14492983E+00 .84843815E-01 + .43080227E+00 .14638337E+00 .87562326E-01 + .43834131E+00 .14783471E+00 .90364290E-01 + .44601228E+00 .14928281E+00 .93252051E-01 + .45381750E+00 .15072659E+00 .96228005E-01 + .46175931E+00 .15216495E+00 .99294612E-01 + .46984009E+00 .15359687E+00 .10245440E+00 + .47806229E+00 .15502139E+00 .10570999E+00 + .48642838E+00 .15643759E+00 .10906406E+00 + .49494088E+00 .15784466E+00 .11251940E+00 + .50360235E+00 .15924175E+00 .11607887E+00 + .51241539E+00 .16062802E+00 .11974540E+00 + .52138266E+00 .16200259E+00 .12352199E+00 + .53050685E+00 .16336457E+00 .12741174E+00 + .53979072E+00 .16471306E+00 .13141782E+00 + .54923706E+00 .16604714E+00 .13554347E+00 + .55884871E+00 .16736587E+00 .13979204E+00 + .56862856E+00 .16866830E+00 .14416694E+00 + .57857956E+00 .16995346E+00 .14867171E+00 + .58870470E+00 .17122038E+00 .15330994E+00 + .59900704E+00 .17246804E+00 .15808535E+00 + .60948966E+00 .17369544E+00 .16300173E+00 + .62015573E+00 .17490157E+00 .16806299E+00 + .63100845E+00 .17608537E+00 .17327315E+00 + .64205110E+00 .17724581E+00 .17863632E+00 + .65328700E+00 .17838182E+00 .18415672E+00 + .66471952E+00 .17949234E+00 .18983871E+00 + .67635211E+00 .18057629E+00 .19568675E+00 + .68818827E+00 .18163258E+00 .20170543E+00 + .70023157E+00 .18266013E+00 .20789945E+00 + .71248562E+00 .18365782E+00 .21427367E+00 + .72495412E+00 .18462456E+00 .22083305E+00 + .73764082E+00 .18555924E+00 .22758273E+00 + .75054953E+00 .18646075E+00 .23452797E+00 + .76368415E+00 .18732797E+00 .24167419E+00 + .77704862E+00 .18815979E+00 .24902696E+00 + .79064697E+00 .18895509E+00 .25659203E+00 + .80448329E+00 .18971278E+00 .26437529E+00 + .81856175E+00 .19043173E+00 .27238285E+00 + .83288658E+00 .19111085E+00 .28062095E+00 + .84746209E+00 .19174904E+00 .28909607E+00 + .86229268E+00 .19234522E+00 .29781485E+00 + .87738280E+00 .19289830E+00 .30678418E+00 + .89273700E+00 .19340723E+00 .31601112E+00 + .90835990E+00 .19387094E+00 .32550299E+00 + .92425620E+00 .19428840E+00 .33526734E+00 + .94043068E+00 .19465859E+00 .34531196E+00 + .95688822E+00 .19498051E+00 .35564490E+00 + .97363376E+00 .19525316E+00 .36627449E+00 + .99067235E+00 .19547558E+00 .37720933E+00 + .10080091E+01 .19564685E+00 .38845834E+00 + .10256493E+01 .19576604E+00 .40003074E+00 + .10435981E+01 .19583226E+00 .41193607E+00 + .10618611E+01 .19584468E+00 .42418423E+00 + .10804437E+01 .19580245E+00 .43678549E+00 + .10993514E+01 .19570479E+00 .44975048E+00 + .11185901E+01 .19555094E+00 .46309026E+00 + .11381654E+01 .19534018E+00 .47681629E+00 + .11580833E+01 .19507185E+00 .49094050E+00 + .11783498E+01 .19474529E+00 .50547528E+00 + .11989709E+01 .19435991E+00 .52043353E+00 + .12199529E+01 .19391517E+00 .53582866E+00 + .12413021E+01 .19341057E+00 .00000000E+00 + .12630248E+01 .19284565E+00 .00000000E+00 + .12851278E+01 .19222001E+00 .00000000E+00 + .13076175E+01 .19153331E+00 .00000000E+00 + .13305008E+01 .19078525E+00 .00000000E+00 + .13537846E+01 .18997560E+00 .00000000E+00 + .13774758E+01 .18910419E+00 .00000000E+00 + .14015816E+01 .18817089E+00 .00000000E+00 + .14261093E+01 .18717566E+00 .00000000E+00 + .14510662E+01 .18611851E+00 .00000000E+00 + .14764599E+01 .18499951E+00 .00000000E+00 + .15022979E+01 .18381881E+00 .00000000E+00 + .15285882E+01 .18257662E+00 .00000000E+00 + .15553385E+01 .18127322E+00 .00000000E+00 + .15825569E+01 .17990898E+00 .00000000E+00 + .16102516E+01 .17848431E+00 .00000000E+00 + .16384310E+01 .17699972E+00 .00000000E+00 + .16671036E+01 .17545578E+00 .00000000E+00 + .16962779E+01 .17385315E+00 .00000000E+00 + .17259627E+01 .17219255E+00 .00000000E+00 + .17561671E+01 .17047480E+00 .00000000E+00 + .17869000E+01 .16870076E+00 .00000000E+00 + .18181708E+01 .16687142E+00 .00000000E+00 + .18499888E+01 .16498780E+00 .00000000E+00 + .18823636E+01 .16305103E+00 .00000000E+00 + .19153049E+01 .16106230E+00 .00000000E+00 + .19488228E+01 .15902289E+00 .00000000E+00 + .19829272E+01 .15693416E+00 .00000000E+00 + .20176284E+01 .15479754E+00 .00000000E+00 + .20529369E+01 .15261453E+00 .00000000E+00 + .20888633E+01 .15038673E+00 .00000000E+00 + .21254184E+01 .14811579E+00 .00000000E+00 + .21626132E+01 .14580344E+00 .00000000E+00 + .22004589E+01 .14345150E+00 .00000000E+00 + .22389670E+01 .14106184E+00 .00000000E+00 + .22781489E+01 .13863641E+00 .00000000E+00 + .23180165E+01 .13617720E+00 .00000000E+00 + .23585818E+01 .13368631E+00 .00000000E+00 + .23998570E+01 .13116586E+00 .00000000E+00 + .24418545E+01 .12861805E+00 .00000000E+00 + .24845869E+01 .12604514E+00 .00000000E+00 + .25280672E+01 .12344941E+00 .00000000E+00 + .25723084E+01 .12083323E+00 .00000000E+00 + .26173237E+01 .11819899E+00 .00000000E+00 + .26631269E+01 .11554912E+00 .00000000E+00 + .27097316E+01 .11288609E+00 .00000000E+00 + .27571519E+01 .11021242E+00 .00000000E+00 + .28054021E+01 .10753063E+00 .00000000E+00 + .28544966E+01 .10484327E+00 .00000000E+00 + .29044503E+01 .10215293E+00 .00000000E+00 + .29552782E+01 .99462183E-01 .00000000E+00 + .30069956E+01 .96773621E-01 .00000000E+00 + .30596180E+01 .94089838E-01 .00000000E+00 + .31131613E+01 .91413422E-01 .00000000E+00 + .31676416E+01 .88746952E-01 .00000000E+00 + .32230754E+01 .86092991E-01 .00000000E+00 + .32794792E+01 .83454077E-01 .00000000E+00 + .33368701E+01 .80832724E-01 .00000000E+00 + .33952653E+01 .78231408E-01 .00000000E+00 + .34546824E+01 .75652566E-01 .00000000E+00 + .35151394E+01 .73098590E-01 .00000000E+00 + .35766543E+01 .70571817E-01 .00000000E+00 + .36392458E+01 .68074524E-01 .00000000E+00 + .37029326E+01 .65608928E-01 .00000000E+00 + .37677339E+01 .63177170E-01 .00000000E+00 + .38336692E+01 .60781319E-01 .00000000E+00 + .39007584E+01 .58423360E-01 .00000000E+00 + .39690217E+01 .56105192E-01 .00000000E+00 + .40384796E+01 .53828621E-01 .00000000E+00 + .41091530E+01 .51595357E-01 .00000000E+00 + .41810632E+01 .49407008E-01 .00000000E+00 + .42542318E+01 .47265078E-01 .00000000E+00 + .43286808E+01 .45170961E-01 .00000000E+00 + .44044327E+01 .43125938E-01 .00000000E+00 + .44815103E+01 .41131175E-01 .00000000E+00 + .45599367E+01 .39187721E-01 .00000000E+00 + .46397356E+01 .37296501E-01 .00000000E+00 + .47209310E+01 .35458323E-01 .00000000E+00 + .48035473E+01 .33673870E-01 .00000000E+00 + .48876094E+01 .31943700E-01 .00000000E+00 + .49731425E+01 .30268248E-01 .00000000E+00 + .50601725E+01 .28647827E-01 .00000000E+00 + .51487256E+01 .27082625E-01 .00000000E+00 + .52388283E+01 .25572710E-01 .00000000E+00 + .53305078E+01 .24118030E-01 .00000000E+00 + .54237916E+01 .22718416E-01 .00000000E+00 + .55187080E+01 .21373584E-01 .00000000E+00 + .56152854E+01 .20083139E-01 .00000000E+00 + .57135529E+01 .18846579E-01 .00000000E+00 + .58135401E+01 .17663297E-01 .00000000E+00 + .59152770E+01 .16532588E-01 .00000000E+00 + .60187944E+01 .15453653E-01 .00000000E+00 + .61241233E+01 .14425605E-01 .00000000E+00 + .62312954E+01 .13447470E-01 .00000000E+00 + .63403431E+01 .12518201E-01 .00000000E+00 + .64512991E+01 .11636675E-01 .00000000E+00 + .65641968E+01 .10801706E-01 .00000000E+00 + .66790703E+01 .10012047E-01 .00000000E+00 + .67959540E+01 .92663995E-02 .00000000E+00 + .69148832E+01 .85634180E-02 .00000000E+00 + .70358936E+01 .79017166E-02 .00000000E+00 + .71590218E+01 .72798763E-02 .00000000E+00 + .72843047E+01 .66964511E-02 .00000000E+00 + .74117800E+01 .61499740E-02 .00000000E+00 + .75414861E+01 .56389638E-02 .00000000E+00 + .76734621E+01 .51619307E-02 .00000000E+00 + .78077477E+01 .47173824E-02 .00000000E+00 + .79443833E+01 .43038295E-02 .00000000E+00 + .80834100E+01 .39197912E-02 .00000000E+00 + .82248697E+01 .35638002E-02 .00000000E+00 + .83688049E+01 .32344074E-02 .00000000E+00 + .85152590E+01 .29301865E-02 .00000000E+00 + .86642760E+01 .26497382E-02 .00000000E+00 + .88159009E+01 .23916940E-02 .00000000E+00 + .89701791E+01 .21547195E-02 .00000000E+00 + .91271573E+01 .19375176E-02 .00000000E+00 + .92868825E+01 .17388311E-02 .00000000E+00 + .94494030E+01 .15574452E-02 .00000000E+00 + .96147675E+01 .13921894E-02 .00000000E+00 + .97830260E+01 .12419392E-02 .00000000E+00 + .99542289E+01 .11056171E-02 .00000000E+00 + .10128428E+02 .98219396E-03 .00000000E+00 + .10305675E+02 .87068947E-03 .00000000E+00 + .10486025E+02 .77017232E-03 .00000000E+00 + .10669530E+02 .67976036E-03 .00000000E+00 + .10856247E+02 .59862033E-03 .00000000E+00 + .11046231E+02 .52596735E-03 .00000000E+00 + .11239540E+02 .46106421E-03 .00000000E+00 + .11436232E+02 .40322037E-03 .00000000E+00 + .11636366E+02 .35179086E-03 .00000000E+00 + .11840003E+02 .30617498E-03 .00000000E+00 + .12047203E+02 .26581484E-03 .00000000E+00 + .12258029E+02 .23019380E-03 .00000000E+00 + .12472544E+02 .19883452E-03 .00000000E+00 + .12690814E+02 .17129895E-03 .00000000E+00 + .12912903E+02 .14718026E-03 .00000000E+00 + .13138879E+02 .12611469E-03 .00000000E+00 + .13368809E+02 .10777105E-03 .00000000E+00 + .13602763E+02 .91842545E-04 .00000000E+00 + .13840812E+02 .78049508E-04 .00000000E+00 + .14083026E+02 .66139303E-04 .00000000E+00 + .14329479E+02 .55884401E-04 .00000000E+00 + .14580245E+02 .47080504E-04 .00000000E+00 + .14835399E+02 .39544739E-04 .00000000E+00 + .15095019E+02 .33113922E-04 .00000000E+00 + .15359181E+02 .27642901E-04 .00000000E+00 + .15627967E+02 .23002980E-04 .00000000E+00 + .15901457E+02 .19080425E-04 .00000000E+00 + .16179732E+02 .15775059E-04 .00000000E+00 + .16462877E+02 .12998945E-04 .00000000E+00 + .16750978E+02 .10675151E-04 .00000000E+00 + .17044120E+02 .87366117E-05 .00000000E+00 + .17342392E+02 .71250664E-05 .00000000E+00 + .17645884E+02 .57900858E-05 .00000000E+00 + .17954687E+02 .46881788E-05 .00000000E+00 + .18268894E+02 .37819762E-05 .00000000E+00 + .18588599E+02 .30394905E-05 .00000000E+00 + .18913900E+02 .24334452E-05 .00000000E+00 + .19244893E+02 .19406716E-05 .00000000E+00 + .19581679E+02 .15415677E-05 .00000000E+00 + .19924358E+02 .12196159E-05 .00000000E+00 + .20273034E+02 .96095460E-06 .00000000E+00 + .20627813E+02 .75399886E-06 .00000000E+00 + .20988799E+02 .58910775E-06 .00000000E+00 + .21356103E+02 .45829241E-06 .00000000E+00 + .21729835E+02 .00000000E+00 .00000000E+00 + .22110107E+02 .00000000E+00 .00000000E+00 + .22497034E+02 .00000000E+00 .00000000E+00 + .22890732E+02 .00000000E+00 .00000000E+00 + .23291320E+02 .00000000E+00 .00000000E+00 + .23698918E+02 .00000000E+00 .00000000E+00 + .24113649E+02 .00000000E+00 .00000000E+00 + .24535638E+02 .00000000E+00 .00000000E+00 + .24965012E+02 .00000000E+00 .00000000E+00 + .25401899E+02 .00000000E+00 .00000000E+00 + .25846433E+02 .00000000E+00 .00000000E+00 + .26298745E+02 .00000000E+00 .00000000E+00 + .26758973E+02 .00000000E+00 .00000000E+00 + .27227255E+02 .00000000E+00 .00000000E+00 + .27703732E+02 .00000000E+00 .00000000E+00 + .28188547E+02 .00000000E+00 .00000000E+00 + .28681847E+02 .00000000E+00 .00000000E+00 + .29183779E+02 .00000000E+00 .00000000E+00 + .29694496E+02 .00000000E+00 .00000000E+00 + .30214149E+02 .00000000E+00 .00000000E+00 + .30742897E+02 .00000000E+00 .00000000E+00 + .31280897E+02 .00000000E+00 .00000000E+00 + .31828313E+02 .00000000E+00 .00000000E+00 + .32385309E+02 .00000000E+00 .00000000E+00 + .32952052E+02 .00000000E+00 .00000000E+00 + .33528712E+02 .00000000E+00 .00000000E+00 + .34115465E+02 .00000000E+00 .00000000E+00 + .34712486E+02 .00000000E+00 .00000000E+00 + .35319954E+02 .00000000E+00 .00000000E+00 + .35938053E+02 .00000000E+00 .00000000E+00 + .36566969E+02 .00000000E+00 .00000000E+00 + .37206891E+02 .00000000E+00 .00000000E+00 + .37858012E+02 .00000000E+00 .00000000E+00 + .38520527E+02 .00000000E+00 .00000000E+00 + .39194636E+02 .00000000E+00 .00000000E+00 + .39880542E+02 .00000000E+00 .00000000E+00 + .40578452E+02 .00000000E+00 .00000000E+00 + .41288575E+02 .00000000E+00 .00000000E+00 + .42011125E+02 .00000000E+00 .00000000E+00 + .42746319E+02 .00000000E+00 .00000000E+00 + .43494380E+02 .00000000E+00 .00000000E+00 +&END diff --git a/test/unittests/cpmd_4.1/run_tests.py b/test/unittests/cpmd_4.1/run_tests.py new file mode 100644 index 0000000000000000000000000000000000000000..db6beca4eef353dcaedb643fa028129ca2edcad5 --- /dev/null +++ b/test/unittests/cpmd_4.1/run_tests.py @@ -0,0 +1,1047 @@ +""" +This is a module for unit testing the CPMD parser. The unit tests are run with +a custom backend that outputs the results directly into native python object for +easier and faster analysis. + +Each property that has an enumerable list of different possible options is +assigned a new test class, that should ideally test through all the options. + +The properties that can have non-enumerbale values will be tested only for one +specific case inside a test class that is designed for a certain type of run +(MD, optimization, QM/MM, etc.) +""" +import os +import unittest +import logging +import numpy as np +from cpmdparser import CPMDParser +from nomadcore.unit_conversion.unit_conversion import convert_unit + +# Setup the logger so that it doesn't spam messages during tests +logging.basicConfig( + level=logging.DEBUG, + format=( + '%(filename)s: ' + '%(levelname)s: ' + '%(funcName)s(): ' + '%(lineno)d:\t' + '%(message)s' + ) +) +logger = logging.getLogger("nomad") +logger.setLevel(logging.CRITICAL) +logging.getLogger("nomadcore.caching_backend").setLevel(logging.CRITICAL) +logger = logging.getLogger("cp2kparser") +logger.setLevel(logging.ERROR) + + +#=============================================================================== +def get_results(folder, metainfo_to_keep=None): + """Get the given result from the calculation in the given folder by using + the Analyzer in the nomadtoolkit package. Tries to optimize the parsing by + giving the metainfo_to_keep argument. + + Args: + folder: The folder relative to the directory of this script where the + parsed calculation resides. + metaname: The quantity to extract. + """ + dirname = os.path.dirname(__file__) + filename = os.path.join(dirname, folder, "output.out") + parser = CPMDParser(filename, None) + results = parser.parse() + return results + + +#=============================================================================== +def get_result(folder, metaname, optimize=True): + if optimize: + results = get_results(folder, None) + else: + results = get_results(folder) + result = results[metaname] + return result + + +#=============================================================================== +class TestSinglePoint(unittest.TestCase): + """Tests that the parser can handle single-point calculations. + """ + + @classmethod + def setUpClass(cls): + cls.results = get_results("single_point", "section_run") + cls.results.print_summary() + + def test_program_name(self): + result = self.results["program_name"] + self.assertEqual(result, "CPMD") + + def test_program_version(self): + result = self.results["program_version"] + self.assertEqual(result, "4.1") + + def test_time_run_date_start(self): + result = self.results["time_run_date_start"] + self.assertEqual(result, 1467579600.0) + + def test_time_run_wall_start(self): + result = self.results["time_run_wall_start"] + self.assertEqual(result, 50706.851) + + # def test_program_basis_set_type(self): + # result = self.results["program_basis_set_type"] + # self.assertEqual(result, "plane waves") + + # def test_energy_total_scf_iteration(self): + # result = self.results["energy_total_scf_iteration"] + # expected_result = convert_unit(np.array(-32.2320848878), "hartree") + # self.assertTrue(np.array_equal(result[0], expected_result)) + + # def test_program_compilation_host(self): + # result = self.results["program_compilation_host"] + # self.assertEqual(result, "lenovo700") + + # def test_scf_max_iteration(self): + # result = self.results["scf_max_iteration"] + # self.assertEqual(result, 300) + + # def test_scf_threshold_energy_change(self): + # result = self.results["scf_threshold_energy_change"] + # self.assertEqual(result, 1.00E-07) + + # def test_number_of_spin_channels(self): + # result = self.results["number_of_spin_channels"] + # self.assertEqual(result, 1) + + # def test_electronic_structure_method(self): + # result = self.results["electronic_structure_method"] + # self.assertEqual(result, "DFT") + + # def test_energy_change_scf_iteration(self): + # energy_change = self.results["energy_change_scf_iteration"] + # expected_result = convert_unit(np.array(-3.22E+01), "hartree") + # self.assertTrue(np.array_equal(energy_change[0], expected_result)) + + # def test_energy_XC_scf_iteration(self): + # result = self.results["energy_XC_scf_iteration"] + # expected_result = convert_unit(np.array(-9.4555961214), "hartree") + # self.assertTrue(np.array_equal(result[0], expected_result)) + + # def test_energy_total(self): + # result = self.results["energy_total"] + # expected_result = convert_unit(np.array(-31.297885372811074), "hartree") + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_electronic_kinetic_energy(self): + # result = self.results["electronic_kinetic_energy"] + # expected_result = convert_unit(np.array(13.31525592466419), "hartree") + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_atom_forces(self): + # result = self.results["atom_forces"] + # expected_result = convert_unit( + # np.array([ + # [0.00000000, 0.00000000, 0.00000000], + # [0.00000000, 0.00000001, 0.00000001], + # [0.00000001, 0.00000001, 0.00000000], + # [0.00000001, 0.00000000, 0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # ]), + # "forceAu" + # ) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_atom_label(self): + # atom_labels = self.results["atom_labels"] + # expected_labels = np.array(8*["Si1"]) + # self.assertTrue(np.array_equal(atom_labels, expected_labels)) + + # def test_simulation_cell(self): + # cell = self.results["simulation_cell"] + # n_vectors = cell.shape[0] + # n_dim = cell.shape[1] + # self.assertEqual(n_vectors, 3) + # self.assertEqual(n_dim, 3) + # expected_cell = convert_unit(np.array([[5.431, 0, 0], [0, 5.431, 0], [0, 0, 5.431]]), "angstrom") + # self.assertTrue(np.array_equal(cell, expected_cell)) + + # def test_number_of_atoms(self): + # n_atoms = self.results["number_of_atoms"] + # self.assertEqual(n_atoms, 8) + + # def test_atom_position(self): + # atom_position = self.results["atom_positions"] + # expected_position = convert_unit(np.array([4.073023, 4.073023, 1.357674]), "angstrom") + # self.assertTrue(np.array_equal(atom_position[-1, :], expected_position)) + + # def test_x_cp2k_filenames(self): + # input_filename = self.results["x_cp2k_input_filename"] + # expected_input = "si_bulk8.inp" + # self.assertTrue(input_filename, expected_input) + + # bs_filename = self.results["x_cp2k_basis_set_filename"] + # expected_bs = "../BASIS_SET" + # self.assertEqual(bs_filename, expected_bs) + + # geminal_filename = self.results["x_cp2k_geminal_filename"] + # expected_geminal = "BASIS_GEMINAL" + # self.assertEqual(geminal_filename, expected_geminal) + + # potential_filename = self.results["x_cp2k_potential_filename"] + # expected_potential = "../GTH_POTENTIALS" + # self.assertEqual(potential_filename, expected_potential) + + # mm_potential_filename = self.results["x_cp2k_mm_potential_filename"] + # expected_mm_potential = "MM_POTENTIAL" + # self.assertEqual(mm_potential_filename, expected_mm_potential) + + # coordinate_filename = self.results["x_cp2k_coordinate_filename"] + # expected_coordinate = "__STD_INPUT__" + # self.assertEqual(coordinate_filename, expected_coordinate) + + # def test_target_multiplicity(self): + # multiplicity = self.results["spin_target_multiplicity"] + # self.assertEqual(multiplicity, 1) + + # def test_total_charge(self): + # charge = self.results["total_charge"] + # self.assertEqual(charge, 0) + + # def test_section_basis_set_atom_centered(self): + # basis = self.results["section_basis_set_atom_centered"][0] + # name = basis["basis_set_atom_centered_short_name"][0] + # number = basis["basis_set_atom_number"][0] + # self.assertEquals(name, "DZVP-GTH-PADE") + # self.assertEquals(number, 14) + + # def test_section_basis_set_cell_dependent(self): + # basis = self.results["section_basis_set_cell_dependent"][0] + # cutoff = basis["basis_set_planewave_cutoff"][0] + # self.assertEquals(cutoff, convert_unit(300.0, "hartree")) + + # def test_section_method_atom_kind(self): + # kind = self.results["section_method_atom_kind"][0] + # self.assertEqual(kind["method_atom_kind_atom_number"][0], 14) + # self.assertEqual(kind["method_atom_kind_label"][0], "Si1") + + # def test_section_method_basis_set(self): + # kind = self.results["section_method_basis_set"][0] + # self.assertEqual(kind["method_basis_set_kind"][0], "wavefunction") + # self.assertEqual(kind["number_of_basis_sets_atom_centered"][0], 1) + # self.assertTrue(np.array_equal(kind["mapping_section_method_basis_set_atom_centered"][0], np.array([[0,0]]))) + + # def test_single_configuration_calculation_converged(self): + # result = self.results["single_configuration_calculation_converged"] + # self.assertTrue(result) + + # def test_scf_dft_number_of_iterations(self): + # result = self.results["number_of_scf_iterations"] + # self.assertEqual(result, 10) + + # def test_single_configuration_to_calculation_method_ref(self): + # result = self.results["single_configuration_to_calculation_method_ref"] + # self.assertEqual(result, 0) + + # def test_single_configuration_calculation_to_system_description_ref(self): + # result = self.results["single_configuration_calculation_to_system_ref"] + # self.assertEqual(result, 0) + + # def test_stress_tensor(self): + # result = self.results["stress_tensor"] + # expected_result = convert_unit( + # np.array([ + # [7.77640934, -0.00000098, -0.00000099], + # [-0.00000098, 7.77640935, -0.00000101], + # [-0.00000099, -0.00000101, 7.77640935], + # ]), + # "GPa" + # ) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_stress_tensor_eigenvalues(self): + # result = self.results["x_cp2k_stress_tensor_eigenvalues"] + # expected_result = convert_unit(np.array([7.77640735, 7.77641033, 7.77641036]), "GPa") + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_stress_tensor_eigenvectors(self): + # result = self.results["x_cp2k_stress_tensor_eigenvectors"] + # expected_result = np.array([ + # [0.57490332, -0.79965737, -0.17330395], + # [0.57753686, 0.54662171, -0.60634634], + # [0.57960102, 0.24850110, 0.77608624], + # ]) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_stress_tensor_determinant(self): + # result = self.results["x_cp2k_stress_tensor_determinant"] + # expected_result = convert_unit(4.70259243E+02, "GPa^3") + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_stress_tensor_one_third_of_trace(self): + # result = self.results["x_cp2k_stress_tensor_one_third_of_trace"] + # expected_result = convert_unit(7.77640934E+00, "GPa") + # self.assertTrue(np.array_equal(result, expected_result)) + + + +# #=============================================================================== +# class TestErrors(unittest.TestCase): + # """Test misc. error stuations which may occur during the parsing. + # """ + # def test_no_file(self): + # self.assertRaises(IOError, get_result, "errors/no_file", "XC_functional") + + # def test_invalid_file(self): + # self.assertRaises(RuntimeError, get_result, "errors/invalid_file", "XC_functional") + + # def test_invalid_run_type(self): + # self.assertRaises(KeyError, get_result, "errors/invalid_run_type", "XC_functional") + + # def test_unknown_version(self): + # get_result("errors/unknown_version", "XC_functional") + + # def test_unknown_input_keyword(self): + # get_result("errors/unknown_input_keyword", "XC_functional") + + # def test_unknown_input_section(self): + # get_result("errors/unknown_input_section", "XC_functional") + + # def test_unknown_input_section_parameter(self): + # get_result("errors/unknown_input_section_parameter", "XC_functional") + + +# #=============================================================================== +# class TestXCFunctional(unittest.TestCase): + # """Tests that the XC functionals can be properly parsed. + # """ + + # def test_pade(self): + # xc = get_result("XC_functional/pade", "XC_functional") + # self.assertEqual(xc, "1*LDA_XC_TETER93") + + # def test_lda(self): + # xc = get_result("XC_functional/lda", "XC_functional") + # self.assertEqual(xc, "1*LDA_XC_TETER93") + + # def test_blyp(self): + # xc = get_result("XC_functional/blyp", "XC_functional") + # self.assertEqual(xc, "1*GGA_C_LYP+1*GGA_X_B88") + + # def test_b3lyp(self): + # xc = get_result("XC_functional/b3lyp", "XC_functional") + # self.assertEqual(xc, "1*HYB_GGA_XC_B3LYP") + + # def test_olyp(self): + # xc = get_result("XC_functional/olyp", "XC_functional") + # self.assertEqual(xc, "1*GGA_C_LYP+1*GGA_X_OPTX") + + # def test_hcth120(self): + # xc = get_result("XC_functional/hcth120", "XC_functional") + # self.assertEqual(xc, "1*GGA_XC_HCTH_120") + + # def test_pbe0(self): + # xc = get_result("XC_functional/pbe0", "XC_functional") + # self.assertEqual(xc, "1*HYB_GGA_XC_PBEH") + + # def test_pbe(self): + # xc = get_result("XC_functional/pbe", "XC_functional") + # self.assertEqual(xc, "1*GGA_C_PBE+1*GGA_X_PBE") + + +# #=============================================================================== +# class TestSCFConvergence(unittest.TestCase): + # """Tests whether the convergence status and number of SCF step can be + # parsed correctly. + # """ + + # def test_converged(self): + # result = get_result("convergence/converged", "single_configuration_calculation_converged") + # self.assertTrue(result) + + # def test_non_converged(self): + # result = get_result("convergence/non_converged", "single_configuration_calculation_converged") + # self.assertFalse(result) + + +#=============================================================================== +# class TestForceFiles(unittest.TestCase): + # """Tests that different force files that can be output, can actually be + # found and parsed. + # """ + + # def test_single_point(self): + + # result = get_result("force_file/single_point", "atom_forces") + # expected_result = convert_unit( + # np.array([ + # [0.00000000, 0.00000000, 0.00000000], + # [0.00000000, 0.00000001, 0.00000001], + # [0.00000001, 0.00000001, 0.00000000], + # [0.00000001, 0.00000000, 0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # [-0.00000001, -0.00000001, -0.00000001], + # ]), + # "forceAu" + # ) + # self.assertTrue(np.array_equal(result, expected_result)) + + +#=============================================================================== +# class TestSelfInteractionCorrectionMethod(unittest.TestCase): + # """Tests that the self-interaction correction can be properly parsed. + # """ + + # def test_no(self): + # sic = get_result("sic/no", "self_interaction_correction_method") + # self.assertEqual(sic, "") + + # def test_ad(self): + # sic = get_result("sic/ad", "self_interaction_correction_method") + # self.assertEqual(sic, "SIC_AD") + + # def test_explicit_orbitals(self): + # sic = get_result("sic/explicit_orbitals", "self_interaction_correction_method") + # self.assertEqual(sic, "SIC_EXPLICIT_ORBITALS") + + # def test_mauri_spz(self): + # sic = get_result("sic/mauri_spz", "self_interaction_correction_method") + # self.assertEqual(sic, "SIC_MAURI_SPZ") + + # def test_mauri_us(self): + # sic = get_result("sic/mauri_us", "self_interaction_correction_method") + # self.assertEqual(sic, "SIC_MAURI_US") + + +# #=============================================================================== +# class TestStressTensorMethods(unittest.TestCase): + # """Tests that the stress tensor can be properly parsed for different + # calculation methods. + # """ + # def test_none(self): + # get_results("stress_tensor/none", "section_stress_tensor") + + # def test_analytical(self): + # results = get_results("stress_tensor/analytical", ["stress_tensor_method", "stress_tensor"]) + # method = results["stress_tensor_method"] + # results["stress_tensor"] + # self.assertEqual(method, "Analytical") + + # def test_numerical(self): + # results = get_results("stress_tensor/numerical", ["stress_tensor_method", "stress_tensor"]) + # method = results["stress_tensor_method"] + # results["stress_tensor"] + # self.assertEqual(method, "Numerical") + + # def test_diagonal_analytical(self): + # results = get_results("stress_tensor/diagonal_analytical", ["stress_tensor_method", "stress_tensor"]) + # method = results["stress_tensor_method"] + # results["stress_tensor"] + # self.assertEqual(method, "Diagonal analytical") + + # def test_diagonal_numerical(self): + # results = get_results("stress_tensor/diagonal_numerical", ["stress_tensor_method", "stress_tensor"]) + # method = results["stress_tensor_method"] + # results["stress_tensor"] + # self.assertEqual(method, "Diagonal numerical") + + +# #=============================================================================== +# class TestConfigurationPeriodicDimensions(unittest.TestCase): + # """Tests that the self-interaction correction can be properly parsed. + # """ + + # def test_default(self): + # result = get_result("configuration_periodic_dimensions/default", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((True, True, True)))) + + # def test_none(self): + # result = get_result("configuration_periodic_dimensions/none", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((False, False, False)))) + + # def test_x(self): + # result = get_result("configuration_periodic_dimensions/x", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((True, False, False)))) + + # def test_y(self): + # result = get_result("configuration_periodic_dimensions/y", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((False, True, False)))) + + # def test_z(self): + # result = get_result("configuration_periodic_dimensions/z", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((False, False, True)))) + + # def test_xy(self): + # result = get_result("configuration_periodic_dimensions/xy", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((True, True, False)))) + + # def test_xyz(self): + # result = get_result("configuration_periodic_dimensions/xyz", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((True, True, True)))) + + # def test_xz(self): + # result = get_result("configuration_periodic_dimensions/xz", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((True, False, True)))) + + # def test_yz(self): + # result = get_result("configuration_periodic_dimensions/yz", "configuration_periodic_dimensions") + # self.assertTrue(np.array_equal(result, np.array((False, True, True)))) + + +# #=============================================================================== +# class TestPreprocessor(unittest.TestCase): + + # def test_include(self): + # result = get_result("input_preprocessing/include", "x_cp2k_CP2K_INPUT.GLOBAL.PRINT_LEVEL", optimize=False) + # self.assertEqual(result, "LOW") + + # def test_variable(self): + # result = get_result("input_preprocessing/variable", "x_cp2k_CP2K_INPUT.GLOBAL.PROJECT_NAME", optimize=False) + # self.assertEqual(result, "variable_test") + + # def test_variable_multiple(self): + # result = get_result("input_preprocessing/variable_multiple", "x_cp2k_CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False) + # self.assertEqual(result, "50") + + # def test_comments(self): + # result = get_result("input_preprocessing/comments", "x_cp2k_CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False) + # self.assertEqual(result, "120") + + # def test_tabseparator(self): + # result = get_result("input_preprocessing/tabseparator", "x_cp2k_CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False) + # self.assertEqual(result, "120") + + +# #=============================================================================== +# class TestGeoOpt(unittest.TestCase): + + # @classmethod + # def setUpClass(cls): + # cls.results = get_results("geo_opt/cg", "section_run") + + # def test_geometry_optimization_converged(self): + # result = self.results["geometry_optimization_converged"] + # self.assertTrue(result) + + # def test_number_of_frames_in_sequence(self): + # result = self.results["number_of_frames_in_sequence"] + # self.assertEqual(result, 7) + + # def test_frame_sequence_to_sampling_ref(self): + # result = self.results["frame_sequence_to_sampling_ref"] + # self.assertEqual(result, 0) + + # def test_frame_sequence_local_frames_ref(self): + # result = self.results["frame_sequence_local_frames_ref"] + # expected_result = np.array([0, 1, 2, 3, 4, 5, 6]) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_sampling_method(self): + # result = self.results["sampling_method"] + # self.assertEqual(result, "geometry_optimization") + + # def test_geometry_optimization_method(self): + # result = self.results["geometry_optimization_method"] + # self.assertEqual(result, "conjugate_gradient") + + # def test_geometry_optimization_geometry_change(self): + # result = self.results["geometry_optimization_geometry_change"] + # expected_result = convert_unit( + # 0.0010000000, + # "bohr" + # ) + # self.assertEqual(result, expected_result) + + # def test_geometry_optimization_threshold_force(self): + # result = self.results["geometry_optimization_threshold_force"] + # expected_result = convert_unit( + # 0.0010000000, + # "bohr^-1*hartree" + # ) + # self.assertEqual(result, expected_result) + + # def test_frame_sequence_potential_energy(self): + # result = self.results["frame_sequence_potential_energy"] + # expected_result = convert_unit( + # np.array([ + # -17.1534159246, + # -17.1941015290, + # -17.2092321965, + # -17.2097667733, + # -17.2097743028, + # -17.2097743229, + # -17.20977820662248, + # ]), + # "hartree" + # ) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_atom_positions(self): + # result = self.results["atom_positions"] + # expected_start = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4175775999, 2.2362362573, 11.2616216864], + # [11.9271436933, 1.5723516602, 10.0115134757], + # ]), + # "angstrom" + # ) + + # expected_end = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4958164689, 2.2307248873, 11.3354322515], + # [11.9975558616, 1.5748085240, 10.0062792262], + # ]), + # "angstrom" + # ) + # result_start = result[0,:,:] + # result_end = result[-1,:,:] + # self.assertTrue(np.array_equal(result_start, expected_start)) + # self.assertTrue(np.array_equal(result_end, expected_end)) + + +# # =============================================================================== +# class TestGeoOptTrajFormats(unittest.TestCase): + + # def test_xyz(self): + + # result = get_result("geo_opt/geometry_formats/xyz", "atom_positions", optimize=True) + # expected_start = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4175624065, 2.2362390825, 11.2616392180], + # [11.9271777126, 1.5723402996, 10.0115089094], + # ]), + # "angstrom" + # ) + # expected_end = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4957995882, 2.2307218433, 11.3354453867], + # [11.9975764125, 1.5747996320, 10.0062529540], + # ]), + # "angstrom" + # ) + # result_start = result[0,:,:] + # result_end = result[-1,:,:] + # self.assertTrue(np.array_equal(result_start, expected_start)) + # self.assertTrue(np.array_equal(result_end, expected_end)) + + # def test_pdb(self): + # result = get_result("geo_opt/geometry_formats/pdb", "atom_positions", optimize=True) + # expected_start = convert_unit( + # np.array([ + # [12.235, 1.377, 10.870], + # [12.418, 2.236, 11.262], + # [11.927, 1.572, 10.012], + # ]), + # "angstrom" + # ) + # expected_end = convert_unit( + # np.array([ + # [12.235, 1.377, 10.870], + # [12.496, 2.231, 11.335], + # [11.998, 1.575, 10.006], + # ]), + # "angstrom" + # ) + # result_start = result[0,:,:] + # result_end = result[-1,:,:] + # self.assertTrue(np.array_equal(result_start, expected_start)) + # self.assertTrue(np.array_equal(result_end, expected_end)) + + # def test_dcd(self): + # result = get_result("geo_opt/geometry_formats/dcd", "atom_positions", optimize=True) + # frames = result.shape[0] + # self.assertEqual(frames, 7) + + +# #=============================================================================== +# class TestGeoOptOptimizers(unittest.TestCase): + + # def test_bfgs(self): + # result = get_result("geo_opt/bfgs", "geometry_optimization_method") + # self.assertEqual(result, "bfgs") + + # def test_lbfgs(self): + # result = get_result("geo_opt/lbfgs", "geometry_optimization_method") + # self.assertEqual(result, "bfgs") + + +# #=============================================================================== +# class TestGeoOptTrajectory(unittest.TestCase): + + # def test_each_and_add_last(self): + # """Test that the EACH and ADD_LAST settings affect the parsing + # correctly. + # """ + # results = get_results("geo_opt/each") + + # single_conf = results["section_single_configuration_calculation"] + # systems = results["section_system"] + + # i_conf = 0 + # for calc in single_conf.values(): + # system_index = calc["single_configuration_calculation_to_system_ref"][0] + # system = systems[system_index] + # pos = system["atom_positions"] + + # if i_conf == 0 or i_conf == 2 or i_conf == 4: + # self.assertEqual(pos, None) + # else: + # pos = system["atom_positions"][0] + # if i_conf == 1: + # expected_pos = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4618486015, 2.2314871691, 11.3335607388], + # [11.9990227122, 1.5776813026, 10.0384213366], + # ]), + # "angstrom" + # ) + # self.assertTrue(np.array_equal(pos, expected_pos)) + # if i_conf == 3: + # expected_pos = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4962705528, 2.2308411983, 11.3355758433], + # [11.9975151486, 1.5746309898, 10.0054430868], + # ]), + # "angstrom" + # ) + # self.assertTrue(np.array_equal(pos, expected_pos)) + # if i_conf == 5: + # expected_pos = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4958168364, 2.2307249171, 11.3354322532], + # [11.9975556812, 1.5748088251, 10.0062793864], + # ]), + # "angstrom" + # ) + # self.assertTrue(np.array_equal(pos, expected_pos)) + + # if i_conf == 6: + # expected_pos = convert_unit( + # np.array([ + # [12.2353220000, 1.3766420000, 10.8698800000], + # [12.4958164689, 2.2307248873, 11.3354322515], + # [11.9975558616, 1.5748085240, 10.0062792262], + # ]), + # "angstrom" + # ) + # self.assertTrue(np.array_equal(pos, expected_pos)) + + # i_conf += 1 + + +# #=============================================================================== +# class TestMD(unittest.TestCase): + + # @classmethod + # def setUpClass(cls): + # cls.results = get_results("md/nve", "section_run") + # cls.temp = convert_unit( + # np.array([ + # 300.000000000, + # 275.075405378, + # 235.091633019, + # 202.752506973, + # 192.266488819, + # 201.629598676, + # 218.299664775, + # 230.324748557, + # 232.691881533, + # 226.146979313, + # 213.165337396, + # ]), + # "K" + # ) + # cls.cons = convert_unit( + # np.array([ + # -34.323271136, + # -34.323245645, + # -34.323206964, + # -34.323183380, + # -34.323187747, + # -34.323208962, + # -34.323227533, + # -34.323233583, + # -34.323230715, + # -34.323227013, + # -34.323224123, + # ]), + # "hartree" + # ) + # cls.pot = convert_unit( + # np.array([ + # -34.330396471, + # -34.329778993, + # -34.328790653, + # -34.327998978, + # -34.327754290, + # -34.327997890, + # -34.328412394, + # -34.328704052, + # -34.328757407, + # -34.328598255, + # -34.328287038, + # ]), + # "hartree" + # ) + # cls.kin = convert_unit( + # np.array([ + # 0.007125335, + # 0.006533348, + # 0.005583688, + # 0.004815598, + # 0.004566544, + # 0.004788928, + # 0.005184860, + # 0.005470470, + # 0.005526692, + # 0.005371243, + # 0.005062914, + # ]), + # "hartree" + # ) + + # def test_number_of_atoms(self): + # result = self.results["number_of_atoms"] + # expected_result = np.array(11*[6]) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_ensemble_type(self): + # result = self.results["ensemble_type"] + # self.assertEqual(result, "NVE") + + # def test_sampling_method(self): + # result = self.results["sampling_method"] + # self.assertEqual(result, "molecular_dynamics") + + # def test_number_of_frames_in_sequence(self): + # result = self.results["number_of_frames_in_sequence"] + # self.assertEqual(result, 11) + + # def test_atom_positions(self): + # result = self.results["atom_positions"] + # expected_start = convert_unit( + # np.array([ + # [2.2803980000, 9.1465390000, 5.0886960000], + # [1.2517030000, 2.4062610000, 7.7699080000], + # [1.7620190000, 9.8204290000, 5.5284540000], + # [3.0959870000, 9.1070880000, 5.5881860000], + # [0.5541290000, 2.9826340000, 8.0820240000], + # [1.7712570000, 2.9547790000, 7.1821810000], + # ]), + # "angstrom" + # ) + # expected_end = convert_unit( + # np.array([ + # [2.2916014875, 9.1431763260, 5.0868100688], + # [1.2366834078, 2.4077552776, 7.7630044423], + # [1.6909790671, 9.8235337924, 5.5042564094], + # [3.1130341664, 9.0372111810, 5.6100739746], + # [0.5652070478, 3.0441761067, 8.1734257299], + # [1.8669280879, 2.9877213524, 7.2364955946], + # ]), + # "angstrom" + # ) + # self.assertTrue(np.array_equal(result[0,:], expected_start)) + # self.assertTrue(np.array_equal(result[-1,:], expected_end)) + + # def test_atom_velocities(self): + # result = self.results["atom_velocities"] + # expected_start = convert_unit( + # np.array([ + # [0.0000299284, 0.0000082360, -0.0000216368], + # [-0.0001665963, 0.0001143863, -0.0000622640], + # [-0.0005732926, -0.0003112611, -0.0007149779], + # [0.0013083605, -0.0009262219, 0.0006258560], + # [0.0012002313, -0.0003701042, 0.0002810523], + # [0.0002340810, -0.0003388418, 0.0011398583], + # ]), + # "bohr*(planckConstant/hartree)^-1" + # ) + # expected_end = convert_unit( + # np.array([ + # [0.0001600263, -0.0000383308, 0.0000153662], + # [-0.0001269381, -0.0000005151, -0.0000726214], + # [0.0000177093, -0.0003257814, -0.0000257852], + # [-0.0015067045, -0.0001700489, -0.0003651605], + # [0.0000307926, 0.0006886719, 0.0008431321], + # [0.0007424681, 0.0003614127, 0.0005749089], + # ]), + # "bohr*(planckConstant/hartree)^-1" + # ) + + # self.assertTrue(np.array_equal(result[0,:], expected_start)) + # self.assertTrue(np.array_equal(result[-1,:], expected_end)) + + # def test_frame_sequence_potential_energy(self): + # result = self.results["frame_sequence_potential_energy"] + # self.assertTrue(np.array_equal(result, self.pot)) + + # def test_frame_sequence_kinetic_energy(self): + # result = self.results["frame_sequence_kinetic_energy"] + # self.assertTrue(np.array_equal(result, self.kin)) + + # def test_frame_sequence_conserved_quantity(self): + # result = self.results["frame_sequence_conserved_quantity"] + # self.assertTrue(np.array_equal(result, self.cons)) + + # def test_frame_sequence_temperature(self): + # result = self.results["frame_sequence_temperature"] + # self.assertTrue(np.array_equal(result, self.temp)) + + # def test_frame_sequence_time(self): + # result = self.results["frame_sequence_time"] + # expected_result = convert_unit( + # np.array([ + # 0.000000, + # 0.500000, + # 1.000000, + # 1.500000, + # 2.000000, + # 2.500000, + # 3.000000, + # 3.500000, + # 4.000000, + # 4.500000, + # 5.000000, + # ]), + # "fs" + # ) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_frame_sequence_potential_energy_stats(self): + # result = self.results["frame_sequence_potential_energy_stats"] + # expected_result = np.array([self.pot.mean(), self.pot.std()]) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_frame_sequence_kinetic_energy_stats(self): + # result = self.results["frame_sequence_kinetic_energy_stats"] + # expected_result = np.array([self.kin.mean(), self.kin.std()]) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_frame_sequence_conserved_quantity_stats(self): + # result = self.results["frame_sequence_conserved_quantity_stats"] + # expected_result = np.array([self.cons.mean(), self.cons.std()]) + # self.assertTrue(np.array_equal(result, expected_result)) + + # def test_frame_sequence_temperature_stats(self): + # result = self.results["frame_sequence_temperature_stats"] + # expected_result = np.array([self.temp.mean(), self.temp.std()]) + # self.assertTrue(np.array_equal(result, expected_result)) + + +# #=============================================================================== +# class TestMDEnsembles(unittest.TestCase): + + # @classmethod + # def setUpClass(cls): + # cls.pressure = convert_unit( + # np.array([ + # -0.192828092559E+04, + # -0.145371071470E+04, + # -0.210098903760E+03, + # 0.167260570313E+04, + # 0.395562042841E+04, + # 0.630374855942E+04, + # 0.836906136786E+04, + # 0.983216022830E+04, + # 0.104711540465E+05, + # 0.102444821550E+05, + # 0.931695792434E+04, + # ]), + # "bar" + # ) + + # def test_nvt(self): + # results = get_results("md/nvt", "section_run") + # ensemble = results["ensemble_type"] + # self.assertEqual(ensemble, "NVT") + + # def test_npt(self): + # results = get_results("md/npt", "section_run") + # ensemble = results["ensemble_type"] + # self.assertEqual(ensemble, "NPT") + + # pressure = results["frame_sequence_pressure"] + # self.assertTrue(np.array_equal(pressure, self.pressure)) + + # pressure_stats = results["frame_sequence_pressure_stats"] + # expected_pressure_stats = np.array([self.pressure.mean(), self.pressure.std()]) + # self.assertTrue(np.array_equal(pressure_stats, expected_pressure_stats)) + + # simulation_cell = results["simulation_cell"] + # expected_cell_start = convert_unit( + # np.array( + # [[ + # 6.0000000000, + # 0.0000000000, + # 0.0000000000, + # ], [ + # 0.0000000000, + # 6.0000000000, + # 0.0000000000, + # ], [ + # 0.0000000000, + # 0.0000000000, + # 6.0000000000, + # ]]), + # "angstrom" + # ) + # expected_cell_end = convert_unit( + # np.array( + # [[ + # 5.9960617905, + # -0.0068118798, + # -0.0102043036, + # ], [ + # -0.0068116027, + # 6.0225574669, + # -0.0155044063, + # ], [ + # -0.0102048226, + # -0.0155046726, + # 6.0083072343, + # ]]), + # "angstrom" + # ) + # self.assertEqual(simulation_cell.shape[0], 11) + # self.assertTrue(np.array_equal(expected_cell_start, simulation_cell[0,:,:])) + # self.assertTrue(np.array_equal(expected_cell_end, simulation_cell[-1,:,:])) + + +# #=============================================================================== +# class TestElectronicStructureMethod(unittest.TestCase): + + # def test_mp2(self): + # results = get_results("electronic_structure_method/mp2", "section_run") + # result = results["electronic_structure_method"] + # self.assertEqual(result, "MP2") + + # def test_dft_plus_u(self): + # results = get_results("electronic_structure_method/dft_plus_u", "section_run") + # result = results["electronic_structure_method"] + # self.assertEqual(result, "DFT+U") + + # def test_rpa(self): + # results = get_results("electronic_structure_method/rpa", "section_run") + # result = results["electronic_structure_method"] + # self.assertEqual(result, "RPA") + + +#=============================================================================== +if __name__ == '__main__': + suites = [] + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSinglePoint)) + alltests = unittest.TestSuite(suites) + unittest.TextTestRunner(verbosity=0).run(alltests) diff --git a/test/unittests/cpmd_4.1/single_point/GEOMETRY b/test/unittests/cpmd_4.1/single_point/GEOMETRY new file mode 100644 index 0000000000000000000000000000000000000000..4fc346d8d03ee55cc5ed943b11eb14af91be77a4 --- /dev/null +++ b/test/unittests/cpmd_4.1/single_point/GEOMETRY @@ -0,0 +1,2 @@ + 8.259992891426 7.558904499132 7.558904499132 0.017798524379 -0.000000000000 -0.000000000000 + 6.857816106837 7.558904499132 7.558904499132 -0.017798524379 -0.000000000000 -0.000000000000 diff --git a/test/unittests/cpmd_4.1/single_point/GEOMETRY.xyz b/test/unittests/cpmd_4.1/single_point/GEOMETRY.xyz new file mode 100644 index 0000000000000000000000000000000000000000..b13c48d0b6644a53a06502a83cea74fb0265e4e1 --- /dev/null +++ b/test/unittests/cpmd_4.1/single_point/GEOMETRY.xyz @@ -0,0 +1,4 @@ + 2 +GEOMETRY FILE / created by CPMD + H 4.371000000000 4.000000000000 4.000000000000 0.009418573488 -0.000000000000 -0.000000000000 + H 3.629000000000 4.000000000000 4.000000000000 -0.009418573488 -0.000000000000 -0.000000000000 diff --git a/test/unittests/cpmd_4.1/single_point/LATEST b/test/unittests/cpmd_4.1/single_point/LATEST new file mode 100644 index 0000000000000000000000000000000000000000..0e4449210602fd9c3a45bd3bc780cd67ad8721b0 --- /dev/null +++ b/test/unittests/cpmd_4.1/single_point/LATEST @@ -0,0 +1,2 @@ +./RESTART.1 + 1 diff --git a/test/unittests/cpmd_4.1/single_point/RESTART.1 b/test/unittests/cpmd_4.1/single_point/RESTART.1 new file mode 100644 index 0000000000000000000000000000000000000000..88b00a1a01f06fe6a5955b36cc01256a544cf1ce Binary files /dev/null and b/test/unittests/cpmd_4.1/single_point/RESTART.1 differ diff --git a/test/unittests/cpmd_4.1/single_point/input.inp b/test/unittests/cpmd_4.1/single_point/input.inp new file mode 100755 index 0000000000000000000000000000000000000000..c1b5c8a868f3b0aec8910af9399c6bfabec9fa3d --- /dev/null +++ b/test/unittests/cpmd_4.1/single_point/input.inp @@ -0,0 +1,35 @@ +&INFO +isolated hydrogen molecule. +single point calculation. +&END + +&CPMD + OPTIMIZE WAVEFUNCTION + CONVERGENCE ORBITALS + 1.0d-7 + CENTER MOLECULE ON + PRINT FORCES ON +&END + +&SYSTEM + SYMMETRY + 1 + ANGSTROM + CELL + 8.00 1.0 1.0 0.0 0.0 0.0 + CUTOFF + 70.0 +&END + +&DFT + FUNCTIONAL LDA +&END + +&ATOMS +*H_MT_LDA.psp + LMAX=S + 2 + 4.371 4.000 4.000 + 3.629 4.000 4.000 +&END + diff --git a/test/unittests/cpmd_4.1/single_point/output.out b/test/unittests/cpmd_4.1/single_point/output.out new file mode 100644 index 0000000000000000000000000000000000000000..b7fb802822bc95d7164dab1cff250c4b764493de --- /dev/null +++ b/test/unittests/cpmd_4.1/single_point/output.out @@ -0,0 +1,286 @@ + cp_groups: we are using a 1 x 1 grid (groups x nprocs). + PROGRAM CPMD STARTED AT: 2016-07-04 14:05:06.851 + SETCNST| USING: CODATA 2006 UNITS + + + ****** ****** **** **** ****** + ******* ******* ********** ******* + *** ** *** ** **** ** ** *** + ** ** *** ** ** ** ** ** + ** ******* ** ** ** ** + *** ****** ** ** ** *** + ******* ** ** ** ******* + ****** ** ** ** ****** + + VERSION 4.1-rUnversioned directory + + COPYRIGHT + IBM RESEARCH DIVISION + MPI FESTKOERPERFORSCHUNG STUTTGART + + The CPMD consortium + Home Page: http://www.cpmd.org + Mailing List: cpmd-list@cpmd.org + E-mail: cpmd@cpmd.org + + + *** Jun 22 2016 -- 12:41:05 *** + + THE INPUT FILE IS: input.inp + THIS JOB RUNS ON: lenovo700 + THE CURRENT DIRECTORY IS: + /home/lauri/Dropbox/nomad-dev/nomad-lab-base/parsers/cpmd/test/unittests/cpmd_4.1/h2 + THE TEMPORARY DIRECTORY IS: + /home/lauri/Dropbox/nomad-dev/nomad-lab-base/parsers/cpmd/test/unittests/cpmd_4.1/h2 + THE PROCESS ID IS: 32589 + THE JOB WAS SUBMITTED BY: lauri + + + ****************************************************************************** + * INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO - INFO * + ****************************************************************************** + * isolated hydrogen molecule. * + * single point calculation. * + ****************************************************************************** + + SINGLE POINT DENSITY OPTIMIZATION + + USING SEED 123456 TO INIT. PSEUDO RANDOM NUMBER GEN. + PATH TO THE RESTART FILES: ./ + GRAM-SCHMIDT ORTHOGONALIZATION + MAXIMUM NUMBER OF STEPS: 10000 STEPS + MAXIMUM NUMBER OF ITERATIONS FOR SC: 10000 STEPS + PRINT INTERMEDIATE RESULTS EVERY 10001 STEPS + STORE INTERMEDIATE RESULTS EVERY 10001 STEPS + NUMBER OF DISTINCT RESTART FILES: 1 + TEMPERATURE IS CALCULATED ASSUMING EXTENDED BULK BEHAVIOR + FICTITIOUS ELECTRON MASS: 400.0000 + TIME STEP FOR ELECTRONS: 5.0000 + TIME STEP FOR IONS: 5.0000 + CONVERGENCE CRITERIA FOR WAVEFUNCTION OPTIMIZATION: 1.0000E-07 + WAVEFUNCTION OPTIMIZATION BY PRECONDITIONED DIIS + THRESHOLD FOR THE WF-HESSIAN IS 0.5000 + MAXIMUM NUMBER OF VECTORS RETAINED FOR DIIS: 10 + STEPS UNTIL DIIS RESET ON POOR PROGRESS: 10 + FULL ELECTRONIC GRADIENT IS USED + SPLINE INTERPOLATION IN G-SPACE FOR PSEUDOPOTENTIAL FUNCTIONS + NUMBER OF SPLINE POINTS: 5000 + + EXCHANGE CORRELATION FUNCTIONALS + LDA EXCHANGE: NONE + LDA XC THROUGH PADE APPROXIMATION + S.GOEDECKER, J.HUTTER, M.TETER PRB 541703 (1996) + + *** DETSP| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + ***************************** ATOMS **************************** + NR TYPE X(BOHR) Y(BOHR) Z(BOHR) MBL + 1 H 8.259993 7.558904 7.558904 3 + 2 H 6.857816 7.558904 7.558904 3 + **************************************************************** + + NUMBER OF STATES: 1 + NUMBER OF ELECTRONS: 2.00000 + CHARGE: 0.00000 + ELECTRON TEMPERATURE(KELVIN): 0.00000 + OCCUPATION + 2.0 + + ============================================================ + | Pseudopotential Report Thu Jan 11 18:21:49 1996 | + ------------------------------------------------------------ + | Atomic Symbol : H | + | Atomic Number : 1 | + | Number of core states : 0 | + | Number of valence states : 1 | + | Exchange-Correlation Functional : | + | Slater exchange : .6667 | + | LDA correlation : Ceperley-Alder | + | Electron Configuration : N L Occupation | + | 1 S 1.0000 | + | Full Potential Total Energy -.445894 | + | Trouiller-Martins normconserving PP | + | n l rc energy | + | 1 S .5000 -.23366 | + | 2 P .5000 -.23366 | + | Number of Mesh Points : 511 | + | Pseudoatom Total Energy -.445889 | + ============================================================ + + **************************************************************** + * ATOM MASS RAGGIO NLCC PSEUDOPOTENTIAL * + * H 1.0080 1.2000 NO S LOCAL * + **************************************************************** + + + PARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARA + NCPU NGW NHG PLANES GXRAYS HXRAYS ORBITALS Z-PLANES + 0 17133 136605 90 1281 5089 1 1 + G=0 COMPONENT ON PROCESSOR : 0 + PARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARAPARA + + *** loadpa| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + OPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPEN + NUMBER OF CPUS PER TASK 1 + OPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPENMPOPEN + + *** rggen| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + ************************** SUPERCELL *************************** + SYMMETRY: SIMPLE CUBIC + LATTICE CONSTANT(a.u.): 15.11781 + CELL DIMENSION: 15.1178 1.0000 1.0000 0.0000 0.0000 0.0000 + VOLUME(OMEGA IN BOHR^3): 3455.14726 + LATTICE VECTOR A1(BOHR): 15.1178 0.0000 0.0000 + LATTICE VECTOR A2(BOHR): 0.0000 15.1178 0.0000 + LATTICE VECTOR A3(BOHR): 0.0000 0.0000 15.1178 + RECIP. LAT. VEC. B1(2Pi/BOHR): 0.0661 0.0000 0.0000 + RECIP. LAT. VEC. B2(2Pi/BOHR): 0.0000 0.0661 0.0000 + RECIP. LAT. VEC. B3(2Pi/BOHR): 0.0000 0.0000 0.0661 + REAL SPACE MESH: 90 90 90 + WAVEFUNCTION CUTOFF(RYDBERG): 70.00000 + DENSITY CUTOFF(RYDBERG): (DUAL= 4.00) 280.00000 + NUMBER OF PLANE WAVES FOR WAVEFUNCTION CUTOFF: 17133 + NUMBER OF PLANE WAVES FOR DENSITY CUTOFF: 136605 + **************************************************************** + + *** RINFORCE| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + *** FFTPRP| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + GENERATE ATOMIC BASIS SET + H SLATER ORBITALS + 1S ALPHA= 1.0000 OCCUPATION= 1.00 + + + INITIALIZATION TIME: 0.48 SECONDS + + *** WFOPTS| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + *** PHFAC| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + NOTE: ATOMIC GUESS USING DISTRIBUTED LINALG WITH LANCZOS + *** ATOMWF| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + ATRHO| CHARGE(R-SPACE): 2.000000 (G-SPACE): 2.000000 + + ATOM COORDINATES GRADIENTS (-FORCES) + 1 H 8.2600 7.5589 7.5589 0.000E+00 0.000E+00 0.000E+00 + 2 H 6.8578 7.5589 7.5589 0.000E+00 0.000E+00 0.000E+00 + + TIME FOR WAVEFUNCTION INITIALIZATION: 0.83 SECONDS + *** RWFOPT| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + EWALD| SUM IN REAL SPACE OVER 1* 1* 1 CELLS + + TOTAL INTEGRATED ELECTRONIC DENSITY + IN G-SPACE = 2.0000000000 + IN R-SPACE = 2.0000000000 + + (K+E1+L+N+X) TOTAL ENERGY = -1.09689770 A.U. + (K) KINETIC ENERGY = 0.81247072 A.U. + (E1=A-S+R) ELECTROSTATIC ENERGY = -0.48640053 A.U. + (S) ESELF = 0.66490380 A.U. + (R) ESR = 0.17302593 A.U. + (L) LOCAL PSEUDOPOTENTIAL ENERGY = -0.84879440 A.U. + (N) N-L PSEUDOPOTENTIAL ENERGY = 0.00000000 A.U. + (X) EXCHANGE-CORRELATION ENERGY = -0.57417350 A.U. + + NFI GEMAX CNORM ETOT DETOT TCPU + 1 3.816E-02 2.886E-03 -1.096898 0.000E+00 0.23 + 2 8.628E-03 1.041E-03 -1.130803 -3.391E-02 0.22 + 3 2.736E-03 2.293E-04 -1.132376 -1.572E-03 0.22 + 4 6.115E-04 4.235E-05 -1.132456 -8.056E-05 0.22 + 5 1.532E-04 7.007E-06 -1.132459 -3.315E-06 0.24 + 6 3.895E-05 1.396E-06 -1.132460 -1.338E-07 0.22 + 7 6.288E-06 4.459E-07 -1.132460 -7.717E-09 0.22 + 8 7.941E-07 1.282E-07 -1.132460 -4.283E-10 0.22 + 9 1.237E-07 2.861E-08 -1.132460 -1.992E-11 0.22 + 10 2.278E-08 5.401E-09 -1.132460 -8.606E-13 0.22 + + RESTART INFORMATION WRITTEN ON FILE ./RESTART.1 + *** RWFOPT| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + **************************************************************** + * * + * FINAL RESULTS * + * * + **************************************************************** + + ATOM COORDINATES GRADIENTS (-FORCES) + 1 H 8.2600 7.5589 7.5589 1.780E-02 -1.104E-16 -9.425E-17 + 2 H 6.8578 7.5589 7.5589 -1.780E-02 -1.867E-16 -1.490E-16 + + **************************************************************** + + + ELECTRONIC GRADIENT: + MAX. COMPONENT = 1.15980E-08 NORM = 1.11525E-09 + NUCLEAR GRADIENT: + MAX. COMPONENT = 1.77985E-02 NORM = 1.02760E-02 + + + TOTAL INTEGRATED ELECTRONIC DENSITY + IN G-SPACE = 2.0000000000 + IN R-SPACE = 2.0000000000 + + (K+E1+L+N+X) TOTAL ENERGY = -1.13245953 A.U. + (K) KINETIC ENERGY = 1.09007149 A.U. + (E1=A-S+R) ELECTROSTATIC ENERGY = -0.47319176 A.U. + (S) ESELF = 0.66490380 A.U. + (R) ESR = 0.17302593 A.U. + (L) LOCAL PSEUDOPOTENTIAL ENERGY = -1.09902228 A.U. + (N) N-L PSEUDOPOTENTIAL ENERGY = 0.00000000 A.U. + (X) EXCHANGE-CORRELATION ENERGY = -0.65031699 A.U. + + **************************************************************** + + + + **************************************************************** + * * + * TIMING * + * * + **************************************************************** + SUBROUTINE CALLS SELF TIME TOTAL TIME + AVERAGE MAXIMUM AVERAGE MAXIMUM + cpmd 1 0.00 0.00 3.67 3.67 + rwfopt 1 0.00 0.00 3.20 3.20 + updwf 11 0.00 0.00 2.37 2.37 + forcedr 11 0.00 0.00 2.33 2.33 + forces 11 0.00 0.00 2.33 2.33 + forces_a 11 0.00 0.00 1.80 1.80 + rscpot 11 0.00 0.00 1.80 1.80 + vofrho 12 0.00 0.00 1.79 1.79 + VOFRHOB 12 0.04 0.04 1.22 1.22 + INVFFTN 37 1.12 1.12 1.12 1.12 + initrun 1 0.00 0.00 0.82 0.82 + rinitwf 1 0.00 0.00 0.82 0.82 + ATOMWF 1 0.00 0.00 0.82 0.82 + FWFFTN 25 0.69 0.69 0.69 0.69 + xcener_new 12 0.04 0.04 0.67 0.67 + mikeu 12 0.63 0.63 0.63 0.63 + vpsi 13 0.06 0.06 0.63 0.63 + VOFRHOA 12 0.03 0.03 0.57 0.57 + ATRHO 1 0.35 0.35 0.39 0.39 + rhoofr 11 0.07 0.07 0.34 0.34 + rinit 1 0.00 0.00 0.26 0.26 + rggen 1 0.01 0.01 0.26 0.26 + loadpa 1 0.01 0.01 0.25 0.25 + dist_ksmat 1 0.00 0.00 0.11 0.11 + RINFORCE 1 0.00 0.00 0.10 0.10 + NUMPW 1 0.10 0.10 0.10 0.10 + loadpa_b 1 0.10 0.10 0.10 0.10 + loadpa_c 1 0.10 0.10 0.10 0.10 + FORMFN 1 0.10 0.10 0.10 0.10 + ppener 12 0.06 0.06 0.06 0.06 + loadpa_a 1 0.04 0.04 0.04 0.04 + EICALC 12 0.04 0.04 0.04 0.04 + odiis 11 0.04 0.04 0.04 0.04 + PUTPS 1 0.01 0.01 0.01 0.01 + forces_b 11 0.00 0.00 0.01 0.01 + potfor 1 0.01 0.01 0.01 0.01 + fftprp 1 0.00 0.00 0.00 0.00 + **************************************************************** + + CPU TIME : 0 HOURS 0 MINUTES 3.67 SECONDS + ELAPSED TIME : 0 HOURS 0 MINUTES 3.67 SECONDS + *** CPMD| SIZE OF THE PROGRAM IS NOT AVAILABLE *** + + PROGRAM CPMD ENDED AT: 2016-07-04 14:05:10.523 diff --git a/test/unittests/cpmd_4.1/single_point/run.sh b/test/unittests/cpmd_4.1/single_point/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..222042e49aa219ad6e922865b7797f786e068428 --- /dev/null +++ b/test/unittests/cpmd_4.1/single_point/run.sh @@ -0,0 +1,3 @@ +export CPMD_PP_LIBRARY_PATH=../ +export OMP_NUM_THREADS=1 +cpmd41 input.inp > output.out