From c718e95addcd9756c7a9110620c259fe56f5725e Mon Sep 17 00:00:00 2001 From: Lauri Himanen <lauri.himanen@aalto.fi> Date: Mon, 16 Oct 2017 21:21:58 +0300 Subject: [PATCH] Restructured the folders and files to use a common project structure, updated readme. --- README.md | 29 +-- parser/parser-cp2k/cp2kparser/parser.py | 43 +++- .../cp2kparser/tools/xmlpreparser.py | 7 - .../versions/cp2k262/commonparser.py | 1 - .../versions/cp2k262/geooptparser.py | 1 - .../versions/cp2k262/inputparser.py | 1 - .../cp2kparser/versions/cp2k262/mdparser.py | 1 - .../cp2k262/singlepointforceparser.py | 1 - .../versions/cp2k262/singlepointparser.py | 5 +- regtest/README.md | 6 - regtest/cp2k_2.6.2/callgraph.py | 8 - regtest/cp2k_2.6.2/profiling.py | 17 -- .../cp2k_2.6.2}/cp2k_2.6.2/BASIS_SET | 0 .../cp2k_2.6.2}/cp2k_2.6.2/GTH_POTENTIALS | 0 .../cp2k_2.6.2/XC_functional/b3lyp/b3lyp.inp | 0 .../XC_functional/b3lyp/unittest.out | 0 .../cp2k_2.6.2/XC_functional/blyp/blyp.inp | 0 .../XC_functional/blyp/unittest.out | 0 .../XC_functional/hcth120/hcth120.inp | 0 .../XC_functional/hcth120/unittest.out | 0 .../cp2k_2.6.2/XC_functional/lda/lda.inp | 0 .../cp2k_2.6.2/XC_functional/lda/unittest.out | 0 .../cp2k_2.6.2/XC_functional/olyp/olyp.inp | 0 .../XC_functional/olyp/unittest.out | 0 .../cp2k_2.6.2/XC_functional/pade/pade.inp | 0 .../XC_functional/pade/unittest.out | 0 .../cp2k_2.6.2/XC_functional/pbe/pbe.inp | 0 .../cp2k_2.6.2/XC_functional/pbe/unittest.out | 0 .../cp2k_2.6.2/XC_functional/pbe0/pbe0.inp | 0 .../XC_functional/pbe0/unittest.out | 0 .../default/default.inp | 0 .../default/unittest.out | 0 .../none/none.inp | 0 .../none/unittest.out | 0 .../x/unittest.out | 0 .../configuration_periodic_dimensions/x/x.inp | 0 .../xy/unittest.out | 0 .../xy/xy.inp | 0 .../xyz/unittest.out | 0 .../xyz/xyz.inp | 0 .../xz/unittest.out | 0 .../xz/xz.inp | 0 .../y/unittest.out | 0 .../configuration_periodic_dimensions/y/y.inp | 0 .../yz/unittest.out | 0 .../yz/yz.inp | 0 .../z/unittest.out | 0 .../configuration_periodic_dimensions/z/z.inp | 0 .../converged/Si_bulk8-nonbonded_nl_p0-1.out | 0 .../convergence/converged/converged.inp | 0 .../convergence/converged/unittest.out | 0 .../non_converged/non_converged.inp | 0 .../convergence/non_converged/unittest.out | 0 .../dft_no_input/unittest.out | 0 .../dft_plus_u/H2O-rks-diag-BFGS.Hessian | Bin .../dft_plus_u/H2O-rks-diag-pos-1.xyz | 0 .../dft_plus_u/H2O-rks-diag.inp | 0 .../dft_plus_u/RESTART-rks-diag | Bin .../dft_plus_u/unittest.out | 0 .../mp2/H2O-01.inp | 0 .../mp2/unittest.out | 0 .../rpa/H2O_gas.xyz | 0 .../rpa/RI_RPA_H2O.inp | 0 .../rpa/unittest.out | 0 .../Si_bulk8-nonbonded_nl_p0-1.out | 0 .../Si_bulk8-nonbonded_nl_p1-1.out | 0 .../Si_bulk8-nonbonded_nl_p2-1.out | 0 .../Si_bulk8-nonbonded_nl_p3-1.out | 0 .../energy_force/Si_bulk8_localLog_p1.out | 0 .../energy_force/Si_bulk8_localLog_p2.out | 0 .../energy_force/Si_bulk8_localLog_p3.out | 0 .../cp2k_2.6.2/energy_force/si_bulk8.inp | 0 .../cp2k_2.6.2/energy_force/unittest.out | 0 .../errors/invalid_file/unittest.out | 0 .../errors/invalid_run_type/unittest.out | 0 .../errors/unknown_input_keyword/si_bulk8.inp | 0 .../errors/unknown_input_keyword/unittest.out | 0 .../errors/unknown_input_section/si_bulk8.inp | 0 .../errors/unknown_input_section/unittest.out | 0 .../si_bulk8.inp | 0 .../unittest.out | 0 .../errors/unknown_version/si_bulk8.inp | 0 .../errors/unknown_version/unittest.out | 0 .../single_point/Si_bulk8-forces-1_0.xyz | 0 .../force_file/single_point/single_point.inp | 0 .../force_file/single_point/unittest.out | 0 .../cp2k_2.6.2/geo_opt/bfgs/H2O-BFGS.Hessian | Bin .../cp2k_2.6.2/geo_opt/bfgs/H2O-pos-1.xyz | 0 .../cp2k_2.6.2/geo_opt/bfgs/geo_opt.inp | 0 .../cp2k_2.6.2/geo_opt/bfgs/unittest.out | 0 .../cp2k_2.6.2/geo_opt/cg/H2O-pos-1.xyz | 0 .../cp2k_2.6.2/geo_opt/cg/geo_opt.inp | 0 .../cp2k_2.6.2/geo_opt/cg/unittest.out | 0 .../cp2k_2.6.2/geo_opt/each/H2O-pos-1.xyz | 0 .../cp2k_2.6.2/geo_opt/each/geo_opt.inp | 0 .../cp2k_2.6.2/geo_opt/each/unittest.out | 0 .../geo_opt/filename/H2O-customname-pos-1.xyz | 0 .../cp2k_2.6.2/geo_opt/filename/geo_opt.inp | 0 .../cp2k_2.6.2/geo_opt/filename/unittest.out | 0 .../dcd/H2O-geometry-pos-1.dcd | Bin .../geo_opt/geometry_formats/dcd/geo_opt.inp | 0 .../geo_opt/geometry_formats/dcd/unittest.out | 0 .../pdb/H2O-geometry-pos-1.pdb | 0 .../geo_opt/geometry_formats/pdb/geo_opt.inp | 0 .../geo_opt/geometry_formats/pdb/unittest.out | 0 .../xyz/H2O-geometry-pos-1.xyz | 0 .../geo_opt/geometry_formats/xyz/geo_opt.inp | 0 .../geo_opt/geometry_formats/xyz/unittest.out | 0 .../cp2k_2.6.2/geo_opt/lbfgs/H2O-pos-1.xyz | 0 .../cp2k_2.6.2/geo_opt/lbfgs/geo_opt.inp | 0 .../cp2k_2.6.2/geo_opt/lbfgs/unittest.out | 0 .../input_preprocessing/comments/si_bulk8.inp | 0 .../input_preprocessing/comments/unittest.out | 0 .../input_preprocessing/include/global.inc | 0 .../input_preprocessing/include/main.inp | 0 .../input_preprocessing/include/unittest.out | 0 .../tabseparator/si_bulk8.inp | 0 .../tabseparator/unittest.out | 0 .../input_preprocessing/variable/main.inp | 0 .../input_preprocessing/variable/unittest.out | 0 .../variable_multifile/global.inc | 0 .../variable_multifile/main.inp | 0 .../variable_multifile/unittest.out | 0 .../PROJECT-nonbonded_nl_p0-1.out | 0 .../variable_multiple/main.inp | 0 .../variable_multiple/unittest.out | 0 .../variable_redifinition/main.inp | 0 .../variable_redifinition/unittest.out | 0 .../kinds/Si_bulk8-nonbonded_nl_p0-1.out | 0 .../cp2k_2.6.2}/cp2k_2.6.2/kinds/si_bulk8.inp | 0 .../cp2k_2.6.2}/cp2k_2.6.2/kinds/unittest.out | 0 .../cp2k_2.6.2/md/npt/H2O-md-1.cell | 0 .../cp2k_2.6.2/md/npt/H2O-md-1.ener | 0 .../cp2k_2.6.2/md/npt/H2O-md-pos-1.xyz | 0 .../cp2k_2.6.2}/cp2k_2.6.2/md/npt/H2O-md.inp | 0 .../cp2k_2.6.2/md/npt/unittest.out | 0 .../cp2k_2.6.2/md/nve/H2O-32-1.cell | 0 .../cp2k_2.6.2/md/nve/H2O-32-1.ener | 0 .../cp2k_2.6.2/md/nve/H2O-32-1.stress | 0 .../cp2k_2.6.2/md/nve/H2O-32-frc-1.xyz | 0 .../cp2k_2.6.2/md/nve/H2O-32-pos-1.xyz | 0 .../cp2k_2.6.2/md/nve/H2O-32-vel-1.xyz | 0 .../cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32.inp | 0 .../cp2k_2.6.2/md/nve/unittest.out | 0 .../cp2k_2.6.2/md/nvt/H2O-md-1.ener | 0 .../cp2k_2.6.2/md/nvt/H2O-md-pos-1.xyz | 0 .../cp2k_2.6.2}/cp2k_2.6.2/md/nvt/H2O-md.inp | 0 .../cp2k_2.6.2/md/nvt/unittest.out | 0 .../cp2k_2.6.2}/cp2k_2.6.2/sic/ad/ad.inp | 0 .../cp2k_2.6.2/sic/ad/unittest.out | 0 .../explicit_orbitals/explicit_orbitals.inp | 0 .../sic/explicit_orbitals/unittest.out | 0 .../cp2k_2.6.2/sic/mauri_spz/mauri_spz.inp | 0 .../cp2k_2.6.2/sic/mauri_spz/unittest.out | 0 .../cp2k_2.6.2/sic/mauri_us/mauri_us.inp | 0 .../cp2k_2.6.2/sic/mauri_us/unittest.out | 0 .../cp2k_2.6.2}/cp2k_2.6.2/sic/no/no.inp | 0 .../cp2k_2.6.2/sic/no/unittest.out | 0 .../stress_tensor/analytical/si_bulk8.inp | 0 .../stress_tensor/analytical/unittest.out | 0 .../diagonal_analytical/si_bulk8.inp | 0 .../diagonal_analytical/unittest.out | 0 .../diagonal_numerical/si_bulk8.inp | 0 .../diagonal_numerical/unittest.out | 0 .../stress_tensor/none/si_bulk8.inp | 0 .../stress_tensor/none/unittest.out | 0 .../stress_tensor/numerical/si_bulk8.inp | 0 .../stress_tensor/numerical/unittest.out | 0 .../cp2k_2.6.2/regtests.py | 219 +++++++++--------- 169 files changed, 148 insertions(+), 191 deletions(-) delete mode 100644 regtest/README.md delete mode 100644 regtest/cp2k_2.6.2/callgraph.py delete mode 100644 regtest/cp2k_2.6.2/profiling.py rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/BASIS_SET (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/GTH_POTENTIALS (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/b3lyp/b3lyp.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/b3lyp/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/blyp/blyp.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/blyp/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/hcth120/hcth120.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/hcth120/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/lda/lda.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/lda/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/olyp/olyp.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/olyp/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/pade/pade.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/pade/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/pbe/pbe.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/pbe/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/pbe0/pbe0.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/XC_functional/pbe0/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/default/default.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/default/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/none/none.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/none/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/x/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/x/x.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/xy/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/xy/xy.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/xyz/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/xyz/xyz.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/xz/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/xz/xz.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/y/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/y/y.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/yz/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/yz/yz.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/z/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/configuration_periodic_dimensions/z/z.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/convergence/converged/Si_bulk8-nonbonded_nl_p0-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/convergence/converged/converged.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/convergence/converged/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/convergence/non_converged/non_converged.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/convergence/non_converged/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/dft_no_input/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-BFGS.Hessian (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/dft_plus_u/RESTART-rks-diag (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/dft_plus_u/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/mp2/H2O-01.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/mp2/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/rpa/H2O_gas.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/rpa/RI_RPA_H2O.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/electronic_structure_method/rpa/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p0-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p1-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p2-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p3-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p2.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p3.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/energy_force/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/invalid_file/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/invalid_run_type/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_input_keyword/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_input_keyword/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_input_section/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_input_section/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_input_section_parameter/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_input_section_parameter/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_version/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/errors/unknown_version/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/force_file/single_point/Si_bulk8-forces-1_0.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/force_file/single_point/single_point.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/force_file/single_point/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/bfgs/H2O-BFGS.Hessian (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/bfgs/H2O-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/bfgs/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/bfgs/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/cg/H2O-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/cg/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/cg/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/each/H2O-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/each/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/each/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/filename/H2O-customname-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/filename/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/filename/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/dcd/H2O-geometry-pos-1.dcd (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/dcd/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/dcd/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/pdb/H2O-geometry-pos-1.pdb (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/pdb/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/pdb/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/xyz/H2O-geometry-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/xyz/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/geometry_formats/xyz/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/lbfgs/H2O-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/lbfgs/geo_opt.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/geo_opt/lbfgs/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/comments/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/comments/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/include/global.inc (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/include/main.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/include/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/tabseparator/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/tabseparator/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable/main.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_multifile/global.inc (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_multifile/main.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_multifile/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_multiple/PROJECT-nonbonded_nl_p0-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_multiple/main.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_multiple/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_redifinition/main.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/input_preprocessing/variable_redifinition/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/kinds/Si_bulk8-nonbonded_nl_p0-1.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/kinds/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/kinds/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/npt/H2O-md-1.cell (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/npt/H2O-md-1.ener (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/npt/H2O-md-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/npt/H2O-md.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/npt/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32-1.cell (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32-1.ener (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32-1.stress (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32-frc-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32-vel-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/H2O-32.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nve/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nvt/H2O-md-1.ener (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nvt/H2O-md-pos-1.xyz (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nvt/H2O-md.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/md/nvt/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/ad/ad.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/ad/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/explicit_orbitals/explicit_orbitals.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/explicit_orbitals/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/mauri_spz/mauri_spz.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/mauri_spz/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/mauri_us/mauri_us.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/mauri_us/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/no/no.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/sic/no/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/analytical/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/analytical/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/diagonal_analytical/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/diagonal_analytical/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/diagonal_numerical/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/diagonal_numerical/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/none/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/none/unittest.out (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/numerical/si_bulk8.inp (100%) rename {regtest => regtests/cp2k_2.6.2}/cp2k_2.6.2/stress_tensor/numerical/unittest.out (100%) rename regtest/cp2k_2.6.2/run_tests.py => regtests/cp2k_2.6.2/regtests.py (83%) diff --git a/README.md b/README.md index 57830a4..c8fe497 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,13 @@ This is the main repository of the [NOMAD](http://nomad-lab.eu) parser for from cp2kparser import CP2KParser import matplotlib.pyplot as mpl - # 1. Initialize a parser by giving a path to the CP2K output file and a list of - # default units - path = "path/to/main.file" + # 1. Initialize a parser with a set of default units. default_units = ["eV"] - parser = CP2KParser(path, default_units=default_units) + parser = CP2KParser(default_units=default_units) - # 2. Parse - results = parser.parse() + # 2. Parse a file + path = "path/to/main.file" + results = parser.parse(path) # 3. Query the results with using the id's created specifically for NOMAD. scf_energies = results["energy_total_scf_iteration"] @@ -22,7 +21,7 @@ This is the main repository of the [NOMAD](http://nomad-lab.eu) parser for ``` # Installation -The code is python>=2.7 and python>=3.4 compatible. First download and install +The code is python 2 and python 3 compatible. First download and install the nomadcore package: ```sh @@ -47,15 +46,9 @@ cd parser-cp2k pip install -e . ``` -# Advanced +# Notes +The parser is based on CP2K 2.6.2. -The parser is designed to support multiple versions of CP2K with a [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) -approach: The initial parser class is based on CP2K 2.6.2, and other versions -will be subclassed from it. By sublassing, all the previous functionality will -be preserved, new functionality can be easily created, and old functionality -overridden only where necesssary. - -# Upload Folder Structure, File Naming and CP2K Settings The CP2K input setting [PRINT_LEVEL](https://manual.cp2k.org/trunk/CP2K_INPUT/GLOBAL.html#PRINT_LEVEL) controls the amount of details that are outputted during the calculation. The @@ -66,12 +59,6 @@ they are located very deep inside some folder structure or outside the folder where the output file is, the parser will not be able to locate them. For this reason it is recommended to keep the upload structure as flat as possible. -## Testing -The regression tests for this parser are located in -**/cp2k/parser/parser-cp2k/cp2kparser/regtest**. You can run the tests by -running the run_tests.py file in one of the version directories. - -## Notes for CP2K Developers Here is a list of features/fixes that would make the parsing of CP2K results easier: - The pdb trajectory output doesn't seem to conform to the actual standard as diff --git a/parser/parser-cp2k/cp2kparser/parser.py b/parser/parser-cp2k/cp2kparser/parser.py index 1e5d089..74bf4b5 100644 --- a/parser/parser-cp2k/cp2kparser/parser.py +++ b/parser/parser-cp2k/cp2kparser/parser.py @@ -5,20 +5,23 @@ import re import logging import importlib from nomadcore.baseclasses import ParserInterface + +# Needs to be imported in order for the importlib calls to work in python 2.7 +import cp2kparser.versions.cp2k262.singlepointparser + logger = logging.getLogger("nomad") -#=============================================================================== class CP2KParser(ParserInterface): """This class handles the initial setup before any parsing can happen. It determines which version of CP2K was used to generate the output and then sets up a correct main parser. - After the implementation has been setup, you can parse the files with + After the implementation has been setup, you can parse files with parse(). """ - def __init__(self, main_file, metainfo_to_keep=None, backend=None, default_units=None, metainfo_units=None, debug=False, log_level=logging.ERROR, store=True): - super(CP2KParser, self).__init__(main_file, metainfo_to_keep, backend, default_units, metainfo_units, debug, log_level, store) + def __init__(self, metainfo_to_keep=None, backend=None, default_units=None, metainfo_units=None, debug=False, log_level=logging.ERROR, store=True): + super(CP2KParser, self).__init__(metainfo_to_keep, backend, default_units, metainfo_units, debug, log_level, store) def setup_version(self): """Setups the version by looking at the output file and the version @@ -84,10 +87,11 @@ class CP2KParser(ParserInterface): 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. + 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 @@ -110,7 +114,10 @@ class CP2KParser(ParserInterface): try: parser = parser_map[run_type] except KeyError: - logger.exception("A parser corresponding to the run_type '{}' could not be found.".format(run_type)) + 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 @@ -118,20 +125,32 @@ class CP2KParser(ParserInterface): base = "cp2kparser.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)) + 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)) + 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)) + logger.exception( + "A parser class '{}' could not be found in the module '[]'." + .format(parser_class, parser_module) + ) raise self.main_parser = parser_class(self.parser_context.main_file, self.parser_context) diff --git a/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py b/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py index b260685..aa2d6e5 100644 --- a/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py +++ b/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py @@ -24,7 +24,6 @@ from cp2kparser.generic.inputparsing import Section, Keyword, DefaultKeyword, Se logger = logging -#=============================================================================== def generate_object_tree(xml_file, for_metainfo=False): xml_element = ET.parse(xml_file) @@ -48,7 +47,6 @@ def generate_object_tree(xml_file, for_metainfo=False): return object_tree -#=============================================================================== def recursive_tree_generation(xml_element, for_metainfo=False, name_stack=[], ignore=True): # Make new section object for the root @@ -199,7 +197,6 @@ def recursive_tree_generation(xml_element, for_metainfo=False, name_stack=[], ig return section -#=============================================================================== def generate_input_metainfos(object_tree): json_root = { @@ -222,7 +219,6 @@ def generate_input_metainfos(object_tree): f.write(json.dumps(json_root, indent=2, separators=(',', ': '))) -#=============================================================================== def generate_metainfo_recursively(obj, parent, container, name_stack): json = None @@ -245,7 +241,6 @@ def generate_metainfo_recursively(obj, parent, container, name_stack): container.append(json) -#=============================================================================== def generate_input_object_metainfo_json(child, parent, name_stack): path = ".".join(name_stack) # if path.startswith("."): @@ -283,7 +278,6 @@ def generate_input_object_metainfo_json(child, parent, name_stack): return json_obj -#=============================================================================== def generate_section_metainfo_json(child, parent, name_stack): path = ".".join(name_stack[:-1]) json_obj = {} @@ -307,7 +301,6 @@ def generate_section_metainfo_json(child, parent, name_stack): return json_obj -#=============================================================================== # Run main function by default if __name__ == "__main__": diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py index 68e847a..5b2bd27 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py @@ -12,7 +12,6 @@ from collections import defaultdict logger = logging.getLogger("nomad") -#=============================================================================== class CP2KCommonParser(CommonParser): """ This class is used to store and instantiate common parts of the diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py index 72f5f5b..3c1399d 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py @@ -12,7 +12,6 @@ import logging logger = logging.getLogger("nomad") -#=============================================================================== class CP2KGeoOptParser(MainHierarchicalParser): """Used to parse the CP2K calculation with run types: -GEO_OPT/GEOMETRY_OPTIMIZATION diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py index f1ab04f..65275a0 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py @@ -11,7 +11,6 @@ from cp2kparser.generic.inputparsing import metainfo_data_prefix, metainfo_secti logger = logging.getLogger("nomad") -#=============================================================================== class CP2KInputParser(AbstractBaseParser): """Used to parse out a CP2K input file. diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py index c82a17f..4e126fc 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py @@ -13,7 +13,6 @@ import logging logger = logging.getLogger("nomad") -#=============================================================================== class CP2KMDParser(MainHierarchicalParser): """Used to parse the CP2K calculation with run types: -MD diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py index dae4286..ba3b529 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py @@ -4,7 +4,6 @@ from nomadcore.baseclasses import AbstractBaseParser logger = logging.getLogger("nomad") -#=============================================================================== class CP2KSinglePointForceParser(AbstractBaseParser): """Used to parse out a force file printed out by a CP2K single point calculation. It is not exactly an ZYX file, so here we define separate diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py index 9fcdf7e..001fc04 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py @@ -1,14 +1,13 @@ from __future__ import absolute_import from nomadcore.simple_parser import SimpleMatcher as SM from nomadcore.baseclasses import MainHierarchicalParser -from .singlepointforceparser import CP2KSinglePointForceParser +from cp2kparser.versions.cp2k262.singlepointforceparser import CP2KSinglePointForceParser from nomadcore.caching_backend import CachingLevel -from .commonparser import CP2KCommonParser +from cp2kparser.versions.cp2k262.commonparser import CP2KCommonParser import logging logger = logging.getLogger("nomad") -#=============================================================================== class CP2KSinglePointParser(MainHierarchicalParser): """The main parser class. Used to parse the CP2K calculation with run types: -ENERGY diff --git a/regtest/README.md b/regtest/README.md deleted file mode 100644 index 550be2b..0000000 --- a/regtest/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Unit tests -This directory contains unit tests to evaluate the correctness of the parser in -a systematic way. Ideally each parsed metainfo should have at least one unit -test, and if the resulting values are predetermined, the available values -should all be tested individually. Also certain scenarios that should produce a -parsing error should be tested. diff --git a/regtest/cp2k_2.6.2/callgraph.py b/regtest/cp2k_2.6.2/callgraph.py deleted file mode 100644 index 99a9289..0000000 --- a/regtest/cp2k_2.6.2/callgraph.py +++ /dev/null @@ -1,8 +0,0 @@ -from pycallgraph import PyCallGraph -from pycallgraph.output import GraphvizOutput -from cp2kparser import CP2KParser - -with PyCallGraph(output=GraphvizOutput()): - filepath = "/home/lauri/Dropbox/nomad-dev/nomad-lab-base/parsers/cp2k/test/unittests/cp2k_2.6.2/energy_force/unittest.out" - parser = CP2KParser(filepath) - parser.parse() diff --git a/regtest/cp2k_2.6.2/profiling.py b/regtest/cp2k_2.6.2/profiling.py deleted file mode 100644 index 1f7de9a..0000000 --- a/regtest/cp2k_2.6.2/profiling.py +++ /dev/null @@ -1,17 +0,0 @@ -import cProfile -import pstats -from run_tests import get_results - - -def profile_energy_force(): - """Used to profile the CPU usage in parsing RUN_TYPE ENERGY_FORCE. - """ - profile = cProfile.Profile() - profile.run('get_results("energy_force", "section_run")') - stats = pstats.Stats(profile) - stats.strip_dirs() - stats.sort_stats("cumulative") - stats.print_stats(30) - -if __name__ == "__main__": - profile_energy_force() diff --git a/regtest/cp2k_2.6.2/BASIS_SET b/regtests/cp2k_2.6.2/cp2k_2.6.2/BASIS_SET similarity index 100% rename from regtest/cp2k_2.6.2/BASIS_SET rename to regtests/cp2k_2.6.2/cp2k_2.6.2/BASIS_SET diff --git a/regtest/cp2k_2.6.2/GTH_POTENTIALS b/regtests/cp2k_2.6.2/cp2k_2.6.2/GTH_POTENTIALS similarity index 100% rename from regtest/cp2k_2.6.2/GTH_POTENTIALS rename to regtests/cp2k_2.6.2/cp2k_2.6.2/GTH_POTENTIALS diff --git a/regtest/cp2k_2.6.2/XC_functional/b3lyp/b3lyp.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/b3lyp/b3lyp.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/b3lyp/b3lyp.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/b3lyp/b3lyp.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/b3lyp/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/b3lyp/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/b3lyp/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/b3lyp/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/blyp/blyp.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/blyp/blyp.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/blyp/blyp.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/blyp/blyp.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/blyp/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/blyp/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/blyp/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/blyp/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/hcth120/hcth120.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/hcth120/hcth120.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/hcth120/hcth120.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/hcth120/hcth120.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/hcth120/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/hcth120/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/hcth120/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/hcth120/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/lda/lda.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/lda/lda.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/lda/lda.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/lda/lda.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/lda/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/lda/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/lda/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/lda/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/olyp/olyp.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/olyp/olyp.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/olyp/olyp.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/olyp/olyp.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/olyp/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/olyp/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/olyp/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/olyp/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/pade/pade.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pade/pade.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/pade/pade.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pade/pade.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/pade/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pade/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/pade/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pade/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/pbe/pbe.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe/pbe.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/pbe/pbe.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe/pbe.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/pbe/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/pbe/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe/unittest.out diff --git a/regtest/cp2k_2.6.2/XC_functional/pbe0/pbe0.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe0/pbe0.inp similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/pbe0/pbe0.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe0/pbe0.inp diff --git a/regtest/cp2k_2.6.2/XC_functional/pbe0/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe0/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/XC_functional/pbe0/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/XC_functional/pbe0/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/default/default.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/default/default.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/default/default.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/default/default.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/default/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/default/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/default/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/default/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/none/none.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/none/none.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/none/none.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/none/none.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/none/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/none/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/none/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/none/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/x/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/x/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/x/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/x/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/x/x.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/x/x.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/x/x.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/x/x.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/xy/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xy/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/xy/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xy/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/xy/xy.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xy/xy.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/xy/xy.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xy/xy.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/xyz/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xyz/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/xyz/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xyz/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/xyz/xyz.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xyz/xyz.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/xyz/xyz.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xyz/xyz.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/xz/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xz/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/xz/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xz/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/xz/xz.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xz/xz.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/xz/xz.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/xz/xz.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/y/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/y/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/y/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/y/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/y/y.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/y/y.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/y/y.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/y/y.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/yz/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/yz/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/yz/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/yz/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/yz/yz.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/yz/yz.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/yz/yz.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/yz/yz.inp diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/z/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/z/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/z/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/z/unittest.out diff --git a/regtest/cp2k_2.6.2/configuration_periodic_dimensions/z/z.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/z/z.inp similarity index 100% rename from regtest/cp2k_2.6.2/configuration_periodic_dimensions/z/z.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/configuration_periodic_dimensions/z/z.inp diff --git a/regtest/cp2k_2.6.2/convergence/converged/Si_bulk8-nonbonded_nl_p0-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/converged/Si_bulk8-nonbonded_nl_p0-1.out similarity index 100% rename from regtest/cp2k_2.6.2/convergence/converged/Si_bulk8-nonbonded_nl_p0-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/converged/Si_bulk8-nonbonded_nl_p0-1.out diff --git a/regtest/cp2k_2.6.2/convergence/converged/converged.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/converged/converged.inp similarity index 100% rename from regtest/cp2k_2.6.2/convergence/converged/converged.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/converged/converged.inp diff --git a/regtest/cp2k_2.6.2/convergence/converged/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/converged/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/convergence/converged/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/converged/unittest.out diff --git a/regtest/cp2k_2.6.2/convergence/non_converged/non_converged.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/non_converged/non_converged.inp similarity index 100% rename from regtest/cp2k_2.6.2/convergence/non_converged/non_converged.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/non_converged/non_converged.inp diff --git a/regtest/cp2k_2.6.2/convergence/non_converged/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/non_converged/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/convergence/non_converged/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/convergence/non_converged/unittest.out diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/dft_no_input/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_no_input/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/dft_no_input/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_no_input/unittest.out diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-BFGS.Hessian b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-BFGS.Hessian similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-BFGS.Hessian rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-BFGS.Hessian diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag.inp similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/H2O-rks-diag.inp diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/RESTART-rks-diag b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/RESTART-rks-diag similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/RESTART-rks-diag rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/RESTART-rks-diag diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/dft_plus_u/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/dft_plus_u/unittest.out diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/mp2/H2O-01.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/mp2/H2O-01.inp similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/mp2/H2O-01.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/mp2/H2O-01.inp diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/mp2/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/mp2/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/mp2/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/mp2/unittest.out diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/rpa/H2O_gas.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/rpa/H2O_gas.xyz similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/rpa/H2O_gas.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/rpa/H2O_gas.xyz diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/rpa/RI_RPA_H2O.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/rpa/RI_RPA_H2O.inp similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/rpa/RI_RPA_H2O.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/rpa/RI_RPA_H2O.inp diff --git a/regtest/cp2k_2.6.2/electronic_structure_method/rpa/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/rpa/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/electronic_structure_method/rpa/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/electronic_structure_method/rpa/unittest.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p0-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p0-1.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p0-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p0-1.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p1-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p1-1.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p1-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p1-1.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p2-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p2-1.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p2-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p2-1.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p3-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p3-1.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p3-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8-nonbonded_nl_p3-1.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p1.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p1.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p2.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p2.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p2.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p2.out diff --git a/regtest/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p3.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p3.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p3.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/Si_bulk8_localLog_p3.out diff --git a/regtest/cp2k_2.6.2/energy_force/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/energy_force/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/energy_force/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/energy_force/unittest.out diff --git a/regtest/cp2k_2.6.2/errors/invalid_file/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/invalid_file/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/errors/invalid_file/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/invalid_file/unittest.out diff --git a/regtest/cp2k_2.6.2/errors/invalid_run_type/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/invalid_run_type/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/errors/invalid_run_type/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/invalid_run_type/unittest.out diff --git a/regtest/cp2k_2.6.2/errors/unknown_input_keyword/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_keyword/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_input_keyword/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_keyword/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/errors/unknown_input_keyword/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_keyword/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_input_keyword/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_keyword/unittest.out diff --git a/regtest/cp2k_2.6.2/errors/unknown_input_section/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_input_section/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/errors/unknown_input_section/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_input_section/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section/unittest.out diff --git a/regtest/cp2k_2.6.2/errors/unknown_input_section_parameter/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section_parameter/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_input_section_parameter/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section_parameter/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/errors/unknown_input_section_parameter/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section_parameter/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_input_section_parameter/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_input_section_parameter/unittest.out diff --git a/regtest/cp2k_2.6.2/errors/unknown_version/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_version/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_version/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_version/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/errors/unknown_version/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_version/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/errors/unknown_version/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/errors/unknown_version/unittest.out diff --git a/regtest/cp2k_2.6.2/force_file/single_point/Si_bulk8-forces-1_0.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/force_file/single_point/Si_bulk8-forces-1_0.xyz similarity index 100% rename from regtest/cp2k_2.6.2/force_file/single_point/Si_bulk8-forces-1_0.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/force_file/single_point/Si_bulk8-forces-1_0.xyz diff --git a/regtest/cp2k_2.6.2/force_file/single_point/single_point.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/force_file/single_point/single_point.inp similarity index 100% rename from regtest/cp2k_2.6.2/force_file/single_point/single_point.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/force_file/single_point/single_point.inp diff --git a/regtest/cp2k_2.6.2/force_file/single_point/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/force_file/single_point/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/force_file/single_point/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/force_file/single_point/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/bfgs/H2O-BFGS.Hessian b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/H2O-BFGS.Hessian similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/bfgs/H2O-BFGS.Hessian rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/H2O-BFGS.Hessian diff --git a/regtest/cp2k_2.6.2/geo_opt/bfgs/H2O-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/H2O-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/bfgs/H2O-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/H2O-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/geo_opt/bfgs/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/bfgs/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/bfgs/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/bfgs/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/bfgs/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/cg/H2O-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/cg/H2O-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/cg/H2O-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/cg/H2O-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/geo_opt/cg/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/cg/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/cg/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/cg/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/cg/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/cg/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/cg/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/cg/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/each/H2O-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/each/H2O-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/each/H2O-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/each/H2O-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/geo_opt/each/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/each/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/each/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/each/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/each/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/each/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/each/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/each/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/filename/H2O-customname-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/filename/H2O-customname-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/filename/H2O-customname-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/filename/H2O-customname-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/geo_opt/filename/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/filename/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/filename/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/filename/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/filename/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/filename/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/filename/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/filename/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/dcd/H2O-geometry-pos-1.dcd b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/dcd/H2O-geometry-pos-1.dcd similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/dcd/H2O-geometry-pos-1.dcd rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/dcd/H2O-geometry-pos-1.dcd diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/dcd/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/dcd/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/dcd/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/dcd/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/dcd/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/dcd/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/dcd/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/dcd/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/pdb/H2O-geometry-pos-1.pdb b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/pdb/H2O-geometry-pos-1.pdb similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/pdb/H2O-geometry-pos-1.pdb rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/pdb/H2O-geometry-pos-1.pdb diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/pdb/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/pdb/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/pdb/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/pdb/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/pdb/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/pdb/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/pdb/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/pdb/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/xyz/H2O-geometry-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/xyz/H2O-geometry-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/xyz/H2O-geometry-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/xyz/H2O-geometry-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/xyz/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/xyz/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/xyz/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/xyz/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/geometry_formats/xyz/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/xyz/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/geometry_formats/xyz/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/geometry_formats/xyz/unittest.out diff --git a/regtest/cp2k_2.6.2/geo_opt/lbfgs/H2O-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/lbfgs/H2O-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/lbfgs/H2O-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/lbfgs/H2O-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/geo_opt/lbfgs/geo_opt.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/lbfgs/geo_opt.inp similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/lbfgs/geo_opt.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/lbfgs/geo_opt.inp diff --git a/regtest/cp2k_2.6.2/geo_opt/lbfgs/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/lbfgs/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/geo_opt/lbfgs/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/geo_opt/lbfgs/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/comments/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/comments/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/comments/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/comments/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/comments/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/comments/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/comments/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/comments/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/include/global.inc b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/include/global.inc similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/include/global.inc rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/include/global.inc diff --git a/regtest/cp2k_2.6.2/input_preprocessing/include/main.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/include/main.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/include/main.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/include/main.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/include/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/include/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/include/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/include/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/tabseparator/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/tabseparator/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/tabseparator/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/tabseparator/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/tabseparator/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/tabseparator/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/tabseparator/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/tabseparator/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable/main.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable/main.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable/main.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable/main.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_multifile/global.inc b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multifile/global.inc similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_multifile/global.inc rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multifile/global.inc diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_multifile/main.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multifile/main.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_multifile/main.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multifile/main.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_multifile/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multifile/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_multifile/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multifile/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_multiple/PROJECT-nonbonded_nl_p0-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multiple/PROJECT-nonbonded_nl_p0-1.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_multiple/PROJECT-nonbonded_nl_p0-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multiple/PROJECT-nonbonded_nl_p0-1.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_multiple/main.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multiple/main.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_multiple/main.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multiple/main.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_multiple/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multiple/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_multiple/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_multiple/unittest.out diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_redifinition/main.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_redifinition/main.inp similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_redifinition/main.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_redifinition/main.inp diff --git a/regtest/cp2k_2.6.2/input_preprocessing/variable_redifinition/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_redifinition/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/input_preprocessing/variable_redifinition/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/input_preprocessing/variable_redifinition/unittest.out diff --git a/regtest/cp2k_2.6.2/kinds/Si_bulk8-nonbonded_nl_p0-1.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/kinds/Si_bulk8-nonbonded_nl_p0-1.out similarity index 100% rename from regtest/cp2k_2.6.2/kinds/Si_bulk8-nonbonded_nl_p0-1.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/kinds/Si_bulk8-nonbonded_nl_p0-1.out diff --git a/regtest/cp2k_2.6.2/kinds/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/kinds/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/kinds/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/kinds/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/kinds/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/kinds/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/kinds/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/kinds/unittest.out diff --git a/regtest/cp2k_2.6.2/md/npt/H2O-md-1.cell b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md-1.cell similarity index 100% rename from regtest/cp2k_2.6.2/md/npt/H2O-md-1.cell rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md-1.cell diff --git a/regtest/cp2k_2.6.2/md/npt/H2O-md-1.ener b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md-1.ener similarity index 100% rename from regtest/cp2k_2.6.2/md/npt/H2O-md-1.ener rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md-1.ener diff --git a/regtest/cp2k_2.6.2/md/npt/H2O-md-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/md/npt/H2O-md-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/md/npt/H2O-md.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md.inp similarity index 100% rename from regtest/cp2k_2.6.2/md/npt/H2O-md.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/H2O-md.inp diff --git a/regtest/cp2k_2.6.2/md/npt/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/md/npt/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/npt/unittest.out diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32-1.cell b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-1.cell similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32-1.cell rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-1.cell diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32-1.ener b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-1.ener similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32-1.ener rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-1.ener diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32-1.stress b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-1.stress similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32-1.stress rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-1.stress diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32-frc-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-frc-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32-frc-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-frc-1.xyz diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32-vel-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-vel-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32-vel-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32-vel-1.xyz diff --git a/regtest/cp2k_2.6.2/md/nve/H2O-32.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32.inp similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/H2O-32.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/H2O-32.inp diff --git a/regtest/cp2k_2.6.2/md/nve/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/md/nve/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nve/unittest.out diff --git a/regtest/cp2k_2.6.2/md/nvt/H2O-md-1.ener b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/H2O-md-1.ener similarity index 100% rename from regtest/cp2k_2.6.2/md/nvt/H2O-md-1.ener rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/H2O-md-1.ener diff --git a/regtest/cp2k_2.6.2/md/nvt/H2O-md-pos-1.xyz b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/H2O-md-pos-1.xyz similarity index 100% rename from regtest/cp2k_2.6.2/md/nvt/H2O-md-pos-1.xyz rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/H2O-md-pos-1.xyz diff --git a/regtest/cp2k_2.6.2/md/nvt/H2O-md.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/H2O-md.inp similarity index 100% rename from regtest/cp2k_2.6.2/md/nvt/H2O-md.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/H2O-md.inp diff --git a/regtest/cp2k_2.6.2/md/nvt/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/md/nvt/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/md/nvt/unittest.out diff --git a/regtest/cp2k_2.6.2/sic/ad/ad.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/ad/ad.inp similarity index 100% rename from regtest/cp2k_2.6.2/sic/ad/ad.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/ad/ad.inp diff --git a/regtest/cp2k_2.6.2/sic/ad/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/ad/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/sic/ad/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/ad/unittest.out diff --git a/regtest/cp2k_2.6.2/sic/explicit_orbitals/explicit_orbitals.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/explicit_orbitals/explicit_orbitals.inp similarity index 100% rename from regtest/cp2k_2.6.2/sic/explicit_orbitals/explicit_orbitals.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/explicit_orbitals/explicit_orbitals.inp diff --git a/regtest/cp2k_2.6.2/sic/explicit_orbitals/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/explicit_orbitals/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/sic/explicit_orbitals/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/explicit_orbitals/unittest.out diff --git a/regtest/cp2k_2.6.2/sic/mauri_spz/mauri_spz.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_spz/mauri_spz.inp similarity index 100% rename from regtest/cp2k_2.6.2/sic/mauri_spz/mauri_spz.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_spz/mauri_spz.inp diff --git a/regtest/cp2k_2.6.2/sic/mauri_spz/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_spz/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/sic/mauri_spz/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_spz/unittest.out diff --git a/regtest/cp2k_2.6.2/sic/mauri_us/mauri_us.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_us/mauri_us.inp similarity index 100% rename from regtest/cp2k_2.6.2/sic/mauri_us/mauri_us.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_us/mauri_us.inp diff --git a/regtest/cp2k_2.6.2/sic/mauri_us/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_us/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/sic/mauri_us/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/mauri_us/unittest.out diff --git a/regtest/cp2k_2.6.2/sic/no/no.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/no/no.inp similarity index 100% rename from regtest/cp2k_2.6.2/sic/no/no.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/no/no.inp diff --git a/regtest/cp2k_2.6.2/sic/no/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/sic/no/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/sic/no/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/sic/no/unittest.out diff --git a/regtest/cp2k_2.6.2/stress_tensor/analytical/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/analytical/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/analytical/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/analytical/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/stress_tensor/analytical/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/analytical/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/analytical/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/analytical/unittest.out diff --git a/regtest/cp2k_2.6.2/stress_tensor/diagonal_analytical/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_analytical/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/diagonal_analytical/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_analytical/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/stress_tensor/diagonal_analytical/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_analytical/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/diagonal_analytical/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_analytical/unittest.out diff --git a/regtest/cp2k_2.6.2/stress_tensor/diagonal_numerical/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_numerical/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/diagonal_numerical/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_numerical/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/stress_tensor/diagonal_numerical/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_numerical/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/diagonal_numerical/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/diagonal_numerical/unittest.out diff --git a/regtest/cp2k_2.6.2/stress_tensor/none/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/none/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/none/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/none/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/stress_tensor/none/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/none/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/none/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/none/unittest.out diff --git a/regtest/cp2k_2.6.2/stress_tensor/numerical/si_bulk8.inp b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/numerical/si_bulk8.inp similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/numerical/si_bulk8.inp rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/numerical/si_bulk8.inp diff --git a/regtest/cp2k_2.6.2/stress_tensor/numerical/unittest.out b/regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/numerical/unittest.out similarity index 100% rename from regtest/cp2k_2.6.2/stress_tensor/numerical/unittest.out rename to regtests/cp2k_2.6.2/cp2k_2.6.2/stress_tensor/numerical/unittest.out diff --git a/regtest/cp2k_2.6.2/run_tests.py b/regtests/cp2k_2.6.2/regtests.py similarity index 83% rename from regtest/cp2k_2.6.2/run_tests.py rename to regtests/cp2k_2.6.2/regtests.py index b75e17d..5da0635 100644 --- a/regtest/cp2k_2.6.2/run_tests.py +++ b/regtests/cp2k_2.6.2/regtests.py @@ -1,15 +1,3 @@ -""" -This is a module for unit testing the CP2K 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 any value imaginable 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 @@ -18,65 +6,75 @@ from cp2kparser import CP2KParser from nomadcore.unit_conversion.unit_conversion import convert_unit -#=============================================================================== -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. +def get_result(folder, metaname=None): + """Get the results from the calculation in the given folder. By default goes through different Args: folder: The folder relative to the directory of this script where the parsed calculation resides. - metaname: The quantity to extract. + metaname(str): Optional quantity to return. If not specified, returns + the full dictionary of results. """ dirname = os.path.dirname(__file__) - filename = os.path.join(dirname, folder, "unittest.out") + filename = os.path.join("cp2k_{}".format(VERSION), dirname, folder, "unittest.out") parser = CP2KParser(filename, None, debug=True, log_level=logging.CRITICAL) results = parser.parse() - return results - -#=============================================================================== -def get_result(folder, metaname, optimize=True): - if optimize: - results = get_results(folder, None) + if metaname is None: + return results else: - results = get_results(folder) - result = results[metaname] - return result + return results[metaname] -#=============================================================================== class TestErrors(unittest.TestCase): - """Test misc. error stuations which may occur during the parsing. + """Test error situations which may occur during the parsing. """ def test_no_file(self): - self.assertRaises(IOError, get_result, "errors/no_file", "XC_functional") + """File is not no present. + """ + with 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") + """Main file is invalid. + """ + with 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") + """Unrecognized run type. + """ + with self.assertRaises(KeyError): + get_result("errors/invalid_run_type", "XC_functional") + +class TestUnknownInput(unittest.TestCase): + """Tests for cases where unknown information is encountered in the parsing. + """ def test_unknown_version(self): + """Test how a new version is handled. + """ get_result("errors/unknown_version", "XC_functional") def test_unknown_input_keyword(self): + """Test how an unknown input keyword is handled. + """ get_result("errors/unknown_input_keyword", "XC_functional") def test_unknown_input_section(self): + """Test unknown input file section. + """ 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") @@ -110,12 +108,10 @@ class TestXCFunctional(unittest.TestCase): 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) @@ -125,12 +121,10 @@ class TestSCFConvergence(unittest.TestCase): 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") @@ -150,11 +144,9 @@ class TestForceFiles(unittest.TestCase): 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, "") @@ -176,89 +168,86 @@ class TestSelfInteractionCorrectionMethod(unittest.TestCase): 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") + get_result("stress_tensor/none", "section_stress_tensor") def test_analytical(self): - results = get_results("stress_tensor/analytical", ["stress_tensor_method", "stress_tensor"]) + results = get_result("stress_tensor/analytical") 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"]) + results = get_result("stress_tensor/numerical") 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"]) + results = get_result("stress_tensor/diagonal_analytical") 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"]) + results = get_result("stress_tensor/diagonal_numerical") 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. """ + folder = "configuration_periodic_dimensions/" def test_default(self): - result = get_result("configuration_periodic_dimensions/default", "configuration_periodic_dimensions") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"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") + result = get_result(self.folder+"yz", "configuration_periodic_dimensions") self.assertTrue(np.array_equal(result, np.array((False, True, True)))) -#=============================================================================== class TestEnergyForce(unittest.TestCase): """Tests for a CP2K calculation with RUN_TYPE ENERGY_FORCE. """ - @classmethod def setUpClass(cls): - cls.results = get_results("energy_force", "section_run") + cls.results = get_result("energy_force") # cls.results.print_summary() def test_energy_total_scf_iteration(self): @@ -482,36 +471,37 @@ class TestEnergyForce(unittest.TestCase): self.assertEqual(result, "gaussians") -#=============================================================================== class TestPreprocessor(unittest.TestCase): - + """Tests that the parser can read input files with preprocessor + declarations, such as variables. + """ def test_include(self): - result = get_result("input_preprocessing/include", "x_cp2k_input_GLOBAL.PRINT_LEVEL", optimize=False) + result = get_result("input_preprocessing/include", "x_cp2k_input_GLOBAL.PRINT_LEVEL") self.assertEqual(result, "LOW") def test_variable(self): - result = get_result("input_preprocessing/variable", "x_cp2k_input_GLOBAL.PROJECT_NAME", optimize=False) + result = get_result("input_preprocessing/variable", "x_cp2k_input_GLOBAL.PROJECT_NAME") self.assertEqual(result, "variable_test") def test_variable_multiple(self): - result = get_result("input_preprocessing/variable_multiple", "x_cp2k_input_FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False) + result = get_result("input_preprocessing/variable_multiple", "x_cp2k_input_FORCE_EVAL.DFT.MGRID.CUTOFF") self.assertEqual(result, "50") def test_comments(self): - result = get_result("input_preprocessing/comments", "x_cp2k_input_FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False) + result = get_result("input_preprocessing/comments", "x_cp2k_input_FORCE_EVAL.DFT.MGRID.CUTOFF") self.assertEqual(result, "120") def test_tabseparator(self): - result = get_result("input_preprocessing/tabseparator", "x_cp2k_input_FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False) + result = get_result("input_preprocessing/tabseparator", "x_cp2k_input_FORCE_EVAL.DFT.MGRID.CUTOFF") self.assertEqual(result, "120") -#=============================================================================== class TestGeoOpt(unittest.TestCase): - + """Tests that geometry optimizations are correctly parsed. + """ @classmethod def setUpClass(cls): - cls.results = get_results("geo_opt/cg", "section_run") + cls.results = get_result("geo_opt/cg") def test_geometry_optimization_converged(self): result = self.results["geometry_optimization_converged"] @@ -595,12 +585,12 @@ class TestGeoOpt(unittest.TestCase): self.assertTrue(np.array_equal(result_end, expected_end)) -# =============================================================================== class TestGeoOptTrajFormats(unittest.TestCase): - + """Different trajectory formats in geometry optimization. + """ def test_xyz(self): - result = get_result("geo_opt/geometry_formats/xyz", "atom_positions", optimize=True) + result = get_result("geo_opt/geometry_formats/xyz", "atom_positions") expected_start = convert_unit( np.array([ [12.2353220000, 1.3766420000, 10.8698800000], @@ -623,7 +613,7 @@ class TestGeoOptTrajFormats(unittest.TestCase): 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) + result = get_result("geo_opt/geometry_formats/pdb", "atom_positions") expected_start = convert_unit( np.array([ [12.235, 1.377, 10.870], @@ -646,14 +636,14 @@ class TestGeoOptTrajFormats(unittest.TestCase): 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) + result = get_result("geo_opt/geometry_formats/dcd", "atom_positions") frames = result.shape[0] self.assertEqual(frames, 7) -#=============================================================================== class TestGeoOptOptimizers(unittest.TestCase): - + """Different optimization methods in gemoetry optimization. + """ def test_bfgs(self): result = get_result("geo_opt/bfgs", "geometry_optimization_method") self.assertEqual(result, "bfgs") @@ -663,14 +653,15 @@ class TestGeoOptOptimizers(unittest.TestCase): self.assertEqual(result, "bfgs") -#=============================================================================== class TestGeoOptTrajectory(unittest.TestCase): - + """Tests that the print settings for geometry optimization are handled + correctly. + """ 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") + results = get_result("geo_opt/each") single_conf = results["section_single_configuration_calculation"] systems = results["section_system"] @@ -730,12 +721,12 @@ class TestGeoOptTrajectory(unittest.TestCase): i_conf += 1 -#=============================================================================== class TestMD(unittest.TestCase): - + """Molecular dynamics tests. + """ @classmethod def setUpClass(cls): - cls.results = get_results("md/nve", "section_run") + cls.results = get_result("md/nve") cls.temp = convert_unit( np.array([ 300.000000000, @@ -943,9 +934,9 @@ class TestMD(unittest.TestCase): self.assertTrue(np.array_equal(result, expected_result)) -#=============================================================================== class TestMDEnsembles(unittest.TestCase): - + """Different ensembles in MD. + """ @classmethod def setUpClass(cls): cls.pressure = convert_unit( @@ -966,12 +957,12 @@ class TestMDEnsembles(unittest.TestCase): ) def test_nvt(self): - results = get_results("md/nvt", "section_run") + results = get_result("md/nvt") ensemble = results["ensemble_type"] self.assertEqual(ensemble, "NVT") def test_npt(self): - results = get_results("md/npt", "section_run") + results = get_result("md/npt") ensemble = results["ensemble_type"] self.assertEqual(ensemble, "NPT") @@ -1022,46 +1013,50 @@ class TestMDEnsembles(unittest.TestCase): self.assertTrue(np.array_equal(expected_cell_end, simulation_cell[-1, :, :])) -#=============================================================================== class TestElectronicStructureMethod(unittest.TestCase): - + """Tests that different methods are recognized correctly. + """ def test_mp2(self): - results = get_results("electronic_structure_method/mp2", "section_run") + results = get_result("electronic_structure_method/mp2") 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") + results = get_result("electronic_structure_method/dft_plus_u") result = results["electronic_structure_method"] self.assertEqual(result, "DFT+U") def test_rpa(self): - results = get_results("electronic_structure_method/rpa", "section_run") + results = get_result("electronic_structure_method/rpa") result = results["electronic_structure_method"] self.assertEqual(result, "RPA") -#=============================================================================== if __name__ == '__main__': + logger = logging.getLogger("cp2kparser") logger.setLevel(logging.ERROR) - suites = [] - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestErrors)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestXCFunctional)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestEnergyForce)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestStressTensorMethods)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSelfInteractionCorrectionMethod)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestConfigurationPeriodicDimensions)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSCFConvergence)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestForceFiles)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestPreprocessor)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOpt)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptTrajFormats)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptOptimizers)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptTrajectory)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestMD)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestMDEnsembles)) - suites.append(unittest.TestLoader().loadTestsFromTestCase(TestElectronicStructureMethod)) - alltests = unittest.TestSuite(suites) - unittest.TextTestRunner(verbosity=0).run(alltests) + VERSIONS = ["2.6.2"] + + for VERSION in VERSIONS: + suites = [] + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestErrors)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestUnknownInput)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestXCFunctional)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestEnergyForce)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestStressTensorMethods)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSelfInteractionCorrectionMethod)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestConfigurationPeriodicDimensions)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSCFConvergence)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestForceFiles)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestPreprocessor)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOpt)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptTrajFormats)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptOptimizers)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptTrajectory)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestMD)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestMDEnsembles)) + suites.append(unittest.TestLoader().loadTestsFromTestCase(TestElectronicStructureMethod)) + alltests = unittest.TestSuite(suites) + unittest.TextTestRunner(verbosity=0).run(alltests) -- GitLab